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
>
No comments:
Post a Comment