meson.build 2.9 KB

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