PWD              = $(shell pwd)
PATH            := $(PWD)/bin:$(PATH)
LD_LIBRARY_PATH := $(PWD)/lib:$(LD_LIBRARY_PATH)

STATIC = --disable-static

#
# only bother to build those libraries found in the src tree
#

src_subdirs = $(notdir $(wildcard src/[a-z]*))
installed_everything = $(foreach dir,$(src_subdirs),installed_$(dir))

all: $(installed_everything)

build_tree:
	echo srcs $(src_subdirs)
	mkdir -p $(foreach dir,$(src_subdirs),build/$(dir))

.configured_pbd: build_tree 
	if [ ! -f .configured_pbd ] ; then \
		(cd build/pbd; ../../src/pbd/configure $(STATIC) --prefix=$(PWD)); \
	fi
	touch $@

installed_pbd: .configured_pbd lib/libpbd.la

build/pbd/.libs/libpbd.la:
	(cd build/pbd; make)

lib/libpbd.la: build/pbd/.libs/libpbd.la
	(cd build/pbd; make install)

.configured_gtkmmext: installed_pbd
	if [ ! -f .configured_gtkmmext ] ; then \
		(cd build/gtkmmext; ../../src/gtkmmext/configure $(STATIC) --prefix=$(PWD));\
        fi
	touch $@

installed_gtkmmext: .configured_gtkmmext lib/libgtkmmext.la

build/gtkmmext/.libs/libgtkmmext.la:
	(cd build/gtkmmext; make)

lib/libgtkmmext.la: build/gtkmmext/.libs/libgtkmmext.la
	(cd build/gtkmmext; make install)


.configured_midi++: installed_pbd
	if [ ! -f .configured_midi ] ; then \
		(cd build/midi++; ../../src/midi++/configure $(STATIC) --prefix=$(PWD)); \
	fi
	touch $@

installed_midi++: .configured_midi++ lib/libmidi++.la

build/midi++/.libs/libmidi++.la:
	(cd build/midi++; make)

lib/libmidi++.la: build/midi++/.libs/libmidi++.la
	(cd build/midi++; make install)

.configured_guileconfig: installed_pbd
	if [ ! -f .configured_guileconfig ] ; then \
		(cd build/guileconfig; ../../src/guileconfig/configure $(STATIC) --prefix=$(PWD)); \
	fi
	touch $@

installed_guileconfig: .configured_guileconfig lib/libguileconfig.la

build/guileconfig/.libs/libguileconfig.la:
	(cd build/guileconfig; make)

lib/libguileconfig.la: build/guileconfig/.libs/libguileconfig.la
	(cd build/guileconfig; make install)

.configured_gtkwaveform:
	if [ ! -f .configured_gtkwaveform ] ; then \
		(cd build/gtkwaveform; ../../src/gtkwaveform/configure $(STATIC) --prefix=$(PWD)); \
        fi
	touch $@

installed_gtkwaveform: .configured_gtkwaveform lib/libgtkwaveform-0.2.la

build/gtkwaveform/libgtkwaveform/.libs/libgtkwaveform-0.2.la:
	(cd build/gtkwaveform; make)

lib/libgtkwaveform-0.2.la: build/gtkwaveform/libgtkwaveform/.libs/libgtkwaveform-0.2.la
	(cd build/gtkwaveform; make install)

refresh:
	-rm -f .configured_*

clean: refresh
	rm -rf build bin lib share include

