|
From: <ari...@ic...> - 2017-03-16 15:26:24
|
> 2017/03/11 23:29、有坂富雄 <ari...@ic...> wrote:
>
> Hello,
>
> The following is my note of compiling wxWidgets and wxMaxima on MacOS X 10.11.6.
> In my case, wxWidgets depends on three libraries (jpeg, libpng, tiff).
> They have been automatically installed due to installing Gnuplot with MacPorts.
> I use some patch files which are included in MacPorts.
I have installed two sets of libraries (libpng, libjpeg, libtiff, etc.).
One is installed with MacPorts. The other is installed with Homebrew.
And so I misunderstood which libraries are linked to wxWidgets and wxMaxima.
(The default library search path is "/usr/lib" then "/usr/local/lib".)
The following note is the fixed version to compile wxWidgets and wxMaxima with MacPorts:
(It does not depend on Homebrew.)
[1] Make wxWidgets static libraries:
--------------------------------------------------------------------------------
$ bzip2 -dc ./wxWidgets-3.0.2.tar.bz2 | tar xf -
$
$ pushd ./wxWidgets-3.0.2
$
$ cp -ip ./configure ./configure.orig
$ open -e ./configure
$ diff -u ./configure.orig ./configure
--- ./configure.orig 2014-10-07 06:33:44.000000000 +0900
+++ ./configure 2017-03-15 00:42:14.000000000 +0900
@@ -21893,48 +21893,7 @@
-SEARCH_INCLUDE="\
- /usr/local/include \
- /usr/local/X11/include \
- /usr/local/include/X11 \
- /usr/local/X11R7/include \
- /usr/local/X11R6/include \
- /usr/local/include/X11R7 \
- /usr/local/include/X11R6 \
- \
- /usr/Motif-2.1/include \
- /usr/Motif-1.2/include \
- /usr/include/Motif1.2 \
- \
- /usr/dt/include \
- /usr/openwin/include \
- \
- /usr/include/Xm \
- \
- /usr/X11R7/include \
- /usr/X11R6/include \
- /usr/X11R6.4/include \
- \
- /usr/include/X11R7 \
- /usr/include/X11R6 \
- \
- /usr/X11/include \
- /usr/include/X11 \
- \
- /usr/XFree86/include/X11 \
- /usr/pkg/include \
- \
- /usr/local/X1R5/include \
- /usr/local/include/X11R5 \
- /usr/X11R5/include \
- /usr/include/X11R5 \
- \
- /usr/local/X11R4/include \
- /usr/local/include/X11R4 \
- /usr/X11R4/include \
- /usr/include/X11R4 \
- \
- /usr/openwin/share/include"
+SEARCH_INCLUDE="/opt/local/include"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libraries directories" >&5
$as_echo_n "checking for libraries directories... " >&6; }
$
$ patch -p0 </opt/local/var/macports/sources/rsync.macports.org/macports/release/tarballs/ports/graphics/wxWidgets-3.0/files/patch-upstream-src-stc-scintilla-src-Editor.cxx.diff
$
$ patch -p0 </opt/local/var/macports/sources/rsync.macports.org/macports/release/tarballs/ports/graphics/wxWidgets-3.0/files/patch-upstream-noquicktime.diff
$
$ patch -p0 </opt/local/var/macports/sources/rsync.macports.org/macports/release/tarballs/ports/graphics/wxWidgets-3.0/files/patch-upstream-src-osx-carbon-fontdlgosx.mm.diff
$
$ patch -p0 </opt/local/var/macports/sources/rsync.macports.org/macports/release/tarballs/ports/graphics/wxWidgets-3.0/files/patch-upstream-webkit-proper-types.diff
$
$ pushd ./build
$
$ arch_flags="-arch x86_64"
$
$ ../configure --with-macosx-version-min=10.9 --enable-unicode --with-opengl --with-osx_cocoa --with-libjpeg --with-libtiff --with-libpng --with-zlib --disable-mediactrl --enable-graphics_ctx --with-expat --disable-precomp-headers --disable-shared --with-libiconv-prefix="/opt/local" CFLAGS="$arch_flags" CXXFLAGS="$arch_flags" CPPFLAGS="$arch_flags" OBJCFLAGS="$arch_flags" OBJCXXFLAGS="$arch_flags" LDFLAGS="$arch_flags -L/opt/local/lib" CC="/usr/bin/gcc" CXX="/usr/bin/g++" CPP="/usr/bin/g++ -E" CXXCPP="/usr/bin/g++ -E"
$
$ make
$
$ ls -lt ./lib/
$
$ popd;popd
--------------------------------------------------------------------------------
[2] Make wxMaxima.app:
--------------------------------------------------------------------------------
$ tar xzf ./wxmaxima-15.08.2.tar.gz
$
$ pushd ./wxmaxima-15.08.2
$
$ cp -i ../wxWidgets-3.0.2/wxwin.m4 ./acinclude.m4
$
$ ./configure --with-wx-config=../wxWidgets-3.0.2/build/wx-config --enable-fullystatic LDFLAGS="-L/opt/local/lib" CC="/usr/bin/gcc -arch x86_64" CXX="/usr/bin/g++ -arch x86_64" CPP="/usr/bin/g++ -E" CXXCPP="/usr/bin/g++ -E"
$
$ make
$
$ make wxMaxima.app
$
$ ls -ltd ./wxMaxima.app
$
$ popd
--------------------------------------------------------------------------------
The result is that wxMaxima.app depends on seven shared libraries (libpng16, libjpeg, libtiff, libexpat, libz, libiconv, liblzma). Note: libtiff depends on liblzma.
By the way, You can make wxMaxima standalone.
[3] Make wxMaxima independent of the shared library which is not included in MacOS X:
(1) Copy the shared library into the application bundle of wxMaxima.
(2) Changes the dependent shared library install name old to new in the shared library of wxMaxima.
(3) Changes the dependent shared library install name old to new in the executable file of wxMaxima.
(Note: I use "otool -L" to display the path name of the dependent shared library.)
--------------------------------------------------------------------------------
$ cp -iRp ./wxmaxima-15.08.2/wxMaxima.app ./
$
$ otool -L ./wxMaxima.app/Contents/MacOS/wxmaxima
$
$ mkdir ./wxMaxima.app/Contents/MacOS/lib
$
$ pushd ./wxMaxima.app/Contents/MacOS/lib
$
$ cp -ip /opt/local/lib/libpng16.16.dylib ./
$ cp -ip /opt/local/lib/libjpeg.9.dylib ./
$ cp -ip /opt/local/lib/libtiff.5.dylib ./
$ cp -ip /opt/local/lib/libexpat.1.dylib ./
$ cp -ip /opt/local/lib/libz.1.dylib ./
$ cp -ip /opt/local/lib/libiconv.2.dylib ./
$ cp -ip /opt/local/lib/liblzma.5.dylib ./
$
$ otool -L ./libtiff.5.dylib
$
$ install_name_tool -change /opt/local/lib/liblzma.5.dylib @executable_path/lib/liblzma.5.dylib libtiff.5.dylib
$
$ install_name_tool -change /opt/local/lib/libjpeg.9.dylib @executable_path/lib/libjpeg.9.dylib libtiff.5.dylib
$
$ install_name_tool -change /opt/local/lib/libz.1.dylib @executable_path/lib/libz.1.dylib libtiff.5.dylib
$
$ otool -L ./libtiff.5.dylib
$
$ otool -L ./liblzma.5.dylib
$
$ install_name_tool -change /opt/local/lib/liblzma.5.dylib @executable_path/lib/liblzma.5.dylib liblzma.5.dylib
$
$ otool -L ./liblzma.5.dylib
$
$ otool -L ./libpng16.16.dylib
$
$ install_name_tool -change /opt/local/lib/libz.1.dylib @executable_path/lib/libz.1.dylib libpng16.16.dylib
$
$ otool -L ./libpng16.16.dylib
$
$ pushd ..
$
$ install_name_tool -change /opt/local/lib/libpng16.16.dylib @executable_path/lib/libpng16.16.dylib wxmaxima
$
$ install_name_tool -change /opt/local/lib/libjpeg.9.dylib @executable_path/lib/libjpeg.9.dylib wxmaxima
$
$ install_name_tool -change /opt/local/lib/libtiff.5.dylib @executable_path/lib/libtiff.5.dylib wxmaxima
$
$ install_name_tool -change /opt/local/lib/libexpat.1.dylib @executable_path/lib/libexpat.1.dylib wxmaxima
$
$ install_name_tool -change /opt/local/lib/libz.1.dylib @executable_path/lib/libz.1.dylib wxmaxima
$
$ install_name_tool -change /opt/local/lib/libiconv.2.dylib @executable_path/lib/libiconv.2.dylib wxmaxima
$
$ popd;popd
$
$ otool -L ./wxMaxima.app/Contents/MacOS/wxmaxima
--------------------------------------------------------------------------------
This wxMaxima works good on MacOS X (10.9.5 and 10.11.6).
I don't have any troubles with loading shared libraries.
Thanks,
Tomio Arisaka
|