@@ -37,9 +37,8 @@ endif()
3737add_library (${DRIVER_TARGET_NAME} SHARED ${driver_HDR} ${driver_SRC} ${driver_IDL} )
3838target_include_directories (${DRIVER_TARGET_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR} /include" )
3939
40- if (CMAKE_VERSION VERSION_GREATER 3.12)
41- set_property (TARGET ${DRIVER_TARGET_NAME} PROPERTY CXX_STANDARD 20)
42- endif ()
40+ set_property (TARGET ${DRIVER_TARGET_NAME} PROPERTY CXX_STANDARD 20)
41+ set_property (TARGET ${DRIVER_TARGET_NAME} PROPERTY CXX_STANDARD_REQUIRED ON )
4342
4443# ----------------------- MinHook support ----------------------
4544if (WIN32 AND USE_HOOKS)
@@ -69,11 +68,25 @@ elseif (DEFINED CAPNP_EXECUTABLE)
6968 set (CAPNP_COMPILER "${CAPNP_EXECUTABLE} " )
7069endif ()
7170
71+ # Set up the capnp compile command with PATH modification on Linux
72+ if (UNIX AND NOT APPLE )
73+ if (TARGET CapnProto::capnp_tool)
74+ set (CAPNP_COMPILE_COMMAND ${CMAKE_COMMAND} -E env "PATH=$<TARGET_FILE_DIR:CapnProto::capnp_tool>:$ENV{PATH} " ${CAPNP_COMPILER} compile -o c++:. "driver.capnp" )
75+ elseif (DEFINED CAPNP_EXECUTABLE)
76+ get_filename_component (CAPNP_DIR "${CAPNP_EXECUTABLE} " DIRECTORY )
77+ set (CAPNP_COMPILE_COMMAND ${CMAKE_COMMAND} -E env "PATH=${CAPNP_DIR} :$ENV{PATH} " ${CAPNP_COMPILER} compile -o c++:. "driver.capnp" )
78+ else ()
79+ set (CAPNP_COMPILE_COMMAND ${CAPNP_COMPILER} compile -o c++:. "driver.capnp" )
80+ endif ()
81+ else ()
82+ set (CAPNP_COMPILE_COMMAND ${CAPNP_COMPILER} compile -o c++:. "driver.capnp" )
83+ endif ()
84+
7285add_custom_command (
7386 OUTPUT "${CAPNP_GEN_HDR} " "${CAPNP_GEN_SRC} "
7487 COMMAND ${CMAKE_COMMAND} -E make_directory "${CAPNP_OUT_DIR} "
7588 COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CAPNP_SCHEMA} " "${CAPNP_SCHEMA_COPY} "
76- COMMAND ${CAPNP_COMPILER} compile -o c++:. "driver.capnp"
89+ COMMAND ${CAPNP_COMPILE_COMMAND}
7790 DEPENDS "${CAPNP_SCHEMA} "
7891 WORKING_DIRECTORY "${CAPNP_OUT_DIR} "
7992 COMMENT "Generating Cap'n Proto C++ from driver.capnp"
@@ -96,25 +109,16 @@ set(OPENVR_ROOT "${CMAKE_CURRENT_LIST_DIR}/../vendor/openvr")
96109set (OPENVR_INCLUDE_DIR "${OPENVR_ROOT} /headers" )
97110
98111if (WIN32 )
99- if (CMAKE_SIZEOF_VOID_P EQUAL 8)
100- set (OPENVR_IMPLIB "${OPENVR_ROOT} /lib/win64/openvr_api.lib" )
101- set (OPENVR_RUNTIME "${OPENVR_ROOT} /bin/win64/openvr_api.dll" )
102- else ()
103- set (OPENVR_IMPLIB "${OPENVR_ROOT} /lib/win32/openvr_api.lib" )
104- set (OPENVR_RUNTIME "${OPENVR_ROOT} /bin/win32/openvr_api.dll" )
105- endif ()
112+ set (OPENVR_IMPLIB "${OPENVR_ROOT} /lib/win64/openvr_api.lib" )
113+ set (OPENVR_RUNTIME "${OPENVR_ROOT} /bin/win64/openvr_api.dll" )
106114 add_library (openvr::openvr SHARED IMPORTED )
107115 set_target_properties (openvr::openvr PROPERTIES
108116 IMPORTED_IMPLIB "${OPENVR_IMPLIB} "
109117 IMPORTED_LOCATION "${OPENVR_RUNTIME} "
110118 INTERFACE_INCLUDE_DIRECTORIES "${OPENVR_INCLUDE_DIR} "
111119 )
112120elseif (UNIX AND NOT APPLE )
113- if (CMAKE_SIZEOF_VOID_P EQUAL 8)
114- set (OPENVR_RUNTIME "${OPENVR_ROOT} /lib/linux64/libopenvr_api.so" )
115- else ()
116- set (OPENVR_RUNTIME "${OPENVR_ROOT} /lib/linux32/libopenvr_api.so" )
117- endif ()
121+ set (OPENVR_RUNTIME "${OPENVR_ROOT} /lib/linux64/libopenvr_api.so" )
118122 add_library (openvr::openvr SHARED IMPORTED )
119123 set_target_properties (openvr::openvr PROPERTIES
120124 IMPORTED_LOCATION "${OPENVR_RUNTIME} "
@@ -147,13 +151,10 @@ else()
147151endif ()
148152
149153if (WIN32 )
150- if (CMAKE_SIZEOF_VOID_P EQUAL 8)
151- set (PACK_BIN_DIR "${PACK_ROOT} /bin/win64" )
152- else ()
153- set (PACK_BIN_DIR "${PACK_ROOT} /bin/win32" )
154- endif ()
154+ set (PACK_BIN_DIR "${PACK_ROOT} /bin/win64" )
155+ elseif (UNIX AND NOT APPLE )
156+ set (PACK_BIN_DIR "${PACK_ROOT} /bin/linux64" )
155157else ()
156- # Default bin directory if non-Windows
157158 set (PACK_BIN_DIR "${PACK_ROOT} /bin" )
158159endif ()
159160
@@ -165,9 +166,31 @@ endif()
165166
166167add_custom_command (TARGET ${DRIVER_TARGET_NAME} POST_BUILD
167168 COMMAND ${CMAKE_COMMAND} -E make_directory "${PACK_BIN_DIR} "
168- COMMAND ${CMAKE_COMMAND} -E copy_if_different "$<TARGET_FILE:${DRIVER_TARGET_NAME} >" "${PACK_BIN_DIR} "
169169 COMMAND ${CMAKE_COMMAND} -E copy_if_different "${MANIFEST_SRC} " "${PACK_ROOT} /driver.vrdrivermanifest"
170170 COMMENT "Packing driver files to ${PACK_ROOT} "
171171 VERBATIM
172172)
173+
174+ if (UNIX AND NOT APPLE )
175+ add_custom_command (TARGET ${DRIVER_TARGET_NAME} POST_BUILD
176+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
177+ "$<TARGET_FILE:${DRIVER_TARGET_NAME} >"
178+ "${PACK_BIN_DIR} /$<TARGET_FILE_BASE_NAME:${DRIVER_TARGET_NAME} >$<TARGET_FILE_SUFFIX:${DRIVER_TARGET_NAME} >"
179+ COMMENT "Copying driver library without lib prefix"
180+ VERBATIM
181+ )
182+ else ()
183+ add_custom_command (TARGET ${DRIVER_TARGET_NAME} POST_BUILD
184+ COMMAND ${CMAKE_COMMAND} -E copy_if_different "$<TARGET_FILE:${DRIVER_TARGET_NAME} >" "${PACK_BIN_DIR} "
185+ COMMENT "Copying driver library"
186+ VERBATIM
187+ )
188+ endif ()
189+
190+
191+ if (TARGET openvr::openvr)
192+ add_custom_command (TARGET ${DRIVER_TARGET_NAME} POST_BUILD
193+ COMMAND ${CMAKE_COMMAND} -E copy_if_different "${OPENVR_RUNTIME} " "${PACK_BIN_DIR} "
194+ VERBATIM )
195+ endif ()
173196# --------------------------------------------------------------
0 commit comments