Skip to content

Commit

Permalink
Enable wxc library to be fund on OS X Lion.
Browse files Browse the repository at this point in the history
Ignore-this: 3ac42cdee1742611b90c275896c40ed6

Merge patches from Eric Kow's OS X Lion support branch. Here we add absolute path
to the wxc dylib install directory.

darcs-hash:20120318154418-75908-e142d58ac6852d51e3d00a75ea8649be823835b5.gz
  • Loading branch information
jodonoghue committed Mar 18, 2012
1 parent 6a747f4 commit 7e866b4
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 141 deletions.
21 changes: 14 additions & 7 deletions wxc/Setup.hs
Original file line number Diff line number Diff line change
Expand Up @@ -125,12 +125,13 @@ myBuildHook pkg_descr local_bld_info user_hooks bld_flags =
progs = withPrograms local_bld_info
gcc = fromJust (lookupProgram (simpleProgram "gcc") progs)
ver = (pkgVersion . package) pkg_descr
inst_lib_dir = libdir $ absoluteInstallDirs pkg_descr local_bld_info NoCopyDest
-- Compile C/C++ sources - output directory is dist/build/src/cpp
putStrLn "Building wxc"
objs <- mapM (compileCxx gcc cc_opts inc_dirs bld_dir) dll_srcs
-- Link C/C++ sources as a DLL - output directory is dist/build
putStrLn "Linking wxc"
linkSharedLib gcc ld_opts lib_dirs (libs ++ dll_libs) objs ver bld_dir dll_name
linkSharedLib gcc ld_opts lib_dirs (libs ++ dll_libs) objs ver bld_dir dll_name inst_lib_dir

-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

Expand All @@ -148,7 +149,7 @@ sharedLibName :: Version -- ^ Version information to be used for Unix shared lib
sharedLibName ver basename =
case buildOS of
Windows -> addExtension basename ".dll"
OSX -> addExtension basename ".so"
OSX -> "lib" ++ addExtension basename ".dylib"
_ -> "lib" ++ basename ++ ".so." ++ full_ver
where
full_ver = (concat . intersperse "." . map show . versionBranch) ver
Expand All @@ -157,8 +158,9 @@ sharedLibName ver basename =
linkCxxOpts :: Version -- ^ Version information to be used for Unix shared libraries
-> FilePath -- ^ Directory in which library will be built
-> String -- ^ Name of the shared library
-> String -- ^ Absolute path of the shared library
-> [String] -- ^ List of options which can be applied to 'runProgram'
linkCxxOpts ver out_dir basename =
linkCxxOpts ver out_dir basename basepath =
let dll_pathname = normalisePath (out_dir </> addExtension basename ".dll")
implib_pathname = normalisePath (out_dir </> "lib" ++ addExtension basename ".a") in
case buildOS of
Expand All @@ -168,6 +170,7 @@ linkCxxOpts ver out_dir basename =
"-Wl,--export-all-symbols", "-Wl,--enable-auto-import"]
OSX -> ["-dynamiclib",
"-o " ++ out_dir </> sharedLibName ver basename,
"-install_name " ++ basepath </> sharedLibName ver basename,
"-Wl,-undefined,dynamic_lookup"]
_ -> ["-shared",
"-Wl,-soname,lib" ++ basename ++ ".so",
Expand Down Expand Up @@ -220,16 +223,16 @@ linkSharedLib :: ConfiguredProgram -- ^ Program used to perform linking
-> Version -- ^ wxCore version (wxC has same version number)
-> FilePath -- ^ Directory in which library will be generated
-> String -- ^ Name of the shared library
-> String -- ^ Absolute path of the shared library
-> IO ()
linkSharedLib gcc opts lib_dirs libs objs ver out_dir dll_name =
linkSharedLib gcc opts lib_dirs libs objs ver out_dir dll_name dll_path =
do
let lib_dirs' = map (\d -> "-L" ++ normalisePath d) lib_dirs
out_dir' = normalisePath out_dir
opts' = opts ++ linkCxxOpts ver (out_dir') dll_name
opts' = opts ++ linkCxxOpts ver (out_dir') dll_name dll_path
objs' = map normalisePath objs
libs' = ["-lstdc++"] ++ map ("-l" ++) libs
--runProgram verbose gcc (opts' ++ objs' ++ lib_dirs' ++ libs')
let cmd_line = unwords ([show . locationPath . programLocation $ gcc] ++ opts' ++ objs' ++ lib_dirs' ++ libs')
system $ (unwords ([show . locationPath . programLocation $ gcc] ++ opts' ++ objs' ++ lib_dirs' ++ libs'))
return ()

