#!/usr/bin/make -f
# Makefile for native-plugins #
# --------------------------- #
# Created by falkTX
#

CWD=..
CWDE=..
MODULENAME=native-plugins
include ../modules/Makefile.mk

# ---------------------------------------------------------------------------------------------------------------------

BUILD_C_FLAGS   += -I..
BUILD_CXX_FLAGS += -I.. -I$(CWD)/modules

# ---------------------------------------------------------------------------------------------------------------------
# Set targets

TARGETS = $(MODULEDIR)/$(MODULENAME).a

BUNDLES = \
	$(MODULEDIR)/$(MODULENAME)_audiogain.a \
	$(MODULEDIR)/$(MODULENAME)_files.a \
	$(MODULEDIR)/$(MODULENAME)_miditools.a

# ---------------------------------------------------------------------------------------------------------------------
# Set objects

OBJS = \
	$(OBJDIR)/_all.c.o \
	$(OBJDIR)/_data.cpp.o \
	$(OBJDIR)/audio-gain.c.o \
	$(OBJDIR)/bypass.c.o \
	$(OBJDIR)/cv-to-audio.c.o \
	$(OBJDIR)/lfo.c.o \
	$(OBJDIR)/midi-channel-filter.c.o \
	$(OBJDIR)/midi-channel-ab.c.o \
	$(OBJDIR)/midi-channelize.c.o \
	$(OBJDIR)/midi-gain.c.o \
	$(OBJDIR)/midi-join.c.o \
	$(OBJDIR)/midi-split.c.o \
	$(OBJDIR)/midi-to-cv.c.o \
	$(OBJDIR)/midi-through.c.o \
	$(OBJDIR)/midi-transpose.c.o \
	$(OBJDIR)/audio-file.cpp.o \
	$(OBJDIR)/bigmeter.cpp.o \
	$(OBJDIR)/midi-file.cpp.o \
	$(OBJDIR)/midi-pattern.cpp.o \
	$(OBJDIR)/notes.cpp.o

OBJS_audiogain = \
	$(OBJDIR)/audio-gain.c.o

OBJS_files = \
	$(OBJDIR)/audio-file.cpp.o \
	$(OBJDIR)/midi-file.cpp.o

OBJS_miditools = \
	$(OBJDIR)/midi-channel-filter.c.o \
	$(OBJDIR)/midi-channel-ab.c.o \
	$(OBJDIR)/midi-channelize.c.o \
	$(OBJDIR)/midi-gain.c.o \
	$(OBJDIR)/midi-join.c.o \
	$(OBJDIR)/midi-split.c.o \
	$(OBJDIR)/midi-transpose.c.o

# ---------------------------------------------------------------------------------------------------------------------
# Include external plugins, if present

ifeq ($(EXTERNAL_PLUGINS),true)
ifneq (,$(wildcard external/Makefile.mk2))
include external/Makefile.mk2
else
$(error External plugins build requested but submodule not present, cannot build)
endif
endif

# ---------------------------------------------------------------------------------------------------------------------

all: $(TARGETS)
bundles: $(BUNDLES)

# ---------------------------------------------------------------------------------------------------------------------

clean:
	rm -f $(OBJDIR)/*.o $(MODULEDIR)/$(MODULENAME)*.a $(ZYN_UI_FILES_H) $(ZYN_UI_FILES_CPP) $(TARGETS)

debug:
	$(MAKE) DEBUG=true

# ---------------------------------------------------------------------------------------------------------------------

$(MODULEDIR)/$(MODULENAME).a: $(OBJS)
	-@mkdir -p $(MODULEDIR)
	@echo "Creating $(MODULENAME).a"
	@rm -f $@
	@$(AR) crs $@ $^

$(MODULEDIR)/$(MODULENAME)_audiogain.a: $(OBJS_audiogain)
	-@mkdir -p $(MODULEDIR)
	@echo "Creating $(MODULENAME)_audiogain.a"
	@rm -f $@
	@$(AR) crs $@ $^

$(MODULEDIR)/$(MODULENAME)_files.a: $(OBJS_files)
	-@mkdir -p $(MODULEDIR)
	@echo "Creating $(MODULENAME)_files.a"
	@rm -f $@
	@$(AR) crs $@ $^

$(MODULEDIR)/$(MODULENAME)_miditools.a: $(OBJS_miditools)
	-@mkdir -p $(MODULEDIR)
	@echo "Creating $(MODULENAME)_miditools.a"
	@rm -f $@
	@$(AR) crs $@ $^

# ---------------------------------------------------------------------------------------------------------------------

$(OBJDIR)/%.c.o: %.c
	-@mkdir -p $(OBJDIR)
	@echo "Compiling $<"
	@$(CC) $< $(BUILD_C_FLAGS) -c -o $@

$(OBJDIR)/%.cpp.o: %.cpp
	-@mkdir -p $(OBJDIR)
	@echo "Compiling $<"
	@$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@

# ---------------------------------------------------------------------------------------------------------------------

-include $(OBJS:%.o=%.d)

# ---------------------------------------------------------------------------------------------------------------------
