VST3_SDK_DIR=${ROOT_DIR}/../../../../VST_SDK/vst3sdk

CXX=clang++
CXXFLAGS= \
	-std=c++11 \
	-DRELEASE=1 \
	-I${ROOT_DIR} \
	-I${ROOT_DIR}/../src \
	-I${ROOT_DIR}/../../common/vst3 \
	-I${ROOT_DIR}/../../../include \
	-I${VST3_SDK_DIR} \
	-fPIC \
	-fvisibility=hidden \
	-O3
LDFLAGS= \
	-framework Cocoa \
	-shared

ROOT_DIR=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
SOURCES= \
	${ROOT_DIR}/../src/bw_example_fx_satur.c \
	\
	${ROOT_DIR}/../../common/vst3/entry.cpp \
	${ROOT_DIR}/../../common/vst3/plugin.cpp \
	${ROOT_DIR}/../../common/vst3/controller.cpp \
	\
	${VST3_SDK_DIR}/base/source/fobject.cpp \
	${VST3_SDK_DIR}/base/source/baseiids.cpp \
	${VST3_SDK_DIR}/base/source/fstreamer.cpp \
	${VST3_SDK_DIR}/base/source/fstring.cpp \
	${VST3_SDK_DIR}/base/source/fbuffer.cpp \
	${VST3_SDK_DIR}/base/source/updatehandler.cpp \
	${VST3_SDK_DIR}/base/thread/source/flock.cpp \
	${VST3_SDK_DIR}/pluginterfaces/base/coreiids.cpp \
	${VST3_SDK_DIR}/pluginterfaces/base/funknown.cpp \
	${VST3_SDK_DIR}/pluginterfaces/base/ustring.cpp \
	${VST3_SDK_DIR}/pluginterfaces/base/conststringtable.cpp \
	${VST3_SDK_DIR}/public.sdk/source/main/macmain.cpp \
	${VST3_SDK_DIR}/public.sdk/source/main/pluginfactory.cpp \
	${VST3_SDK_DIR}/public.sdk/source/main/moduleinit.cpp \
	${VST3_SDK_DIR}/public.sdk/source/common/commoniids.cpp \
	${VST3_SDK_DIR}/public.sdk/source/common/pluginview.cpp \
	${VST3_SDK_DIR}/public.sdk/source/vst/vstcomponentbase.cpp \
	${VST3_SDK_DIR}/public.sdk/source/vst/vstcomponent.cpp \
	${VST3_SDK_DIR}/public.sdk/source/vst/vstaudioeffect.cpp \
	${VST3_SDK_DIR}/public.sdk/source/vst/vstinitiids.cpp \
	${VST3_SDK_DIR}/public.sdk/source/vst/vstbus.cpp \
	${VST3_SDK_DIR}/public.sdk/source/vst/vsteditcontroller.cpp \
	${VST3_SDK_DIR}/public.sdk/source/vst/vstparameters.cpp

all: build/bw_example_fx_satur.vst3/Contents/Info.plist build/bw_example_fx_satur.vst3/Contents/PkgInfo build/bw_example_fx_satur.vst3/Contents/MacOS/bw_example_fx_satur

build/bw_example_fx_satur.vst3/Contents/MacOS/bw_example_fx_satur: build/tmp/bw_example_fx_satur-x86_64 build/tmp/bw_example_fx_satur-arm64
	mkdir -p build/bw_example_fx_satur.vst3/Contents/MacOS
	lipo -create -output $@ $^

build/bw_example_fx_satur.vst3/Contents/Info.plist: build/bw_example_fx_satur.vst3/Contents ${ROOT_DIR}/bw_example_fx_satur.vst3/Contents/Info.plist
	cp ${ROOT_DIR}/bw_example_fx_satur.vst3/Contents/Info.plist build/bw_example_fx_satur.vst3/Contents/Info.plist

build/bw_example_fx_satur.vst3/Contents/PkgInfo: build/bw_example_fx_satur.vst3/Contents ${ROOT_DIR}/bw_example_fx_satur.vst3/Contents/PkgInfo
	cp ${ROOT_DIR}/bw_example_fx_satur.vst3/Contents/PkgInfo build/bw_example_fx_satur.vst3/Contents/PkgInfo

build/bw_example_fx_satur.vst3/Contents:
	mkdir -p $@

build/tmp/bw_example_fx_satur-x86_64: ${SOURCES}
	mkdir -p build/tmp
	${CXX} $^ ${CXXFLAGS} ${LDFLAGS} -arch x86_64 -o $@

build/tmp/bw_example_fx_satur-arm64: ${SOURCES}
	mkdir -p build/tmp
	${CXX} $^ ${CXXFLAGS} ${LDFLAGS} -arch arm64 -o $@

install-user: all
	mkdir -p ${HOME}/Library/Audio/Plug-Ins/VST3
	@echo mkdir -p -m 0755 `find build/bw_example_fx_satur.vst3 -type d | sed s:^build/:${HOME}/Library/Audio/Plug-Ins/VST3/:g`
	@mkdir -p -m 0755 `find build/bw_example_fx_satur.vst3 -type d | sed s:^build/:${HOME}/Library/Audio/Plug-Ins/VST3/:g`
	@for f in `find build/bw_example_fx_satur.vst3 -type f | sed s:^build/::g`; do \
		d=`dirname $$f`; \
		echo install -m `[ -x build/$$f ] && echo 0755 || echo 0644` build/$$f ${HOME}/Library/Audio/Plug-Ins/VST3/$$d; \
		install -m `[ -x build/$$f ] && echo 0755 || echo 0644` build/$$f ${HOME}/Library/Audio/Plug-Ins/VST3/$$d; \
	done

install: all
	mkdir -p /Library/Audio/Plug-Ins/VST3
	@echo mkdir -p -m 0755 `find build/bw_example_fx_satur.vst3 -type d | sed s:^build/:/Library/Audio/Plug-Ins/VST3/:g`
	@mkdir -p -m 0755 `find build/bw_example_fx_satur.vst3 -type d | sed s:^build/:/Library/Audio/Plug-Ins/VST3/:g`
	@for f in `find build/bw_example_fx_satur.vst3 -type f | sed s:^build/::g`; do \
		d=`dirname $$f`; \
		echo install -m `[ -x build/$$f ] && echo 0755 || echo 0644` build/$$f /Library/Audio/Plug-Ins/VST3/$$d; \
		install -m `[ -x build/$$f ] && echo 0755 || echo 0644` build/$$f /Library/Audio/Plug-Ins/VST3/$$d; \
	done

clean:
	rm -fr build/bw_example_fx_satur.vst3 build/tmp