#
# Usage:
#    make -f makemakefiles
# or, for Microsoft Visual C++:
#    nmake -f makemakefiles MMOPT=-n
#

CONFIGNAME = gcc-debug

ifeq ($(MODE),release)
        CONFIGNAME=gcc-release
endif

MAKEMAKE=opp_makemake $(MMOPT)

all:
	cd examples/lmac && $(MAKEMAKE) -f -o lmac -O out -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules
	cd examples/ieee802154a && $(MAKEMAKE) -f -o ieee802154a -O out -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules
	cd tests/radioState && $(MAKEMAKE) -f -o radioState -O out -u CMDENV -I../../src/base/messages -I../../src/base/modules -I../../src/base/phyLayer -I../../src/base/connectionManager -I../../src/base/utils -I../testUtils -L../../out/$(CONFIGNAME)/tests/testUtils -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules -lmiximtestUtils
	cd examples/analogueModels && $(MAKEMAKE) -f -o analogueModels -O out -I../../src/modules/phy -I../../src/modules/messages -I../../src/modules/mac -I../../src/base/modules -I../../src/base/messages -I../../src/base/phyLayer -I../../src/modules/analogueModel -I../../src/base/connectionManager -I../../src/base/utils -I../../src/modules/utility -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules
	cd examples/bmac && $(MAKEMAKE) -f -o bmac -O out -L../../out/$(CONFIGNAME)/tests/testUtils -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/tests/power/utils -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules
	cd tests/channelInfo && $(MAKEMAKE) -f -o channelInfo -O out -u CMDENV -I../../src/base/messages -I../../src/base/modules -I../../src/base/phyLayer -I../../src/base/connectionManager -I../../src/base/utils -I../testUtils -L../../out/$(CONFIGNAME)/tests/testUtils -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules -lmiximtestUtils
	cd examples/BaseMoBANNetwork && $(MAKEMAKE) -f -o BaseMoBANNetwork -O out -L../../out/$(CONFIGNAME)/tests/testUtils -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/tests/power/utils -L../../out/$(CONFIGNAME)/src/modules
	cd tests/power/deviceTestAccts && $(MAKEMAKE) -f -o deviceTestAccts -O out -u CMDENV -L../../../out/$(CONFIGNAME)/src/base -L../../../out/$(CONFIGNAME)/src/modules -L../../../out/$(CONFIGNAME)/tests/power/utils -lpowerTestUtils -lmiximbase -lmiximmodules
	cd examples/ieee802154Narrow && $(MAKEMAKE) -f -o ieee802154Narrow -O out -I../../src/base/phyLayer -I../../src/base/modules -I../../src/base/messages -I../../src/base/connectionManager -I../../src/base/utils -I../../src/modules/utility -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules
	cd tests/power/Nic80211Test && $(MAKEMAKE) -f -o Nic80211Test -O out -L../../../out/$(CONFIGNAME)/src/base -L../../../out/$(CONFIGNAME)/tests/power/utils -L../../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules
	cd examples/CSMAMac && $(MAKEMAKE) -f -o CSMAMac -O out -I../../src/base/phyLayer -I../../src/base/messages -I../../src/base/modules -I../../src/base/connectionManager -I../../src/base/utils -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules
	cd examples/Mac80211 && $(MAKEMAKE) -f -o Mac80211 -O out -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules
	cd tests/power/deviceTestMulti && $(MAKEMAKE) -f -o deviceTestMulti -O out -L../../../out/$(CONFIGNAME)/tests/testUtils -L../../../out/$(CONFIGNAME)/src/base -L../../../out/$(CONFIGNAME)/tests/power/utils -L../../../out/$(CONFIGNAME)/src/modules -lpowerTestUtils -lmiximbase -lmiximmodules
	cd tests/power && $(MAKEMAKE) -f --nolink -O out -d deviceTestAccts -d Nic80211Test -d deviceTestMulti -d deviceTestAll -d deviceTest -d utils -L../../out/$(CONFIGNAME)/tests/testUtils -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/tests/power/utils -L../../out/$(CONFIGNAME)/src/modules
	cd tests/mapping && $(MAKEMAKE) -f -o mapping -O out -u CMDENV -I../../src/base/messages -I../../src/base/modules -I../../src/base/phyLayer -I../../src/base/connectionManager -I../../src/base/utils -L../../out/$(CONFIGNAME)/tests/testUtils -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/tests/power/utils -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules -lmiximtestUtils
	cd tests/nicTest && $(MAKEMAKE) -f -o nicTest -O out -u CMDENV -I../../src/modules/phy -I../../src/modules/messages -I../../src/base/messages -I../../src/base/phyLayer -I../../src/modules/mac -I../../src/base/modules -I../../src/modules/analogueModel -I../../src/base/connectionManager -I../../src/base/utils -I../../src/modules/utility -L../../out/$(CONFIGNAME)/tests/testUtils -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/tests/power/utils -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules -lmiximtestUtils
	$(MAKEMAKE) -f --nolink -O out -d tests -d examples -d src/base -d src/modules -Xinet -Xout -L./out/$(CONFIGNAME)/src/base -L./out/$(CONFIGNAME)/src/modules
	cd examples/baseNetwork && $(MAKEMAKE) -f -o baseNetwork -O out -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules
	cd tests && $(MAKEMAKE) -f --nolink -O out -d radioState -d channelInfo -d power -d mapping -d nicTest -d testUtils -d coord -d basePhyLayer -d decider -d connectionManager -d baseMobility -d blackboard -d traci -L../out/$(CONFIGNAME)/tests/testUtils -L../out/$(CONFIGNAME)/src/base -L../out/$(CONFIGNAME)/tests/power/utils -L../out/$(CONFIGNAME)/src/modules
	cd tests/power/deviceTestAll && $(MAKEMAKE) -f -o deviceTestAll -O out -u CMDENV -L../../../out/$(CONFIGNAME)/tests/testUtils -L../../../out/$(CONFIGNAME)/src/base -L../../../out/$(CONFIGNAME)/tests/power/utils -L../../../out/$(CONFIGNAME)/src/modules -lpowerTestUtils -lmiximbase -lmiximmodules
	cd tests/testUtils && $(MAKEMAKE) -f --make-so -o miximtestUtils -O out -I../../src/base/modules -I../../src/base/phyLayer -I../../src/base/messages -I../../src/base/connectionManager -I../../src/base/utils -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/tests/power/utils -L../../out/$(CONFIGNAME)/src/modules
	cd examples/WSNRouting && $(MAKEMAKE) -f -o WSNRouting -O out -L../../out/$(CONFIGNAME)/tests/testUtils -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/tests/power/utils -L../../out/$(CONFIGNAME)/src/modules
	cd examples && $(MAKEMAKE) -f --nolink -O out -d lmac -d ieee802154a -d analogueModels -d bmac -d BaseMoBANNetwork -d ieee802154Narrow -d CSMAMac -d Mac80211 -d baseNetwork -d WSNRouting -d multiConnectionManager -d traci_launchd -d ieee80211p -d obstacles -d twoRayInterference -d veins -L../out/$(CONFIGNAME)/tests/testUtils -L../out/$(CONFIGNAME)/src/base -L../out/$(CONFIGNAME)/tests/power/utils -L../out/$(CONFIGNAME)/src/modules
	cd src/base && $(MAKEMAKE) -f --deep --make-so -o miximbase -O out -L../../out/$(CONFIGNAME)/src/modules
	cd examples/multiConnectionManager && $(MAKEMAKE) -f -o multiConnectionManager -O out -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules
	cd tests/coord && $(MAKEMAKE) -f -o coord -O out -u CMDENV -I../../src/base/modules -I../../src/base/phyLayer -I../../src/base/messages -I../../src/base/connectionManager -I../../src/base/utils -I../testUtils -L../../out/$(CONFIGNAME)/tests/testUtils -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/tests/power/utils -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules -lmiximtestUtils
	cd tests/power/deviceTest && $(MAKEMAKE) -f -o deviceTest -O out -u CMDENV -L../../../out/$(CONFIGNAME)/tests/testUtils -L../../../out/$(CONFIGNAME)/src/base -L../../../out/$(CONFIGNAME)/tests/power/utils -L../../../out/$(CONFIGNAME)/src/modules -lpowerTestUtils -lmiximbase -lmiximmodules
	cd tests/basePhyLayer && $(MAKEMAKE) -f -o basePhyLayer -O out -u CMDENV -I../../src/base/modules -I../../src/base/messages -I../../src/base/phyLayer -I../../src/base/connectionManager -I../../src/base/utils -I../testUtils -L../../out/$(CONFIGNAME)/tests/testUtils -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/tests/power/utils -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules -lmiximtestUtils
	cd tests/decider && $(MAKEMAKE) -f -o decider -O out -u CMDENV -I../../src/modules/phy -I../../src/modules/messages -I../../src/modules/mac -I../../src/base/messages -I../../src/base/modules -I../../src/base/phyLayer -I../../src/modules/analogueModel -I../../src/base/connectionManager -I../../src/base/utils -I../testUtils -I../../src/modules/utility -L../../out/$(CONFIGNAME)/tests/testUtils -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/tests/power/utils -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules -lmiximtestUtils
	cd tests/connectionManager && $(MAKEMAKE) -f -o connectionManager -O out -u CMDENV -I../../src/base/phyLayer -I../../src/base/modules -I../../src/base/messages -I../../src/base/connectionManager -I../../src/base/utils -I../testUtils -L../../out/$(CONFIGNAME)/tests/testUtils -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/tests/power/utils -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules -lmiximtestUtils
	cd tests/power/utils && $(MAKEMAKE) -f --make-so -o powerTestUtils -O out -I../../../src/base/messages -I../../../src/base/phyLayer -I../../../src/base/modules -I../../../src/modules/power/battery -I../../../src/base/connectionManager -I../../../src/base/utils -L../../../out/$(CONFIGNAME)/tests/testUtils -L../../../out/$(CONFIGNAME)/src/base -L../../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules
	cd tests/baseMobility && $(MAKEMAKE) -f -o baseMobility -O out -u CMDENV -I../../src/base/messages -I../../src/base/phyLayer -I../../src/base/modules -I../../src/base/connectionManager -I../../src/base/utils -L../../out/$(CONFIGNAME)/tests/testUtils -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/tests/power/utils -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules -lmiximtestUtils
	cd src/modules && $(MAKEMAKE) -f --deep --make-so -o miximmodules -O out -I../base/modules -I../base/messages -I../base/phyLayer -I../base/connectionManager -I../base/utils -L../../out/$(CONFIGNAME)/src/base -lmiximbase
	cd src && $(MAKEMAKE) -f --nolink -O out -d base -d modules -L../out/$(CONFIGNAME)/src/base -L../out/$(CONFIGNAME)/src/modules
	cd tests/blackboard && $(MAKEMAKE) -f -o blackboard -O out -u CMDENV -I../../src/base/messages -I../../src/base/phyLayer -I../../src/base/modules -I../../src/base/connectionManager -I../../src/base/utils -L../../out/$(CONFIGNAME)/tests/testUtils -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/tests/power/utils -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules -lmiximtestUtils
	cd tests/traci && $(MAKEMAKE) -f -o traci -O out -u CMDENV -I../../src/base -I../../src/modules -I../../src/modules/phy -I../../src/modules/messages -I../../src/modules/mac -I../../src/base/messages -I../../src/base/modules -I../../src/base/phyLayer -I../../src/modules/analogueModel -I../../src/base/connectionManager -I../../src/base/utils -I../testUtils -I../../src/modules/utility -L../../out/$(CONFIGNAME)/tests/testUtils -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/tests/power/utils -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules -lmiximtestUtils
	cd examples/traci_launchd && $(MAKEMAKE) -f -o traci_launchd -O out -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules
	cd examples/ieee80211p && $(MAKEMAKE) -f -o ieee80211p -O out -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules
	cd examples/obstacles && $(MAKEMAKE) -f -o obstacles -O out -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules
	cd examples/twoRayInterference && $(MAKEMAKE) -f -o twoRayInterference -O out -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules
	cd examples/veins && $(MAKEMAKE) -f -o veins -O out -L../../out/$(CONFIGNAME)/src/base -L../../out/$(CONFIGNAME)/src/modules -lmiximbase -lmiximmodules