Expand Down Expand Up @@ -262,7 +265,11 @@ ldconfig :: FilePath -> IO ()
ldconfig path = case buildOS of
Windows -> return ()
OSX -> return ()
_ -> system ("ldconfig -n " ++ path) >> return ()
_ -> do
ld_exit_code <- system ("/sbin/ldconfig -n " ++ path)
case ld_exit_code of
ExitSuccess -> return ()
otherwise -> error "Couldn't execute ldconfig, ensure it is on your path"

myInstHook :: PackageDescription -> LocalBuildInfo -> UserHooks -> InstallFlags -> IO ()
myInstHook pkg_descr local_bld_info user_hooks inst_flags =
Expand Down
2 changes: 1 addition & 1 deletion wxcore/Setup.hs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ wxcInstallDir lbi =
Unambiguous wxc_pkgs -> case find (isInfixOf "wxc") . includeDirs . head $ wxc_pkgs of
Just wxcIncludeDir -> takeDirectory wxcIncludeDir
Nothing -> error "wxcInstallDir: Couldn't find wxc include dir"
_ -> error $ "wxcInstallDir: Couldn't find wxc package in installed packages."
_ -> error "wxcInstallDir: Couldn't find wxc package in installed packages"

-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

Expand Down
133 changes: 0 additions & 133 deletions wxcore/wxcore.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -27,27 +27,6 @@ extra-tmp-files:
src/haskell/Graphics/UI/WXCore/WxcClasses.hs
src/haskell/Graphics/UI/WXCore/WxcClassesAL.hs
src/haskell/Graphics/UI/WXCore/WxcClassesMZ.hs
src/haskell/Graphics/UI/WXCore/WxcDefs.hs

extra-source-files:
src/cpp/stc_gen.cpp
src/include/dragimage.h
src/include/eljgrid.h
src/include/ewxw_def.h
src/include/graphicscontext.h
src/include/glcanvas.h
src/include/managed.h
src/include/mediactrl.h
src/include/previewframe.h
src/include/printout.h
src/include/sound.h
src/include/stc.h
src/include/stc_gen.h
src/include/textstream.h
src/include/wrapper.h
src/include/wxc.h
src/include/wxc_glue.h
src/include/wxc_types.h

flag splitBase
description: use new split base
Expand All @@ -57,118 +36,6 @@ library
hs-source-dirs:
src/haskell

include-dirs:
src/include

