find_package(benchmark REQUIRED)
-add_library(benchmark INTERFACE)
-target_link_libraries(benchmark INTERFACE benchmark::benchmark)
-add_library(benchmark_main INTERFACE)
-target_link_libraries(benchmark_main INTERFACE benchmark::benchmark_main)
+if(NOT TARGET benchmark)
+ add_library(benchmark INTERFACE)
+ target_link_libraries(benchmark INTERFACE benchmark::benchmark)
+endif()
+if(NOT TARGET benchmark_main)
+ add_library(benchmark_main INTERFACE)
+ target_link_libraries(benchmark_main INTERFACE benchmark::benchmark_main)
+endif()
# Empty
find_package(PkgConfig REQUIRED)
-pkg_check_modules(glslang REQUIRED IMPORTED_TARGET spirv glslang)
-add_library(glslang INTERFACE)
-target_include_directories(glslang INTERFACE
- /usr/include/glslang/Public
- /usr/include/glslang/Include
- /usr/include/glslang/MachineIndependent
- /usr/include/glslang/SPIRV
- )
-set_property(TARGET PkgConfig::glslang APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${STDCXX_LIBRARY})
-target_link_libraries(glslang INTERFACE PkgConfig::glslang)
+if(NOT TARGET glslang)
+ pkg_check_modules(glslang REQUIRED IMPORTED_TARGET spirv glslang)
+ add_library(glslang INTERFACE)
+ target_include_directories(glslang INTERFACE
+ /usr/include/glslang/Public
+ /usr/include/glslang/Include
+ /usr/include/glslang/MachineIndependent
+ /usr/include/glslang/SPIRV
+ )
+ set_property(TARGET PkgConfig::glslang APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${STDCXX_LIBRARY})
+ target_link_libraries(glslang INTERFACE PkgConfig::glslang)
+endif()
-find_path(imgui_INCLUDE_DIR NAMES imgui.h PATH_SUFFIXES imgui)
-find_library(imgui_LIBRARY NAMES imgui)
-if(imgui_INCLUDE_DIR AND imgui_LIBRARY)
- add_library(filament::imgui INTERFACE IMPORTED)
- set_target_properties(filament::imgui PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${imgui_INCLUDE_DIR}"
- INTERFACE_LINK_LIBRARIES "${imgui_LIBRARY}"
- )
+if(NOT TARGET filament::imgui)
+ find_path(imgui_INCLUDE_DIR NAMES imgui.h PATH_SUFFIXES imgui)
+ find_library(imgui_LIBRARY NAMES imgui)
+ if(imgui_INCLUDE_DIR AND imgui_LIBRARY)
+ add_library(filament::imgui INTERFACE IMPORTED)
+ set_target_properties(filament::imgui PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${imgui_INCLUDE_DIR}"
+ INTERFACE_LINK_LIBRARIES "${imgui_LIBRARY}"
+ )
+ endif()
endif()
-find_path(jsmn_INCLUDE_DIR NAMES jsmn.h)
-add_library(jsmn INTERFACE)
-target_include_directories(jsmn INTERFACE ${jsmn_INCLUDE_DIR})
+if(NOT TARGET jsm)
+ find_path(jsmn_INCLUDE_DIR NAMES jsmn.h)
+ add_library(jsmn INTERFACE)
+ target_include_directories(jsmn INTERFACE ${jsmn_INCLUDE_DIR})
+endif()
+
# find_package(assimp) and target assimp::assimp is broken, so we do this manually
-find_path(assimp_INCLUDE_DIR NAMES assimp/version.h)
-find_library(assimp_LIBRARY NAMES assimp)
-add_library(assimp INTERFACE)
-target_include_directories(assimp INTERFACE ${assimp_INCLUDE_DIR})
-target_link_libraries(assimp INTERFACE ${assimp_LIBRARY})
+if(NOT TARGET assimp)
+ find_path(assimp_INCLUDE_DIR NAMES assimp/version.h)
+ find_library(assimp_LIBRARY NAMES assimp)
+ add_library(assimp INTERFACE)
+ target_include_directories(assimp INTERFACE ${assimp_INCLUDE_DIR})
+ target_link_libraries(assimp INTERFACE ${assimp_LIBRARY})
+endif()
+
find_package(spirv_cross_c_shared REQUIRED)
find_package(spirv_cross_cpp REQUIRED)
-add_library(spirv-cross INTERFACE)
-target_link_libraries(spirv-cross INTERFACE spirv-cross-cpp spirv-cross-c-shared)
+if(NOT TARGET spirv-cross)
+ add_library(spirv-cross INTERFACE)
+ target_link_libraries(spirv-cross INTERFACE spirv-cross-cpp spirv-cross-c-shared)
+endif()
-find_package(PkgConfig REQUIRED)
-pkg_check_modules(SPIRV-Tools REQUIRED IMPORTED_TARGET SPIRV-Tools)
-add_library(SPIRV-Tools-opt INTERFACE)
-target_link_libraries(SPIRV-Tools-opt INTERFACE PkgConfig::SPIRV-Tools)
+if(NOT TARGET SPIRV-Tools-opt)
+ find_package(PkgConfig REQUIRED)
+ pkg_check_modules(SPIRV-Tools REQUIRED IMPORTED_TARGET SPIRV-Tools)
+ add_library(SPIRV-Tools-opt INTERFACE)
+ target_link_libraries(SPIRV-Tools-opt INTERFACE PkgConfig::SPIRV-Tools)
+endif()
+
-find_path(stb_INCLUDE_DIR NAMES stb.h PATH_SUFFIXES stb)
-find_library(stb_LIBRARY NAMES stb)
-if(stb_INCLUDE_DIR AND stb_LIBRARY)
- add_library(filament::stb INTERFACE IMPORTED)
- set_target_properties(filament::stb PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${stb_INCLUDE_DIR}"
- INTERFACE_LINK_LIBRARIES "${stb_LIBRARY}"
- )
+if(NOT TARGET filament::stb)
+ find_path(stb_INCLUDE_DIR NAMES stb.h PATH_SUFFIXES stb)
+ find_library(stb_LIBRARY NAMES stb)
+ if(stb_INCLUDE_DIR AND stb_LIBRARY)
+ add_library(filament::stb INTERFACE IMPORTED)
+ set_target_properties(filament::stb PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${stb_INCLUDE_DIR}"
+ INTERFACE_LINK_LIBRARIES "${stb_LIBRARY}"
+ )
+ endif()
endif()