Skip to content

Commit 15554d4

Browse files
RTUnrealJulianGro
andcommitted
add compilation with system libraries (focused on nixos)
Co-authored-by: Julian Groß <julian.g@posteo.de>
1 parent d8235dc commit 15554d4

20 files changed

Lines changed: 187 additions & 65 deletions

CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ set(OVERTE_TIMESERVER_URL "http://timestamp.comodoca.com?td=sha256" CACHE STRING
102102
set(OVERTE_USE_OPTIMIZED_IK OFF CACHE BOOL "Use optimized IK.")
103103
set(OVERTE_DISABLE_KTX_CACHE OFF CACHE BOOL "Disable KTX Cache.")
104104
set(OVERTE_USE_KHR_ROBUSTNESS OFF CACHE BOOL "Use KHR_robustness.")
105+
set(OVERTE_USE_SYSTEM_LIBS OFF CACHE BOOL "Build with system dependencies.")
105106

106107
set(OVERTE_BACKTRACE_URL "" CACHE STRING "URL to an endpoint for uploading crash-dumps. For example Sentry.")
107108
set(OVERTE_BACKTRACE_TOKEN "" CACHE STRING "Token used to identify this build, for use in uploading crash-dumps.")
@@ -286,6 +287,12 @@ if (OVERTE_BUILD_CLIENT)
286287
287288
option(USE_SIXENSE "Build Interface with sixense library/plugin" OFF)
288289
option(USE_NEURON "Build Interface with Neuron library/plugin" OFF)
290+
if (OVERTE_USE_SYSTEM_LIBS)
291+
set(USE_STEAMCLIENT OFF)
292+
message(STATUS "Not using STEAMCLIENT for system library build.")
293+
else()
294+
option(USE_STEAMCLIENT "Build Interface with steamworks-client library/plugin" ON)
295+
endif()
289296
endif()
290297
291298
if (OVERTE_BUILD_CLIENT OR OVERTE_BUILD_SERVER)

cmake/macros/AutoScribeShader.cmake

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,14 @@ macro(AUTOSCRIBE_SHADER_LIB)
395395
endmacro()
396396

397397
macro(AUTOSCRIBE_SHADER_LIBS)
398-
include(${CMAKE_BINARY_DIR}/cmake/ConanToolsDirs.cmake)
398+
if(OVERTE_USE_SYSTEM_LIBS)
399+
set(GLSLANG_DIR "$ENV{GLSLANG_DIR}")
400+
set(SCRIBE_DIR "$ENV{SCRIBE_DIR}")
401+
set(SPIRV_CROSS_DIR "$ENV{SPIRV_CROSS_DIR}")
402+
set(SPIRV_TOOLS_DIR "$ENV{SPIRV_TOOLS_DIR}")
403+
else()
404+
include(${CMAKE_BINARY_DIR}/cmake/ConanToolsDirs.cmake)
405+
endif()
399406

400407
message(STATUS "Shader processing start")
401408
set(AUTOSCRIBE_HEADER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/headers)

cmake/macros/TargetAFF.cmake

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
21
macro(TARGET_AFF)
3-
find_package(artery-font-format)
4-
target_link_libraries(${TARGET_NAME} artery-font-format::artery-font-format)
2+
if(OVERTE_USE_SYSTEM_LIBS)
3+
find_path(AFF_INCLUDE_DIRS "artery-font/artery-font.h")
4+
target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${AFF_INCLUDE_DIRS})
5+
else()
6+
find_package(artery-font-format REQUIRED)
7+
target_link_libraries(${TARGET_NAME} artery-font-format::artery-font-format)
8+
endif()
59
endmacro()
6-
7-

cmake/macros/TargetBullet.cmake

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,15 @@
77
# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
88
#
99
macro(TARGET_BULLET)
10-
find_package(Bullet REQUIRED)
11-
target_link_libraries(${TARGET_NAME} Bullet::Bullet)
10+
if(OVERTE_USE_SYSTEM_LIBS)
11+
find_package(PkgConfig REQUIRED)
12+
pkg_check_modules(BULLET REQUIRED bullet)
13+
target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${BULLET_INCLUDE_DIRS})
14+
target_link_libraries(${TARGET_NAME} ${BULLET_LINK_LIBRARIES})
15+
else()
16+
find_package(Bullet REQUIRED)
17+
target_link_libraries(${TARGET_NAME} Bullet::Bullet)
18+
endif()
1219
endmacro()
1320

1421