c-sources:
src/cpp/apppath.cpp
src/cpp/dragimage.cpp
src/cpp/eljaccelerator.cpp
src/cpp/eljartprov.cpp
src/cpp/eljbitmap.cpp
src/cpp/eljbrush.cpp
src/cpp/eljbusyinfo.cpp
src/cpp/eljbutton.cpp
src/cpp/eljcalendarctrl.cpp
src/cpp/eljcaret.cpp
src/cpp/eljcheckbox.cpp
src/cpp/eljchecklistbox.cpp
src/cpp/eljchoice.cpp
src/cpp/eljclipboard.cpp
src/cpp/eljcoldata.cpp
src/cpp/eljcolour.cpp
src/cpp/eljcolourdlg.cpp
src/cpp/eljcombobox.cpp
src/cpp/eljconfigbase.cpp
src/cpp/eljcontrol.cpp
src/cpp/eljctxhelp.cpp
src/cpp/eljcursor.cpp
src/cpp/eljdataformat.cpp
src/cpp/eljdatetime.cpp
src/cpp/eljdc.cpp
src/cpp/eljdcsvg.cpp
src/cpp/eljdialog.cpp
src/cpp/eljdirdlg.cpp
src/cpp/eljdnd.cpp
src/cpp/eljdrawing.cpp
src/cpp/eljevent.cpp
src/cpp/eljfiledialog.cpp
src/cpp/eljfilehist.cpp
src/cpp/eljfindrepldlg.cpp
src/cpp/eljfont.cpp
src/cpp/eljfontdata.cpp
src/cpp/eljfontdlg.cpp
src/cpp/eljframe.cpp
src/cpp/eljgauge.cpp
src/cpp/eljgrid.cpp
src/cpp/eljhelpcontroller.cpp
src/cpp/eljicnbndl.cpp
src/cpp/eljicon.cpp
src/cpp/eljimage.cpp
src/cpp/eljimagelist.cpp
src/cpp/eljlayoutconstraints.cpp
src/cpp/eljlistbox.cpp
src/cpp/eljlistctrl.cpp
src/cpp/eljlocale.cpp
src/cpp/eljlog.cpp
src/cpp/eljmask.cpp
src/cpp/eljmdi.cpp
src/cpp/eljmenu.cpp
src/cpp/eljmenubar.cpp
src/cpp/eljmessagedialog.cpp
src/cpp/eljmime.cpp
src/cpp/eljminiframe.cpp
src/cpp/eljnotebook.cpp
src/cpp/eljpalette.cpp
src/cpp/eljpanel.cpp
src/cpp/eljpen.cpp
src/cpp/eljprintdlg.cpp
src/cpp/eljprinting.cpp
src/cpp/eljprocess.cpp
src/cpp/eljradiobox.cpp
src/cpp/eljradiobutton.cpp
src/cpp/eljrc.cpp
src/cpp/eljregion.cpp
src/cpp/eljregioniter.cpp
src/cpp/eljsash.cpp
src/cpp/eljscrollbar.cpp
src/cpp/eljscrolledwindow.cpp
src/cpp/eljsingleinst.cpp
src/cpp/eljsizer.cpp
src/cpp/eljslider.cpp
src/cpp/eljspinctrl.cpp
src/cpp/eljsplitterwindow.cpp
src/cpp/eljstaticbox.cpp
src/cpp/eljstaticline.cpp
src/cpp/eljstatictext.cpp
src/cpp/eljstatusbar.cpp
src/cpp/eljsystemsettings.cpp
src/cpp/eljtextctrl.cpp
src/cpp/eljtimer.cpp
src/cpp/eljtipwnd.cpp
src/cpp/eljtoolbar.cpp
src/cpp/eljvalidator.cpp
src/cpp/eljwindow.cpp
src/cpp/eljwizard.cpp
src/cpp/ewxw_main.cpp
src/cpp/extra.cpp
src/cpp/graphicscontext.cpp
src/cpp/glcanvas.cpp
src/cpp/image.cpp
src/cpp/managed.cpp
src/cpp/mediactrl.cpp
src/cpp/previewframe.cpp
src/cpp/printout.cpp
src/cpp/sckaddr.cpp
src/cpp/socket.cpp
src/cpp/sound.cpp
src/cpp/stc.cpp
src/cpp/std.cpp
src/cpp/taskbaricon.cpp
src/cpp/textstream.cpp
src/cpp/treectrl.cpp
src/cpp/wrapper.cpp

exposed-modules:
Graphics.UI.WXCore
Graphics.UI.WXCore.Controls
Expand Down

0 comments on commit 7e866b4

Please sign in to comment.