CMakeLists.txt 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. cmake_minimum_required(VERSION 2.8)
  2. project(openhmd C CXX)
  3. set(CMAKE_C_FLAGS "-std=c99")
  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. include_directories(${CMAKE_CURRENT_LIST_DIR}/include)
  11. if (MSVC)
  12. # Add the "lib" prefix for generated .lib outputs.
  13. set(LIB_PREFIX lib)
  14. else (MSVC)
  15. # When building with "make", "lib" prefix will be added automatically by
  16. # the build tool.
  17. set(LIB_PREFIX)
  18. endif (MSVC)
  19. #source files set just for Android
  20. set(openhmd_source_files
  21. ${CMAKE_CURRENT_LIST_DIR}/src/openhmd.c
  22. ${CMAKE_CURRENT_LIST_DIR}/src/platform-win32.c
  23. ${CMAKE_CURRENT_LIST_DIR}/src/drv_dummy/dummy.c
  24. ${CMAKE_CURRENT_LIST_DIR}/src/omath.c
  25. ${CMAKE_CURRENT_LIST_DIR}/src/platform-posix.c
  26. ${CMAKE_CURRENT_LIST_DIR}/src/fusion.c
  27. ${CMAKE_CURRENT_LIST_DIR}/src/shaders.c
  28. )
  29. OPTION(OPENHMD_DRIVER_OCULUS_RIFT "Oculus Rift DK1 and DK2" ON)
  30. OPTION(OPENHMD_DRIVER_DEEPOON "Deepoon E2" ON)
  31. OPTION(OPENHMD_DRIVER_WMR "Windows Mixed Reality" ON)
  32. OPTION(OPENHMD_DRIVER_PSVR "Sony PSVR" ON)
  33. OPTION(OPENHMD_DRIVER_HTC_VIVE "HTC Vive" ON)
  34. OPTION(OPENHMD_DRIVER_NOLO "NOLO VR CV1" ON)
  35. OPTION(OPENHMD_DRIVER_XGVR "3Glasses HMD" ON)
  36. OPTION(OPENHMD_DRIVER_EXTERNAL "External sensor driver" ON)
  37. OPTION(OPENHMD_DRIVER_ANDROID "General Android driver" OFF)
  38. OPTION(OPENHMD_EXAMPLE_SIMPLE "Simple test binary" ON)
  39. OPTION(OPENHMD_EXAMPLE_SDL "SDL OpenGL test (outdated)" OFF)
  40. if(OPENHMD_DRIVER_OCULUS_RIFT)
  41. set(openhmd_source_files ${openhmd_source_files}
  42. ${CMAKE_CURRENT_LIST_DIR}/src/drv_oculus_rift/rift.c
  43. ${CMAKE_CURRENT_LIST_DIR}/src/drv_oculus_rift/packet.c
  44. )
  45. add_definitions(-DDRIVER_OCULUS_RIFT)
  46. find_package(HIDAPI REQUIRED)
  47. include_directories(${HIDAPI_INCLUDE_DIRS})
  48. set(LIBS ${LIBS} ${HIDAPI_LIBRARIES})
  49. endif(OPENHMD_DRIVER_OCULUS_RIFT)
  50. if(OPENHMD_DRIVER_DEEPOON)
  51. set(openhmd_source_files ${openhmd_source_files}
  52. ${CMAKE_CURRENT_LIST_DIR}/src/drv_deepoon/deepoon.c
  53. ${CMAKE_CURRENT_LIST_DIR}/src/drv_deepoon/packet.c
  54. )
  55. add_definitions(-DDRIVER_DEEPOON)
  56. find_package(HIDAPI REQUIRED)
  57. include_directories(${HIDAPI_INCLUDE_DIRS})
  58. set(LIBS ${LIBS} ${HIDAPI_LIBRARIES})
  59. endif(OPENHMD_DRIVER_DEEPOON)
  60. if(OPENHMD_DRIVER_WMR)
  61. set(openhmd_source_files ${openhmd_source_files}
  62. ${CMAKE_CURRENT_LIST_DIR}/src/drv_wmr/wmr.c
  63. ${CMAKE_CURRENT_LIST_DIR}/src/drv_wmr/packet.c
  64. )
  65. add_definitions(-DDRIVER_WMR)
  66. find_package(HIDAPI REQUIRED)
  67. include_directories(${HIDAPI_INCLUDE_DIRS})
  68. set(LIBS ${LIBS} ${HIDAPI_LIBRARIES})
  69. endif(OPENHMD_DRIVER_WMR)
  70. if(OPENHMD_DRIVER_PSVR)
  71. set(openhmd_source_files ${openhmd_source_files}
  72. ${CMAKE_CURRENT_LIST_DIR}/src/drv_psvr/psvr.c
  73. ${CMAKE_CURRENT_LIST_DIR}/src/drv_psvr/packet.c
  74. )
  75. add_definitions(-DDRIVER_PSVR)
  76. find_package(HIDAPI REQUIRED)
  77. include_directories(${HIDAPI_INCLUDE_DIRS})
  78. set(LIBS ${LIBS} ${HIDAPI_LIBRARIES})
  79. endif(OPENHMD_DRIVER_PSVR)
  80. if(OPENHMD_DRIVER_HTC_VIVE)
  81. set(openhmd_source_files ${openhmd_source_files}
  82. ${CMAKE_CURRENT_LIST_DIR}/src/drv_htc_vive/vive.c
  83. ${CMAKE_CURRENT_LIST_DIR}/src/drv_htc_vive/packet.c
  84. #${CMAKE_CURRENT_LIST_DIR}/src/ext_deps/miniz.c
  85. ${CMAKE_CURRENT_LIST_DIR}/src/ext_deps/nxjson.c
  86. )
  87. add_definitions(-DDRIVER_HTC_VIVE)
  88. find_package(HIDAPI REQUIRED)
  89. include_directories(${HIDAPI_INCLUDE_DIRS})
  90. set(LIBS ${LIBS} ${HIDAPI_LIBRARIES})
  91. endif(OPENHMD_DRIVER_HTC_VIVE)
  92. if(OPENHMD_DRIVER_NOLO)
  93. set(openhmd_source_files ${openhmd_source_files}
  94. ${CMAKE_CURRENT_LIST_DIR}/src/drv_nolo/nolo.c
  95. ${CMAKE_CURRENT_LIST_DIR}/src/drv_nolo/packet.c
  96. )
  97. add_definitions(-DDRIVER_NOLO)
  98. find_package(HIDAPI REQUIRED)
  99. include_directories(${HIDAPI_INCLUDE_DIRS})
  100. set(LIBS ${LIBS} ${HIDAPI_LIBRARIES})
  101. endif(OPENHMD_DRIVER_NOLO)
  102. if(OPENHMD_DRIVER_XGVR)
  103. set(openhmd_source_files ${openhmd_source_files}
  104. ${CMAKE_CURRENT_LIST_DIR}/src/drv_3glasses/xgvr.c
  105. ${CMAKE_CURRENT_LIST_DIR}/src/drv_3glasses/packet.c
  106. )
  107. add_definitions(-DDRIVER_XGVR)
  108. find_package(HIDAPI REQUIRED)
  109. include_directories(${HIDAPI_INCLUDE_DIRS})
  110. set(LIBS ${LIBS} ${HIDAPI_LIBRARIES})
  111. endif(OPENHMD_DRIVER_XGVR)
  112. if (OPENHMD_DRIVER_EXTERNAL)
  113. set(openhmd_source_files ${openhmd_source_files}
  114. ${CMAKE_CURRENT_LIST_DIR}/src/drv_external/external.c
  115. )
  116. add_definitions(-DDRIVER_EXTERNAL)
  117. endif(OPENHMD_DRIVER_EXTERNAL)
  118. if (OPENHMD_DRIVER_ANDROID)
  119. set(openhmd_source_files ${openhmd_source_files}
  120. ${CMAKE_CURRENT_LIST_DIR}/src/drv_android/android.c
  121. )
  122. add_definitions(-DDRIVER_ANDROID)
  123. endif(OPENHMD_DRIVER_ANDROID)
  124. if (OPENHMD_EXAMPLE_SIMPLE)
  125. add_subdirectory(./examples/simple)
  126. endif(OPENHMD_EXAMPLE_SIMPLE)
  127. if (OPENHMD_EXAMPLE_SDL)
  128. find_package(SDL2 REQUIRED)
  129. find_package(GLEW REQUIRED)
  130. find_package(OpenGL REQUIRED)
  131. add_subdirectory(./examples/opengl)
  132. endif (OPENHMD_EXAMPLE_SDL)
  133. if (UNIX)
  134. set(LIBS ${LIBS} rt pthread)
  135. endif (UNIX)
  136. link_libraries(${LIBS})
  137. add_library(openhmd-shared SHARED ${openhmd_source_files})
  138. SET_TARGET_PROPERTIES(openhmd-shared PROPERTIES OUTPUT_NAME openhmd CLEAN_DIRECT_OUTPUT 1 VERSION ${LIB_VERSION_STRING} SOVERSION ${LIB_VERSION_MAJOR})
  139. add_library(openhmd-static STATIC ${openhmd_source_files})
  140. SET_TARGET_PROPERTIES(openhmd-static PROPERTIES OUTPUT_NAME openhmd CLEAN_DIRECT_OUTPUT 1)
  141. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_DIR}/)
  142. #install properties
  143. install (TARGETS openhmd-shared openhmd-static DESTINATION lib)
  144. install (FILES include/openhmd.h DESTINATION include)