cmake/macros/TargetCgltf.cmake

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
macro(TARGET_CGLTF)
2-
find_package(cgltf REQUIRED)
3-
target_link_libraries(${TARGET_NAME} cgltf::cgltf)
2+
if (OVERTE_USE_SYSTEM_LIBS)
3+
find_path(CGLTF_INCLUDE_DIRS "cgltf.h")
4+
5+
target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${CGLTF_INCLUDE_DIRS})
6+
else()
7+
find_package(cgltf REQUIRED)
8+
target_link_libraries(${TARGET_NAME} cgltf::cgltf)
9+
endif()
410
endmacro()
Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
11
macro(TARGET_DISCORD_RPC)
2-
find_package(discord-rpc REQUIRED)
3-
target_link_libraries(${TARGET_NAME} discord-rpc::discord-rpc)
2+
if (OVERTE_USE_SYSTEM_LIBS)
3+
find_path(DiscordRPC_INCLUDE_DIRS "discord_rpc.h")
4+
5+
target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${DiscordRPC_INCLUDE_DIRS})
6+
target_link_libraries(${TARGET_NAME} libdiscord-rpc.so)
7+
else()
8+
find_package(discord-rpc REQUIRED)
9+
target_link_libraries(${TARGET_NAME} discord-rpc::discord-rpc)
10+
endif()
411
endmacro()

cmake/macros/TargetDraco.cmake

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
macro(TARGET_DRACO)
2-
if (ANDROID)
2+
if (OVERTE_USE_SYSTEM_LIBS)
3+
find_package(PkgConfig REQUIRED)
4+
pkg_check_modules(Draco REQUIRED draco)
5+
target_include_directories(${TARGET_NAME} SYSTEM PUBLIC ${Draco_INCLUDE_DIRS})
6+
target_link_libraries(${TARGET_NAME} ${Draco_LINK_LIBRARIES})
7+
elseif (ANDROID)
38
set(INSTALL_DIR ${HIFI_ANDROID_PRECOMPILED}/draco)
49
set(DRACO_INCLUDE_DIRS "${INSTALL_DIR}/include" CACHE STRING INTERNAL)
510
set(LIB_DIR ${INSTALL_DIR}/lib)

cmake/macros/TargetEtc2Comp.cmake

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,23 @@
66
# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
77
#
88
macro(TARGET_ETC2COMP)
9-
if (ANDROID)
10-
set(INSTALL_DIR ${HIFI_ANDROID_PRECOMPILED}/etc2comp)
11-
set(ETC2COMP_INCLUDE_DIRS "${INSTALL_DIR}/include" "${INSTALL_DIR}/include/Etc" "${INSTALL_DIR}/include/EtcCodec")
12-
set(ETC2COMP_LIBRARY_DEBUG ${INSTALL_DIR}/lib/libEtcLib.a)
13-
set(ETC2COMP_LIBRARY_RELEASE ${INSTALL_DIR}/lib/libEtcLib.a)
14-
target_include_directories(${TARGET_NAME} PRIVATE ${ETC2COMP_INCLUDE_DIRS})
9+
if (OVERTE_USE_SYSTEM_LIBS)
10+
find_path(ETC2COMP_INCLUDE_DIRS "EtcLib/Etc/Etc.h")
11+
12+
target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${ETC2COMP_INCLUDE_DIRS} "${ETC2COMP_INCLUDE_DIRS}/EtcLib/Etc" "${ETC2COMP_INCLUDE_DIRS}/EtcLib/EtcCodec")
13+
target_link_libraries(${TARGET_NAME} libEtcLib.a)
1514
else()
16-
find_package(etc2comp REQUIRED)
17-
endif()
15+
if (ANDROID)
16+
set(INSTALL_DIR ${HIFI_ANDROID_PRECOMPILED}/etc2comp)
17+
set(ETC2COMP_INCLUDE_DIRS "${INSTALL_DIR}/include" "${INSTALL_DIR}/include/Etc" "${INSTALL_DIR}/include/EtcCodec")
18+
set(ETC2COMP_LIBRARY_DEBUG ${INSTALL_DIR}/lib/libEtcLib.a)
19+
set(ETC2COMP_LIBRARY_RELEASE ${INSTALL_DIR}/lib/libEtcLib.a)
20+
target_include_directories(${TARGET_NAME} PRIVATE ${ETC2COMP_INCLUDE_DIRS})
21+
else()
22+
find_package(etc2comp REQUIRED)
23+
endif()
1824

19-
target_link_libraries(${TARGET_NAME} etc2comp::etc2comp)
25+
target_link_libraries(${TARGET_NAME} etc2comp::etc2comp)
26+
endif()
2027
endmacro()
2128

cmake/macros/TargetGlm.cmake

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,16 @@
77
# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
88
#
99
macro(TARGET_GLM)
10-
find_package(glm CONFIG REQUIRED)
11-
target_link_libraries(${TARGET_NAME} glm::glm)
12-
target_compile_definitions(${TARGET_NAME} PUBLIC GLM_FORCE_RADIANS)
13-
target_compile_definitions(${TARGET_NAME} PUBLIC GLM_ENABLE_EXPERIMENTAL)
14-
target_compile_definitions(${TARGET_NAME} PUBLIC GLM_FORCE_CTOR_INIT)
15-
endmacro()
10+
if (OVERTE_USE_SYSTEM_LIBS)
11+
find_package(PkgConfig REQUIRED)
12+
pkg_check_modules(Glm REQUIRED glm)
13+
target_include_directories(${TARGET_NAME} SYSTEM PUBLIC ${Glm_INCLUDE_DIRS})
14+
target_link_libraries(${TARGET_NAME} ${Glm_LINK_LIBRARIES})
15+
else()
16+
find_package(glm CONFIG REQUIRED)
17+
target_link_libraries(${TARGET_NAME} glm::glm)
18+
target_compile_definitions(${TARGET_NAME} PUBLIC GLM_FORCE_RADIANS)
19+
target_compile_definitions(${TARGET_NAME} PUBLIC GLM_ENABLE_EXPERIMENTAL)
20+
target_compile_definitions(${TARGET_NAME} PUBLIC GLM_FORCE_CTOR_INIT)
21+
endif()
22+
endmacro()

