[Bf-blender-cvs] [06d52afcda4] soc-2019-openxr: Linux: OpenXR Linking via OpenXR Loader
Julian Eisel
noreply at git.blender.org
Tue May 28 21:59:41 CEST 2019
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()
More information about the Bf-blender-cvs
mailing list