CP=cp
RM=rm

all: cli native

native: build/native_driver/Cadencii.exe

cli: build/cli_driver/Cadencii.exe

first:
	perl first.pl

build/cli_driver/Cadencii.exe: first build/cli_driver/vstildr.dll build/cli_driver/vstidrv.dll
	cd Cadencii && $(MAKE) clean CP=$(CP) RM=$(RM)
	cd Cadencii && $(MAKE) CP=$(CP) RM=$(RM)
	cp Cadencii/Cadencii.exe build/cli_driver/Cadencii.exe
	cp Cadencii/Boare.Lib.AppUtil.dll build/cli_driver/Boare.Lib.AppUtil.dll
	cp Cadencii/Boare.Lib.Media.dll build/cli_driver/Boare.Lib.Media.dll
	cp Cadencii/Boare.Lib.Vsq.dll build/cli_driver/Boare.Lib.Vsq.dll
	cp Cadencii/bocoree.dll build/cli_driver/bocoree.dll

build/native_driver/Cadencii.exe: first build/cli_driver/vstildr.dll build/native_driver/vstidrv.dll
	cd Cadencii && $(MAKE) clean CP=$(CP) RM=$(RM)
	cd Cadencii && $(MAKE) OPT=-define:UNMANAGED_VSTIDRV CP=$(CP) RM=$(RM)
	cp Cadencii/Cadencii.exe build/native_driver/Cadencii.exe
	cp Cadencii/Boare.Lib.AppUtil.dll build/native_driver/Boare.Lib.AppUtil.dll
	cp Cadencii/Boare.Lib.Media.dll build/native_driver/Boare.Lib.Media.dll
	cp Cadencii/Boare.Lib.Vsq.dll build/native_driver/Boare.Lib.Vsq.dll
	cp Cadencii/bocoree.dll build/native_driver/bocoree.dll

build/native_driver/vstidrv.dll: build/native_driver/vstildr.dll
	cd vstidrv3 && $(MAKE)
	cp vstidrv3/vstidrv.dll build/native_driver/vstidrv.dll

build/native_driver/vstildr.dll:
	cd vstildr && $(MAKE)
	cp vstildr/vstildr.dll build/native_driver/vstildr.dll

build/cli_driver/vstidrv.dll: build/cli_driver/vstildr.dll
	cd vstidrv3 && $(MAKE) -f makefile.cli
	cp vstidrv3/vstidrv.dll build/cli_driver/vstidrv.dll

build/cli_driver/vstildr.dll:
	cd vstildr && $(MAKE)
	cp vstildr/vstildr.dll build/cli_driver/vstildr.dll

clean:
	$(RM) build/cli_driver/Cadencii.exe build/native_driver/Cadencii.exe
	cd Cadencii && $(MAKE) clean CP=$(CP) RM=$(RM)
	cd vstidrv3 && $(MAKE) clean CP=$(CP) RM=$(RM)
	cd vstildr && $(MAKE) clean CP=$(CP) RM=$(RM)
	cd bocoree && $(MAKE) clean CP=$(CP) RM=$(RM)
	cd Boare.Lib.AppUtil && $(MAKE) clean CP=$(CP) RM=$(RM)
	cd Boare.Lib.Media && $(MAKE) clean CP=$(CP) RM=$(RM)
	cd Boare.Lib.Vsq && $(MAKE) clean CP=$(CP) RM=$(RM)