cmake/macros/TargetNvtt.cmake

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,33 @@
66
# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
77
#
88
macro(TARGET_NVTT)
9-
if (ANDROID)
10-
set(NVTT_INSTALL_DIR ${HIFI_ANDROID_PRECOMPILED}/nvtt)
11-
set(NVTT_LIB_DIR "${NVTT_INSTALL_DIR}/lib")
12-
set(NVTT_INCLUDE_DIRS "${NVTT_INSTALL_DIR}/include" CACHE STRING INTERNAL)
13-
list(APPEND NVTT_LIBS "${NVTT_LIB_DIR}/libnvcore.so")
14-
list(APPEND NVTT_LIBS "${NVTT_LIB_DIR}/libnvmath.so")
15-
list(APPEND NVTT_LIBS "${NVTT_LIB_DIR}/libnvimage.so")
16-
list(APPEND NVTT_LIBS "${NVTT_LIB_DIR}/libnvtt.so")
17-
set(NVTT_LIBRARIES ${NVTT_LIBS} CACHE STRING INTERNAL)
18-
target_include_directories(${TARGET_NAME} PRIVATE ${NVTT_INCLUDE_DIRS})
9+
if (OVERTE_USE_SYSTEM_LIBS)
10+
find_path(NVTT_INCLUDE_DIRS "nvtt/nvtt.h")
11+
FIND_LIBRARY(NVTT_LIBRARY NAMES nvtt PATHS $ENV{NVTT_DIR} PATH_SUFFIXES lib lib/static)
12+
FIND_LIBRARY(NVIMAGE_LIBRARY NAMES nvimage PATHS $ENV{NVTT_DIR} PATH_SUFFIXES lib lib/static)
13+
FIND_LIBRARY(NVMATH_LIBRARY NAMES nvmath PATHS $ENV{NVTT_DIR} PATH_SUFFIXES lib lib/static)
14+
FIND_LIBRARY(NVCORE_LIBRARY NAMES nvcore PATHS $ENV{NVTT_DIR} PATH_SUFFIXES lib lib/static)
15+
FIND_LIBRARY(NVTHREAD_LIBRARY NAMES nvthread PATHS $ENV{NVTT_DIR} PATH_SUFFIXES lib lib/static)
16+
17+
target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${NVTT_INCLUDE_DIRS})
18+
target_link_libraries(${TARGET_NAME} ${NVTT_LIBRARY} ${NVIMAGE_LIBRARY} ${NVMATH_LIBRARY} ${NVCORE_LIBRARY} ${NVTHREAD_LIBRARY})
1919
else()
20-
find_package(nvidia-texture-tools REQUIRED)
21-
endif()
20+
if (ANDROID)
21+
set(NVTT_INSTALL_DIR ${HIFI_ANDROID_PRECOMPILED}/nvtt)
22+
set(NVTT_LIB_DIR "${NVTT_INSTALL_DIR}/lib")
23+
set(NVTT_INCLUDE_DIRS "${NVTT_INSTALL_DIR}/include" CACHE STRING INTERNAL)
24+
list(APPEND NVTT_LIBS "${NVTT_LIB_DIR}/libnvcore.so")
25+
list(APPEND NVTT_LIBS "${NVTT_LIB_DIR}/libnvmath.so")
26+
list(APPEND NVTT_LIBS "${NVTT_LIB_DIR}/libnvimage.so")
27+
list(APPEND NVTT_LIBS "${NVTT_LIB_DIR}/libnvtt.so")
28+
set(NVTT_LIBRARIES ${NVTT_LIBS} CACHE STRING INTERNAL)
29+
target_include_directories(${TARGET_NAME} PRIVATE ${NVTT_INCLUDE_DIRS})
30+
else()
31+
find_package(nvidia-texture-tools REQUIRED)
32+
endif()
2233

23-
target_link_libraries(${TARGET_NAME} nvidia-texture-tools::nvidia-texture-tools)
34+
target_link_libraries(${TARGET_NAME} nvidia-texture-tools::nvidia-texture-tools)
35+
endif()
2436

2537
if ((NOT WIN32) AND (NOT ANDROID) AND (NOT APPLE))
2638
find_package(OpenMP)

0 commit comments

Comments
 (0)