CMakeLists.txt 4.4 KB

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