meson.build 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. project(
  2. 'openhmd', 'c',
  3. default_options : 'c_std=c99',
  4. version : '0.3.0',
  5. meson_version : '>= 0.44'
  6. )
  7. library_version = '0.1.0'
  8. sources = [
  9. 'src/openhmd.c',
  10. 'src/platform-win32.c',
  11. 'src/drv_dummy/dummy.c',
  12. 'src/omath.c',
  13. 'src/platform-posix.c',
  14. 'src/fusion.c',
  15. 'src/shaders.c'
  16. ]
  17. hidapi = 'hidapi'
  18. if host_machine.system() == 'linux'
  19. hidapi = 'hidapi-libusb'
  20. endif
  21. dep_hidapi = dependency(hidapi)
  22. deps = [
  23. meson.get_compiler('c').find_library('m', required : false), #-lm
  24. dependency('threads') #pthread
  25. ]
  26. c_args = []
  27. _drivers = get_option('drivers')
  28. if _drivers.contains('rift')
  29. sources += [
  30. 'src/drv_oculus_rift/rift.c',
  31. 'src/drv_oculus_rift/packet.c'
  32. ]
  33. c_args += '-DDRIVER_OCULUS_RIFT'
  34. deps += dep_hidapi
  35. endif
  36. if _drivers.contains('deepoon')
  37. sources += [
  38. 'src/drv_deepoon/deepoon.c',
  39. 'src/drv_deepoon/packet.c'
  40. ]
  41. c_args += '-DDRIVER_DEEPOON'
  42. endif
  43. if _drivers.contains('psvr')
  44. sources += [
  45. 'src/drv_psvr/psvr.c',
  46. 'src/drv_psvr/packet.c'
  47. ]
  48. c_args += '-DDRIVER_PSVR'
  49. deps += dep_hidapi
  50. endif
  51. if _drivers.contains('vive')
  52. sources += [
  53. 'src/drv_htc_vive/vive.c',
  54. 'src/drv_htc_vive/packet.c',
  55. 'src/ext_deps/nxjson.c'
  56. ]
  57. c_args += '-DDRIVER_HTC_VIVE'
  58. deps += dep_hidapi
  59. endif
  60. if _drivers.contains('nolo')
  61. sources += [
  62. 'src/drv_nolo/nolo.c',
  63. 'src/drv_nolo/packet.c'
  64. ]
  65. c_args += '-DDRIVER_NOLO'
  66. deps += dep_hidapi
  67. endif
  68. if _drivers.contains('wmr')
  69. sources += [
  70. 'src/drv_wmr/wmr.c',
  71. 'src/drv_wmr/packet.c'
  72. ]
  73. c_args += '-DDRIVER_WMR'
  74. deps += dep_hidapi
  75. endif
  76. if _drivers.contains('xgvr')
  77. sources += [
  78. 'src/drv_3glasses/xgvr.c',
  79. 'src/drv_3glasses/packet.c',
  80. ]
  81. c_args += '-DDRIVER_XGVR'
  82. deps += dep_hidapi
  83. endif
  84. if _drivers.contains('external')
  85. sources += [
  86. 'src/drv_external/external.c'
  87. ]
  88. c_args += '-DDRIVER_EXTERNAL'
  89. endif
  90. if _drivers.contains('android')
  91. sources += [
  92. 'src/drv_android/android.c'
  93. ]
  94. c_args += '-DDRIVER_ANDROID'
  95. endif
  96. openhmd_lib = library('openhmd', sources, include_directories : include_directories('./include'), c_args : c_args, dependencies : deps, install : true, version : library_version)
  97. # build examples and install pkg-config file + header only for shared library. shared is the default
  98. if get_option('default_library') == 'shared'
  99. _examples = get_option('examples')
  100. if _examples.contains('simple')
  101. executable('openhmd_simple_example', 'examples/simple/simple.c', include_directories : include_directories('./include'), link_with: [openhmd_lib], install : true)
  102. endif
  103. if _examples.contains('opengl')
  104. opengl_sources = [
  105. 'examples/opengl/main.c',
  106. 'examples/opengl/gl.c',
  107. ]
  108. sdldep = dependency('sdl2')
  109. gldep = dependency('gl')
  110. glewdep = dependency('glew')
  111. executable('openhmd_opengl_example', opengl_sources , include_directories : include_directories(['./include', 'examples/opengl']), link_with: [openhmd_lib], dependencies : [sdldep, gldep, glewdep], install : true)
  112. endif
  113. pkg = import('pkgconfig')
  114. pkg.generate(
  115. name : 'openhmd',
  116. description : 'API and drivers for immersive technology devices such as HMDs',
  117. version : meson.project_version(),
  118. subdirs : 'openhmd',
  119. requires : hidapi,
  120. libraries : openhmd_lib,
  121. url : 'http://www.openhmd.net/'
  122. )
  123. install_headers('include/openhmd.h', subdir : 'openhmd')
  124. endif