openal.lua 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. --
  2. -- Copyright (c) 2012-2020 Daniele Bartolini and individual contributors.
  3. -- License: https://github.com/dbartolini/crown/blob/master/LICENSE
  4. --
  5. function openal_project(_kind)
  6. project "openal"
  7. kind (_kind)
  8. configuration {}
  9. local AL_DIR = (CROWN_DIR .. "3rdparty/openal/")
  10. defines {
  11. "_LARGE_FILES",
  12. "_LARGEFILE_SOURCE",
  13. "AL_ALEXT_PROTOTYPES",
  14. "AL_BUILD_LIBRARY",
  15. "HAVE_C99_BOOL",
  16. "HAVE_FENV_H",
  17. "HAVE_FLOAT_H",
  18. "HAVE_LRINTF",
  19. "HAVE_MALLOC_H",
  20. "HAVE_STAT",
  21. "HAVE_STDBOOL_H",
  22. "HAVE_STDINT_H",
  23. "HAVE_STRTOF",
  24. }
  25. configuration { "not vs*" }
  26. defines {
  27. "HAVE_C99_VLA",
  28. "HAVE_DIRENT_H",
  29. "HAVE_GCC_DESTRUCTOR",
  30. "HAVE_GCC_FORMAT",
  31. "HAVE_PTHREAD_SETNAME_NP",
  32. "HAVE_PTHREAD_SETSCHEDPARAM",
  33. "HAVE_STRINGS_H",
  34. "restrict=__restrict",
  35. "SIZEOF_LONG=8",
  36. "SIZEOF_LONG_LONG=8",
  37. -- These are needed on non-Windows systems for extra features
  38. "_GNU_SOURCE=1",
  39. "_POSIX_C_SOURCE=200809L",
  40. "_XOPEN_SOURCE=700",
  41. }
  42. buildoptions {
  43. "-fPIC",
  44. "-Winline",
  45. "-fvisibility=hidden",
  46. "-fexceptions" -- :(
  47. }
  48. configuration { "linux-* or android-*" }
  49. defines {
  50. "HAVE_DLFCN_H",
  51. "HAVE_GCC_GET_CPUID",
  52. }
  53. configuration { "not android-*" }
  54. defines {
  55. "HAVE_SSE",
  56. "HAVE_SSE2",
  57. }
  58. files {
  59. AL_DIR .. "alc/mixer/mixer_sse2.cpp",
  60. AL_DIR .. "alc/mixer/mixer_sse.cpp",
  61. }
  62. configuration { "android-*" }
  63. files {
  64. AL_DIR .. "alc/backends/opensl.cpp"
  65. }
  66. links {
  67. "OpenSLES",
  68. }
  69. configuration { "linux-*" }
  70. defines {
  71. "HAVE_CPUID_H",
  72. "HAVE_POSIX_MEMALIGN",
  73. "HAVE_PTHREAD_MUTEX_TIMEDLOCK",
  74. "HAVE_PULSEAUDIO",
  75. }
  76. files {
  77. AL_DIR .. "alc/backends/pulseaudio.cpp",
  78. }
  79. configuration { "vs* or mingw-*"}
  80. defines {
  81. "_WIN32_WINNT=0x0502",
  82. "_WINDOWS",
  83. "HAVE___CONTROL87_2",
  84. "HAVE__ALIGNED_MALLOC",
  85. "HAVE__CONTROLFP",
  86. "HAVE_CPUID_INTRINSIC",
  87. "HAVE_DSOUND",
  88. "HAVE_GUIDDEF_H",
  89. "HAVE_INTRIN_H",
  90. "HAVE_IO_H",
  91. "HAVE_MMDEVAPI",
  92. "HAVE_WINDOWS_H",
  93. "HAVE_WINMM",
  94. }
  95. files {
  96. AL_DIR .. "alc/backends/mmdevapi.cpp",
  97. AL_DIR .. "alc/backends/dsound.cpp",
  98. AL_DIR .. "alc/backends/winmm.cpp",
  99. }
  100. links {
  101. "winmm",
  102. "ole32",
  103. }
  104. configuration { "vs*" }
  105. defines {
  106. "_CRT_NONSTDC_NO_DEPRECATE",
  107. "inline=__inline",
  108. "restrict=",
  109. "SIZEOF_LONG=4",
  110. "SIZEOF_LONG_LONG=8",
  111. "strcasecmp=_stricmp",
  112. "strncasecmp=_strnicmp",
  113. }
  114. buildoptions {
  115. "/wd4098",
  116. "/wd4267",
  117. "/wd4244",
  118. "/EHs", -- :(
  119. }
  120. configuration {}
  121. includedirs {
  122. AL_DIR .. "al/include",
  123. AL_DIR .. "alc",
  124. AL_DIR .. "common",
  125. AL_DIR .. "include",
  126. AL_DIR,
  127. }
  128. files {
  129. AL_DIR .. "al/*.cpp",
  130. AL_DIR .. "alc/*.cpp",
  131. AL_DIR .. "alc/backends/base.cpp",
  132. AL_DIR .. "alc/backends/loopback.cpp",
  133. AL_DIR .. "alc/backends/null.cpp",
  134. AL_DIR .. "alc/effects/*.cpp",
  135. AL_DIR .. "alc/filters/*.cpp",
  136. AL_DIR .. "alc/midi/*.cpp",
  137. AL_DIR .. "alc/mixer/mixer_c.cpp",
  138. AL_DIR .. "common/*.cpp",
  139. }
  140. configuration {}
  141. end