diff --git a/CHANGELOG b/CHANGELOG index 1926672..285c424 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,7 +1,14 @@ +/******************************* v0.9 *******************************/ + +changed: + * updated cctools to 862 + * updated ld64 to 241.9 + /******************************* v0.8 *******************************/ changed: - * updated cctools to 855 with ld64-236.3 (Xcode 5.1) + * updated cctools to 855 + * updated ld64 to 236.3 * gcc 4.9.0 -> gcc 4.9.2 added: diff --git a/README.md b/README.md index d5d0347..e7a398c 100755 --- a/README.md +++ b/README.md @@ -24,8 +24,8 @@ Move your packaged SDK to the tarballs/ directory. Then ensure you have the following installed on your Linux/BSD box: -`Clang 3.2+`, `llvm-devel`, `automake`, `autogen`, `libtool`, `patch`, -`libxml2-devel` (<=10.5 only), `uuid-devel`, `openssl-devel` and the `bash shell`. +`Clang 3.2+`, `llvm-devel`, `patch`, `libxml2-devel` (<=10.5 only), +`uuid-devel`, `openssl-devel` and the `bash shell`. \-- You can run 'sudo tools/get\_dependencies.sh' to get these automatically. diff --git a/build.sh b/build.sh index 0cd77b4..0f8ee57 100755 --- a/build.sh +++ b/build.sh @@ -77,7 +77,7 @@ if [ -z "$OSX_VERSION_MIN" ]; then fi # Don't change this -OSXCROSS_VERSION=0.8 +OSXCROSS_VERSION=0.9 TARBALL_DIR=$BASE_DIR/tarballs BUILD_DIR=$BASE_DIR/build @@ -129,12 +129,6 @@ require sed require gunzip require cpio -if [ "$PLATFORM" != "Darwin" ]; then - require autogen - require automake - require libtool -fi - pushd $BUILD_DIR &>/dev/null function remove_locks() @@ -145,21 +139,29 @@ function remove_locks() source $BASE_DIR/tools/trap_exit.sh # CCTOOLS -if [ "$PLATFORM" != "Darwin" ]; then +if [ "$PLATFORM" == "Darwin" ]; then + PREVCXX=$CXX + CXX+=" -stdlib=libc++" +fi res=`check_cxx_stdlib` +if [ "$PLATFORM" == "Darwin" ]; then + CXX=$PREVCXX + unset PREVCXX +fi + if [ $res -ne 0 ]; then - echo "Your C++ standard library is either broken or too old to build ld64-236.3" + echo "Your C++ standard library is either broken or too old to build ld64-241.9" echo "Building ld64-134.9 instead" echo "" sleep 3 LINKER_VERSION=134.9 else - LINKER_VERSION=236.3 + LINKER_VERSION=241.9 fi -CCTOOLS="cctools-855-ld64-$LINKER_VERSION" +CCTOOLS="cctools-862-ld64-$LINKER_VERSION" CCTOOLS_TARBALL=`ls $TARBALL_DIR/$CCTOOLS*.tar.* | head -n1` CCTOOLS_REVHASH=`echo "$CCTOOLS_TARBALL" head -n1 | tr '_' ' ' | tr '.' ' ' | awk '{print $3}'` @@ -172,27 +174,14 @@ extract $CCTOOLS_TARBALL 1 pushd cctools*/cctools &>/dev/null pushd .. &>/dev/null -if [ $LINKER_VERSION != "134.9" ]; then - # fix compiling ld64 with libc++ - patch -p0 < $PATCH_DIR/cctools-e3cbeaf.patch - # check for __cxa_demangle in -lstdc++ - patch -p0 < $PATCH_DIR/cctools-499e470.patch -else - # __cxa_demangle + 3.5 build fix - patch -p0 < $PATCH_DIR/cctools-a78597e.patch -fi -if [ "$PLATFORM" == "Linux" ]; then - patch -p0 < $PATCH_DIR/cctools-old-linux.patch -fi -# fix LD_LIBRARY_PATH -patch -p0 < $PATCH_DIR/cctools-f7a5930.patch -patch -p0 < $PATCH_DIR/cctools-cdefs.patch +./tools/fix_unistd_issue.sh 1>/dev/null popd &>/dev/null patch -p0 < $PATCH_DIR/cctools-ld64-1.patch patch -p0 < $PATCH_DIR/cctools-ld64-2.patch echo "" -./autogen.sh -./configure --prefix=$TARGET_DIR --target=x86_64-apple-$TARGET +CONFFLAGS="--prefix=$TARGET_DIR --target=x86_64-apple-$TARGET" +[ -n "$DISABLE_LTO_SUPPORT" ] && CONFFLAGS+=" --enable-lto=no" +./configure $CONFFLAGS $MAKE -j$JOBS $MAKE install -j$JOBS popd &>/dev/null @@ -210,10 +199,6 @@ for CCTOOL in ${CCTOOLS[@]}; do done popd &>/dev/null -fi -else -# Darwin -LINKER_VERSION="`get_ld_version`" fi # CCTOOLS END @@ -242,7 +227,6 @@ fi fi # XAR END -if [ "$PLATFORM" != "Darwin" ]; then if [ ! -f "have_cctools_$TARGET" ]; then function check_cctools() @@ -263,7 +247,6 @@ touch "have_cctools_${CCTOOLS_REVHASH}_$TARGET" echo "" fi # HAVE_CCTOOLS -fi set +e ls $TARBALL_DIR/MacOSX$SDK_VERSION* &>/dev/null @@ -316,8 +299,10 @@ export OSXCROSS_LINKER_VERSION=$LINKER_VERSION if [ "$PLATFORM" != "Darwin" ]; then # libLTO.so - export OSXCROSS_LIBLTO_PATH=`cat $BUILD_DIR/cctools*/cctools/tmp/ldpath 2>/dev/null` - export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$OSXCROSS_LIBLTO_PATH" + set +e + eval `cat $BUILD_DIR/cctools*/cctools/config.log | grep LLVM_LIB_DIR | head -n1` + set -e + export OSXCROSS_LIBLTO_PATH=$LLVM_LIB_DIR fi $BASE_DIR/wrapper/build.sh 1>/dev/null diff --git a/patches/cctools-499e470.patch b/patches/cctools-499e470.patch deleted file mode 100644 index 89e6075..0000000 --- a/patches/cctools-499e470.patch +++ /dev/null @@ -1,26 +0,0 @@ -commit 499e470904eaa976755de9caca2b98b92f0efcd9 -Author: Thomas Pöchtrager -Date: Fri Jun 20 10:25:39 2014 +0200 - - check for __cxa_demangle in -lstdc++ - -diff --git cctools/configure.ac cctools/configure.ac -index 3411e34..4ac2d69 100644 ---- cctools/configure.ac -+++ cctools/configure.ac -@@ -254,10 +254,12 @@ AC_SUBST(UUID_LIBS) - AC_CHECK_LIB([crypto],[MD5_Init],[CRYPT_LIBS=-lcrypto]) - AC_SUBST(CRYPT_LIBS) - --AC_CHECK_LIB([supc++],[__cxa_demangle],[CXXABI_LIB=-lsupc++]) --AC_SUBST(CXXABI_LIB) -+AC_CHECK_LIB([c++abi],[__cxa_demangle],[CXXABI_LIB=-lc++abi],[ -+ AC_CHECK_LIB([supc++],[__cxa_demangle],[CXXABI_LIB=-lsupc++],[ -+ AC_CHECK_LIB([stdc++],[__cxa_demangle],[CXXABI_LIB=-lstdc++],[exit 1]) -+ ]) -+]) - --AC_CHECK_LIB([c++abi],[__cxa_demangle],[CXXABI_LIB=-lc++abi]) - AC_SUBST(CXXABI_LIB) - - AC_C_BIGENDIAN([AC_SUBST([ENDIAN_FLAG],[-D__BIG_ENDIAN__=1])], diff --git a/patches/cctools-a78597e.patch b/patches/cctools-a78597e.patch deleted file mode 100644 index 3847903..0000000 --- a/patches/cctools-a78597e.patch +++ /dev/null @@ -1,77 +0,0 @@ -commit a78597e93b6fc7332a3761771fa19c8e0d2945cf -Author: Thomas Pöchtrager -Date: Fri Jun 20 11:01:58 2014 +0200 - - check for __cxa_demangle in -lstdc++ - clang 3.5 compile fix - -diff --git cctools/configure.ac cctools/configure.ac -index 0d9a4ec..2b23112 100644 ---- cctools/configure.ac -+++ cctools/configure.ac -@@ -239,26 +239,26 @@ CFLAGS=$ORIGCFLAGS - AC_SUBST([WARNINGS], [$WARNINGS]) - - --AC_CHECK_LIB([dl],[dlopen],[ -- DL_LIBS=-ldl -- ]) -+AC_CHECK_LIB([dl],[dlopen],[DL_LIBS=-ldl]) - AC_SUBST(DL_LIBS) - --AC_CHECK_LIB([pthread],[pthread_create],[ -- PTHREAD_FLAGS=-pthread -- ]) -+AC_CHECK_LIB([pthread],[pthread_create],[PTHREAD_FLAGS=-pthread]) - AC_SUBST(PTHREAD_FLAGS) - --AC_CHECK_LIB([uuid],[uuid_generate_random],[ -- UUID_LIBS=-luuid -- ]) -+AC_CHECK_LIB([uuid],[uuid_generate_random],[UUID_LIBS=-luuid]) - AC_SUBST(UUID_LIBS) - --AC_CHECK_LIB([crypto],[MD5_Init],[ -- CRYPT_LIBS=-lcrypto -- ]) -+AC_CHECK_LIB([crypto],[MD5_Init],[CRYPT_LIBS=-lcrypto]) - AC_SUBST(CRYPT_LIBS) - -+AC_CHECK_LIB([c++abi],[__cxa_demangle],[CXXABI_LIB=-lc++abi],[ -+ AC_CHECK_LIB([supc++],[__cxa_demangle],[CXXABI_LIB=-lsupc++],[ -+ AC_CHECK_LIB([stdc++],[__cxa_demangle],[CXXABI_LIB=-lstdc++],[exit 1]) -+ ]) -+]) -+ -+AC_SUBST(CXXABI_LIB) -+ - AC_C_BIGENDIAN([AC_SUBST([ENDIAN_FLAG],[-D__BIG_ENDIAN__=1])], - [AC_SUBST([ENDIAN_FLAG],[-D__LITTLE_ENDIAN__=1])]) - -diff --git cctools/ld64/src/ld/code-sign-blobs/memutils.h cctools/ld64/src/ld/code-sign-blobs/memutils.h -index 391ddc1..b0421f0 100644 ---- cctools/ld64/src/ld/code-sign-blobs/memutils.h -+++ cctools/ld64/src/ld/code-sign-blobs/memutils.h -@@ -33,6 +33,9 @@ - #include - #include - -+#ifdef __GLIBCXX__ -+using namespace __gnu_cxx; -+#endif - - // - // Encapsulate these very sharp tools in a separate (ugly-named) namespace -diff --git cctools/otool/Makefile.am cctools/otool/Makefile.am -index 3172d7e..4adb742 100644 ---- cctools/otool/Makefile.am -+++ cctools/otool/Makefile.am -@@ -4,7 +4,7 @@ otool_LDADD = \ - $(top_srcdir)/libobjc2/libobjc.la \ - $(DL_LIBS) - --otool_LDFLAGS = $(PTHREAD_FLAGS) -lsupc++ # __cxa_demangle -+otool_LDFLAGS = $(PTHREAD_FLAGS) $(CXXABI_LIB) - - otool_CFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/include/foreign -I$(top_srcdir)/libstuff -I$(top_srcdir)/libobjc2 $(WARNINGS) $(LTO_DEFS) -D_DARWIN_C_SOURCE -D__DARWIN_UNIX03 $(ENDIAN_FLAG) -DOTOOL - diff --git a/patches/cctools-cdefs.patch b/patches/cctools-cdefs.patch deleted file mode 100644 index 283cd68..0000000 --- a/patches/cctools-cdefs.patch +++ /dev/null @@ -1,32 +0,0 @@ -commit 7083dddbb0f106d791d313829ea7dc45db90e375 -Author: Thomas Pöchtrager -Date: Thu Sep 11 00:34:16 2014 +0200 - - add a workaround for a glibc 2.20 bug - -diff --git cctools/include/sys/cdefs.h cctools/include/sys/cdefs.h -new file mode 100644 -index 0000000..ca78da5 ---- /dev/null -+++ cctools/include/sys/cdefs.h -@@ -0,0 +1,20 @@ -+/* -+ * Workaround for a GLIBC bug. -+ * https://sourceware.org/bugzilla/show_bug.cgi?id=14952 -+ */ -+ -+#include_next -+ -+#ifdef __GLIBC__ -+ -+#ifndef __extern_inline -+# define __extern_inline \ -+ extern __inline __attribute__ ((__gnu_inline__)) -+#endif -+ -+#ifndef __extern_always_inline -+# define __extern_always_inline \ -+ extern __always_inline __attribute__ ((__gnu_inline__)) -+#endif -+ -+#endif /* __GLIBC__ */ diff --git a/patches/cctools-e3cbeaf.patch b/patches/cctools-e3cbeaf.patch deleted file mode 100644 index c3ad9c2..0000000 --- a/patches/cctools-e3cbeaf.patch +++ /dev/null @@ -1,27 +0,0 @@ -diff --git cctools/configure.ac cctools/configure.ac -index 8b59f6b..3411e34 100644 ---- cctools/configure.ac -+++ cctools/configure.ac -@@ -12,7 +12,7 @@ CXX=clang++ - - CFLAGS="$CFLAGS `cat tmp/cflags 2>/dev/null`" - CFLAGS="$CFLAGS -isystem /usr/local/include -isystem /usr/pkg/include -O3" --CXXFLAGS="$CXXFLAGS -std=gnu++0x `cat tmp/cxxflags 2>/dev/null`" -+CXXFLAGS="$CXXFLAGS -std=c++0x `cat tmp/cxxflags 2>/dev/null`" - CXXFLAGS="$CXXFLAGS -isystem /usr/local/include -isystem /usr/pkg/include -O3" - - LDFLAGS="$LDFLAGS -L/usr/local/lib `cat tmp/ldflags 2>/dev/null`" -diff --git cctools/ld64/src/ld/code-sign-blobs/memutils.h cctools/ld64/src/ld/code-sign-blobs/memutils.h -index 8fa48d6..4c97973 100644 ---- cctools/ld64/src/ld/code-sign-blobs/memutils.h -+++ cctools/ld64/src/ld/code-sign-blobs/memutils.h -@@ -33,6 +33,9 @@ - #include - #include - -+#ifdef __GLIBCXX__ -+using namespace __gnu_cxx; -+#endif - - // - // Encapsulate these very sharp tools in a separate (ugly-named) namespace diff --git a/patches/cctools-f7a5930.patch b/patches/cctools-f7a5930.patch deleted file mode 100644 index f7c92d8..0000000 --- a/patches/cctools-f7a5930.patch +++ /dev/null @@ -1,34 +0,0 @@ -commit f7a5930c3f0931340516587241a841b1c6b31c86 -Author: Thomas Pöchtrager -Date: Sat Jul 5 11:07:48 2014 +0200 - - fix LD_LIBRARY_PATH - -diff --git cctools/configure.ac cctools/configure.ac -index 4ac2d69..c4f6c47 100644 ---- cctools/configure.ac -+++ cctools/configure.ac -@@ -6,9 +6,10 @@ AC_CANONICAL_TARGET - - AC_ARG_PROGRAM - --#force compiler to clang -+# force compiler to clang - CC=clang - CXX=clang++ -+CPP="clang -E" - - CFLAGS="$CFLAGS `cat tmp/cflags 2>/dev/null`" - CFLAGS="$CFLAGS -isystem /usr/local/include -isystem /usr/pkg/include -O3" -@@ -16,9 +17,9 @@ CXXFLAGS="$CXXFLAGS -std=c++0x `cat tmp/cxxflags 2>/dev/null`" - CXXFLAGS="$CXXFLAGS -isystem /usr/local/include -isystem /usr/pkg/include -O3" - - LDFLAGS="$LDFLAGS -L/usr/local/lib `cat tmp/ldflags 2>/dev/null`" --export LD_LIBRARY_PATH="`cat tmp/ldpath 2>/dev/null`" - --CPP="clang -E" -+LD_LIBRARY_PATH="$LD_LIBRARY_PATH:`cat tmp/ldpath 2>/dev/null`" -+export LD_LIBRARY_PATH - - # FIXME 'subdir-objects' breaks dependency tracking - AM_INIT_AUTOMAKE([1.10 no-define no-dist-gzip dist-bzip2 tar-ustar subdir-objects no-dependencies]) diff --git a/patches/cctools-old-linux.patch b/patches/cctools-old-linux.patch deleted file mode 100644 index 9f329ab..0000000 --- a/patches/cctools-old-linux.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- cctools/libobjc2/lock.h -+++ cctools/libobjc2/lock.h -@@ -36,6 +36,10 @@ - #if 1 - # define INIT_LOCK(x) init_recursive_mutex(&(x)) - -+#ifdef __linux__ -+# define PTHREAD_MUTEX_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP -+#endif /* __linux__ */ -+ - static inline void init_recursive_mutex(pthread_mutex_t *x) - { - pthread_mutexattr_t recursiveAttributes; diff --git a/tarballs/cctools-855-ld64-134.9_941a3df.tar.xz b/tarballs/cctools-855-ld64-134.9_941a3df.tar.xz deleted file mode 100644 index 4f4468f..0000000 Binary files a/tarballs/cctools-855-ld64-134.9_941a3df.tar.xz and /dev/null differ diff --git a/tarballs/cctools-855-ld64-236.3_fe05cf1.tar.xz b/tarballs/cctools-855-ld64-236.3_fe05cf1.tar.xz deleted file mode 100644 index b94abdc..0000000 Binary files a/tarballs/cctools-855-ld64-236.3_fe05cf1.tar.xz and /dev/null differ diff --git a/tarballs/cctools-862-ld64-134.9_6b0448a.tar.xz b/tarballs/cctools-862-ld64-134.9_6b0448a.tar.xz new file mode 100644 index 0000000..494b875 Binary files /dev/null and b/tarballs/cctools-862-ld64-134.9_6b0448a.tar.xz differ diff --git a/tarballs/cctools-862-ld64-241.9_2201b7b.tar.xz b/tarballs/cctools-862-ld64-241.9_2201b7b.tar.xz new file mode 100644 index 0000000..7876a7c Binary files /dev/null and b/tarballs/cctools-862-ld64-241.9_2201b7b.tar.xz differ diff --git a/tools/get_dependencies.sh b/tools/get_dependencies.sh index ce89d2c..12c6bdd 100755 --- a/tools/get_dependencies.sh +++ b/tools/get_dependencies.sh @@ -6,15 +6,14 @@ get_fedora_deps() { - yum install clang llvm-devel automake autogen libtool \ - libxml2-devel libuuid-devel openssl-devel bash patch \ - libstdc++-static make + yum install clang llvm-devel libxml2-devel libuuid-devel openssl-devel \ + bash patch libstdc++-static make } get_freebsd_deps() { - for pkgname in llvm-devel automake autogen libtool \ - libxml2 e2fsprogs-libuuid openssl bash gmake; do + for pkgname in llvm-devel libxml2 e2fsprogs-libuuid \ + openssl bash gmake; do echo $pkgname pkg install $pkgname done @@ -22,13 +21,12 @@ get_freebsd_deps() get_netbsd_deps() { - pkgin install clang automake autogen libtool \ - libxml2 libuuid openssl bash patch gmake + pkgin install clang libxml2 libuuid openssl bash patch gmake } get_opensuse_deps() { - zypper install llvm-clang-devel llvm-clang libclang automake autogen libtool \ + zypper install llvm-clang-devel llvm-clang libclang \ libxml2-devel libuuid-devel openssl bash patch make } @@ -36,15 +34,14 @@ get_mageia_deps() { urpmi ctags urpmi task-c-devel task-c++-devel clang lib64llvm-devel llvm \ - automake autogen libtool libxml2-devel libuuid-devel openssl \ - libopenssl-devel bash patch make libstdc++-devel + libxml2-devel libuuid-devel openssl libopenssl-devel bash patch \ + make libstdc++-devel } get_debian_deps() { - apt-get install -y --force-yes clang llvm-dev automake autogen \ - libtool libxml2-dev uuid-dev libssl-dev bash patch make \ - tar xz-utils bzip2 gzip sed cpio + apt-get install -y --force-yes clang llvm-dev libxml2-dev uuid-dev \ + libssl-dev bash patch make tar xz-utils bzip2 gzip sed cpio } unknown() diff --git a/tools/tools.sh b/tools/tools.sh index f75f6fa..8c1f078 100755 --- a/tools/tools.sh +++ b/tools/tools.sh @@ -89,11 +89,6 @@ function extract() fi } -function get_ld_version() -{ - echo "`ld -v 2>&1 | tr "-" " " | awk '{print $3}' | head -n1`" -} - function verbose_cmd() { echo "$@"