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

Reply via email to