Audio plugin host https://kx.studio/carla
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Makefile.mk 12KB

11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
10 years ago
10 years ago
11 years ago
11 years ago
11 years ago
11 years ago
10 years ago
10 years ago
10 years ago
11 years ago
10 years ago
11 years ago
10 years ago
11 years ago
11 years ago
10 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381
  1. #!/usr/bin/make -f
  2. # Makefile for Carla C++ code #
  3. # --------------------------- #
  4. # Created by falkTX
  5. #
  6. # --------------------------------------------------------------
  7. # Modify to enable/disable specific features
  8. # Support for LADSPA, DSSI, LV2, VST and AU plugins
  9. CARLA_PLUGIN_SUPPORT = true
  10. # Support for csound files (version 6, not ready yet)
  11. CARLA_CSOUND_SUPPORT = false
  12. # Support for GIG, SF2 and SFZ sample banks (through fluidsynth and linuxsampler)
  13. CARLA_SAMPLERS_SUPPORT = true
  14. # Use the free vestige header instead of the official VST SDK
  15. CARLA_VESTIGE_HEADER = true
  16. # --------------------------------------------------------------
  17. # DO NOT MODIFY PAST THIS POINT!
  18. AR ?= ar
  19. RM ?= rm -f
  20. CC ?= gcc
  21. CXX ?= g++
  22. # --------------------------------------------------------------
  23. # Fallback to Linux if no other OS defined
  24. ifneq ($(HAIKU),true)
  25. ifneq ($(MACOS),true)
  26. ifneq ($(WIN32),true)
  27. LINUX=true
  28. endif
  29. endif
  30. endif
  31. # --------------------------------------------------------------
  32. # Use the real VSTSDK in MacOS and Windows
  33. ifeq ($(MACOS),true)
  34. CARLA_VESTIGE_HEADER = false
  35. endif
  36. ifeq ($(WIN32),true)
  37. CARLA_VESTIGE_HEADER = false
  38. endif
  39. # --------------------------------------------------------------
  40. # Common build and link flags
  41. BASE_FLAGS = -Wall -Wextra -pipe -DREAL_BUILD
  42. BASE_OPTS = -O2 -ffast-math -mtune=generic -msse -msse2 -mfpmath=sse -fdata-sections -ffunction-sections
  43. LINK_OPTS = -fdata-sections -ffunction-sections -Wl,--gc-sections
  44. ifeq ($(TESTBUILD),true)
  45. BASE_FLAGS += -Werror -Wcast-align -Wcast-qual -Wconversion -Wformat-security -Wredundant-decls -Wshadow -Wstrict-overflow -fstrict-overflow -Wundef -Wunsafe-loop-optimizations -Wwrite-strings
  46. CFLAGS += -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes
  47. CXXFLAGS += -Wnon-virtual-dtor -Woverloaded-virtual
  48. ifeq ($(LINUX),true)
  49. CFLAGS += -isystem /opt/kxstudio/include
  50. CXXFLAGS += -isystem /opt/kxstudio/include -isystem /usr/include/qt4
  51. endif
  52. ifeq ($(MACOS),true)
  53. CFLAGS += -isystem /opt/local/include/
  54. CXXFLAGS += -isystem /opt/local/include/
  55. endif
  56. ifeq ($(WIN32),true)
  57. CFLAGS += -isystem /opt/mingw32/include
  58. CXXFLAGS += -isystem /opt/mingw32/include -isystem /opt/mingw32/include/qt4
  59. endif
  60. endif
  61. ifneq ($(MACOS),true)
  62. BASE_FLAGS += -Wlogical-op
  63. ifeq ($(TESTBUILD),true)
  64. BASE_FLAGS += -Wmissing-declarations -Wsign-conversion
  65. # -Wsuggest-attribute=noreturn
  66. endif
  67. endif
  68. ifeq ($(WIN32),true)
  69. BASE_FLAGS += -msse -msse2
  70. else
  71. BASE_FLAGS += -fPIC -DPIC
  72. endif
  73. ifeq ($(RASPPI),true)
  74. # Raspberry-Pi optimization flags
  75. BASE_OPTS = -O3 -ffast-math -march=armv6 -mfpu=vfp -mfloat-abi=hard
  76. LINK_OPTS =
  77. endif
  78. ifeq ($(DEBUG),true)
  79. BASE_FLAGS += -DDEBUG -O0 -g
  80. LINK_OPTS =
  81. else
  82. BASE_FLAGS += -DNDEBUG $(BASE_OPTS) -fvisibility=hidden
  83. CXXFLAGS += -fvisibility-inlines-hidden
  84. LINK_OPTS += -Wl,-O1 -Wl,--strip-all
  85. endif
  86. 32BIT_FLAGS = -m32
  87. 64BIT_FLAGS = -m64
  88. BUILD_C_FLAGS = $(BASE_FLAGS) -std=c99 -std=gnu99 $(CFLAGS)
  89. BUILD_CXX_FLAGS = $(BASE_FLAGS) -std=c++0x -std=gnu++0x $(CXXFLAGS)
  90. LINK_FLAGS = $(LINK_OPTS) -Wl,--no-undefined $(LDFLAGS)
  91. ifeq ($(MACOS),true)
  92. # No C++11 support; force 32bit per default
  93. BUILD_C_FLAGS += $(32BIT_FLAGS)
  94. BUILD_CXX_FLAGS = $(BASE_FLAGS) $(32BIT_FLAGS) $(CXXFLAGS)
  95. LINK_FLAGS = $(32BIT_FLAGS) $(LDFLAGS)
  96. endif
  97. # --------------------------------------------------------------
  98. # Check for qt, set default version (prefer qt4)
  99. HAVE_QT4 = $(shell pkg-config --exists QtCore QtGui QtXml && echo true)
  100. HAVE_QT5 = $(shell pkg-config --exists Qt5Core Qt5Gui Qt5Xml Qt5Widgets && echo true)
  101. ifeq ($(HAVE_QT5),true)
  102. DEFAULT_QT=5
  103. endif
  104. ifeq ($(HAVE_QT4),true)
  105. DEFAULT_QT=4
  106. endif
  107. # --------------------------------------------------------------
  108. # Check for required libs
  109. ifneq ($(shell pkg-config --exists liblo && echo true),true)
  110. $(error liblo missing, cannot continue)
  111. endif
  112. ifneq ($(HAVE_QT4),true)
  113. ifneq ($(HAVE_QT5),true)
  114. $(error Qt missing, cannot continue)
  115. endif
  116. endif
  117. # --------------------------------------------------------------
  118. # Check for dgl support
  119. ifeq ($(HAIKU),true)
  120. HAVE_DGL = false
  121. endif
  122. ifeq ($(LINUX),true)
  123. HAVE_DGL = $(shell pkg-config --exists gl x11 && echo true)
  124. endif
  125. ifeq ($(MACOS),true)
  126. HAVE_DGL = true
  127. endif
  128. ifeq ($(WIN32),true)
  129. HAVE_DGL = true
  130. endif
  131. # --------------------------------------------------------------
  132. # Check for juce support
  133. ifeq ($(HAIKU),true)
  134. HAVE_JUCE = false
  135. endif
  136. ifeq ($(LINUX),true)
  137. HAVE_JUCE = $(shell pkg-config --exists x11 xinerama xext xcursor freetype2 && echo true)
  138. endif
  139. ifeq ($(MACOS),true)
  140. HAVE_JUCE = true
  141. endif
  142. ifeq ($(WIN32),true)
  143. HAVE_JUCE = true
  144. endif
  145. # --------------------------------------------------------------
  146. # Check for optional libs (required by backend or bridges)
  147. HAVE_FFMPEG = $(shell pkg-config --exists libavcodec libavformat libavutil && echo true)
  148. HAVE_GTK2 = $(shell pkg-config --exists gtk+-2.0 && echo true)
  149. HAVE_GTK3 = $(shell pkg-config --exists gtk+-3.0 && echo true)
  150. HAVE_X11 = $(shell pkg-config --exists x11 && echo true)
  151. ifeq ($(LINUX),true)
  152. HAVE_ALSA = $(shell pkg-config --exists alsa && echo true)
  153. HAVE_PULSEAUDIO = $(shell pkg-config --exists libpulse-simple && echo true)
  154. endif
  155. ifeq ($(CARLA_CSOUND_SUPPORT),true)
  156. ifeq ($(HAVE_JUCE),true)
  157. HAVE_CSOUND = $(shell pkg-config --exists sndfile && echo true)
  158. endif
  159. endif
  160. ifeq ($(CARLA_SAMPLERS_SUPPORT),true)
  161. HAVE_FLUIDSYNTH = $(shell pkg-config --exists fluidsynth && echo true)
  162. HAVE_LINUXSAMPLER = $(shell pkg-config --exists linuxsampler && echo true)
  163. endif
  164. # --------------------------------------------------------------
  165. # Check for optional libs (needed by internal plugins)
  166. HAVE_AF_DEPS = $(shell pkg-config --exists sndfile && echo true)
  167. HAVE_MF_DEPS = $(shell pkg-config --exists smf && echo true)
  168. HAVE_ZYN_DEPS = $(shell pkg-config --exists fftw3 mxml zlib && echo true)
  169. HAVE_ZYN_UI_DEPS = $(shell pkg-config --exists ntk_images ntk && echo true)
  170. # --------------------------------------------------------------
  171. # Set base stuff
  172. ifeq ($(HAVE_DGL),true)
  173. BASE_FLAGS += -DHAVE_DGL
  174. endif
  175. ifeq ($(HAVE_FFMPEG),true)
  176. BASE_FLAGS += -DHAVE_FFMPEG
  177. endif
  178. ifeq ($(HAVE_JUCE),true)
  179. BASE_FLAGS += -DHAVE_JUCE
  180. endif
  181. ifeq ($(HAVE_X11),true)
  182. BASE_FLAGS += -DHAVE_X11
  183. endif
  184. # --------------------------------------------------------------
  185. # Set libs stuff (part 1)
  186. LIBLO_FLAGS = $(shell pkg-config --cflags liblo)
  187. LIBLO_LIBS = $(shell pkg-config --libs liblo)
  188. ifeq ($(DEFAULT_QT),5)
  189. QTCORE_FLAGS = $(shell pkg-config --cflags Qt5Core)
  190. QTCORE_LIBS = $(shell pkg-config --libs Qt5Core)
  191. QTXML_FLAGS = $(shell pkg-config --cflags Qt5Xml)
  192. QTXML_LIBS = $(shell pkg-config --libs Qt5Xml)
  193. else
  194. QTCORE_FLAGS = $(shell pkg-config --cflags QtCore)
  195. QTCORE_LIBS = $(shell pkg-config --libs QtCore)
  196. QTXML_FLAGS = $(shell pkg-config --cflags QtXml)
  197. QTXML_LIBS = $(shell pkg-config --libs QtXml)
  198. endif
  199. ifeq ($(HAVE_CSOUND),true)
  200. CSOUND_FLAGS = $(shell pkg-config --cflags sndfile) -DUSE_DOUBLE=1
  201. CSOUND_LIBS = $(shell pkg-config --libs sndfile) -lcsound64
  202. endif
  203. ifeq ($(HAVE_FLUIDSYNTH),true)
  204. FLUIDSYNTH_FLAGS = $(shell pkg-config --cflags fluidsynth)
  205. FLUIDSYNTH_LIBS = $(shell pkg-config --libs fluidsynth)
  206. endif
  207. ifeq ($(HAVE_LINUXSAMPLER),true)
  208. LINUXSAMPLER_FLAGS = $(shell pkg-config --cflags linuxsampler) -Wno-unused-parameter
  209. LINUXSAMPLER_LIBS = $(shell pkg-config --libs linuxsampler)
  210. endif
  211. ifneq ($(HAIKU),true)
  212. RTMEMPOOL_LIBS = -lpthread
  213. endif
  214. # --------------------------------------------------------------
  215. # Set libs stuff (part 2)
  216. ifeq ($(HAVE_AF_DEPS),true)
  217. AUDIO_DECODER_FLAGS = $(shell pkg-config --cflags sndfile)
  218. AUDIO_DECODER_LIBS = $(shell pkg-config --libs sndfile)
  219. ifeq ($(HAVE_FFMPEG),true)
  220. AUDIO_DECODER_FLAGS += $(shell pkg-config --cflags libavcodec libavformat libavutil)
  221. AUDIO_DECODER_LIBS += $(shell pkg-config --libs libavcodec libavformat libavutil)
  222. endif
  223. endif
  224. RTAUDIO_FLAGS = -DHAVE_GETTIMEOFDAY -D__UNIX_JACK__
  225. ifeq ($(DEBUG),true)
  226. RTAUDIO_FLAGS += -D__RTAUDIO_DEBUG__
  227. RTMIDI_FLAGS += -D__RTMIDI_DEBUG__
  228. endif
  229. ifeq ($(LINUX),true)
  230. ifeq ($(HAVE_DGL),true)
  231. DGL_FLAGS = $(shell pkg-config --cflags gl x11)
  232. DGL_LIBS = $(shell pkg-config --libs gl x11)
  233. endif
  234. JACKBRIDGE_LIBS = -ldl -lpthread -lrt
  235. ifeq ($(HAVE_JUCE),true)
  236. JUCE_CORE_LIBS = -ldl -lpthread -lrt
  237. JUCE_EVENTS_FLAGS = $(shell pkg-config --cflags x11)
  238. JUCE_EVENTS_LIBS = $(shell pkg-config --libs x11)
  239. JUCE_GRAPHICS_FLAGS = $(shell pkg-config --cflags x11 xinerama xext freetype2)
  240. JUCE_GRAPHICS_LIBS = $(shell pkg-config --libs x11 xinerama xext freetype2)
  241. JUCE_GUI_BASICS_FLAGS = $(shell pkg-config --cflags x11 xinerama xext xcursor)
  242. JUCE_GUI_BASICS_LIBS = $(shell pkg-config --libs x11 xinerama xext xcursor) -ldl
  243. endif
  244. LILV_LIBS = -ldl -lm -lrt
  245. ifeq ($(HAVE_ALSA),true)
  246. RTAUDIO_FLAGS += $(shell pkg-config --cflags alsa) -D__LINUX_ALSA__
  247. RTAUDIO_LIBS += $(shell pkg-config --libs alsa) -lpthread
  248. RTMIDI_FLAGS += $(shell pkg-config --cflags alsa) -D__LINUX_ALSASEQ__
  249. RTMIDI_LIBS += $(shell pkg-config --libs alsa)
  250. endif
  251. ifeq ($(HAVE_PULSEAUDIO),true)
  252. RTAUDIO_FLAGS += $(shell pkg-config --cflags libpulse-simple) -D__LINUX_PULSE__
  253. RTAUDIO_LIBS += $(shell pkg-config --libs libpulse-simple)
  254. endif
  255. endif
  256. ifeq ($(MACOS),true)
  257. DGL_LIBS = -framework OpenGL -framework Cocoa
  258. JACKBRIDGE_LIBS = -ldl -lpthread
  259. JUCE_AUDIO_BASICS_LIBS = -framework Accelerate
  260. JUCE_AUDIO_DEVICES_LIBS = -framework AudioToolbox -framework CoreAudio -framework CoreMIDI -framework DiscRecording
  261. JUCE_AUDIO_FORMATS_LIBS = -framework CoreAudio -framework CoreMIDI -framework QuartzCore -framework AudioToolbox
  262. JUCE_CORE_LIBS = -framework Cocoa -framework IOKit
  263. JUCE_GRAPHICS_LIBS = -framework Cocoa -framework QuartzCore
  264. JUCE_GUI_BASICS_LIBS = -framework Cocoa -framework Carbon -framework QuartzCore
  265. LILV_LIBS = -ldl -lm
  266. RTAUDIO_FLAGS += -D__MACOSX_CORE__
  267. RTAUDIO_LIBS += -lpthread
  268. RTMIDI_FLAGS += -D__MACOSX_CORE__
  269. endif
  270. ifeq ($(WIN32),true)
  271. DGL_LIBS = -lopengl32 -lgdi32
  272. JACKBRIDGE_LIBS = -lpthread
  273. JUCE_AUDIO_DEVICES_LIBS = -lwinmm -lole32
  274. JUCE_CORE_LIBS = -luuid -lwsock32 -lwininet -lversion -lole32 -lws2_32 -loleaut32 -limm32 -lcomdlg32 -lshlwapi -lrpcrt4 -lwinmm
  275. JUCE_EVENTS_LIBS = -lole32
  276. JUCE_GRAPHICS_LIBS = -lgdi32
  277. JUCE_GUI_BASICS_LIBS = -lgdi32 -limm32 -lcomdlg32 -lole32
  278. LILV_LIBS = -lm
  279. RTAUDIO_FLAGS += -D__WINDOWS_ASIO__ -D__WINDOWS_DS__
  280. RTAUDIO_LIBS += -ldsound -lpthread
  281. RTMIDI_FLAGS += -D__WINDOWS_MM__
  282. endif
  283. # --------------------------------------------------------------
  284. # Set libs stuff (part 3)
  285. NATIVE_PLUGINS_LIBS = $(AUDIO_DECODER_LIBS)
  286. NATIVE_PLUGINS_LIBS += $(DGL_LIBS)
  287. ifeq ($(HAVE_MF_DEPS),true)
  288. NATIVE_PLUGINS_LIBS += $(shell pkg-config --libs smf)
  289. endif
  290. ifeq ($(HAVE_ZYN_DEPS),true)
  291. NATIVE_PLUGINS_LIBS += $(shell pkg-config --libs fftw3 mxml zlib)
  292. ifeq ($(HAVE_ZYN_UI_DEPS),true)
  293. NATIVE_PLUGINS_LIBS += $(shell pkg-config --libs ntk_images ntk)
  294. endif
  295. endif
  296. # --------------------------------------------------------------
  297. # Set Qt tools
  298. ifeq ($(HAVE_QT4),true)
  299. MOC_QT4 ?= $(shell pkg-config --variable=moc_location QtCore)
  300. RCC_QT4 ?= $(shell pkg-config --variable=rcc_location QtCore)
  301. UIC_QT4 ?= $(shell pkg-config --variable=uic_location QtCore)
  302. endif
  303. ifeq ($(HAVE_QT5),true)
  304. MOC_QT5 ?= $(shell pkg-config --variable=libdir Qt5Core)/qt5/bin/moc
  305. RCC_QT5 ?= $(shell pkg-config --variable=libdir Qt5Core)/qt5/bin/rcc
  306. UIC_QT5 ?= $(shell pkg-config --variable=libdir Qt5Core)/qt5/bin/uic
  307. endif
  308. # --------------------------------------------------------------