Fix library export for Debian
authorTimo Röhling <roehling@debian.org>
Tue, 25 Jan 2022 21:04:07 +0000 (22:04 +0100)
committerTimo Röhling <roehling@debian.org>
Sat, 12 Nov 2022 12:20:14 +0000 (12:20 +0000)
Gbp-Pq: Name 0009-Fix-library-export-for-Debian.patch

34 files changed:
CMakeLists.txt
filament/CMakeLists.txt
filament/backend/CMakeLists.txt
filament/benchmark/CMakeLists.txt
filament/test/CMakeLists.txt
libs/bluegl/CMakeLists.txt
libs/bluevk/CMakeLists.txt
libs/camutils/CMakeLists.txt
libs/filabridge/CMakeLists.txt
libs/filaflat/CMakeLists.txt
libs/filagui/CMakeLists.txt
libs/filamat/CMakeLists.txt
libs/filameshio/CMakeLists.txt
libs/geometry/CMakeLists.txt
libs/gltfio/CMakeLists.txt
libs/ibl/CMakeLists.txt
libs/iblprefilter/CMakeLists.txt
libs/image/CMakeLists.txt
libs/imageio/CMakeLists.txt
libs/matdbg/CMakeLists.txt
libs/math/CMakeLists.txt
libs/mathio/CMakeLists.txt
libs/utils/CMakeLists.txt
libs/viewer/CMakeLists.txt
shaders/CMakeLists.txt
tools/cmgen/CMakeLists.txt
tools/cso-lut/CMakeLists.txt
tools/filamesh/CMakeLists.txt
tools/glslminifier/CMakeLists.txt
tools/matc/CMakeLists.txt
tools/matinfo/CMakeLists.txt
tools/mipgen/CMakeLists.txt
tools/normal-blending/CMakeLists.txt
tools/roughness-prefilter/CMakeLists.txt

index ce4192c28d8aff0a4b6ead35cb56179687c49531..a95c557b2eeac949dcd0da270ecf9b6bf74a5f7a 100644 (file)
@@ -577,15 +577,20 @@ endfunction()
 # External dependencies
 # ==================================================================================================
 find_package(GTest REQUIRED)
+find_package(astcenc REQUIRED)
 find_package(tsl-robin-map REQUIRED)
 find_package(meshoptimizer REQUIRED)
 find_package(draco REQUIRED)
+set(THREADS_PREFER_PTHREAD_FLAG ON)
+find_package(Threads REQUIRED)
 if(IS_HOST_PLATFORM)
     find_package(PNG REQUIRED)
     find_package(SDL2 REQUIRED)
     find_package(ZLIB REQUIRED)
     find_package(tinyexr REQUIRED)
 endif()
+include(debian/cmake/imgui.cmake)
+include(debian/cmake/stb.cmake)
 
 # ==================================================================================================
 # Sub-projects
@@ -610,12 +615,10 @@ add_subdirectory(${FILAMENT}/filament)
 add_subdirectory(${FILAMENT}/shaders)
 add_subdirectory(${EXTERNAL}/civetweb/tnt)
 add_subdirectory(${EXTERNAL}/hat-trie/tnt)
-include(debian/cmake/imgui.cmake)
 add_subdirectory(${EXTERNAL}/smol-v/tnt)
 include(debian/cmake/benchmark.cmake)
 add_subdirectory(${EXTERNAL}/cgltf/tnt)
 include(debian/cmake/jsmn.cmake)
-include(debian/cmake/stb.cmake)
 add_subdirectory(${EXTERNAL}/getopt)
 
 if (FILAMENT_BUILD_FILAMAT OR IS_HOST_PLATFORM)
@@ -653,7 +656,6 @@ if (IS_HOST_PLATFORM)
 
     add_subdirectory(${FILAMENT}/samples)
 
-    add_subdirectory(${EXTERNAL}/astcenc/tnt)
     add_subdirectory(${EXTERNAL}/etc2comp)
     include(debian/cmake/libassimp.cmake)
 
@@ -674,3 +676,19 @@ endif()
 if (NOT CMAKE_CROSSCOMPILING)
     export(TARGETS matc cmgen filamesh mipgen resgen glslminifier FILE ${IMPORT_EXECUTABLES})
 endif()
+
+include(CMakePackageConfigHelpers)
+configure_package_config_file(debian/cmake/package-config.cmake.in filamentConfig.cmake
+    INSTALL_DESTINATION ${FILAMENT_CMAKEDIR}
+    NO_SET_AND_CHECK_MACRO
+    NO_CHECK_REQUIRED_COMPONENTS_MACRO
+)
+write_basic_package_version_file(filamentConfigVersion.cmake
+    VERSION ${FILAMENT_VERSION}
+    COMPATIBILITY SameMinorVersion
+)
+install(EXPORT filamentTargets NAMESPACE filament:: DESTINATION ${FILAMENT_CMAKEDIR})
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/filamentConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/filamentConfigVersion.cmake DESTINATION ${FILAMENT_CMAKEDIR})
+install(FILES debian/cmake/imgui.cmake DESTINATION ${FILAMENT_CMAKEDIR})
+install(FILES debian/cmake/stb.cmake DESTINATION ${FILAMENT_CMAKEDIR})
+
index 09c77ebb74dd71b29328d4b380c762b9c37473df..514e43062c33cdd1a071bf6cdfba1c14ba7e09ef 100644 (file)
@@ -345,31 +345,52 @@ list(APPEND DATA_BINS ${output_path})
 # ==================================================================================================
 # Includes & target definition
 # ==================================================================================================
-# specify where our headers are
-include_directories(${PUBLIC_HDR_DIR})
-include_directories(${GENERATION_ROOT})
-include_directories(src)
 
 # we're building a library
-add_library(${TARGET} STATIC ${PRIVATE_HDRS} ${PUBLIC_HDRS} ${SRCS} ${DATA_BINS})
+add_library(${TARGET} SHARED ${PRIVATE_HDRS} ${PUBLIC_HDRS} ${SRCS} ${DATA_BINS})
 
 # specify where the public headers of this library are
