meson.build 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. project('scuffedcraft', 'c')
  2. cc = meson.get_compiler('c')
  3. vendor_dir_abs = meson.current_source_dir() + '/vendor/'
  4. message(vendor_dir_abs)
  5. pltf_src = []
  6. cargs = [
  7. '-std=c99',
  8. '-DSHADERS_PATH="../src/shaders/"',
  9. '-DDEBUG'
  10. ]
  11. dependencies = [
  12. ]
  13. link_args = []
  14. test_link_args = [ '-static' ]
  15. include_dirs = [
  16. 'src/'
  17. ]
  18. test_include_dirs = [
  19. 'src/',
  20. 'vendor/cmocka-2.0.2/'
  21. ]
  22. if host_machine.system() == 'linux'
  23. pltf_src = [
  24. 'src/pltf/glx/gl_funcs.c'
  25. ]
  26. dependencies += [
  27. dependency('x11'),
  28. dependency('glx'),
  29. dependency('libglvnd'),
  30. dependency('opengl'),
  31. ]
  32. libcmocka = cc.find_library(
  33. 'libcmocka',
  34. dirs: [ vendor_dir_abs + 'cmocka-2.0.2/linux/' ]
  35. )
  36. elif host_machine.system() == 'windows'
  37. pltf_src = [
  38. 'src/pltf/win32/gl_funcs.c',
  39. 'src/pltf/win32/internal.c',
  40. 'src/pltf/win32/pltf.c',
  41. 'src/pltf/win32/win_proc.c',
  42. ]
  43. libcmocka = cc.find_library(
  44. 'libcmocka',
  45. dirs: [ vendor_dir_abs + 'cmocka-2.0.2/win/' ]
  46. )
  47. link_args += [
  48. '-lopengl32'
  49. ]
  50. test_link_args += [
  51. '-lwinpthread'
  52. ]
  53. cargs += [
  54. '-DUNICODE',
  55. '-D__UNICODE',
  56. '-municode'
  57. ]
  58. if meson.is_cross_build() and build_machine.system() == 'linux'
  59. link_args += [
  60. '-Lvendor/wine/',
  61. ]
  62. endif
  63. endif
  64. executable(
  65. 'scuffedcraft',
  66. 'src/DynArray.c',
  67. 'src/DynString.c',
  68. 'src/log.c',
  69. 'src/main.c',
  70. 'src/shader.c',
  71. pltf_src,
  72. c_args: cargs,
  73. dependencies: dependencies,
  74. link_args: link_args,
  75. include_directories: include_directories(include_dirs),
  76. )
  77. executable(
  78. 'tests',
  79. 'tests/main.c',
  80. 'src/DynString.c',
  81. 'src/log.c',
  82. c_args: cargs,
  83. include_directories: include_directories(test_include_dirs),
  84. link_args: test_link_args,
  85. dependencies: [
  86. libcmocka
  87. ]
  88. )