diff --git a/build.sh b/build.sh index 639611f..4774147 100755 --- a/build.sh +++ b/build.sh @@ -108,8 +108,10 @@ pushd cctools* patch -p0 < $PATCH_DIR/cctools-ld64-1.patch patch -p0 < $PATCH_DIR/cctools-ld64-2.patch patch -p0 < $PATCH_DIR/cctools-ld64-3.patch -patch -p0 < $PATCH_DIR/cctools-llvm-3.4.patch patch -p0 < $PATCH_DIR/cctools-conf-1.patch +patch -p0 < $PATCH_DIR/cctools-llvm-lto.patch +CF=$CFLAGS CXXF=$CXXFLAGS LF=$LDFLAGS +eval `$BASE_DIR/oclang/find_lto_header.sh` set +e grep -n "__block," /usr/include/unistd.h &>/dev/null if [ $? -eq 0 ]; then @@ -121,6 +123,7 @@ set -e ./configure --prefix=$TARGET_DIR --target=x86_64-apple-$TARGET make -j$JOBS make install -j$JOBS +export CFLAGS=$CF CXXFLAGS=$CXXF LDFLAGS=$LF pushd $TARGET_DIR/bin CCTOOLS=`find . -name "x86_64-apple-darwin*"` diff --git a/oclang/find_lto_header.sh b/oclang/find_lto_header.sh new file mode 100755 index 0000000..b119629 --- /dev/null +++ b/oclang/find_lto_header.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +function try() +{ + LLVM_CONFIG="llvm-config$1" + which $LLVM_CONFIG &>/dev/null + + if [ $? -eq 0 ]; then + set -e + LLVM_INC_DIR=`$LLVM_CONFIG --includedir` + LLVM_LIB_DIR=`$LLVM_CONFIG --libdir` + ln -sf "$LLVM_INC_DIR/llvm-c/lto.h" "include/llvm-c/lto.h" + echo -n "export LDFLAGS+=\" -L$LLVM_LIB_DIR -lLTO \" " + echo -n "export CFLAGS+=\" -DLTO_SUPPORT=1 \" " + echo -n "export CXXFLAGS+=\" -DLTO_SUPPORT=1 \"" + exit 0 + fi +} + +try "" +try "-3.2" +try "-3.3" +try "-3.4" +try "-3.5" + +echo "echo \"can not find lto.h - make sure llvm-devel is installed on your system\"" +exit 1 diff --git a/patches/cctools-llvm-3.4.patch b/patches/cctools-llvm-3.4.patch deleted file mode 100644 index fa7bea1..0000000 --- a/patches/cctools-llvm-3.4.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- configure.ac 2013-09-23 14:13:38.000000000 +0200 -+++ configure.ac 2013-10-23 21:30:12.000000000 +0200 -@@ -205,13 +205,13 @@ - AC_CHECK_PROG(HAVE_LLVM_CONFIG, llvm-config, true, false) - - if test "x$HAVE_LLVM_CONFIG" = "xfalse"; then -- AC_CHECK_PROG(HAVE_LLVM_CONFIG_32, llvm-config-3.2, true, false) -- if test "x$HAVE_LLVM_CONFIG_32" = "xfalse"; then -- AC_MSG_ERROR([llvm-config or llvm-config-3.2 not found on your system,please install related packages]) -+ AC_CHECK_PROG(HAVE_LLVM_CONFIG_34, llvm-config-3.4, true, false) -+ if test "x$HAVE_LLVM_CONFIG_34" = "xfalse"; then -+ AC_MSG_ERROR([llvm-config or llvm-config-3.4 not found on your system,please install related packages]) - else -- LLVM_LIBDIR=`llvm-config-3.2 --libdir` -+ LLVM_LIBDIR=`llvm-config-3.4 --libdir` - if test -f $LLVM_LIBDIR/libLTO.so;then -- LTO_LIBS="-L`llvm-config-3.2 --libdir` -lLTO" -+ LTO_LIBS="-L`llvm-config-3.4 --libdir` -lLTO" - LTO_DEFS="-DLTO_SUPPORT=1" - fi - fi diff --git a/patches/cctools-llvm-lto.patch b/patches/cctools-llvm-lto.patch new file mode 100644 index 0000000..fd58e16 --- /dev/null +++ b/patches/cctools-llvm-lto.patch @@ -0,0 +1,40 @@ +--- configure.ac 2013-12-01 21:31:58.462322949 +0100 ++++ configure.ac 2013-12-01 21:30:38.670319304 +0100 +@@ -35,7 +35,6 @@ + AC_CHECK_TOOL([HOST_RANLIB], [ranlib], :) + AC_CHECK_TOOL([HOST_AR], [ar], :) + +-AC_CHECK_HEADERS([llvm-c/lto.h], [], [AC_MSG_ERROR([*** lto.h not found, Please install llvm dev packages according to your system])]) + AC_CHECK_HEADERS([openssl/md5.h], [], [AC_MSG_ERROR([*** md5.h not found, Please install ssl dev packages according to your system])]) + AC_CHECK_HEADERS([uuid/uuid.h], [], [AC_MSG_ERROR([*** uuid.h not found, Please install uuid dev packages according to your system])]) + +@@ -189,29 +188,6 @@ + AC_C_BIGENDIAN([AC_SUBST([ENDIAN_FLAG],[-D__BIG_ENDIAN__=1])], + [AC_SUBST([ENDIAN_FLAG],[-D__LITTLE_ENDIAN__=1])]) + +-# Check LTO +-AC_CHECK_PROG(HAVE_LLVM_CONFIG, llvm-config, true, false) +- +-if test "x$HAVE_LLVM_CONFIG" = "xfalse"; then +- AC_CHECK_PROG(HAVE_LLVM_CONFIG_32, llvm-config-3.2, true, false) +- if test "x$HAVE_LLVM_CONFIG_32" = "xfalse"; then +- AC_MSG_ERROR([llvm-config or llvm-config-3.2 not found on your system,please install related packages]) +- else +- LLVM_LIBDIR=`llvm-config-3.2 --libdir` +- if test -f $LLVM_LIBDIR/libLTO.so;then +- LTO_LIBS="-L`llvm-config-3.2 --libdir` -lLTO" +- LTO_DEFS="-DLTO_SUPPORT=1" +- fi +- fi +-else +- LLVM_LIBDIR=`llvm-config --libdir` +- if test -f $LLVM_LIBDIR/libLTO.so;then +- LTO_LIBS="-L`llvm-config --libdir` -lLTO" +- LTO_DEFS="-DLTO_SUPPORT=1" +- fi +-fi +- +- + AC_SUBST(LTO_LIBS) + AC_SUBST(LTO_DEFS) +