CMakeLists.txt 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. cmake_minimum_required(VERSION 3.1)
  2. project(openhmd C)
  3. set(CMAKE_C_STANDARD 99)
  4. set(CMAKE_POSITION_INDEPENDENT_CODE ON)
  5. set(LIB_VERSION_MAJOR 0)
  6. set(LIB_VERSION_MINOR 1)
  7. set(LIB_VERSION_PATCH 0)
  8. set(LIB_VERSION_STRING ${LIB_VERSION_MAJOR}.${LIB_VERSION_MINOR}.${LIB_VERSION_PATCH})
  9. set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
  10. option(BUILD_BOTH_STATIC_SHARED_LIB OFF)
  11. #source files set just for Android
  12. set(openhmd_source_files
  13. ${CMAKE_CURRENT_LIST_DIR}/src/openhmd.c
  14. ${CMAKE_CURRENT_LIST_DIR}/src/platform-win32.c
  15. ${CMAKE_CURRENT_LIST_DIR}/src/drv_dummy/dummy.c
  16. ${CMAKE_CURRENT_LIST_DIR}/src/omath.c
  17. ${CMAKE_CURRENT_LIST_DIR}/src/platform-posix.c
  18. ${CMAKE_CURRENT_LIST_DIR}/src/fusion.c
  19. ${CMAKE_CURRENT_LIST_DIR}/src/shaders.c
  20. )
  21. option(OPENHMD_DRIVER_OCULUS_RIFT "Oculus Rift DK1 and DK2" ON)
  22. option(OPENHMD_DRIVER_DEEPOON "Deepoon E2" ON)
  23. option(OPENHMD_DRIVER_WMR "Windows Mixed Reality" ON)
  24. option(OPENHMD_DRIVER_PSVR "Sony PSVR" ON)
  25. option(OPENHMD_DRIVER_HTC_VIVE "HTC Vive" ON)
  26. option(OPENHMD_DRIVER_NOLO "NOLO VR CV1" ON)
  27. option(OPENHMD_DRIVER_XGVR "3Glasses HMD" ON)
  28. option(OPENHMD_DRIVER_EXTERNAL "External sensor driver" ON)
  29. option(OPENHMD_DRIVER_ANDROID "General Android driver" OFF)
  30. option(OPENHMD_EXAMPLE_SIMPLE "Simple test binary" ON)
  31. option(OPENHMD_EXAMPLE_SDL "SDL OpenGL test (outdated)" OFF)
  32. if(OPENHMD_DRIVER_OCULUS_RIFT)
  33. set(openhmd_source_files ${openhmd_source_files}
  34. ${CMAKE_CURRENT_LIST_DIR}/src/drv_oculus_rift/rift.c
  35. ${CMAKE_CURRENT_LIST_DIR}/src/drv_oculus_rift/packet.c
  36. )
  37. add_definitions(-DDRIVER_OCULUS_RIFT)
  38. find_package(HIDAPI REQUIRED)
  39. include_directories(${HIDAPI_INCLUDE_DIRS})
  40. set(LIBS ${LIBS} ${HIDAPI_LIBRARIES})
  41. endif(OPENHMD_DRIVER_OCULUS_RIFT)
  42. if(OPENHMD_DRIVER_DEEPOON)
  43. set(openhmd_source_files ${openhmd_source_files}
  44. ${CMAKE_CURRENT_LIST_DIR}/src/drv_deepoon/deepoon.c
  45. ${CMAKE_CURRENT_LIST_DIR}/src/drv_deepoon/packet.c
  46. )
  47. add_definitions(-DDRIVER_DEEPOON)
  48. find_package(HIDAPI REQUIRED)
  49. include_directories(${HIDAPI_INCLUDE_DIRS})
  50. set(LIBS ${LIBS} ${HIDAPI_LIBRARIES})
  51. endif(OPENHMD_DRIVER_DEEPOON)
  52. if(OPENHMD_DRIVER_WMR)
  53. set(openhmd_source_files ${openhmd_source_files}
  54. ${CMAKE_CURRENT_LIST_DIR}/src/drv_wmr/wmr.c
  55. ${CMAKE_CURRENT_LIST_DIR}/src/drv_wmr/packet.c
  56. )
  57. add_definitions(-DDRIVER_WMR)
  58. find_package(HIDAPI REQUIRED)
  59. include_directories(${HIDAPI_INCLUDE_DIRS})
  60. set(LIBS ${LIBS} ${HIDAPI_LIBRARIES})
  61. endif(OPENHMD_DRIVER_WMR)
  62. if(OPENHMD_DRIVER_PSVR)
  63. set(openhmd_source_files ${openhmd_source_files}
  64. ${CMAKE_CURRENT_LIST_DIR}/src/drv_psvr/psvr.c
  65. ${CMAKE_CURRENT_LIST_DIR}/src/drv_psvr/packet.c
  66. )
  67. add_definitions(-DDRIVER_PSVR)
  68. find_package(HIDAPI REQUIRED)
  69. include_directories(${HIDAPI_INCLUDE_DIRS})
  70. set(LIBS ${LIBS} ${HIDAPI_LIBRARIES})
  71. endif(OPENHMD_DRIVER_PSVR)
  72. if(OPENHMD_DRIVER_HTC_VIVE)
  73. set(openhmd_source_files ${openhmd_source_files}
  74. ${CMAKE_CURRENT_LIST_DIR}/src/drv_htc_vive/vive.c
  75. ${CMAKE_CURRENT_LIST_DIR}/src/drv_htc_vive/packet.c
  76. #${CMAKE_CURRENT_LIST_DIR}/src/ext_deps/miniz.c
  77. ${CMAKE_CURRENT_LIST_DIR}/src/ext_deps/nxjson.c
  78. )
  79. add_definitions(-DDRIVER_HTC_VIVE)
  80. find_package(HIDAPI REQUIRED)
  81. include_directories(${HIDAPI_INCLUDE_DIRS})
  82. set(LIBS ${LIBS} ${HIDAPI_LIBRARIES})
  83. endif(OPENHMD_DRIVER_HTC_VIVE)
  84. if(OPENHMD_DRIVER_NOLO)
  85. set(openhmd_source_files ${openhmd_source_files}
  86. ${CMAKE_CURRENT_LIST_DIR}/src/drv_nolo/nolo.c
  87. ${CMAKE_CURRENT_LIST_DIR}/src/drv_nolo/packet.c
  88. )
  89. add_definitions(-DDRIVER_NOLO)
  90. find_package(HIDAPI REQUIRED)
  91. include_directories(${HIDAPI_INCLUDE_DIRS})
  92. set(LIBS ${LIBS} ${HIDAPI_LIBRARIES})
  93. endif(OPENHMD_DRIVER_NOLO)
  94. if(OPENHMD_DRIVER_XGVR)
  95. set(openhmd_source_files ${openhmd_source_files}
  96. ${CMAKE_CURRENT_LIST_DIR}/src/drv_3glasses/xgvr.c
  97. ${CMAKE_CURRENT_LIST_DIR}/src/drv_3glasses/packet.c
  98. )
  99. add_definitions(-DDRIVER_XGVR)
  100. find_package(HIDAPI REQUIRED)
  101. include_directories(${HIDAPI_INCLUDE_DIRS})
  102. set(LIBS ${LIBS} ${HIDAPI_LIBRARIES})
  103. endif(OPENHMD_DRIVER_XGVR)
  104. if (OPENHMD_DRIVER_EXTERNAL)
  105. set(openhmd_source_files ${openhmd_source_files}
  106. ${CMAKE_CURRENT_LIST_DIR}/src/drv_external/external.c
  107. )
  108. add_definitions(-DDRIVER_EXTERNAL)
  109. endif(OPENHMD_DRIVER_EXTERNAL)
  110. if (OPENHMD_DRIVER_ANDROID)
  111. set(openhmd_source_files ${openhmd_source_files}
  112. ${CMAKE_CURRENT_LIST_DIR}/src/drv_android/android.c
  113. )
  114. add_definitions(-DDRIVER_ANDROID)
  115. endif(OPENHMD_DRIVER_ANDROID)
  116. if (OPENHMD_EXAMPLE_SIMPLE)
  117. add_subdirectory(./examples/simple)
  118. endif(OPENHMD_EXAMPLE_SIMPLE)
  119. if (OPENHMD_EXAMPLE_SDL)
  120. find_package(SDL2 REQUIRED)
  121. find_package(GLEW REQUIRED)
  122. find_package(OpenGL REQUIRED)
  123. add_subdirectory(./examples/opengl)
  124. endif (OPENHMD_EXAMPLE_SDL)
  125. set(TARGETS "")
  126. if (BUILD_BOTH_STATIC_SHARED_LIBS)
  127. # Shared
  128. add_library(openhmd-shared SHARED ${openhmd_source_files})
  129. set_target_properties(openhmd-shared PROPERTIES OUTPUT_NAME openhmd CLEAN_DIRECT_OUTPUT 1)
  130. # Static
  131. add_library(openhmd-static STATIC ${openhmd_source_files})
  132. set_target_properties(openhmd-static PROPERTIES OUTPUT_NAME openhmd CLEAN_DIRECT_OUTPUT 1)
  133. # Alias needed to compile examples
  134. add_library(openhmd ALIAS openhmd-shared)
  135. set(TARGETS "openhmd-shared" "openhmd-static")
  136. else ()
  137. # Static or Shared
  138. add_library(openhmd ${openhmd_source_files})
  139. export(TARGETS openhmd FILE openhmd-config.cmake)
  140. set(TARGETS "openhmd")
  141. endif ()
  142. foreach(target ${TARGETS})
  143. set_target_properties(${target} PROPERTIES VERSION ${LIB_VERSION_STRING} SOVERSION ${LIB_VERSION_MAJOR})
  144. target_include_directories(${target} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
  145. target_link_libraries(${target} ${LIBS})
  146. if (UNIX)
  147. target_link_libraries(${target} rt pthread)
  148. endif (UNIX)
  149. get_target_property(target_type ${target} TYPE)
  150. if (target_type STREQUAL "STATIC_LIBRARY")
  151. target_compile_definitions(${target} PUBLIC -DOHMD_STATIC)
  152. endif()
  153. endforeach(target)
  154. install(TARGETS ${TARGETS} DESTINATION lib)
  155. install(FILES include/openhmd.h DESTINATION include)