DISTRHO Plugin Framework
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.

189 lines
6.5KB

  1. #!/usr/bin/make -f
  2. # Makefile for DPF Example Plugins #
  3. # -------------------------------- #
  4. # Created by falkTX
  5. #
  6. # NAME, FILES_DSP and FILES_UI have been defined before
  7. include ../../Makefile.mk
  8. ifeq ($(FILES_UI),)
  9. HAVE_DGL = false
  10. endif
  11. # ---------------------------------------------------------------------------------------------------------------------
  12. # Basic setup
  13. TARGET_DIR = ../../bin
  14. BUILD_DIR = ../../build/$(NAME)
  15. BUILD_C_FLAGS += -I.
  16. BUILD_CXX_FLAGS += -I. -I../../distrho -I../../dgl
  17. ifeq ($(HAVE_DGL),true)
  18. BASE_FLAGS += -DHAVE_DGL
  19. endif
  20. ifeq ($(HAVE_JACK),true)
  21. BASE_FLAGS += -DHAVE_JACK
  22. endif
  23. ifeq ($(HAVE_LIBLO),true)
  24. BASE_FLAGS += -DHAVE_LIBLO
  25. endif
  26. # ---------------------------------------------------------------------------------------------------------------------
  27. # Set files to build
  28. OBJS_DSP = $(FILES_DSP:%=$(BUILD_DIR)/%.o)
  29. OBJS_UI = $(FILES_UI:%=$(BUILD_DIR)/%.o)
  30. # ---------------------------------------------------------------------------------------------------------------------
  31. # Set plugin binary file targets
  32. jack = $(TARGET_DIR)/$(NAME)$(APP_EXT)
  33. ladspa_dsp = $(TARGET_DIR)/$(NAME)-ladspa$(LIB_EXT)
  34. dssi_dsp = $(TARGET_DIR)/$(NAME)-dssi$(LIB_EXT)
  35. dssi_ui = $(TARGET_DIR)/$(NAME)-dssi/$(NAME)_ui$(APP_EXT)
  36. lv2 = $(TARGET_DIR)/$(NAME).lv2/$(NAME)$(LIB_EXT)
  37. lv2_dsp = $(TARGET_DIR)/$(NAME).lv2/$(NAME)_dsp$(LIB_EXT)
  38. lv2_ui = $(TARGET_DIR)/$(NAME).lv2/$(NAME)_ui$(LIB_EXT)
  39. vst = $(TARGET_DIR)/$(NAME)-vst$(LIB_EXT)
  40. # ---------------------------------------------------------------------------------------------------------------------
  41. # Handle plugins without UI
  42. ifneq ($(HAVE_DGL),true)
  43. dssi_ui =
  44. lv2_ui =
  45. DGL_LIBS =
  46. OBJS_UI =
  47. endif
  48. # ---------------------------------------------------------------------------------------------------------------------
  49. # all needs to be first
  50. all:
  51. # ---------------------------------------------------------------------------------------------------------------------
  52. # Common
  53. $(BUILD_DIR)/%.c.o: %.c
  54. -@mkdir -p $(BUILD_DIR)
  55. @echo "Compiling $<"
  56. @$(CC) $< $(BUILD_C_FLAGS) -c -o $@
  57. $(BUILD_DIR)/%.cpp.o: %.cpp
  58. -@mkdir -p $(BUILD_DIR)
  59. @echo "Compiling $<"
  60. @$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
  61. clean:
  62. rm -rf $(BUILD_DIR)
  63. rm -rf $(TARGET_DIR)/$(NAME) $(TARGET_DIR)/$(NAME)-* $(TARGET_DIR)/$(NAME).lv2
  64. # ---------------------------------------------------------------------------------------------------------------------
  65. $(BUILD_DIR)/DistrhoPluginMain_%.cpp.o: ../../distrho/DistrhoPluginMain.cpp
  66. -@mkdir -p $(BUILD_DIR)
  67. @echo "Compiling DistrhoPluginMain.cpp ($*)"
  68. @$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_PLUGIN_TARGET_$* -c -o $@
  69. $(BUILD_DIR)/DistrhoUIMain_%.cpp.o: ../../distrho/DistrhoUIMain.cpp
  70. -@mkdir -p $(BUILD_DIR)
  71. @echo "Compiling DistrhoUIMain.cpp ($*)"
  72. @$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_PLUGIN_TARGET_$* -c -o $@
  73. $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o: ../../distrho/DistrhoPluginMain.cpp
  74. -@mkdir -p $(BUILD_DIR)
  75. @echo "Compiling DistrhoPluginMain.cpp (JACK)"
  76. @$(CXX) $< $(BUILD_CXX_FLAGS) $(shell pkg-config --cflags jack) -DDISTRHO_PLUGIN_TARGET_JACK -c -o $@
  77. $(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.o: ../../distrho/DistrhoUIMain.cpp
  78. -@mkdir -p $(BUILD_DIR)
  79. @echo "Compiling DistrhoUIMain.cpp (DSSI)"
  80. @$(CXX) $< $(BUILD_CXX_FLAGS) $(shell pkg-config --cflags liblo) -DDISTRHO_PLUGIN_TARGET_DSSI -c -o $@
  81. # ---------------------------------------------------------------------------------------------------------------------
  82. # JACK
  83. jack: $(jack)
  84. $(jack): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o $(BUILD_DIR)/DistrhoUIMain_JACK.cpp.o ../../build/libdgl.a
  85. -@mkdir -p $(shell dirname $@)
  86. @echo "Creating JACK standalone for $(NAME)"
  87. @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(shell pkg-config --libs jack) -o $@
  88. # ---------------------------------------------------------------------------------------------------------------------
  89. # LADSPA
  90. ladspa: $(ladspa_dsp)
  91. $(ladspa_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_LADSPA.cpp.o
  92. -@mkdir -p $(shell dirname $@)
  93. @echo "Creating LADSPA plugin for $(NAME)"
  94. @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -o $@
  95. # ---------------------------------------------------------------------------------------------------------------------
  96. # DSSI
  97. dssi: $(dssi_dsp) $(dssi_ui)
  98. dssi_dsp: $(dssi_dsp)
  99. dssi_ui: $(dssi_ui)
  100. $(dssi_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_DSSI.cpp.o
  101. -@mkdir -p $(shell dirname $@)
  102. @echo "Creating DSSI plugin library for $(NAME)"
  103. @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -o $@
  104. $(dssi_ui): $(OBJS_UI) $(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.o ../../build/libdgl.a
  105. -@mkdir -p $(shell dirname $@)
  106. @echo "Creating DSSI UI for $(NAME)"
  107. @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(shell pkg-config --libs liblo) -o $@
  108. # ---------------------------------------------------------------------------------------------------------------------
  109. # LV2
  110. lv2_one: $(lv2)
  111. lv2_dsp: $(lv2_dsp)
  112. lv2_sep: $(lv2_dsp) $(lv2_ui)
  113. $(lv2): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.o $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.o ../../build/libdgl.a
  114. -@mkdir -p $(shell dirname $@)
  115. @echo "Creating LV2 plugin for $(NAME)"
  116. @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -o $@
  117. $(lv2_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.o
  118. -@mkdir -p $(shell dirname $@)
  119. @echo "Creating LV2 plugin library for $(NAME)"
  120. @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -o $@
  121. $(lv2_ui): $(OBJS_UI) $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.o ../../build/libdgl.a
  122. -@mkdir -p $(shell dirname $@)
  123. @echo "Creating LV2 plugin UI for $(NAME)"
  124. @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -o $@
  125. # ---------------------------------------------------------------------------------------------------------------------
  126. # VST
  127. vst: $(vst)
  128. ifeq ($(HAVE_DGL),true)
  129. $(vst): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_VST.cpp.o $(BUILD_DIR)/DistrhoUIMain_VST.cpp.o ../../build/libdgl.a
  130. else
  131. $(vst): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_VST.cpp.o
  132. endif
  133. -@mkdir -p $(shell dirname $@)
  134. @echo "Creating VST plugin for $(NAME)"
  135. @$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -o $@
  136. # ---------------------------------------------------------------------------------------------------------------------
  137. -include $(OBJS_DSP:%.o=%.d)
  138. ifeq ($(HAVE_DGL),true)
  139. -include $(OBJS_UI:%.o=%.d)
  140. endif
  141. # ---------------------------------------------------------------------------------------------------------------------