diff options
Diffstat (limited to 'build_files/cmake/platform/platform_unix.cmake')
-rw-r--r-- | build_files/cmake/platform/platform_unix.cmake | 121 |
1 files changed, 65 insertions, 56 deletions
diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake index 35103ec441b..405afcec836 100644 --- a/build_files/cmake/platform/platform_unix.cmake +++ b/build_files/cmake/platform/platform_unix.cmake @@ -70,10 +70,6 @@ if(EXISTS ${LIBDIR}) set(CLANG_ROOT_DIR ${LIBDIR}/llvm) endif() -if(WITH_STATIC_LIBS) - string(APPEND CMAKE_EXE_LINKER_FLAGS " -static-libstdc++") -endif() - # Wrapper to prefer static libraries macro(find_package_wrapper) if(WITH_STATIC_LIBS) @@ -83,15 +79,6 @@ macro(find_package_wrapper) endif() endmacro() -# Utility to install precompiled shared libraries. -macro(add_bundled_libraries library) - if(EXISTS ${LIBDIR}) - file(GLOB _all_library_versions ${LIBDIR}/${library}/lib/*\.so*) - list(APPEND PLATFORM_BUNDLED_LIBRARIES ${_all_library_versions}) - unset(_all_library_versions) - endif() -endmacro() - # ---------------------------------------------------------------------------- # Precompiled Libraries # @@ -174,7 +161,10 @@ endif() if(WITH_IMAGE_OPENEXR) find_package_wrapper(OpenEXR) # our own module - if(NOT OPENEXR_FOUND) + if(OPENEXR_FOUND) + add_bundled_libraries(openexr/lib) + add_bundled_libraries(imath/lib) + else() set(WITH_IMAGE_OPENEXR OFF) endif() endif() @@ -342,16 +332,20 @@ if(WITH_CYCLES_DEVICE_ONEAPI) endif() if(WITH_OPENVDB) - find_package_wrapper(OpenVDB) + find_package(OpenVDB) find_package_wrapper(Blosc) - if(NOT OPENVDB_FOUND) + if(OPENVDB_FOUND) + add_bundled_libraries(openvdb/lib) + + if(NOT EXISTS ${LIBDIR} AND NOT BLOSC_FOUND) + set(WITH_OPENVDB_BLOSC OFF) + message(STATUS "Blosc not found, disabling it for OpenVBD") + endif() + else() set(WITH_OPENVDB OFF) set(WITH_OPENVDB_BLOSC OFF) message(STATUS "OpenVDB not found, disabling it") - elseif(NOT BLOSC_FOUND) - set(WITH_OPENVDB_BLOSC OFF) - message(STATUS "Blosc not found, disabling it for OpenVBD") endif() endif() @@ -377,9 +371,11 @@ if(WITH_ALEMBIC) endif() if(WITH_USD) - find_package_wrapper(USD) + find_package(USD) - if(NOT USD_FOUND) + if(USD_FOUND) + add_bundled_libraries(usd/lib) + else() set(WITH_USD OFF) endif() endif() @@ -388,7 +384,7 @@ if(WITH_BOOST) # uses in build instructions to override include and library variables if(NOT BOOST_CUSTOM) if(WITH_STATIC_LIBS) - set(Boost_USE_STATIC_LIBS ON) + set(Boost_USE_STATIC_LIBS OFF) endif() set(Boost_USE_MULTITHREADED ON) set(__boost_packages filesystem regex thread date_time) @@ -404,6 +400,9 @@ if(WITH_BOOST) if(WITH_OPENVDB) list(APPEND __boost_packages iostreams) endif() + if(WITH_USD AND USD_PYTHON_SUPPORT) + list(APPEND __boost_packages python${PYTHON_VERSION_NO_DOTS}) + endif() list(APPEND __boost_packages system) find_package(Boost 1.48 COMPONENTS ${__boost_packages}) if(NOT Boost_FOUND) @@ -430,6 +429,8 @@ if(WITH_BOOST) find_package(IcuLinux) list(APPEND BOOST_LIBRARIES ${ICU_LIBRARIES}) endif() + + add_bundled_libraries(boost/lib) endif() if(WITH_PUGIXML) @@ -459,7 +460,6 @@ if(WITH_OPENIMAGEIO) ${ZLIB_LIBRARIES} ${BOOST_LIBRARIES} ) - set(OPENIMAGEIO_LIBPATH) # TODO, remove and reference the absolute path everywhere set(OPENIMAGEIO_DEFINITIONS "") if(WITH_IMAGE_TIFF) @@ -472,7 +472,9 @@ if(WITH_OPENIMAGEIO) list(APPEND OPENIMAGEIO_LIBRARIES "${WEBP_LIBRARIES}") endif() - if(NOT OPENIMAGEIO_FOUND) + if(OPENIMAGEIO_FOUND) + add_bundled_libraries(openimageio/lib) + else() set(WITH_OPENIMAGEIO OFF) message(STATUS "OpenImageIO not found, disabling WITH_CYCLES") endif() @@ -533,12 +535,11 @@ if(WITH_LLVM) endif() if(WITH_OPENSUBDIV) - find_package_wrapper(OpenSubdiv) + find_package(OpenSubdiv) - set(OPENSUBDIV_LIBRARIES ${OPENSUBDIV_LIBRARIES}) - set(OPENSUBDIV_LIBPATH) # TODO, remove and reference the absolute path everywhere - - if(NOT OPENSUBDIV_FOUND) + if(OPENSUBDIV_FOUND) + add_bundled_libraries(opensubdiv/lib) + else() set(WITH_OPENSUBDIV OFF) message(STATUS "OpenSubdiv not found") endif() @@ -546,7 +547,9 @@ endif() if(WITH_TBB) find_package_wrapper(TBB) - if(NOT TBB_FOUND) + if(TBB_FOUND) + add_bundled_libraries(tbb/lib) + elseif(EXISTS ${LIBDIR}) message(WARNING "TBB not found, disabling WITH_TBB") set(WITH_TBB OFF) endif() @@ -740,41 +743,41 @@ if(WITH_GHOST_WAYLAND) endif() if(WITH_GHOST_WAYLAND) - if(WITH_GHOST_WAYLAND_DBUS) - pkg_check_modules(dbus REQUIRED dbus-1) - endif() + if(WITH_GHOST_WAYLAND_DBUS) + pkg_check_modules(dbus REQUIRED dbus-1) + endif() - if(WITH_GHOST_WAYLAND_LIBDECOR) - pkg_check_modules(libdecor REQUIRED libdecor-0>=0.1) - endif() + if(WITH_GHOST_WAYLAND_LIBDECOR) + pkg_check_modules(libdecor REQUIRED libdecor-0>=0.1) + endif() + list(APPEND PLATFORM_LINKLIBS + ${xkbcommon_LINK_LIBRARIES} + ) + + if(NOT WITH_GHOST_WAYLAND_DYNLOAD) list(APPEND PLATFORM_LINKLIBS - ${xkbcommon_LINK_LIBRARIES} + ${wayland-client_LINK_LIBRARIES} + ${wayland-egl_LINK_LIBRARIES} + ${wayland-cursor_LINK_LIBRARIES} ) + endif() - if(NOT WITH_GHOST_WAYLAND_DYNLOAD) - list(APPEND PLATFORM_LINKLIBS - ${wayland-client_LINK_LIBRARIES} - ${wayland-egl_LINK_LIBRARIES} - ${wayland-cursor_LINK_LIBRARIES} - ) - endif() + if(WITH_GHOST_WAYLAND_DBUS) + list(APPEND PLATFORM_LINKLIBS + ${dbus_LINK_LIBRARIES} + ) + add_definitions(-DWITH_GHOST_WAYLAND_DBUS) + endif() - if(WITH_GHOST_WAYLAND_DBUS) + if(WITH_GHOST_WAYLAND_LIBDECOR) + if(NOT WITH_GHOST_WAYLAND_DYNLOAD) list(APPEND PLATFORM_LINKLIBS - ${dbus_LINK_LIBRARIES} + ${libdecor_LIBRARIES} ) - add_definitions(-DWITH_GHOST_WAYLAND_DBUS) - endif() - - if(WITH_GHOST_WAYLAND_LIBDECOR) - if(NOT WITH_GHOST_WAYLAND_DYNLOAD) - list(APPEND PLATFORM_LINKLIBS - ${libdecor_LIBRARIES} - ) - endif() - add_definitions(-DWITH_GHOST_WAYLAND_LIBDECOR) endif() + add_definitions(-DWITH_GHOST_WAYLAND_LIBDECOR) + endif() if(EXISTS "${LIBDIR}/wayland/bin/wayland-scanner") set(WAYLAND_SCANNER "${LIBDIR}/wayland/bin/wayland-scanner") @@ -1113,4 +1116,10 @@ if(PLATFORM_BUNDLED_LIBRARIES) # and because the build and install folder may be different. set(CMAKE_SKIP_BUILD_RPATH FALSE) list(APPEND CMAKE_BUILD_RPATH $ORIGIN/lib ${CMAKE_INSTALL_PREFIX_WITH_CONFIG}/lib) + + # Environment variables to run precompiled executables that needed libraries. + list(JOIN PLATFORM_BUNDLED_LIBRARY_DIRS ":" _library_paths) + set(PLATFORM_ENV_BUILD "LD_LIBRARY_PATH=\"${_library_paths};${LD_LIBRARY_PATH}\"") + set(PLATFORM_ENV_INSTALL "LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX_WITH_CONFIG}/lib/;$LD_LIBRARY_PATH") + unset(_library_paths) endif() |