[OpenGTL] shared llvm patch

Rex Dieter rdieter at fedoraproject.org
Sat Nov 5 10:47:45 UTC 2011


commit 6174ac7ffe115d3575c68213af71b1df888c98d5
Author: Rex Dieter <rdieter at fedoraproject.org>
Date:   Sat Nov 5 05:55:17 2011 -0500

    shared llvm patch

 OpenGTL-0.9.15.1-shared_llvm.patch |   75 ++++++++++++++++++++++++++++++++++++
 OpenGTL.spec                       |   20 ++++++----
 2 files changed, 87 insertions(+), 8 deletions(-)
---
diff --git a/OpenGTL-0.9.15.1-shared_llvm.patch b/OpenGTL-0.9.15.1-shared_llvm.patch
new file mode 100644
index 0000000..e7a781f
--- /dev/null
+++ b/OpenGTL-0.9.15.1-shared_llvm.patch
@@ -0,0 +1,75 @@
+diff -ur OpenGTL-0.9.15.1/cmake/modules/FindLLVM.cmake OpenGTL-0.9.15.1-shared-llvm/cmake/modules/FindLLVM.cmake
+--- OpenGTL-0.9.15.1/cmake/modules/FindLLVM.cmake	2011-04-10 11:03:22.000000000 +0200
++++ OpenGTL-0.9.15.1-shared-llvm/cmake/modules/FindLLVM.cmake	2011-10-10 22:11:13.000000000 +0200
+@@ -33,29 +33,30 @@
+         /opt/local/bin
+     )
+     
+-    MACRO(FIND_LLVM_LIBS LLVM_CONFIG_EXECUTABLE _libname_ LIB_VAR OBJECT_VAR)
+-      exec_program( perl ARGS ${LLVM_CONFIG_EXECUTABLE} --libs ${_libname_}  OUTPUT_VARIABLE ${LIB_VAR} )
+-      STRING(REGEX MATCHALL "[^ ]*[.]o[ $]"  ${OBJECT_VAR} ${${LIB_VAR}})
+-      SEPARATE_ARGUMENTS(${OBJECT_VAR})
+-      STRING(REGEX REPLACE "[^ ]*[.]o[ $]" ""  ${LIB_VAR} ${${LIB_VAR}})
+-    ENDMACRO(FIND_LLVM_LIBS)
+-    
++    exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --version OUTPUT_VARIABLE LLVM_VERSION )
+     
+     exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --libdir OUTPUT_VARIABLE LLVM_LIB_DIR )
+     exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --includedir OUTPUT_VARIABLE LLVM_INCLUDE_DIR )
+     
++    find_library(LLVM_SHARED_LIB NAMES LLVM-${LLVM_VERSION} PATHS ${LLVM_LIB_DIR})
+     
+     exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --cxxflags  OUTPUT_VARIABLE LLVM_COMPILE_FLAGS )
+     
+     STRING(REGEX MATCH "PIC" LLVM_COMPILE_FLAGS_PIC ${LLVM_COMPILE_FLAGS} )
+     STRING(REGEX MATCH "NDEBUG" LLVM_COMPILE_FLAGS_NDEBUG ${LLVM_COMPILE_FLAGS} )
+     
+-    if(LLVM_COMPILE_FLAGS_PIC)
+-      message(STATUS "llvm was compiled with pic")
++    if(LLVM_SHARED_LIB)
++      message(STATUS "llvm was compiled as a shared library")
++      # assume the shared library is PIC, otherwise the build is very broken
+       set(LLVM_COMPILED_WITH_PIC TRUE)
+-    else(LLVM_COMPILE_FLAGS_PIC)
+-      set(LLVM_COMPILED_WITH_PIC FALSE)
+-    endif(LLVM_COMPILE_FLAGS_PIC)
++    else(LLVM_SHARED_LIB)
++      if(LLVM_COMPILE_FLAGS_PIC)
++        message(STATUS "llvm was compiled with pic")
++        set(LLVM_COMPILED_WITH_PIC TRUE)
++      else(LLVM_COMPILE_FLAGS_PIC)
++        set(LLVM_COMPILED_WITH_PIC FALSE)
++      endif(LLVM_COMPILE_FLAGS_PIC)
++    endif(LLVM_SHARED_LIB)
+ 
+     if(LLVM_COMPILE_FLAGS_NDEBUG)
+       message(STATUS "llvm was compiled without assert")
+@@ -64,9 +65,25 @@
+       set(LLVM_COMPILED_WITHOUT_ASSERTS FALSE)
+     endif(LLVM_COMPILE_FLAGS_NDEBUG)
+ 
+-    exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --ldflags   OUTPUT_VARIABLE LLVM_LDFLAGS )
+-    exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --libs core OUTPUT_VARIABLE LLVM_LIBS_CORE )
+-    exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --version OUTPUT_VARIABLE LLVM_VERSION )
++    if(LLVM_SHARED_LIB)
++      set(LLVM_LDFLAGS "")
++      set(LLVM_LIBS_CORE ${LLVM_SHARED_LIB})
++    else(LLVM_SHARED_LIB)
++      exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --ldflags   OUTPUT_VARIABLE LLVM_LDFLAGS )
++      exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --libs core OUTPUT_VARIABLE LLVM_LIBS_CORE )
++    endif(LLVM_SHARED_LIB)
++
++    MACRO(FIND_LLVM_LIBS LLVM_CONFIG_EXECUTABLE _libname_ LIB_VAR OBJECT_VAR)
++      if(LLVM_SHARED_LIB)
++        set(${LIB_VAR} ${LLVM_SHARED_LIB})
++        set(${OBJECT_VAR} "")
++      else(LLVM_SHARED_LIB)
++        exec_program( perl ARGS ${LLVM_CONFIG_EXECUTABLE} --libs ${_libname_}  OUTPUT_VARIABLE ${LIB_VAR} )
++        STRING(REGEX MATCHALL "[^ ]*[.]o[ $]"  ${OBJECT_VAR} ${${LIB_VAR}})
++        SEPARATE_ARGUMENTS(${OBJECT_VAR})
++        STRING(REGEX REPLACE "[^ ]*[.]o[ $]" ""  ${LIB_VAR} ${${LIB_VAR}})
++      endif(LLVM_SHARED_LIB)
++    ENDMACRO(FIND_LLVM_LIBS)
+     
+     if(LLVM_INCLUDE_DIR)
+       set(LLVM_FOUND TRUE)
diff --git a/OpenGTL.spec b/OpenGTL.spec
index 2aff3d7..f5ecf28 100644
--- a/OpenGTL.spec
+++ b/OpenGTL.spec
@@ -3,7 +3,7 @@
 
 Name: OpenGTL
 Version: 0.9.15.1
