summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-02-11 16:19:32 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-02-11 16:19:32 +0200
commitbe44ee078fa5d5470dddd097db0d97fadfc754ff (patch)
treef24dd05a88dbe2330837bc29f762ce648fd1b162
parentec47ef43536bd698f1f1176b5fec3803e149c2ac (diff)
Update Mac OS X binary build
-rw-r--r--binary/darwin/NOTES14
-rwxr-xr-xbinary/darwin/build-dist18
-rwxr-xr-xbinary/darwin/build-gcc17
-rw-r--r--binary/darwin/gcc-4.5.1-plugin-support.patch46
-rwxr-xr-xbinary/darwin/gcc-configure13
-rwxr-xr-xbinary/darwin/libcutl-configure11
-rwxr-xr-xbinary/darwin/odb-configure9
-rw-r--r--binary/darwin/test/clang-cxx1130
8 files changed, 69 insertions, 89 deletions
diff --git a/binary/darwin/NOTES b/binary/darwin/NOTES
index bc3fd87..c035d4c 100644
--- a/binary/darwin/NOTES
+++ b/binary/darwin/NOTES
@@ -1,8 +1,10 @@
-* Newer versions of GCC (e.g., 4.7.3) support plugins on OS X out of the
- box, so no patch is necessary.
+* -fno-devirtualize GCC 4.9.x ICE workaround.
-* Have to use previous GCC build (4.5.1) for libcutl/ODB compilation because
- of some problems 4.7.3 has with older as. See build-dist PATH settings.
+* GCC builds itself 64-bit for some reason. Probably because I don't specify
+ target and by default it is now 64-bit? I suspect that if I specify the
+ x86_64-apple-darwin10 target, then it will default to 64-bit target?
+ Probably will be switching to x86_64-apple-darwin10-only target in the
+ next release.
- Because of that, we have to manually add 4.7.3 plugin headers to CPPFLAGS
- (see odb-configure).
+* Using lipo to merge libstdc++ so that standard ODB "relative library path"
+ mechanism works.
diff --git a/binary/darwin/build-dist b/binary/darwin/build-dist
index ccbe0a7..434ba82 100755
--- a/binary/darwin/build-dist
+++ b/binary/darwin/build-dist
@@ -14,7 +14,7 @@ function error ()
rebuild=n
-arch=i686-apple-darwin8
+arch=i686-apple-darwin10
rebuild=n
while [ $# -gt 0 ]; do
@@ -44,9 +44,7 @@ mver=`echo $over | sed -e 's%\([0-9]*\.[0-9]*\).*%\1%'`
install_root="/tmp/odb-$over-$cpu-macosx"
-# Using older version of GCC (newer one have trouble with old as).
-#
-export PATH=/$arch-4.5.1/bin:$PATH
+export PATH=/$arch/bin:$PATH
# Clean everything up if we are rebuilding.
#
@@ -95,7 +93,7 @@ if [ $rebuild = y ]; then
../libcutl-configure
fi
-make
+make -j 4
cd ..
# Build odb plugin
@@ -106,7 +104,7 @@ if [ $rebuild = y ]; then
../odb-configure p $arch $install_root
fi
-make
+make -j 2
make install-strip
cd ..
@@ -118,7 +116,7 @@ if [ $rebuild = y ]; then
../odb-configure d $arch $install_root
fi
-make -C odb odb
+make -j 2 -C odb odb
cp odb/odb $install_root/bin/
cd ..
@@ -130,7 +128,7 @@ if [ $rebuild = y ]; then
../libodb-configure $install_root/lib/odb/$arch
fi
-make
+make -j 4
cd odb
make install-data
cd ../..
@@ -143,7 +141,7 @@ if [ $rebuild = y ]; then
../libodb-boost-configure $install_root/lib/odb/$arch
fi
-make
+make -j 4
make install-data
cd ..
@@ -155,7 +153,7 @@ if [ $rebuild = y ]; then
../libodb-qt-configure $install_root/lib/odb/$arch
fi
-make
+make -j 4
make install-data
cd ..
diff --git a/binary/darwin/build-gcc b/binary/darwin/build-gcc
index 93ffb41..874ad9d 100755
--- a/binary/darwin/build-gcc
+++ b/binary/darwin/build-gcc
@@ -12,7 +12,7 @@ function error ()
echo "$*" 1>&2
}
-arch=i686-apple-darwin8
+arch=i686-apple-darwin10
rebuild=n
while [ $# -gt 0 ]; do
@@ -37,10 +37,6 @@ out_root=`pwd`
mkdir -p gcc-build
-# Need gcc-4.2.
-#
-export PATH=/usr/local/bin:$PATH
-
# Clean everything up if we are rebuilding.
#
if [ $rebuild = y ]; then
@@ -62,4 +58,13 @@ make -C $arch/libstdc++-v3 install-strip
cd ..
-#cp ../gcc/gcc/config/darwin-sections.def /$arch/lib/gcc/$arch/4.5.1/plugin/include/
+# Make a fat binary for libstdc++ (libgcc_s already seems to be fat).
+#
+cd /$arch/lib
+mkdir -p i386
+mv libstdc++.6.dylib i386/
+lipo -create i386/libstdc++.6.dylib x86_64/libstdc++.6.dylib -output libstdc++.6.dylib
+
+# Clean it up a bit.
+#
+rm -f /$arch/bin/$arch-*
diff --git a/binary/darwin/gcc-4.5.1-plugin-support.patch b/binary/darwin/gcc-4.5.1-plugin-support.patch
deleted file mode 100644
index 9bd7c9f..0000000
--- a/binary/darwin/gcc-4.5.1-plugin-support.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-Index: gcc/configure.ac
-===================================================================
---- gcc/configure.ac (revision 161355)
-+++ gcc/configure.ac (working copy)
-@@ -4544,15 +4544,23 @@
- pluginlibs=
- if test x"$enable_plugin" = x"yes"; then
-
-+ case "${host}" in
-+ *-*-darwin*)
-+ export_sym_check="$gcc_cv_nm -g"
-+ ;;
-+ *)
-+ export_sym_check="$gcc_cv_objdump -T"
-+ ;;
-+ esac
- AC_MSG_CHECKING([for exported symbols])
- echo "int main() {return 0;} int foobar() {return 0;}" > conftest.c
- ${CC} ${CFLAGS} ${LDFLAGS} conftest.c -o conftest > /dev/null 2>&1
-- if $gcc_cv_objdump -T conftest | grep foobar > /dev/null; then
-+ if $export_sym_check conftest | grep foobar > /dev/null; then
- : # No need to use a flag
- else
- AC_MSG_CHECKING([for -rdynamic])
- ${CC} ${CFLAGS} ${LDFLAGS} -rdynamic conftest.c -o conftest > /dev/null 2>&1
-- if $gcc_cv_objdump -T conftest | grep foobar > /dev/null; then
-+ if $export_sym_check conftest | grep foobar > /dev/null; then
- plugin_rdynamic=yes
- pluginlibs="-rdynamic"
- else
-@@ -4572,7 +4580,14 @@
-
- # Check that we can build shared objects with -fPIC -shared
- saved_LDFLAGS="$LDFLAGS"
-- LDFLAGS="$LDFLAGS -fPIC -shared"
-+ case "${host}" in
-+ *-*-darwin*)
-+ LDFLAGS="$LDFLAGS -fPIC -shared -undefined dynamic_lookup"
-+ ;;
-+ *)
-+ LDFLAGS="$LDFLAGS -fPIC -shared"
-+ ;;
-+ esac
- AC_MSG_CHECKING([for -fPIC -shared])
- AC_TRY_LINK(
- [extern int X;],[return X == 0;],
diff --git a/binary/darwin/gcc-configure b/binary/darwin/gcc-configure
index fe758e3..a7e324d 100755
--- a/binary/darwin/gcc-configure
+++ b/binary/darwin/gcc-configure
@@ -1,15 +1,17 @@
#! /bin/sh
-../../gcc/configure \
+../gcc/configure \
--disable-bootstrap \
--enable-languages=c,c++ \
---disable-multiarch \
+--enable-multiarch \
+--enable-targets=i386,x86_64 \
+--enable-multilib \
--enable-shared \
--disable-libssp \
--disable-libgomp \
--disable-nls \
---disable-multilib \
--disable-libstdcxx-pch \
+--disable-libstdcxx-debug \
--prefix=/$1 \
--enable-plugin \
--build=$1 \
@@ -17,8 +19,5 @@
--target=$1 \
--enable-cxx-flags=-fPIC \
CFLAGS=-O2 CXXFLAGS=-O2 \
-CFLAGS_FOR_TARGET="-O2 -fno-common" CXXFLAGS_FOR_TARGET="-O2 -fno-common" \
+CFLAGS_FOR_TARGET="-O2" CXXFLAGS_FOR_TARGET="-O2" \
CC=gcc-4.2 CXX=g++-4.2
-
-
-# LDFLAGS="-s" -s interferes with plugin test
diff --git a/binary/darwin/libcutl-configure b/binary/darwin/libcutl-configure
index 621d50b..315897b 100755
--- a/binary/darwin/libcutl-configure
+++ b/binary/darwin/libcutl-configure
@@ -1,14 +1,7 @@
#! /bin/sh
-libcxx=`g++ --print-file-name libstdc++.a`
-libgcc=`g++ --print-file-name libgcc.a`
-libgcc_eh=`g++ --print-file-name libgcc_eh.a`
-
./configure \
--disable-shared \
--with-pic \
-CC="gcc -nodefaultlibs" \
-CFLAGS=-O2 \
-CXX="g++ -nodefaultlibs" \
-CXXFLAGS=-O2 \
-LIBS="$libcxx $libgcc $libgcc_eh -lSystem"
+CFLAGS="-m64 -O2" \
+CXXFLAGS="-m64 -O2"
diff --git a/binary/darwin/odb-configure b/binary/darwin/odb-configure
index b199f2f..0e8af7c 100755
--- a/binary/darwin/odb-configure
+++ b/binary/darwin/odb-configure
@@ -1,9 +1,9 @@
#! /bin/sh
if test "$1" = "d"; then
- libcxx=`g++ --print-file-name libstdc++.a`
- libgcc=`g++ --print-file-name libgcc.a`
- libgcc_eh=`g++ --print-file-name libgcc_eh.a`
+ libcxx=`g++ -m64 --print-file-name libstdc++.a`
+ libgcc=`g++ -m64 --print-file-name libgcc.a`
+ libgcc_eh=`g++ -m64 --print-file-name libgcc_eh.a`
cxx="g++ -nodefaultlibs"
libs="$libcxx $libgcc $libgcc_eh -lSystem"
@@ -19,5 +19,4 @@ fi
--with-options-file=../etc/odb/default.options \
--prefix=$3 \
--libexecdir=$3/lib \
-CXX="$cxx" CXXFLAGS=-O2 LIBS="$libs" \
-CPPFLAGS="-I`/$2/bin/g++ --print-file-name plugin`/include"
+CXX="$cxx" LIBS="$libs" CXXFLAGS="-m64 -O2 -fno-devirtualize"
diff --git a/binary/darwin/test/clang-cxx11 b/binary/darwin/test/clang-cxx11
new file mode 100644
index 0000000..a365a76
--- /dev/null
+++ b/binary/darwin/test/clang-cxx11
@@ -0,0 +1,30 @@
+SQLITE=$HOME/sqlite
+MYSQL=$HOME/mysqlclient-5.1.51-osx10.4-i686
+PGSQL=$HOME/pgsql-8.4.8
+ORACLE=$HOME/oracle
+
+sqlite_build_options=
+sqlite_use_options=
+
+mysql_build_options=
+mysql_use_options="--with-mysql-host=192.168.0.2 --with-mysql-client=$MYSQL/bin/mysql"
+
+pgsql_build_options=
+pgsql_use_options="--with-pgsql-host=192.168.0.2 --with-pgsql-client=$PGSQL/bin/psql"
+
+oracle_build_options="--with-oci=$ORACLE"
+oracle_use_options="--with-oracle-host=192.168.0.2 --with-oracle-service=xe --with-oracle-client=$ORACLE/sqlplus"
+
+with_qt=n
+with_boost=n
+
+CC=clang
+CXX=clang++
+CPPFLAGS="-I$SQLITE -I$MYSQL/include -I$PGSQL/include"
+CXXFLAGS="-m32 -std=c++11 -O2 -W -Wall -Wno-unknown-pragmas"
+LDFLAGS="-m32 -L$SQLITE -L$MYSQL/lib -L$PGSQL/lib"
+
+export DYLD_LIBRARY_PATH=$SQLITE:$DYLD_LIBRARY_PATH
+export DYLD_LIBRARY_PATH=$MYSQL/lib:$DYLD_LIBRARY_PATH
+export DYLD_LIBRARY_PATH=$PGSQL/lib:$DYLD_LIBRARY_PATH
+export DYLD_LIBRARY_PATH=$ORACLE:$DYLD_LIBRARY_PATH