On Sat, Feb 17, 2018 at 11:12:44PM +1100, Jonathan Gray wrote:
> On Thu, Feb 15, 2018 at 05:08:56PM +0000, Stuart Henderson wrote:
> > On 2018/02/15 11:19, Brian Callahan wrote:
> > > 
> > > 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?
> > 
> > agreed, it's a bit non-obvious that it might be needed because unlike
> > other build systems (which normally use a default value if not passed
> > via SHARED_LIBS) the way we've got cmake setup it just skips the library
> > version in that case..
> > 
> 
> Trying to use SHARED_LIBS breaks and isn't so useful as the name
> of the library includes the major/minor llvm version with the abi
> unlikely to change on new release based from the same branch.
> 
> The intent seems to be to allow multiple versions to be installed
> concurrently as llvm breaks abi/api between most releases.
> 
> Warning: symlink(s) point to non-existent 
> /usr/ports/pobj/llvm-5.0.1/fake-amd64/usr/local/lib/libLLVM-5.0.so
>         /usr/ports/pobj/llvm-5.0.1/fake-amd64/usr/local/lib/libLLVM-5.0.1.so
>         /usr/ports/pobj/llvm-5.0.1/fake-amd64/usr/local/lib/libLLVM.so
> 
> $ ls -l /usr/local/lib/libLLVM*.so*
> lrwxr-xr-x  1 root  wheel        14 Feb 17 22:55 
> /usr/local/lib/libLLVM-5.0.1.so -> libLLVM-5.0.so
> -rw-r--r--  1 root  bin    61453686 Feb 17 22:47 
> /usr/local/lib/libLLVM-5.0.so.0.0
> lrwxr-xr-x  1 root  wheel        14 Feb 17 22:55 /usr/local/lib/libLLVM.so -> 
> libLLVM-5.0.so
> 
> $ llvm-config --link-shared
> llvm-config: error: libLLVM-5.0.so is missing
> $ llvm-config --shared-mode 
> static

So would anyone be opposed to the first diff in this thread going in?

> 
> 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  17 Feb 2018 11:59:08 -0000
> @@ -14,11 +14,12 @@ COMMENT-main =    modular, fast C/C++/ObjC 
>  COMMENT-python =     Python bindings for Clang
>  
>  LLVM_V =     5.0.1
> +LLVM_BRANCH =        ${LLVM_V:C/\.[^\.]*$//}
>  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} \
> @@ -27,7 +28,8 @@ MASTER_SITES =      https://www.llvm.org/rele
>  EXTRACT_SUFX =       .tar.xz
>  
>  SHARED_LIBS =        clang           6.0 \
> -             LTO             3.0
> +             LTO             3.0 \
> +             LLVM-${LLVM_BRANCH}     0.0
>  
>  # packager notes in http://llvm.org/docs/Packaging.html
>  HOMEPAGE =   http://www.llvm.org/
> @@ -55,10 +57,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     17 Feb 2018 11:59:08 
> -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    17 Feb 2018 11:59: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 lib/libLLVM-5.0.so.${LIBLLVM-5.0_VERSION}
> +lib/libLLVM.so
>  lib/libLLVMAArch64AsmParser.a
>  lib/libLLVMAArch64AsmPrinter.a
>  lib/libLLVMAArch64CodeGen.a
> 

Reply via email to