-Release: 2%{?dist}
+Release: 3%{?dist}
 Summary: Graphics Transformation Languages
 License: LGPLv2
 Group: Development/Languages
@@ -14,13 +14,15 @@ Source0: http://download.opengtl.org/OpenGTL-%{version}.tar.bz2
 
 ## upstreamable patches
 Patch50: OpenGTL-0.9.15.1-version.patch
+# from Kevin_Kofler to support linking to llvm shared libs
+Patch51: OpenGTL-0.9.15.1-shared_llvm.patch
 
 ## upstream patches
 
 BuildRequires: cmake
 BuildRequires: doxygen graphviz
 BuildRequires: libpng-devel
-BuildRequires: llvm-devel >= 2.8, llvm-static
+BuildRequires: llvm-devel >= 2.8
 # docs 
 BuildRequires: ImageMagick ghostscript texlive-latex texlive-dvips
 BuildRequires: zlib-devel
@@ -54,6 +56,7 @@ native programs that use the OpenGTL libraries.
 %setup -q
 
 %patch50 -p1 -b .version
+%patch51 -p1 -b .shared_llvm
 
 
 %build
@@ -87,8 +90,7 @@ test "$(pkg-config --modversion GTLImageIO)" = "%{version}"
 test "$(pkg-config --modversion OpenCTL)" = "%{version}"
 test "$(pkg-config --modversion OpenShiva)" = "%{version}"
 # some known failures due to missing test data 
-# with llvm-2.8: 91% tests passed, 16 tests failed out of 172
-# with llvm-2.9-rc2: 53% tests passed, 80 tests failed out of 172
+# 91% tests passed, 16 tests failed out of 172
 make test -C  %{_target_platform} ||:
 
 
@@ -96,10 +98,6 @@ make test -C  %{_target_platform} ||:
 rm -rf %{buildroot}
 
 
-%post libs -p /sbin/ldconfig
-
-%postun libs -p /sbin/ldconfig
-
 %files
 %defattr(-,root,root,-)
 %doc COPYING OpenGTL/README
@@ -111,6 +109,9 @@ rm -rf %{buildroot}
 %{_bindir}/shivainfo
 %{_datadir}/OpenGTL/
 
+%post libs -p /sbin/ldconfig
+%postun libs -p /sbin/ldconfig
+
 %files libs
 %defattr(-,root,root,-)
 %{_libdir}/libGTLCore.so.%{version}
@@ -145,6 +146,9 @@ rm -rf %{buildroot}
 
 
 %changelog
+* Sat Nov 05 2011 Rex Dieter <rdieter at fedoraproject.org> 0.9.15.1-3
+- shared llvm patch
+
 * Wed Aug  3 2011 Michel Salim <salimma at fedoraproject.org> - 0.9.15.1-2
 - Rebuild against final LLVM 2.9 release
 - Reenable ppc64 support (to match LLVM)


More information about the scm-commits mailing list