On 02/15/18 10:02, Jonathan Gray wrote:
Build libLLVM.so and link tools with it.

This seems to be the way almost all Linux distributions and BSDs
ship LLVM and is what Mesa expects.

Use the documented cmake var for RTTI while here.

Any reason not to use the SHARED_LIBS facility of ports for libLLVM, like libclang and libLTO already do in the LLVM port?

~Brian

Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/llvm/Makefile,v
retrieving revision 1.172
diff -u -p -r1.172 Makefile
--- Makefile    2 Feb 2018 13:33:11 -0000       1.172
+++ Makefile    15 Feb 2018 13:32:09 -0000
@@ -18,7 +18,7 @@ DISTNAME =    llvm-${LLVM_V}.src
  PKGNAME =     llvm-${LLVM_V}
  PKGNAME-main =        llvm-${LLVM_V}
  PKGNAME-python =      py-llvm-${LLVM_V}
-REVISION-main =        1
+REVISION-main =        2
  CATEGORIES =  devel
  DISTFILES =   llvm-${LLVM_V}.src${EXTRACT_SUFX} \
                cfe-${LLVM_V}.src${EXTRACT_SUFX} \
@@ -55,10 +55,12 @@ RUN_DEPENDS-python =        ${MODPY_RUN_DEPENDS
  LIB_DEPENDS-python =  ${BUILD_PKGPATH},-main
SEPARATE_BUILD = Yes
-CONFIGURE_ARGS =       -DLLVM_ENABLE_FFI:Bool=False \
+CONFIGURE_ARGS =       -DLLVM_ENABLE_FFI:Bool=True \
                        -DLLVM_ENABLE_TERMINFO:Bool=False \
-                       -DLLVM_REQUIRES_RTTI:Bool=True \
+                       -DLLVM_ENABLE_RTTI:Bool=True \
                        -DCMAKE_DISABLE_FIND_PACKAGE_LibXml2:Bool=True \
+                       -DLLVM_LINK_LLVM_DYLIB:Bool=True \
+                       -DLLVM_BUILD_LLVM_DYLIB:Bool=True \
                        -DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND \
                        -DBacktrace_LIBRARY=''
Index: patches/patch-tools_llvm-shlib_CMakeLists_txt
===================================================================
RCS file: patches/patch-tools_llvm-shlib_CMakeLists_txt
diff -N patches/patch-tools_llvm-shlib_CMakeLists_txt
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-tools_llvm-shlib_CMakeLists_txt       15 Feb 2018 13:32:09 
-0000
@@ -0,0 +1,26 @@
+$OpenBSD$
+
+fix symbols not getting added to shared library
+
+Index: tools/llvm-shlib/CMakeLists.txt
+--- tools/llvm-shlib/CMakeLists.txt.orig
++++ tools/llvm-shlib/CMakeLists.txt
+@@ -37,15 +37,15 @@ endif()
+ add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${SOURCES})
+
+ list(REMOVE_DUPLICATES LIB_NAMES)
+-if(("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") OR (MINGW) OR (HAIKU) OR ("${CMAKE_SYSTEM_NAME}" STREQUAL 
"FreeBSD") OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "DragonFly")) # FIXME: It should be "GNU ld for elf"
++if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
++  set(LIB_NAMES -Wl,-all_load ${LIB_NAMES})
++else()
+   configure_file(
+   ${CMAKE_CURRENT_SOURCE_DIR}/simple_version_script.map.in
+   ${LLVM_LIBRARY_DIR}/tools/llvm-shlib/simple_version_script.map)
+
+   # GNU ld doesn't resolve symbols in the version script.
+   set(LIB_NAMES 
-Wl,--version-script,${LLVM_LIBRARY_DIR}/tools/llvm-shlib/simple_version_script.map
 -Wl,--whole-archive ${LIB_NAMES} -Wl,--no-whole-archive)
+-elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
+-  set(LIB_NAMES -Wl,-all_load ${LIB_NAMES})
+ endif()
+
+ target_link_libraries(LLVM PRIVATE ${LIB_NAMES})
Index: pkg/PLIST-main
===================================================================
RCS file: /cvs/ports/devel/llvm/pkg/PLIST-main,v
retrieving revision 1.5
diff -u -p -r1.5 PLIST-main
--- pkg/PLIST-main      8 Sep 2017 05:58:19 -0000       1.5
+++ pkg/PLIST-main      15 Feb 2018 13:32:09 -0000
@@ -1939,6 +1939,9 @@ lib/cmake/llvm/LLVMInstallSymlink.cmake
  lib/cmake/llvm/LLVMProcessSources.cmake
  lib/cmake/llvm/TableGen.cmake
  lib/cmake/llvm/VersionFromVCS.cmake
+lib/libLLVM-${LLVM_V}.so
+lib/libLLVM-5.0.so
+lib/libLLVM.so
  lib/libLLVMAArch64AsmParser.a
  lib/libLLVMAArch64AsmPrinter.a
  lib/libLLVMAArch64CodeGen.a


Reply via email to