-target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
+target_include_directories(${TARGET} PUBLIC 
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+target_include_directories(${TARGET} PRIVATE
+    ${CMAKE_CURRENT_SOURCE_DIR}/src
+    ${GENERATION_ROOT}
+)
+set_target_properties(${TARGET} PROPERTIES
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+target_compile_features(${TARGET} PUBLIC cxx_std_17)
+add_library(filament::${TARGET} ALIAS ${TARGET})
+
+add_library(${TARGET}_headers INTERFACE)
+target_include_directories(${TARGET}_headers INTERFACE 
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+set_target_properties(${TARGET}_headers PROPERTIES
+    EXPORT_NAME "${TARGET}::headers"
+)
+target_compile_features(${TARGET}_headers INTERFACE cxx_std_17)
+add_library(filament::${TARGET}::headers ALIAS ${TARGET}_headers)
 
 # ==================================================================================================
 # Dependencies
 # ==================================================================================================
 
-target_link_libraries(${TARGET} PUBLIC backend)
-target_link_libraries(${TARGET} PUBLIC math)
-target_link_libraries(${TARGET} PUBLIC utils)
-target_link_libraries(${TARGET} PUBLIC geometry) # TODO: remove this dependency after deprecating VertexBuffer::populateTangentQuaternions
-target_link_libraries(${TARGET} PUBLIC filaflat)
-target_link_libraries(${TARGET} PUBLIC filabridge)
-target_link_libraries(${TARGET} PUBLIC ibl-lite)
+target_link_libraries(${TARGET} PUBLIC filament::backend)
+target_link_libraries(${TARGET} PUBLIC filament::math)
+target_link_libraries(${TARGET} PUBLIC filament::utils)
+target_link_libraries(${TARGET} PUBLIC filament::filabridge::headers)
+target_link_libraries(${TARGET} PRIVATE filament::geometry)
+target_link_libraries(${TARGET} PRIVATE filament::filaflat)
+target_link_libraries(${TARGET} PRIVATE filament::filabridge)
+target_link_libraries(${TARGET} PRIVATE filament::ibl_lite)
 
 if (FILAMENT_ENABLE_MATDBG)
-    target_link_libraries(${TARGET} PUBLIC matdbg)
+    target_link_libraries(${TARGET} PRIVATE filament::matdbg)
     add_definitions(-DFILAMENT_ENABLE_MATDBG=1)
 else()
     add_definitions(-DFILAMENT_ENABLE_MATDBG=0)
@@ -435,8 +456,8 @@ target_link_libraries(${TARGET} PRIVATE
 # Installation
 # ==================================================================================================
 set(INSTALL_TYPE ARCHIVE)
-install(TARGETS ${TARGET} ${INSTALL_TYPE} DESTINATION lib/${DIST_DIR})
-install(DIRECTORY ${PUBLIC_HDR_DIR}/filament DESTINATION include)
+install(TARGETS ${TARGET} ${TARGET}_headers DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
+install(DIRECTORY ${PUBLIC_HDR_DIR}/filament DESTINATION ${FILAMENT_INCLUDEDIR})
 install(FILES "README.md" DESTINATION .)
 install(FILES "../LICENSE" DESTINATION .)
 
@@ -446,3 +467,4 @@ install(FILES "../LICENSE" DESTINATION .)
 add_subdirectory(backend)
 add_subdirectory(test)
 add_subdirectory(benchmark)
+
index 19fa52df6d0fa6116c4c31be4ca60ea5494df480..f61faee41cd058d9dc10c6aad113270310b16d03 100644 (file)
@@ -193,23 +193,38 @@ add_definitions(-DSYSTRACE_TAG=2 )
 # ==================================================================================================
 # Includes & target definition
 # ==================================================================================================
-# specify where our headers are
-include_directories(${PUBLIC_HDR_DIR})
-include_directories(src)
-include_directories(${GENERATION_ROOT})
-
 # we're building a library
-add_library(${TARGET} STATIC ${PRIVATE_HDRS} ${PUBLIC_HDRS} ${SRCS})
+add_library(${TARGET} SHARED ${PRIVATE_HDRS} ${PUBLIC_HDRS} ${SRCS})
 
 # specify where the public headers of this library are
-target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
+target_include_directories(${TARGET} PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+target_include_directories(${TARGET} PRIVATE
+    ${CMAKE_CURRENT_SOURCE_DIR}/src
+    ${GENERATION_ROOT}
+)
+set_target_properties(${TARGET} PROPERTIES
+    OUTPUT_NAME "filament_${TARGET}"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+add_library(filament::${TARGET} ALIAS ${TARGET})
 
 # ==================================================================================================
 # Expose a header-only target to minimize dependencies.
 # ==================================================================================================
 
 add_library(${TARGET}_headers INTERFACE)
-target_include_directories(${TARGET}_headers INTERFACE ${PUBLIC_HDR_DIR})
+target_include_directories(${TARGET}_headers INTERFACE
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+set_target_properties(${TARGET}_headers PROPERTIES
+    EXPORT_NAME "${TARGET}::headers"
+)
+add_library(filament::${TARGET}::headers ALIAS ${TARGET}_headers)
 
 # ==================================================================================================
 # Build SPIRV snippets used by the Vulkan backend.
@@ -249,6 +264,7 @@ set(DUMMY_SRC "${VKSHADERS_DIR}/dummy.c")
 add_custom_command(OUTPUT ${DUMMY_SRC} COMMAND echo "//" > ${DUMMY_SRC})
 
 add_library(vkshaders STATIC ${DUMMY_SRC} ${RESGEN_SOURCE})
+set_target_properties(vkshaders PROPERTIES OUTPUT_NAME "filament_vkshaders" VERSION ${FILAMENT_VERSION})
 
 # ==================================================================================================
 # Dependencies
@@ -259,15 +275,15 @@ if (ANDROID)
 endif()
 
 if (FILAMENT_USE_SWIFTSHADER)
-    target_link_libraries(${TARGET} PUBLIC ${SWIFTSHADER_VK})
+    target_link_libraries(${TARGET} PRIVATE ${SWIFTSHADER_VK})
 endif()
 
 if (APPLE AND NOT IOS)
     target_link_libraries(${TARGET} PRIVATE "-framework Cocoa")
 endif()
 
-target_link_libraries(${TARGET} PUBLIC math)
-target_link_libraries(${TARGET} PUBLIC utils)
+target_link_libraries(${TARGET} PUBLIC filament::math)
+target_link_libraries(${TARGET} PUBLIC filament::utils)
 
 # Android, iOS, and WebGL do not use bluegl.
 if(NOT IOS AND NOT ANDROID AND NOT WEBGL)
@@ -275,7 +291,7 @@ if(NOT IOS AND NOT ANDROID AND NOT WEBGL)
 endif()
 
 if (FILAMENT_SUPPORTS_VULKAN)
-    target_link_libraries(${TARGET} PUBLIC bluevk vkmemalloc vkshaders)
+    target_link_libraries(${TARGET} PRIVATE bluevk vkmemalloc vkshaders smol-v)
 endif()
 
 if (FILAMENT_SUPPORTS_METAL)
@@ -283,6 +299,7 @@ if (FILAMENT_SUPPORTS_METAL)
 endif()
 
 if (LINUX)
+    target_link_libraries(${TARGET} PUBLIC Threads::Threads)
     target_link_libraries(${TARGET} PRIVATE dl)
 endif()
 
@@ -343,9 +360,9 @@ target_link_libraries(${TARGET} PRIVATE
 # Installation
 # ==================================================================================================
 set(INSTALL_TYPE ARCHIVE)
-install(TARGETS ${TARGET} ${INSTALL_TYPE} DESTINATION lib/${DIST_DIR})
-install(TARGETS vkshaders ${INSTALL_TYPE} DESTINATION lib/${DIST_DIR})
-install(DIRECTORY ${PUBLIC_HDR_DIR}/backend DESTINATION include)
+install(TARGETS ${TARGET} DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
+install(TARGETS vkshaders backend_headers DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
+install(DIRECTORY ${PUBLIC_HDR_DIR}/backend DESTINATION ${FILAMENT_INCLUDEDIR})
 
 # ==================================================================================================
 # Test
index 3a1c57fbb8330bd77dc628bdedd2c03d5916549e..a4ac6ef4b04b239a3bf2688ad11c4cdc7ebdefb4 100644 (file)
@@ -10,4 +10,5 @@ set(BENCHMARK_SRCS
 
 add_executable(benchmark_filament ${BENCHMARK_SRCS})
 
-target_link_libraries(benchmark_filament PRIVATE benchmark_main utils math filament)
+target_include_directories(benchmark_filament PRIVATE ../src)
+target_link_libraries(benchmark_filament PRIVATE benchmark_main filament::utils filament::math filament::filament)
index 62167019a9db65727874cecbfabf5d4bca858ce5..5099da1b66d89b94391b588ef0b0a5f64b5431f6 100644 (file)
@@ -57,6 +57,6 @@ endif()
 add_executable(test_material_parser
         filament_test_material_parser.cpp
         ${RESGEN_SOURCE})
-target_link_libraries(test_material_parser PRIVATE filament gtest)
+target_link_libraries(test_material_parser PRIVATE filament::filament filament::filaflat GTest::gtest)
 target_compile_options(test_material_parser PRIVATE ${COMPILER_FLAGS})
-target_include_directories(test_material_parser PRIVATE ${RESOURCE_DIR})
+target_include_directories(test_material_parser PRIVATE ${RESOURCE_DIR} ../src)
index 3f7ff832eb9394e07cd1af9d0c0b8a35f3e494bc..b85c7f51c4f5f6754b28b7c66f5b276236dfdb0f 100644 (file)
@@ -61,4 +61,4 @@ endif()
 
 # and we're linking against the libraries below, importing their public headers
 target_link_libraries(test_${TARGET} LINK_PUBLIC ${TARGET})
-target_link_libraries(test_${TARGET} LINK_PUBLIC gtest)
+target_link_libraries(test_${TARGET} LINK_PUBLIC GTest::gtest)
index eca0cd19d4cdb7e4469cb10c72267ad188563157..7b7d4e1df079cd9cb22cea182b8f59cf40597d01 100644 (file)
@@ -25,14 +25,14 @@ include_directories(${PUBLIC_HDR_DIR})
 
 add_library(${TARGET} STATIC ${PUBLIC_HDRS} ${SRCS})
 
-target_link_libraries(${TARGET} utils math)
+target_link_libraries(${TARGET} filament::utils filament::math)
 
 target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
 
 # test_bluevk is not supported on mobile or Windows
 if (NOT ANDROID AND NOT IOS AND NOT WIN32)
     add_executable(test_bluevk tests/test_bluevk_sdl.cpp)
-    target_link_libraries(test_bluevk PRIVATE dl bluevk sdl2)
+    target_link_libraries(test_bluevk PRIVATE dl bluevk SDL2::SDL2)
 endif()
 
 install(TARGETS ${TARGET} ARCHIVE DESTINATION lib/${DIST_DIR})
index de5025431e6b9d97b3fd4ac54321fb1ce1493c5b..43ef1f22fc5f65b9184826231bb7f46fcaa560f9 100644 (file)
@@ -23,13 +23,21 @@ set(SRCS
 # ==================================================================================================
 # Include and target definitions
 # ==================================================================================================
-include_directories(${PUBLIC_HDR_DIR})
+add_library(${TARGET} SHARED ${PUBLIC_HDRS} ${SRCS})
 
-add_library(${TARGET} STATIC ${PUBLIC_HDRS} ${SRCS})
+target_link_libraries(${TARGET} PUBLIC filament::math)
 
-target_link_libraries(${TARGET} PUBLIC math)
-
-target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
+target_include_directories(${TARGET} PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+target_compile_features(${TARGET} PUBLIC cxx_std_17)
+set_target_properties(${TARGET} PROPERTIES
+    OUTPUT_NAME "filament_${TARGET}"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+add_library(filament::${TARGET} ALIAS ${TARGET})
 
 # ==================================================================================================
 # Compiler flags
@@ -44,13 +52,13 @@ endif()
 # ==================================================================================================
 # Installation
 # ==================================================================================================
-install(TARGETS ${TARGET} ARCHIVE DESTINATION lib/${DIST_DIR})
-install(DIRECTORY ${PUBLIC_HDR_DIR}/camutils DESTINATION include)
+install(TARGETS ${TARGET} DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
+install(DIRECTORY ${PUBLIC_HDR_DIR}/camutils DESTINATION ${FILAMENT_INCLUDEDIR})
 
 # ==================================================================================================
 # Tests
 # ==================================================================================================
 if (NOT ANDROID AND NOT WEBGL AND NOT IOS)
     add_executable(test_${TARGET} tests/test_camutils.cpp)
-    target_link_libraries(test_${TARGET} PRIVATE camutils gtest)
+    target_link_libraries(test_${TARGET} PRIVATE filament::camutils GTest::gtest)
 endif()
index 4b2691c03cb25a7bd45165692a39521f42ecf0a1..da2dddd9d1f21c401988daad86783f87229f5f84 100644 (file)
@@ -20,17 +20,35 @@ set(SRCS
 # ==================================================================================================
 # Include and target definitions
 # ==================================================================================================
-include_directories(${PUBLIC_HDR_DIR})
+add_library(${TARGET} SHARED ${PUBLIC_HDRS} ${SRCS})
+target_include_directories(${TARGET} PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
 
-add_library(${TARGET} STATIC ${PUBLIC_HDRS} ${SRCS})
-target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
+target_link_libraries(${TARGET} PRIVATE filament::utils)
+target_link_libraries(${TARGET} PUBLIC filament::math)
+target_link_libraries(${TARGET} PUBLIC filament::backend::headers)
+set_target_properties(${TARGET} PROPERTIES
+    OUTPUT_NAME "filament_${TARGET}"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+target_compile_features(${TARGET} PUBLIC cxx_std_17)
+add_library(filament::${TARGET} ALIAS ${TARGET})
 
-target_link_libraries(${TARGET} utils)
-target_link_libraries(${TARGET} math)
-target_link_libraries(${TARGET} backend_headers)
+add_library(${TARGET}_headers INTERFACE)
+target_include_directories(${TARGET}_headers INTERFACE
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+set_target_properties(${TARGET}_headers PROPERTIES
+    EXPORT_NAME "${TARGET}::headers"
+)
+add_library(filament::${TARGET}::headers ALIAS ${TARGET}_headers)
 
 # ==================================================================================================
 # Installation
 # ==================================================================================================
-install(DIRECTORY ${PUBLIC_HDR_DIR}/filament DESTINATION include)
-install(TARGETS ${TARGET} ARCHIVE DESTINATION lib/${DIST_DIR})
+install(DIRECTORY ${PUBLIC_HDR_DIR}/filament DESTINATION ${FILAMENT_INCLUDEDIR})
+install(TARGETS ${TARGET} ${TARGET}_headers DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
index ce4927fed35e16165fee05b96d03d8da8e21251f..6a4a9e5ad27a629f464b59ed1cb2415ac5c7dba8 100644 (file)
@@ -19,29 +19,28 @@ set(SRCS
 # ==================================================================================================
 # Include and target definitions
 # ==================================================================================================
-include_directories(${PUBLIC_HDR_DIR})
-
-add_library(${TARGET} ${HDRS} ${SRCS})
-target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
-
-target_link_libraries(${TARGET} filabridge utils)
+add_library(${TARGET} SHARED ${HDRS} ${SRCS})
+target_include_directories(${TARGET} PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+target_link_libraries(${TARGET} PRIVATE filament::filabridge)
+target_link_libraries(${TARGET} PUBLIC filament::utils)
+target_compile_features(${TARGET} PUBLIC cxx_std_17)
+set_target_properties(${TARGET} PROPERTIES
+    OUTPUT_NAME "filament_${TARGET}"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+add_library(filament::${TARGET} ALIAS ${TARGET})
 
 if (FILAMENT_SUPPORTS_VULKAN)
-    target_link_libraries(${TARGET} smol-v)
-endif()
-
-# ==================================================================================================
-# Compiler flags
-# ==================================================================================================
-if (NOT WIN32)
-    target_compile_options(${TARGET} PRIVATE
-        -fvisibility=hidden
-    )
+    target_link_libraries(${TARGET} PRIVATE smol-v)
 endif()
 
 # ==================================================================================================
 # Installation
 # ==================================================================================================
 # We do not need filaflat headers in the install directory
-# install(DIRECTORY ${PUBLIC_HDR_DIR}/filaflat DESTINATION include)
-install(TARGETS ${TARGET} ARCHIVE DESTINATION lib/${DIST_DIR})
+install(DIRECTORY ${PUBLIC_HDR_DIR}/filaflat DESTINATION ${FILAMENT_INCLUDEDIR})
+install(TARGETS ${TARGET} DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
index fe5373ef51025824a953292ce9a34c630dbd0972..683d02252965f6b864b11c66f04bdfbb033fbc2b 100644 (file)
@@ -75,14 +75,31 @@ list(APPEND RESGEN_SOURCE ${DUMMY_SRC})
 # ==================================================================================================
 # Include and target definitions
 # ==================================================================================================
-include_directories(${PUBLIC_HDR_DIR})
-include_directories(${GENERATION_ROOT})
+add_library(${TARGET} SHARED ${PUBLIC_HDRS} ${SRCS} ${RESGEN_SOURCE})
 
-add_library(${TARGET} STATIC ${PUBLIC_HDRS} ${SRCS} ${RESGEN_SOURCE})
+target_link_libraries(${TARGET} PUBLIC filament::imgui filament::stb filament::filament)
 
-target_link_libraries(${TARGET} PUBLIC imgui filament)
+target_include_directories(${TARGET} PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+target_include_directories(${TARGET} PRIVATE
+    ${GENERATION_ROOT}
+)
+target_compile_features(${TARGET} PUBLIC cxx_std_17)
+set_target_properties(${TARGET} PROPERTIES
+    OUTPUT_NAME "filament_${TARGET}"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+add_library(filament::${TARGET} ALIAS ${TARGET})
 
-target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
+
+# ==================================================================================================
+# Installation
+# ==================================================================================================
+install(TARGETS ${TARGET} DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
+install(DIRECTORY ${PUBLIC_HDR_DIR}/filagui DESTINATION ${FILAMENT_INCLUDEDIR})
 
 # ==================================================================================================
 # Compiler flags
index 96450049b155d532f78bb5d20cb09850d1f47f6c..a130f0c7bd561631a206ff0fd2bd8f8e2bed8448 100644 (file)
@@ -84,18 +84,36 @@ include_directories(${PUBLIC_HDR_DIR})
 include_directories(${CMAKE_BINARY_DIR})
 
 # Filamat
-add_library(${TARGET} STATIC ${HDRS} ${PRIVATE_HDRS} ${SRCS})
-target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
-target_link_libraries(${TARGET} shaders filabridge utils smol-v)
+add_library(${TARGET} SHARED ${HDRS} ${PRIVATE_HDRS} ${SRCS})
+target_include_directories(${TARGET} PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+target_compile_features(${TARGET} PUBLIC cxx_std_17)
+set_target_properties(${TARGET} PROPERTIES
+    OUTPUT_NAME "filament_${TARGET}"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+target_link_libraries(${TARGET} PRIVATE filament::shaders filament::filabridge smol-v)
+target_link_libraries(${TARGET} PUBLIC filament::utils)
+add_library(filament::${TARGET} ALIAS ${TARGET})
 
 # Filamat Lite
-add_library(filamat_lite STATIC ${HDRS} ${LITE_PRIVATE_HDRS} ${LITE_SRCS})
-target_include_directories(filamat_lite PUBLIC ${PUBLIC_HDR_DIR})
-target_link_libraries(filamat_lite shaders filabridge utils)
-
-# We are being naughty and accessing private headers here
-# For spirv-tools, we're just following glslang's example
-target_include_directories(${TARGET} PRIVATE ${spirv-tools_SOURCE_DIR}/include)
+add_library(filamat_lite SHARED ${HDRS} ${LITE_PRIVATE_HDRS} ${LITE_SRCS})
+target_include_directories(filamat_lite PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+target_link_libraries(filamat_lite PRIVATE filament::shaders filament::filabridge)
+target_link_libraries(filamat_lite PUBLIC filament::utils)
+target_compile_features(filamat_lite PUBLIC cxx_std_17)
+set_target_properties(filamat_lite PROPERTIES
+    OUTPUT_NAME "filament_filamat_lite"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+add_library(filament::filamat_lite ALIAS filamat_lite)
 
 # glslang libraries have circular dependencies. To make sure the proper object are part of the link
 # we need to force archive re-scan on new symbol dependencies via start/end-group.
@@ -103,7 +121,7 @@ target_include_directories(${TARGET} PRIVATE ${spirv-tools_SOURCE_DIR}/include)
 if (APPLE OR MSVC)
     target_link_libraries(${TARGET} glslang SPIRV SPVRemapper SPIRV-Tools-opt spirv-cross-glsl)
 else()
-    target_link_libraries(${TARGET}
+    target_link_libraries(${TARGET} PRIVATE
             -Wl,--start-group glslang SPIRV SPVRemapper SPIRV-Tools-opt spirv-cross-glsl -Wl,--end-group)
 endif()
 
@@ -151,14 +169,14 @@ set(FILAMAT_DEPS
         spirv-cross-msl
         )
 
-set(FILAMAT_COMBINED_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libfilamat_combined.a")
-combine_static_libs(filamat "${FILAMAT_COMBINED_OUTPUT}" "${FILAMAT_DEPS}")
+#set(FILAMAT_COMBINED_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libfilamat_combined.a")
+#combine_static_libs(filamat "${FILAMAT_COMBINED_OUTPUT}" "${FILAMAT_DEPS}")
 
-set(FILAMAT_LIB_NAME ${CMAKE_STATIC_LIBRARY_PREFIX}filamat${CMAKE_STATIC_LIBRARY_SUFFIX})
-install(FILES "${FILAMAT_COMBINED_OUTPUT}" DESTINATION lib/${DIST_DIR} RENAME ${FILAMAT_LIB_NAME})
-install(DIRECTORY ${PUBLIC_HDR_DIR}/filamat DESTINATION include)
+#set(FILAMAT_LIB_NAME ${CMAKE_STATIC_LIBRARY_PREFIX}filamat${CMAKE_STATIC_LIBRARY_SUFFIX})
+#install(FILES "${FILAMAT_COMBINED_OUTPUT}" DESTINATION lib/${DIST_DIR} RENAME ${FILAMAT_LIB_NAME})
+install(DIRECTORY ${PUBLIC_HDR_DIR}/filamat DESTINATION ${FILAMENT_INCLUDEDIR})
 
-install(TARGETS filamat_lite ARCHIVE DESTINATION lib/${DIST_DIR})
+install(TARGETS ${TARGET} filamat_lite DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
 
 # ==================================================================================================
 # Tests
@@ -173,7 +191,9 @@ add_executable(${TARGET} ${SRCS})
 
 target_include_directories(${TARGET} PRIVATE src)
 
-target_link_libraries(${TARGET} filamat gtest)
+target_link_libraries(${TARGET} PRIVATE filament::backend filament::filabridge filament::filamat GTest::gtest)
+target_link_libraries(${TARGET} PRIVATE
+        -Wl,--start-group glslang SPIRV SPVRemapper SPIRV-Tools-opt spirv-cross-glsl -Wl,--end-group)
 
 set(TARGET test_filamat_lite)
 set(SRCS
@@ -183,4 +203,7 @@ add_executable(${TARGET} ${SRCS})
 
 target_include_directories(${TARGET} PRIVATE src)
 
-target_link_libraries(${TARGET} filamat_lite gtest)
+target_link_libraries(${TARGET} PRIVATE filament::backend filament::filabridge filament::filamat_lite GTest::gtest)
+target_link_libraries(${TARGET} PRIVATE
+        -Wl,--start-group glslang SPIRV SPVRemapper SPIRV-Tools-opt spirv-cross-glsl -Wl,--end-group)
+
index 7e7dc4e8be9554dc2fb4cc9583d4405d635a7adc..2bbf51fd964ccaeffee979910e4c2f5bb7cc1084 100644 (file)
@@ -18,25 +18,39 @@ set(SRCS src/MeshReader.cpp)
 # ==================================================================================================
 # Includes and target definition
 # ==================================================================================================
-include_directories(${PUBLIC_HDR_DIR})
-add_library(${TARGET} STATIC ${PUBLIC_HDRS} ${SRCS})
-target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
+add_library(${TARGET} SHARED ${PUBLIC_HDRS} ${SRCS})
+target_include_directories(${TARGET} PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+target_compile_features(${TARGET} PUBLIC cxx_std_17)
 target_link_libraries(${TARGET}
-    PRIVATE meshoptimizer
-    PUBLIC filament # Public only because the filamesh API needs Box.h
+    PRIVATE
+        filament::filament
+        meshoptimizer::meshoptimizer
+    PUBLIC
+        filament::math
+        filament::utils
+        filament::filament::headers # Public only because the filamesh API needs Box.h
+)
+set_target_properties(${TARGET} PROPERTIES
+    OUTPUT_NAME "filament_${TARGET}"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
 )
+add_library(filament::${TARGET} ALIAS ${TARGET})
 
 # ==================================================================================================
 # Installation
 # ==================================================================================================
 set(INSTALL_TYPE ARCHIVE)
-install(TARGETS ${TARGET} ${INSTALL_TYPE} DESTINATION lib/${DIST_DIR})
-install(FILES ${DIST_HDRS} DESTINATION include/${TARGET})
+install(TARGETS ${TARGET} DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
+install(FILES ${DIST_HDRS} DESTINATION ${FILAMENT_INCLUDEDIR}/${TARGET})
 
 # ==================================================================================================
 # Tests
 # ==================================================================================================
 if (NOT IOS AND NOT WEBGL AND NOT ANDROID)
     add_executable(test_${TARGET} tests/test_filamesh.cpp )
-    target_link_libraries(test_${TARGET} PRIVATE filameshio gtest)
+    target_link_libraries(test_${TARGET} PRIVATE filament::filament filament::filameshio GTest::gtest)
 endif()
index 37db5a997668a3e7fe8991f4a38051540a0a3aa5..dd13c2930857eef13346abdbb16da5be246e17b6 100644 (file)
@@ -20,13 +20,21 @@ set(SRCS
 # ==================================================================================================
 # Include and target definitions
 # ==================================================================================================
-include_directories(${PUBLIC_HDR_DIR})
+add_library(${TARGET} SHARED ${PUBLIC_HDRS} ${SRCS})
 
-add_library(${TARGET} STATIC ${PUBLIC_HDRS} ${SRCS})
+target_link_libraries(${TARGET} PUBLIC filament::math filament::utils)
 
-target_link_libraries(${TARGET} PUBLIC math utils)
-
-target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
+target_include_directories(${TARGET} PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+target_compile_features(${TARGET} PUBLIC cxx_std_17)
+set_target_properties(${TARGET} PROPERTIES
+    OUTPUT_NAME "filament_${TARGET}"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+add_library(filament::${TARGET} ALIAS ${TARGET})
 
 # ==================================================================================================
 # Compiler flags
@@ -41,13 +49,13 @@ endif()
 # ==================================================================================================
 # Installation
 # ==================================================================================================
-install(TARGETS ${TARGET} ARCHIVE DESTINATION lib/${DIST_DIR})
-install(DIRECTORY ${PUBLIC_HDR_DIR}/geometry DESTINATION include)
+install(TARGETS ${TARGET} DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
+install(DIRECTORY ${PUBLIC_HDR_DIR}/geometry DESTINATION ${FILAMENT_INCLUDEDIR})
 
 # ==================================================================================================
 # Tests
 # ==================================================================================================
 if (NOT ANDROID AND NOT WEBGL AND NOT IOS)
     add_executable(test_transcoder tests/test_transcoder.cpp)
-    target_link_libraries(test_transcoder PRIVATE ${TARGET} gtest)
+    target_link_libraries(test_transcoder PRIVATE ${TARGET} GTest::gtest)
 endif()
index b759b0b8ffc416503151eb4889f3ceb2ec0a4240..a28e76e7d6e8ed097d0a0abd7ef9b706d20f009e 100644 (file)
@@ -106,6 +106,12 @@ set(DUMMY_SRC "${RESOURCE_DIR}/dummy.c")
 add_custom_command(OUTPUT ${DUMMY_SRC} COMMAND echo "//" > ${DUMMY_SRC})
 
 add_library(gltfio_resources ${DUMMY_SRC} ${RESGEN_SOURCE})
+set_target_properties(gltfio_resources PROPERTIES
+    OUTPUT_NAME "filament_gltfio_resources"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+add_library(filament::gltfio_resources ALIAS gltfio_resources)
 
 # ==================================================================================================
 # Build "lite" resources library, which contains only a few materials
@@ -157,29 +163,49 @@ set(DUMMY_SRC "${LITE_DIR}/dummy.c")
 add_custom_command(OUTPUT ${DUMMY_SRC} COMMAND echo "//" > ${DUMMY_SRC})
 
 add_library(gltfio_resources_lite ${DUMMY_SRC} ${RESGEN_SOURCE})
+set_target_properties(gltfio_resources_lite PROPERTIES
+    OUTPUT_NAME "filament_gltfio_resources_lite"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+add_library(filament::gltfio_resources_lite ALIAS gltfio_resources_lite)
 
 # ==================================================================================================
 # Build the "core" library (no filamat)
 # ==================================================================================================
 
 include_directories(${PUBLIC_HDR_DIR} ${RESOURCE_DIR})
-link_libraries(math utils filament cgltf stb geometry gltfio_resources tsl trie)
-
-add_library(gltfio_core STATIC ${PUBLIC_HDRS} ${SRCS})
 
-target_include_directories(gltfio_core PUBLIC ${PUBLIC_HDR_DIR})
-
-target_compile_definitions(gltfio_core PUBLIC -DGLTFIO_DRACO_SUPPORTED=1)
-target_link_libraries(gltfio_core PUBLIC dracodec)
+add_library(gltfio_core SHARED ${PUBLIC_HDRS} ${SRCS})
+target_include_directories(gltfio_core PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+target_compile_features(gltfio_core PUBLIC cxx_std_17)
+target_compile_definitions(gltfio_core PRIVATE -DGLTFIO_DRACO_SUPPORTED=1)
+target_link_libraries(gltfio_core PRIVATE draco::draco)
+target_link_libraries(gltfio_core PRIVATE filament::math filament::utils filament::filament cgltf filament::stb filament::geometry filament::gltfio_resources tsl::robin_map trie)
+set_target_properties(gltfio_core PROPERTIES
+    OUTPUT_NAME "filament_gltfio_core"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+add_library(filament::gltfio_core ALIAS gltfio_core)
 
 if (NOT WEBGL AND NOT ANDROID AND NOT IOS)
 
     # ==================================================================================================
     # Link the core library with additional dependencies to create the "full" library
     # ==================================================================================================
-    add_library(${TARGET} STATIC ${PUBLIC_HDRS} src/MaterialGenerator.cpp)
-    target_link_libraries(${TARGET} PUBLIC filamat gltfio_core)
-    target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
+    add_library(${TARGET} SHARED ${PUBLIC_HDRS} src/MaterialGenerator.cpp)
+    target_link_libraries(${TARGET} PUBLIC filament::filamat filament::gltfio_core)
+    target_link_libraries(${TARGET} PRIVATE filament::math filament::utils filament::filament cgltf stb filament::geometry filament::gltfio_resources tsl::robin_map trie)
+    target_compile_features(${TARGET} PUBLIC cxx_std_17)
+    set_target_properties(${TARGET} PROPERTIES
+        OUTPUT_NAME "filament_${TARGET}"
+        VERSION ${FILAMENT_VERSION}
+        SOVERSION ${FILAMENT_SOVERSION}
+    )
 
     # ==================================================================================================
     # Compiler flags
@@ -194,9 +220,11 @@ if (NOT WEBGL AND NOT ANDROID AND NOT IOS)
     # ==================================================================================================
     # Installation
     # ==================================================================================================
-    install(TARGETS ${TARGET} gltfio_core gltfio_resources gltfio_resources_lite ARCHIVE DESTINATION lib/${DIST_DIR})
-    install(DIRECTORY ${PUBLIC_HDR_DIR}/gltfio DESTINATION include)
-
+    install(TARGETS ${TARGET} gltfio_core gltfio_resources gltfio_resources_lite DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
+    # The Image.h header is only needed within Filament and does not need to be distributed.
+    install(DIRECTORY ${PUBLIC_HDR_DIR}/gltfio
+        DESTINATION ${FILAMENT_INCLUDEDIR}
+        PATTERN "Image.h" EXCLUDE)
 else()
 
     install(TARGETS gltfio_core gltfio_resources gltfio_resources_lite ARCHIVE DESTINATION lib/${DIST_DIR})
index 0719871718027c712bdead94ab8eb567ebfe503a..5faa57909f2c5eaa2b8172b1d98a06a504bd478b 100644 (file)
@@ -31,32 +31,49 @@ set(SRCS
 # ==================================================================================================
 # Target definitions
 # ==================================================================================================
-include_directories(${PUBLIC_HDR_DIR})
-
-add_library(${TARGET} ${PUBLIC_HDRS} ${PRIVATE_HDRS} ${SRCS})
-target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
-target_link_libraries(${TARGET} math utils)
+add_library(${TARGET} SHARED ${PUBLIC_HDRS} ${PRIVATE_HDRS} ${SRCS})
+target_include_directories(${TARGET} PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+target_link_libraries(${TARGET} PUBLIC filament::math filament::utils)
+target_compile_features(${TARGET} PUBLIC cxx_std_17)
+set_target_properties(${TARGET} PROPERTIES
+    OUTPUT_NAME "filament_${TARGET}"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+add_library(filament::${TARGET} ALIAS ${TARGET})
 
-add_library(${TARGET}-lite ${PUBLIC_HDRS} ${PRIVATE_HDRS} ${SRCS})
-target_compile_definitions(${TARGET}-lite PUBLIC -DFILAMENT_IBL_LITE=1)
-target_include_directories(${TARGET}-lite PUBLIC ${PUBLIC_HDR_DIR})
-target_link_libraries(${TARGET}-lite math utils)
+add_library(${TARGET}_lite SHARED ${PUBLIC_HDRS} ${PRIVATE_HDRS} ${SRCS})
+target_compile_definitions(${TARGET}_lite PUBLIC -DFILAMENT_IBL_LITE=1)
+target_compile_features(${TARGET}_lite PUBLIC cxx_std_17)
+target_include_directories(${TARGET}_lite PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+target_link_libraries(${TARGET}_lite PUBLIC filament::math filament::utils)
+set_target_properties(${TARGET}_lite PROPERTIES
+    OUTPUT_NAME "filament_${TARGET}_lite"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+add_library(filament::${TARGET}_lite ALIAS ${TARGET}_lite)
 
 # ==================================================================================================
 # Compile options and optimizations
 # ==================================================================================================
 if (MSVC)
     target_compile_options(${TARGET} PRIVATE /fp:fast)
-    target_compile_options(${TARGET}-lite PRIVATE /fp:fast)
+    target_compile_options(${TARGET}_lite PRIVATE /fp:fast)
 else()
     target_compile_options(${TARGET} PRIVATE -ffast-math)
-    target_compile_options(${TARGET}-lite PRIVATE -ffast-math)
+    target_compile_options(${TARGET}_lite PRIVATE -ffast-math)
 endif()
 
 
 # ==================================================================================================
 # Installation
 # ==================================================================================================
-install(TARGETS ${TARGET} ARCHIVE DESTINATION lib/${DIST_DIR})
-install(TARGETS ${TARGET}-lite ARCHIVE DESTINATION lib/${DIST_DIR})
-install(DIRECTORY ${PUBLIC_HDR_DIR}/ibl DESTINATION include)
+install(TARGETS ${TARGET} ${TARGET}_lite DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
+install(DIRECTORY ${PUBLIC_HDR_DIR}/ibl DESTINATION ${FILAMENT_INCLUDEDIR})
index 6bf2237c85672f81a5a9b879322f198ae9b3ad92..b78b8c92c897e1679384aad672c483b712372b87 100644 (file)
@@ -78,24 +78,33 @@ endif()
 # ==================================================================================================
 # Includes & target definition
 # ==================================================================================================
-# specify where our headers are
-include_directories(${PUBLIC_HDR_DIR})
-include_directories(${GENERATION_ROOT})
-include_directories(src)
 
 # we're building a library
-add_library(${TARGET} STATIC ${PRIVATE_HDRS} ${PUBLIC_HDRS} ${SRCS})
+add_library(${TARGET} SHARED ${PRIVATE_HDRS} ${PUBLIC_HDRS} ${SRCS})
 
 # specify where the public headers of this library are
-target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
+target_include_directories(${TARGET} PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+target_include_directories(${TARGET} PRIVATE
+    ${GENERATION_ROOT}
+    ${CMAKE_CURRENT_SOURCEDIR}/src
+)
+set_target_properties(${TARGET} PROPERTIES
+    OUTPUT_NAME "filament_iblprefilter"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+add_library(filament::${TARGET} ALIAS ${TARGET})
 
 # ==================================================================================================
 # Dependencies
 # ==================================================================================================
 
-target_link_libraries(${TARGET} PUBLIC math)
-target_link_libraries(${TARGET} PUBLIC utils)
-target_link_libraries(${TARGET} PUBLIC filament)
+target_link_libraries(${TARGET} PRIVATE filament::math)
+target_link_libraries(${TARGET} PUBLIC filament::utils)
+target_link_libraries(${TARGET} PUBLIC filament::filament)
 
 # ==================================================================================================
 # Compiler flags
@@ -133,5 +142,5 @@ target_link_libraries(${TARGET} PRIVATE
 # Installation
 # ==================================================================================================
 set(INSTALL_TYPE ARCHIVE)
-install(TARGETS ${TARGET} ${INSTALL_TYPE} DESTINATION lib/${DIST_DIR})
-install(DIRECTORY ${PUBLIC_HDR_DIR}/filament-iblprefilter DESTINATION include)
+install(TARGETS ${TARGET} DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
+install(DIRECTORY ${PUBLIC_HDR_DIR}/filament-iblprefilter DESTINATION ${FILAMENT_INCLUDEDIR})
index 3f5072ed6adf993ee7a03ff07acc91743cb72661..95e828d75ee5ecb0622c3e040871f878e81a295b 100644 (file)
@@ -26,13 +26,19 @@ set(SRCS
 # ==================================================================================================
 # Include and target definitions
 # ==================================================================================================
-include_directories(${PUBLIC_HDR_DIR})
-
-add_library(${TARGET} STATIC ${PUBLIC_HDRS} ${SRCS})
-
-target_link_libraries(${TARGET} PUBLIC math utils)
-
-target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
+add_library(${TARGET} SHARED ${PUBLIC_HDRS} ${SRCS})
+target_link_libraries(${TARGET} PUBLIC filament::math filament::utils)
+target_compile_features(${TARGET} PUBLIC cxx_std_17)
+target_include_directories(${TARGET} PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+set_target_properties(${TARGET} PROPERTIES
+    OUTPUT_NAME "filament_${TARGET}"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+add_library(filament::${TARGET} ALIAS ${TARGET})
 
 # ==================================================================================================
 # Compiler flags
@@ -48,18 +54,24 @@ endif()
 # Expose header-only utilities to lean-and-mean client projects.
 # ==================================================================================================
 add_library(image_headers INTERFACE)
-target_include_directories(image_headers INTERFACE ${PUBLIC_HDR_DIR})
+target_include_directories(image_headers INTERFACE
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+set_target_properties(image_headers PROPERTIES EXPORT_NAME "image::headers")
+target_compile_features(image_headers INTERFACE cxx_std_17)
+add_library(filament::image::headers ALIAS image_headers)
 
 # ==================================================================================================
 # Installation
 # ==================================================================================================
-install(TARGETS ${TARGET} ARCHIVE DESTINATION lib/${DIST_DIR})
-install(DIRECTORY ${PUBLIC_HDR_DIR}/image DESTINATION include)
+install(TARGETS ${TARGET} image_headers DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
+install(DIRECTORY ${PUBLIC_HDR_DIR}/image DESTINATION ${FILAMENT_INCLUDEDIR})
 
 # ==================================================================================================
 # Tests
 # ==================================================================================================
 if (NOT ANDROID AND NOT WEBGL AND NOT IOS)
     add_executable(test_${TARGET} tests/test_image.cpp)
-    target_link_libraries(test_${TARGET} PRIVATE image imageio gtest)
+    target_link_libraries(test_${TARGET} PRIVATE filament::image filament::imageio GTest::gtest)
 endif()
index 0c3a6a37a3ab163ceece2b2189098a220c65a565..a57b379bc807a3e877bf1d8f49691efc7eae5489 100644 (file)
@@ -24,16 +24,30 @@ set(SRCS
 # ==================================================================================================
 # Include and target definitions
 # ==================================================================================================
-include_directories(${PUBLIC_HDR_DIR})
-
-add_library(${TARGET} STATIC ${PUBLIC_HDRS} ${SRCS})
-
-target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
+add_library(${TARGET} SHARED ${PUBLIC_HDRS} ${SRCS})
+target_include_directories(${TARGET} PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
 
-target_link_libraries(${TARGET} PUBLIC image math png tinyexr utils z astcenc stb EtcLib)
+target_link_libraries(${TARGET} PUBLIC filament::image filament::math filament::utils)
+target_link_libraries(${TARGET} PRIVATE PNG::PNG tinyexr::tinyexr astcenc::astcenc filament::stb EtcLib Threads::Threads)
 if (WIN32)
     target_link_libraries(${TARGET} PRIVATE wsock32)
 endif()
+target_compile_features(${TARGET} PUBLIC cxx_std_17)
+set_target_properties(${TARGET} PROPERTIES
+    OUTPUT_NAME "filament_${TARGET}"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+add_library(filament::${TARGET} ALIAS ${TARGET})
+
+# ==================================================================================================
+# Installation
+# ==================================================================================================
+install(TARGETS ${TARGET} DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
+install(DIRECTORY ${PUBLIC_HDR_DIR}/imageio DESTINATION ${FILAMENT_INCLUDEDIR})
 
 # ==================================================================================================
 # Transitive macro definitions
index c8c5976715194cad61693f89780cf984f2bd1cb1..86f23ed9c853bd0632ba016b5ebf0b38cdc58898 100644 (file)
@@ -60,29 +60,45 @@ set(DUMMY_SRC "${RESOURCE_DIR}/dummy.c")
 add_custom_command(OUTPUT ${DUMMY_SRC} COMMAND echo "//" > ${DUMMY_SRC})
 
 add_library(matdbg_resources ${DUMMY_SRC} ${RESGEN_SOURCE})
+set_target_properties(matdbg_resources PROPERTIES
+    OUTPUT_NAME "filament_matdbg_resources"
+    VERSION ${FILAMENT_VERSION}
+)
+add_library(filament::matdbg_resources ALIAS matdbg_resources)
 
 # ==================================================================================================
 # Include and target definitions
 # ==================================================================================================
 
-include_directories(${PUBLIC_HDR_DIR} ${RESOURCE_DIR})
-
-add_library(${TARGET} STATIC ${PUBLIC_HDRS} ${SRCS})
-
+add_library(${TARGET} SHARED ${PUBLIC_HDRS} ${SRCS})
+target_include_directories(${TARGET} PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
 target_link_libraries(${TARGET} PUBLIC
-        utils
-        filaflat
-        filabridge
-        backend_headers
+        filament::backend::headers
+        filament::filaflat
+        filament::filamat
+        filament::utils
+)
+target_link_libraries(${TARGET} PRIVATE
+        filament::filabridge
         civetweb
-        utils
+        glslang
+        filament::matdbg_resources
         SPIRV
-        SPIRV-Tools
         spirv-cross-glsl
-        matdbg_resources
+        SPIRV-Tools
+        smol-v
 )
-
-target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
+target_include_directories(${TARGET} PRIVATE ${RESOURCE_DIR} ${filamat_SOURCE_DIR}/src)
+set_target_properties(${TARGET} PROPERTIES
+    OUTPUT_NAME "filament_${TARGET}"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+target_compile_features(${TARGET} PUBLIC cxx_std_17)
+add_library(filament::${TARGET} ALIAS ${TARGET})
 
 # ==================================================================================================
 # Compiler flags
@@ -98,22 +114,5 @@ endif()
 # ==================================================================================================
 # Installation
 # ==================================================================================================
-
-# matdbg has dependencies on non-installed libraries. Here we bundle them all together into a single
-# library that gets copied into the installation folder so users are only required to link against
-# matdbg.
-set(MATDBG_DEPS
-    matdbg
-    matdbg_resources
-    civetweb
-    SPIRV-Tools
-    spirv-cross-core
-    spirv-cross-glsl
-    )
-
-set(MATDBG_COMBINED_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/libmatdbg_combined.a")
-combine_static_libs(matdbg "${MATDBG_COMBINED_OUTPUT}" "${MATDBG_DEPS}")
-
-set(MATDBG_LIB_NAME ${CMAKE_STATIC_LIBRARY_PREFIX}matdbg${CMAKE_STATIC_LIBRARY_SUFFIX})
-install(FILES "${MATDBG_COMBINED_OUTPUT}" DESTINATION lib/${DIST_DIR} RENAME ${MATDBG_LIB_NAME})
-install(DIRECTORY ${PUBLIC_HDR_DIR}/matdbg DESTINATION include)
+install(DIRECTORY ${PUBLIC_HDR_DIR}/matdbg DESTINATION ${FILAMENT_INCLUDEDIR})
+install(TARGETS ${TARGET} matdbg_resources DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
index cdfe25c2e04713114ccf156122cb3cd58bf18ef3..c812501d6b3a77f8b3d5837f33d3e71d070a8797 100644 (file)
@@ -37,16 +37,19 @@ set(SRCS src/dummy.cpp)
 # ==================================================================================================
 # Include and target definitions
 # ==================================================================================================
-include_directories(${PUBLIC_HDR_DIR})
-
-add_library(${TARGET} STATIC ${PUBLIC_HDRS} ${SRCS})
-target_compile_options(${TARGET} PRIVATE ${OPTIMIZATION_FLAGS})
-target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
+add_library(${TARGET} INTERFACE)
+target_include_directories(${TARGET} INTERFACE
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+target_compile_features(${TARGET} INTERFACE cxx_std_17)
+add_library(filament::${TARGET} ALIAS ${TARGET})
 
 # ==================================================================================================
 # Installation
 # ==================================================================================================
-install(DIRECTORY ${PUBLIC_HDR_DIR}/math DESTINATION include)
+install(DIRECTORY ${PUBLIC_HDR_DIR}/math DESTINATION ${FILAMENT_INCLUDEDIR})
+install(TARGETS ${TARGET} EXPORT filamentTargets)
 
 # ==================================================================================================
 # Tests
@@ -58,7 +61,7 @@ add_executable(test_${TARGET}
         tests/test_vec.cpp
         tests/test_quat.cpp
 )
-target_link_libraries(test_${TARGET} PRIVATE math gtest)
+target_link_libraries(test_${TARGET} PRIVATE filament::math GTest::gtest)
 
 # ==================================================================================================
 # Benchmarks
@@ -71,4 +74,4 @@ add_executable(benchmark_${TARGET} ${BENCHMARK_SRCS})
 
 target_compile_options(benchmark_${TARGET} PRIVATE ${OPTIMIZATION_FLAGS})
 
-target_link_libraries(benchmark_${TARGET} PRIVATE benchmark_main utils math)
+target_link_libraries(benchmark_${TARGET} PRIVATE benchmark_main filament::utils filament::math)
index fc55a4b3bb5fff478400f5d72f37624a6d7f28c1..2d0b04da0de5e529ba218b90a526015894b43f8f 100644 (file)
@@ -22,15 +22,24 @@ set(SRCS src/ostream.cpp)
 # ==================================================================================================
 # Include and target definitions
 # ==================================================================================================
-include_directories(${PUBLIC_HDR_DIR})
+add_library(${TARGET} SHARED ${PUBLIC_HDRS} ${SRCS})
 
-add_library(${TARGET} STATIC ${PUBLIC_HDRS} ${SRCS})
-target_compile_options(${TARGET} PRIVATE ${OPTIMIZATION_FLAGS})
-target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
-target_link_libraries(${TARGET} PRIVATE math)
+target_link_libraries(${TARGET} PUBLIC filament::math)
+
+target_include_directories(${TARGET} PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+target_compile_features(${TARGET} PUBLIC cxx_std_17)
+set_target_properties(${TARGET} PROPERTIES
+    OUTPUT_NAME "filament_${TARGET}"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+add_library(filament::${TARGET} ALIAS ${TARGET})
 
 # ==================================================================================================
 # Installation
 # ==================================================================================================
-install(DIRECTORY ${PUBLIC_HDR_DIR}/mathio DESTINATION include)
-
+install(DIRECTORY ${PUBLIC_HDR_DIR}/mathio DESTINATION ${FILAMENT_INCLUDEDIR})
+install(TARGETS ${TARGET} DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
index 2a115f0360815a2765615b5813bd525ea4a6a69a..38684c509832fb13de5940a203d03604cb71d13c 100644 (file)
@@ -81,11 +81,19 @@ endif()
 # ==================================================================================================
 # Includes and target definition
 # ==================================================================================================
-include_directories(${PUBLIC_HDR_DIR})
-
-add_library(${TARGET} STATIC ${PUBLIC_HDRS} ${SRCS})
-target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
-target_link_libraries(${TARGET} PUBLIC tsl)
+add_library(${TARGET} SHARED ${PUBLIC_HDRS} ${SRCS})
+target_include_directories(${TARGET} PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+target_link_libraries(${TARGET} PUBLIC tsl::robin_map)
+target_compile_features(${TARGET} PUBLIC cxx_std_17)
+set_target_properties(${TARGET} PROPERTIES
+    OUTPUT_NAME "filament_${TARGET}"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
+add_library(filament::${TARGET} ALIAS ${TARGET})
 
 if (ANDROID)
     target_link_libraries(${TARGET} PUBLIC log)
@@ -98,8 +106,6 @@ if (WIN32)
 endif()
 
 if (LINUX)
-    set(THREADS_PREFER_PTHREAD_FLAG ON)
-    find_package(Threads REQUIRED)
     target_link_libraries(${TARGET} PRIVATE Threads::Threads)
     target_link_libraries(${TARGET} PRIVATE dl atomic)
 endif()
@@ -116,13 +122,12 @@ target_compile_options(${TARGET} PRIVATE
 # ==================================================================================================
 # Installation
 # ==================================================================================================
-set(INSTALL_TYPE ARCHIVE)
-install(TARGETS ${TARGET} ${INSTALL_TYPE} DESTINATION lib/${DIST_DIR})
-install(FILES ${DIST_HDRS} DESTINATION include/${TARGET})
+install(TARGETS ${TARGET} DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
+install(FILES ${DIST_HDRS} DESTINATION ${FILAMENT_INCLUDEDIR}/${TARGET})
 if (LINUX OR ANDROID)
-    install(FILES ${DIST_LINUX_HDRS} DESTINATION include/${TARGET_LINUX})
+    install(FILES ${DIST_LINUX_HDRS} DESTINATION ${FILAMENT_INCLUDEDIR}/${TARGET_LINUX})
 else()
-    install(FILES ${DIST_GENERIC_HDRS} DESTINATION include/${TARGET_GENERIC})
+    install(FILES ${DIST_GENERIC_HDRS} DESTINATION ${FILAMENT_INCLUDEDIR}/${TARGET_GENERIC})
 endif()
 
 # ==================================================================================================
@@ -156,7 +161,7 @@ endif()
 
 add_executable(test_${TARGET} ${TEST_SRCS})
 
-target_link_libraries(test_${TARGET} PRIVATE gtest utils tsl math)
+target_link_libraries(test_${TARGET} PRIVATE GTest::gtest filament::utils filament::math)
 
 # ==================================================================================================
 # Benchmarks
index c9a3dcde231e44c892940b862f35e1dcbfddb457..fe168d21a06cb3e377ad6b7e30ce261fe0252058 100644 (file)
@@ -27,9 +27,21 @@ set(SRCS
 # ==================================================================================================
 # Include and target definitions
 # ==================================================================================================
-add_library(${TARGET} STATIC ${PUBLIC_HDRS} ${SRCS})
-target_link_libraries(${TARGET} PUBLIC imgui filament gltfio_core filagui jsmn civetweb)
-target_include_directories(${TARGET} PUBLIC ${PUBLIC_HDR_DIR})
+add_library(${TARGET} SHARED ${PUBLIC_HDRS} ${SRCS})
+
+target_link_libraries(${TARGET} PUBLIC filament::filament)
+target_link_libraries(${TARGET} PRIVATE filament::imgui filament::gltfio_core filament::filagui jsmn civetweb)
+
+target_include_directories(${TARGET} PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+    $<INSTALL_INTERFACE:${FILAMENT_INCLUDEDIR}>
+)
+target_compile_features(${TARGET} PUBLIC cxx_std_17)
+set_target_properties(${TARGET} PROPERTIES
+    OUTPUT_NAME "filament_${TARGET}"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
 
 # ==================================================================================================
 # Compiler flags
@@ -44,13 +56,13 @@ endif()
 # ==================================================================================================
 # Installation
 # ==================================================================================================
-install(TARGETS ${TARGET} ARCHIVE DESTINATION lib/${DIST_DIR})
-install(DIRECTORY ${PUBLIC_HDR_DIR}/viewer DESTINATION include)
+install(TARGETS ${TARGET} DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
+install(DIRECTORY ${PUBLIC_HDR_DIR}/viewer DESTINATION ${FILAMENT_INCLUDEDIR})
 
 # ==================================================================================================
 # Tests
 # ==================================================================================================
 if (NOT ANDROID AND NOT WEBGL AND NOT IOS)
     add_executable(test_settings tests/test_settings.cpp)
-    target_link_libraries(test_settings PRIVATE ${TARGET} gtest)
+    target_link_libraries(test_settings PRIVATE ${TARGET} GTest::gtest)
 endif()
index fb4dda1f29a12a22b0fd3b99afa60e683ca4ea9b..8b56e12b5391f7f70786190c89c8a0287ef83877 100644 (file)
@@ -105,10 +105,16 @@ endif()
 # Include and target definitions
 # ==================================================================================================
 add_library(${TARGET} STATIC ${RESGEN_SOURCE})
-target_include_directories(${TARGET} PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
+target_include_directories(${TARGET} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
+add_library(filament::${TARGET} ALIAS ${TARGET})
 
 # ==================================================================================================
 # Installation
 # ==================================================================================================
 
-install(TARGETS ${TARGET} ARCHIVE DESTINATION lib/${DIST_DIR})
+install(TARGETS ${TARGET} DESTINATION ${FILAMENT_LIBDIR} EXPORT filamentTargets)
+set_target_properties(${TARGET} PROPERTIES
+    OUTPUT_NAME "filament_${TARGET}"
+    VERSION ${FILAMENT_VERSION}
+    SOVERSION ${FILAMENT_SOVERSION}
+)
index c84f70faa1cc8083adaa358920140607c13ce2db..27493d05102a4e7fa3462c37b393605993921bbd 100644 (file)
@@ -22,7 +22,7 @@ set(SRCS
 # ==================================================================================================
 add_executable(${TARGET} ${HDRS} ${SRCS})
 
-target_link_libraries(${TARGET} PRIVATE math utils ibl z image imageio getopt)
+target_link_libraries(${TARGET} PRIVATE math utils ibl image imageio getopt Threads::Threads)
 
 # ==================================================================================================
 # Compile options and optimizations
@@ -55,5 +55,5 @@ install(TARGETS ${TARGET} RUNTIME DESTINATION bin)
 # ==================================================================================================
 if (NOT ANDROID)
     add_executable(test_${TARGET} tests/test_cmgen.cpp)
-    target_link_libraries(test_${TARGET} PRIVATE image imageio gtest)
+    target_link_libraries(test_${TARGET} PRIVATE image imageio GTest::gtest)
 endif()
index ead06a8c475b874e69c00d8908bf1687185dbab9..9f83f6784420e54bbdabfc1e82889b2a2c854a06 100644 (file)
@@ -15,7 +15,7 @@ set(SRCS src/main.cpp)
 # ==================================================================================================
 add_executable(${TARGET} ${HDRS} ${SRCS})
 
-target_link_libraries(${TARGET} PRIVATE math utils z image imageio getopt)
+target_link_libraries(${TARGET} PRIVATE math utils ZLIB::ZLIB image imageio getopt)
 
 # ==================================================================================================
 # Compile options and optimizations
index 3cc8bda7c28263f7e4093a18df582bcc6911a59d..f7eacd1909e498bd8c19baca9df97c094105269d 100644 (file)
@@ -19,7 +19,7 @@ add_executable(${TARGET} ${SRCS})
 target_link_libraries(${TARGET} PUBLIC math)
 target_link_libraries(${TARGET} PUBLIC utils)
 target_link_libraries(${TARGET} PUBLIC assimp)
-target_link_libraries(${TARGET} PRIVATE getopt filameshio meshoptimizer)
+target_link_libraries(${TARGET} PRIVATE getopt filameshio meshoptimizer::meshoptimizer)
 
 # ==================================================================================================
 # Compile options and optimizations
index 5a6837f614506c3b6f4242c247d0367f2bee4051..0549fbf42b274a506575ee81d3d59e53f0c22fae 100644 (file)
@@ -36,5 +36,5 @@ if (NOT ANDROID)
             tests/test_glslminifier.cpp
     )
     target_include_directories(test_${TARGET} PRIVATE src)
-    target_link_libraries(test_${TARGET} PRIVATE gtest)
+    target_link_libraries(test_${TARGET} PRIVATE GTest::gtest)
 endif()
index cb8c93491f48f4063c792e0e78387a7f52de0675..8eef50504ef402184c7531efac310bc70c984c6f 100644 (file)
@@ -44,7 +44,7 @@ add_library(${TARGET} STATIC ${SRCS} ${HDRS})
 target_include_directories(${TARGET} PUBLIC src)
 target_include_directories(${TARGET} PRIVATE ${filamat_SOURCE_DIR}/src)
 
-target_link_libraries(${TARGET} getopt filamat filabridge utils)
+target_link_libraries(${TARGET} getopt filamat filabridge utils glslang smol-v)
 
 # =================================================================================================
 # Licenses
@@ -89,4 +89,4 @@ set(SRCS
 
 add_executable(${TARGET} ${SRCS})
 
-target_link_libraries(${TARGET} matlang gtest)
+target_link_libraries(${TARGET} matlang GTest::gtest)
index 17d948febdfdc162fcb4906fb537b1da3e0f692a..37b56f5e6583a066cd5e6e0cd7b8b495bcef827b 100644 (file)
@@ -13,12 +13,12 @@ set(SRCS src/main.cpp)
 # ==================================================================================================
 add_executable(${TARGET} ${SRCS})
 
-target_link_libraries(${TARGET} matdbg filaflat backend_headers utils getopt SPIRV-Tools spirv-cross-glsl)
+target_link_libraries(${TARGET} matdbg filaflat filabridge backend_headers utils getopt SPIRV-Tools spirv-cross-glsl glslang)
 
 # glslang contains a copy of the SPIRV headers, so let's just use those. The leading ".." in the
 # following variable refers to the project name that we define in glslang/tnt, and the trailing ".."
 # in the path allows us to do #include <SPIRV/disassemble.h>
-target_include_directories(${TARGET} PRIVATE ${../glslang_SOURCE_DIR}/..)
+#target_include_directories(${TARGET} PRIVATE ${../glslang_SOURCE_DIR}/..)
 
 # =================================================================================================
 # Licenses
index 2686b409c8347be81287aa14435f868fd8575b30..38fdc604bddb02b299bfc7c70d9bc16c624de613 100644 (file)
@@ -12,7 +12,7 @@ set(SRCS src/main.cpp)
 # Target definitions
 # ==================================================================================================
 add_executable(${TARGET} ${SRCS})
-target_link_libraries(${TARGET} PRIVATE math utils z image imageio getopt)
+target_link_libraries(${TARGET} PRIVATE math utils ZLIB::ZLIB image imageio getopt)
 
 # =================================================================================================
 # Licenses
index 40be37f07f745f29d93eb0688de1369796bb8edb..73634ceb7792a672efeed5b35e5fd920dcb7c64c 100644 (file)
@@ -15,7 +15,7 @@ set(SRCS src/main.cpp)
 # ==================================================================================================
 add_executable(${TARGET} ${HDRS} ${SRCS})
 
-target_link_libraries(${TARGET} PRIVATE math utils z image imageio getopt)
+target_link_libraries(${TARGET} PRIVATE math utils ZLIB::ZLIB image imageio getopt)
 
 # ==================================================================================================
 # Compile options and optimizations
index 4112f81757dcd777c0748ab6392e08878650edc3..fdbc3bb239605d5915718f0b2ec9b559e447d214 100644 (file)
@@ -15,7 +15,7 @@ set(SRCS src/main.cpp)
 # ==================================================================================================
 add_executable(${TARGET} ${HDRS} ${SRCS})
 
-target_link_libraries(${TARGET} PRIVATE math utils z image imageio getopt)
+target_link_libraries(${TARGET} PRIVATE math utils ZLIB::ZLIB image imageio getopt)
 
 # ==================================================================================================
 # Compile options and optimizations