diff --git a/packages/lang/llvm/package.mk b/packages/lang/llvm/package.mk index 2f047c2432..8228ec8189 100644 --- a/packages/lang/llvm/package.mk +++ b/packages/lang/llvm/package.mk @@ -17,12 +17,12 @@ ################################################################################ PKG_NAME="llvm" -PKG_VERSION="3.4.2" +PKG_VERSION="3.5.0" PKG_REV="1" PKG_ARCH="any" PKG_LICENSE="GPL" PKG_SITE="http://llvm.org/" -PKG_URL="http://llvm.org/releases/$PKG_VERSION/${PKG_NAME}-${PKG_VERSION}.src.tar.gz" +PKG_URL="http://llvm.org/releases/$PKG_VERSION/${PKG_NAME}-${PKG_VERSION}.src.tar.xz" PKG_SOURCE_DIR="${PKG_NAME}-${PKG_VERSION}.src" PKG_DEPENDS_HOST="" PKG_DEPENDS_TARGET="toolchain llvm:host" @@ -98,11 +98,6 @@ pre_configure_host() { autoconf --force --verbose -I m4 -o ../configure ) - ( cd ../projects/sample/autoconf - aclocal --force --verbose -I m4 - autoconf --force --verbose -I m4 -o ../configure - ) - # we are building hosttools inside the target builddir mkdir -p ../.$TARGET_NAME && cd ../.$TARGET_NAME/ rm -rf ../.$HOST_NAME diff --git a/packages/lang/llvm/patches/llvm-3.3-cross.patch b/packages/lang/llvm/patches/llvm-3.3-cross.patch deleted file mode 100644 index 77618753a3..0000000000 --- a/packages/lang/llvm/patches/llvm-3.3-cross.patch +++ /dev/null @@ -1,114 +0,0 @@ -diff -Naur llvm-3.3.src/autoconf/configure.ac llvm-3.3.src.patch/autoconf/configure.ac ---- llvm-3.3.src/autoconf/configure.ac 2013-05-20 22:18:23.000000000 +0200 -+++ llvm-3.3.src.patch/autoconf/configure.ac 2013-09-24 07:20:25.485443916 +0200 -@@ -461,6 +461,10 @@ - AC_CHECK_PROG(BUILD_CXX, c++, c++, , , /usr/ucb/c++) - fi - fi -+ AC_SUBST(BUILD_CPPFLAGS) -+ AC_SUBST(BUILD_CFLAGS) -+ AC_SUBST(BUILD_CXXFLAGS) -+ AC_SUBST(BUILD_LDFLAGS) - else - AC_SUBST(LLVM_CROSS_COMPILING, [0]) - fi -diff -Naur llvm-3.3.src/autoconf/m4/build_exeext.m4 llvm-3.3.src.patch/autoconf/m4/build_exeext.m4 ---- llvm-3.3.src/autoconf/m4/build_exeext.m4 2008-09-26 19:27:58.000000000 +0200 -+++ llvm-3.3.src.patch/autoconf/m4/build_exeext.m4 2013-09-24 07:20:25.485443916 +0200 -@@ -18,7 +18,7 @@ - fi - fi - test -z "$BUILD_CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH]) -- ac_build_link='${BUILD_CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AS_MESSAGE_LOG_FD' -+ ac_build_link='${BUILD_CC-cc} -o conftest $BUILD_CFLAGS $BUILD_CPPFLAGS $BUILD_LDFLAGS conftest.$ac_ext $LIBS 1>&AS_MESSAGE_LOG_FD' - rm -f conftest* - echo 'int main () { return 0; }' > conftest.$ac_ext - ac_cv_build_exeext= -diff -Naur llvm-3.3.src/Makefile llvm-3.3.src.patch/Makefile ---- llvm-3.3.src/Makefile 2013-01-28 04:19:57.000000000 +0100 -+++ llvm-3.3.src.patch/Makefile 2013-09-24 07:21:27.489493235 +0200 -@@ -99,44 +99,6 @@ - DIRS := $(filter-out unittests, $(DIRS)) - endif - --# If we're cross-compiling, build the build-hosted tools first --ifeq ($(LLVM_CROSS_COMPILING),1) --all:: cross-compile-build-tools -- --clean:: -- $(Verb) rm -rf BuildTools -- --cross-compile-build-tools: -- $(Verb) if [ ! -f BuildTools/Makefile ]; then \ -- $(MKDIR) BuildTools; \ -- cd BuildTools ; \ -- unset CFLAGS ; \ -- unset CXXFLAGS ; \ -- unset SDKROOT ; \ -- unset UNIVERSAL_SDK_PATH ; \ -- $(PROJ_SRC_DIR)/configure --build=$(BUILD_TRIPLE) \ -- --host=$(BUILD_TRIPLE) --target=$(BUILD_TRIPLE) \ -- --disable-polly ; \ -- cd .. ; \ -- fi; \ -- ($(MAKE) -C BuildTools \ -- BUILD_DIRS_ONLY=1 \ -- UNIVERSAL= \ -- UNIVERSAL_SDK_PATH= \ -- SDKROOT= \ -- TARGET_NATIVE_ARCH="$(TARGET_NATIVE_ARCH)" \ -- TARGETS_TO_BUILD="$(TARGETS_TO_BUILD)" \ -- ENABLE_OPTIMIZED=$(ENABLE_OPTIMIZED) \ -- ENABLE_PROFILING=$(ENABLE_PROFILING) \ -- ENABLE_COVERAGE=$(ENABLE_COVERAGE) \ -- DISABLE_ASSERTIONS=$(DISABLE_ASSERTIONS) \ -- ENABLE_EXPENSIVE_CHECKS=$(ENABLE_EXPENSIVE_CHECKS) \ -- ENABLE_LIBCPP=$(ENABLE_LIBCPP) \ -- CFLAGS= \ -- CXXFLAGS= \ -- ) || exit 1; --endif -- - # Include the main makefile machinery. - include $(LLVM_SRC_ROOT)/Makefile.rules - -diff -Naur llvm-3.3.src/Makefile.config.in llvm-3.3.src.patch/Makefile.config.in ---- llvm-3.3.src/Makefile.config.in 2013-04-23 10:28:39.000000000 +0200 -+++ llvm-3.3.src.patch/Makefile.config.in 2013-09-24 07:20:25.487443917 +0200 -@@ -130,6 +130,10 @@ - # call if we're cross-compiling). - BUILD_CC=@BUILD_CC@ - BUILD_CXX=@BUILD_CXX@ -+BUILD_CPPFLAGS=@BUILD_CPPFLAGS@ -+BUILD_CFLAGS=@BUILD_CFLAGS@ -+BUILD_CXXFLAGS=@BUILD_CXXFLAGS@ -+BUILD_LDFLAGS=@BUILD_LDFLAGS@ - - # Triple for configuring build tools when cross-compiling - BUILD_TRIPLE=@build@ -diff -Naur llvm-3.3.src/projects/sample/autoconf/configure.ac llvm-3.3.src.patch/projects/sample/autoconf/configure.ac ---- llvm-3.3.src/projects/sample/autoconf/configure.ac 2013-05-06 18:23:07.000000000 +0200 -+++ llvm-3.3.src.patch/projects/sample/autoconf/configure.ac 2013-09-24 07:33:47.746272015 +0200 -@@ -345,6 +345,10 @@ - AC_CHECK_PROG(BUILD_CXX, c++, c++, , , /usr/ucb/c++) - fi - fi -+ AC_SUBST(BUILD_CPPFLAGS) -+ AC_SUBST(BUILD_CFLAGS) -+ AC_SUBST(BUILD_CXXFLAGS) -+ AC_SUBST(BUILD_LDFLAGS) - else - AC_SUBST(LLVM_CROSS_COMPILING, [0]) - fi -diff -Naur llvm-3.3.src/projects/sample/autoconf/m4/build_exeext.m4 llvm-3.3.src.patch/projects/sample/autoconf/m4/build_exeext.m4 ---- llvm-3.3.src/projects/sample/autoconf/m4/build_exeext.m4 2011-10-19 01:10:47.000000000 +0200 -+++ llvm-3.3.src.patch/projects/sample/autoconf/m4/build_exeext.m4 2013-09-24 07:32:18.332178706 +0200 -@@ -18,7 +18,7 @@ - fi - fi - test -z "$BUILD_CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH]) -- ac_build_link='${BUILD_CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AS_MESSAGE_LOG_FD' -+ ac_build_link='${BUILD_CC-cc} -o conftest $BUILD_CFLAGS $BUILD_CPPFLAGS $BUILD_LDFLAGS conftest.$ac_ext $LIBS 1>&AS_MESSAGE_LOG_FD' - rm -f conftest* - echo 'int main () { return 0; }' > conftest.$ac_ext - ac_cv_build_exeext= diff --git a/packages/lang/llvm/patches/llvm-3.5-cross.patch b/packages/lang/llvm/patches/llvm-3.5-cross.patch new file mode 100644 index 0000000000..3196091a31 --- /dev/null +++ b/packages/lang/llvm/patches/llvm-3.5-cross.patch @@ -0,0 +1,98 @@ +diff -Naur llvm-3.5.0.src/autoconf/configure.ac llvm-3.5.0.src.patch/autoconf/configure.ac +--- llvm-3.5.0.src/autoconf/configure.ac 2014-07-25 19:47:30.000000000 +0200 ++++ llvm-3.5.0.src.patch/autoconf/configure.ac 2014-09-05 10:42:58.947215468 +0200 +@@ -485,6 +485,10 @@ + AC_CHECK_PROG(BUILD_CXX, c++, c++, , , /usr/ucb/c++) + fi + fi ++ AC_SUBST(BUILD_CPPFLAGS) ++ AC_SUBST(BUILD_CFLAGS) ++ AC_SUBST(BUILD_CXXFLAGS) ++ AC_SUBST(BUILD_LDFLAGS) + else + AC_SUBST(LLVM_CROSS_COMPILING, [0]) + fi +diff -Naur llvm-3.5.0.src/autoconf/m4/build_exeext.m4 llvm-3.5.0.src.patch/autoconf/m4/build_exeext.m4 +--- llvm-3.5.0.src/autoconf/m4/build_exeext.m4 2008-09-26 19:27:58.000000000 +0200 ++++ llvm-3.5.0.src.patch/autoconf/m4/build_exeext.m4 2014-09-05 10:42:58.948215478 +0200 +@@ -18,7 +18,7 @@ + fi + fi + test -z "$BUILD_CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH]) +- ac_build_link='${BUILD_CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AS_MESSAGE_LOG_FD' ++ ac_build_link='${BUILD_CC-cc} -o conftest $BUILD_CFLAGS $BUILD_CPPFLAGS $BUILD_LDFLAGS conftest.$ac_ext $LIBS 1>&AS_MESSAGE_LOG_FD' + rm -f conftest* + echo 'int main () { return 0; }' > conftest.$ac_ext + ac_cv_build_exeext= +diff -Naur llvm-3.5.0.src/Makefile llvm-3.5.0.src.patch/Makefile +--- llvm-3.5.0.src/Makefile 2014-03-25 22:45:41.000000000 +0100 ++++ llvm-3.5.0.src.patch/Makefile 2014-09-05 10:45:20.542528330 +0200 +@@ -99,54 +99,6 @@ + DIRS := $(filter-out unittests, $(DIRS)) + endif + +-# If we're cross-compiling, build the build-hosted tools first +-ifeq ($(LLVM_CROSS_COMPILING),1) +-all:: cross-compile-build-tools +- +-clean:: +- $(Verb) rm -rf BuildTools +- +-cross-compile-build-tools: +- $(Verb) if [ ! -f BuildTools/Makefile ]; then \ +- $(MKDIR) BuildTools; \ +- cd BuildTools ; \ +- unset CFLAGS ; \ +- unset CXXFLAGS ; \ +- AR=$(BUILD_AR) ; \ +- AS=$(BUILD_AS) ; \ +- LD=$(BUILD_LD) ; \ +- CC=$(BUILD_CC) ; \ +- CXX=$(BUILD_CXX) ; \ +- unset SDKROOT ; \ +- unset UNIVERSAL_SDK_PATH ; \ +- configure_opts= ; \ +- if test "$(ENABLE_LIBCPP)" -ne 0 ; then \ +- configure_opts="$$configure_opts --enable-libcpp"; \ +- fi; \ +- $(PROJ_SRC_DIR)/configure --build=$(BUILD_TRIPLE) \ +- --host=$(BUILD_TRIPLE) --target=$(BUILD_TRIPLE) \ +- --disable-polly $$configure_opts; \ +- cd .. ; \ +- fi; \ +- ($(MAKE) -C BuildTools \ +- BUILD_DIRS_ONLY=1 \ +- UNIVERSAL= \ +- UNIVERSAL_SDK_PATH= \ +- SDKROOT= \ +- TARGET_NATIVE_ARCH="$(TARGET_NATIVE_ARCH)" \ +- TARGETS_TO_BUILD="$(TARGETS_TO_BUILD)" \ +- TARGET_LIBS="$(LIBS)" \ +- ENABLE_OPTIMIZED=$(ENABLE_OPTIMIZED) \ +- ENABLE_PROFILING=$(ENABLE_PROFILING) \ +- ENABLE_COVERAGE=$(ENABLE_COVERAGE) \ +- DISABLE_ASSERTIONS=$(DISABLE_ASSERTIONS) \ +- ENABLE_EXPENSIVE_CHECKS=$(ENABLE_EXPENSIVE_CHECKS) \ +- ENABLE_LIBCPP=$(ENABLE_LIBCPP) \ +- CFLAGS= \ +- CXXFLAGS= \ +- ) || exit 1; +-endif +- + # Include the main makefile machinery. + include $(LLVM_SRC_ROOT)/Makefile.rules + +diff -Naur llvm-3.5.0.src/Makefile.config.in llvm-3.5.0.src.patch/Makefile.config.in +--- llvm-3.5.0.src/Makefile.config.in 2014-07-16 18:50:34.000000000 +0200 ++++ llvm-3.5.0.src.patch/Makefile.config.in 2014-09-05 10:42:58.954215572 +0200 +@@ -135,6 +135,10 @@ + # call if we're cross-compiling). + BUILD_CC=@BUILD_CC@ + BUILD_CXX=@BUILD_CXX@ ++BUILD_CPPFLAGS=@BUILD_CPPFLAGS@ ++BUILD_CFLAGS=@BUILD_CFLAGS@ ++BUILD_CXXFLAGS=@BUILD_CXXFLAGS@ ++BUILD_LDFLAGS=@BUILD_LDFLAGS@ + + # Triple for configuring build tools when cross-compiling + BUILD_TRIPLE=@build@ diff --git a/packages/lang/llvm/patches/llvm-3.4-fix-rpath.patch b/packages/lang/llvm/patches/llvm-3.5-fix-rpath.patch similarity index 67% rename from packages/lang/llvm/patches/llvm-3.4-fix-rpath.patch rename to packages/lang/llvm/patches/llvm-3.5-fix-rpath.patch index 8c13f3bd50..9787279485 100644 --- a/packages/lang/llvm/patches/llvm-3.4-fix-rpath.patch +++ b/packages/lang/llvm/patches/llvm-3.5-fix-rpath.patch @@ -1,7 +1,7 @@ -diff -Naur llvm.src/Makefile.rules llvm.src.patch/Makefile.rules ---- llvm.src/Makefile.rules 2013-11-15 00:51:29.000000000 +0100 -+++ llvm.src.patch/Makefile.rules 2014-01-04 16:33:49.254066226 +0100 -@@ -577,14 +577,6 @@ +diff -Naur llvm-3.5.0.src/Makefile.rules llvm-3.5.0.src.patch/Makefile.rules +--- llvm-3.5.0.src/Makefile.rules 2014-06-20 21:00:41.000000000 +0200 ++++ llvm-3.5.0.src.patch/Makefile.rules 2014-09-05 11:04:20.267554714 +0200 +@@ -594,16 +594,6 @@ endif endif @@ -9,6 +9,8 @@ diff -Naur llvm.src/Makefile.rules llvm.src.patch/Makefile.rules -ifneq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW)) -ifneq ($(HOST_OS),Darwin) - LD.Flags += $(RPATH) -Wl,'$$ORIGIN' +-else +- LD.Flags += -Wl,-install_name -Wl,"@rpath/lib$(LIBRARYNAME)$(SHLIBEXT)" -endif -endif -endif @@ -16,7 +18,7 @@ diff -Naur llvm.src/Makefile.rules llvm.src.patch/Makefile.rules ifdef TOOL_VERBOSE C.Flags += -v CXX.Flags += -v -@@ -613,14 +605,7 @@ +@@ -650,14 +640,7 @@ ifndef TOOL_NO_EXPORTS LD.Flags += $(RDYNAMIC) endif diff --git a/packages/lang/llvm/patches/llvm-3.5-gcc-4.9.patch b/packages/lang/llvm/patches/llvm-3.5-gcc-4.9.patch new file mode 100644 index 0000000000..8dab206aed --- /dev/null +++ b/packages/lang/llvm/patches/llvm-3.5-gcc-4.9.patch @@ -0,0 +1,49 @@ +The shared-object build for llvm (i.e. libLLVM-3.5svn.so + tools) +currently breaks on linux when linking opt. This patch is an attempt +to fix that. + +-- Sanjoy +-------------- next part -------------- +commit 080fb498017d17af2e4d7563608c7d8a848f20da +Author: Sanjoy Das +Date: Thu Jun 19 15:38:02 2014 -0700 + + Fix the --enable-shared build. + + Currently a build configured with ./configure --enable-shared breaks + with an undefined "llvm::cl::parser::getOption(unsigned int) const" symbol when linking opt. This + body for this symbol gets emitted into Pass.o (along with the destructor + for PassNameParser), but gets linked into libLLVM-3.5svn.so with local + visibility, causing the link error. + + This fix uses the existing EXTERN_TEMPLATE machinery to force a globally + visible definition for the functions in parser into + Pass.o. + +diff --git a/include/llvm/IR/LegacyPassNameParser.h b/include/llvm/IR/LegacyPassNameParser.h +index e2e4912..a07e3fd 100644 +--- a/include/llvm/IR/LegacyPassNameParser.h ++++ b/include/llvm/IR/LegacyPassNameParser.h +@@ -95,6 +95,8 @@ private: + } + }; + ++EXTERN_TEMPLATE_INSTANTIATION(class cl::parser); ++ + ///===----------------------------------------------------------------------===// + /// FilteredPassNameParser class - Make use of the pass registration + /// mechanism to automatically add a command line argument to opt for +diff --git a/lib/IR/Pass.cpp b/lib/IR/Pass.cpp +index 91d86ae..00ce223 100644 +--- a/lib/IR/Pass.cpp ++++ b/lib/IR/Pass.cpp +@@ -234,6 +234,8 @@ PassNameParser::~PassNameParser() { + // attempting to remove the registration listener is an error. + } + ++TEMPLATE_INSTANTIATION(class cl::parser); ++ + //===----------------------------------------------------------------------===// + // AnalysisUsage Class Implementation + //