Commit: 06d52afcda4e47772c5da21f75dc5bad16ba9b95 Author: Julian Eisel Date: Tue May 28 21:48:37 2019 +0200 Branches: soc-2019-openxr https://developer.blender.org/rB06d52afcda4e47772c5da21f75dc5bad16ba9b95
Linux: OpenXR Linking via OpenXR Loader Calling OpenXR functions should now work on both Windows and Linux. Also includes: * Silence Linux only warnings * Remove common_cmake_config.h and let CMake generate it when configuring (contents vary on system it's compiled on) * Remove JsonCpp CMake install target * Remove unnecessary CMakeLists for JsonCpp includes * Remove unnecessary CMake commands * Style cleanup =================================================================== M extern/jsoncpp/CMakeLists.txt D extern/jsoncpp/include/CMakeLists.txt M extern/openxr/CMakeLists.txt D extern/openxr/common_cmake_config.h A extern/openxr/common_cmake_config.h.in M extern/openxr/loader/CMakeLists.txt M source/blender/windowmanager/CMakeLists.txt =================================================================== diff --git a/extern/jsoncpp/CMakeLists.txt b/extern/jsoncpp/CMakeLists.txt index 66dee80170e..2890433dbce 100644 --- a/extern/jsoncpp/CMakeLists.txt +++ b/extern/jsoncpp/CMakeLists.txt @@ -18,4 +18,3 @@ # ***** END GPL LICENSE BLOCK ***** add_subdirectory(src) -add_subdirectory(include) diff --git a/extern/jsoncpp/include/CMakeLists.txt b/extern/jsoncpp/include/CMakeLists.txt deleted file mode 100644 index cc866f173d7..00000000000 --- a/extern/jsoncpp/include/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -FILE(GLOB INCLUDE_FILES "json/*.h") -INSTALL(FILES ${INCLUDE_FILES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/json) diff --git a/extern/openxr/CMakeLists.txt b/extern/openxr/CMakeLists.txt index 20c7e862fe6..2678928d2ae 100644 --- a/extern/openxr/CMakeLists.txt +++ b/extern/openxr/CMakeLists.txt @@ -19,21 +19,18 @@ set(MAJOR 0) set(MINOR 90) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) -set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") # Several files use these compile-time OS switches if(WIN32) - add_definitions(-DXR_OS_WINDOWS) + add_definitions(-DXR_OS_WINDOWS) elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") - add_definitions(-DXR_OS_LINUX) + add_definitions(-DXR_OS_LINUX) endif() -set(INC - include - common - loader -) +include(CheckFunctionExists) +CHECK_FUNCTION_EXISTS(secure_getenv HAVE_SECURE_GETENV) +CHECK_FUNCTION_EXISTS(__secure_getenv HAVE___SECURE_GETENV) +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/common_cmake_config.h.in ${CMAKE_CURRENT_BINARY_DIR}/common_cmake_config.h) add_custom_target( generate_openxr_header @@ -52,4 +49,4 @@ add_custom_target( xr_generated_utilities.c ) -add_subdirectory(loader) \ No newline at end of file +add_subdirectory(loader) diff --git a/extern/openxr/common_cmake_config.h b/extern/openxr/common_cmake_config.h deleted file mode 100644 index 3d89882bd7f..00000000000 --- a/extern/openxr/common_cmake_config.h +++ /dev/null @@ -1,2 +0,0 @@ -/* #undef HAVE_SECURE_GETENV */ -/* #undef HAVE___SECURE_GETENV */ diff --git a/extern/openxr/common_cmake_config.h.in b/extern/openxr/common_cmake_config.h.in new file mode 100644 index 00000000000..3bbc46127a0 --- /dev/null +++ b/extern/openxr/common_cmake_config.h.in @@ -0,0 +1,2 @@ +#cmakedefine HAVE_SECURE_GETENV +#cmakedefine HAVE___SECURE_GETENV diff --git a/extern/openxr/loader/CMakeLists.txt b/extern/openxr/loader/CMakeLists.txt index 3e8b8f76f3f..8bd1fb8e980 100644 --- a/extern/openxr/loader/CMakeLists.txt +++ b/extern/openxr/loader/CMakeLists.txt @@ -22,6 +22,7 @@ include(GenerateExportHeader) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS false) +# TODO loader name is needed for lib linking in source/, so better define this higher up the source tree. set(LOADER_NAME openxr_loader) if(CMAKE_SYSTEM_NAME STREQUAL "Linux") @@ -40,6 +41,8 @@ set(INC ../common ../include ../../jsoncpp/include + # For generated/configured common_cmake_config.h + ${CMAKE_CURRENT_BINARY_DIR}/.. ) # List of all files externally generated outside of the loader that the loader @@ -81,3 +84,14 @@ add_dependencies( loader_gen_files # jsoncppAmalgamatedFiles ) + +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + target_compile_definitions( + ${LOADER_NAME} + PRIVATE FALLBACK_CONFIG_DIRS="${FALLBACK_CONFIG_DIRS}" + PRIVATE FALLBACK_DATA_DIRS="${FALLBACK_DATA_DIRS}" + PRIVATE SYSCONFDIR="${CMAKE_INSTALL_FULL_SYSCONFDIR}" + ) + + target_link_libraries(${LOADER_NAME} -lstdc++fs -ldl -lpthread -lm) +endif() diff --git a/source/blender/windowmanager/CMakeLists.txt b/source/blender/windowmanager/CMakeLists.txt index 9833f66af37..0615af909b0 100644 --- a/source/blender/windowmanager/CMakeLists.txt +++ b/source/blender/windowmanager/CMakeLists.txt @@ -185,5 +185,10 @@ blender_add_lib_nolist(bf_windowmanager "${SRC}" "${INC}" "${INC_SYS}" "${LIB}") if(WITH_OPENXR) add_dependencies(bf_windowmanager generate_openxr_header) - target_link_libraries(bf_windowmanager openxr_loader-0_90) -endif() \ No newline at end of file + if(WIN32) + set(OPENXR_LOADER_NAME openxr_loader-0_90) + else() + set(OPENXR_LOADER_NAME openxr_loader) + endif() + target_link_libraries(bf_windowmanager ${OPENXR_LOADER_NAME}) +endif() _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs