$(PREFIX): default

.PHONY: default installheaders fixheaders installdocs force

$(INCLUDE)/%.h: %.h
	$(INSTALL) $< $@

$(INCLUDE)/$(TLMSUBDIR)/%.h: %.h
	$(INSTALL) $< $@

$(DOC)/%.pdf: %.pdf
	$(INSTALL) $< $@

$(EXAMPLES)/$(EXAMPLEDIR)/%: %
	$(INSTALL) $< $@

$(EXAMPLES)/supplementary/$(EXAMPLEDIR)/%: %
	$(INSTALL) $< $@

installheaders: $(HDRS:%=$(INCLUDE)/%)

installdocs:    $(DOCS:%=$(DOC)/%)


installexample: $(EXAMPLESRC:%=$(EXAMPLES)/$(EXAMPLEDIR)/%)

installsuppl: $(EXAMPLESRC:%=$(EXAMPLES)/supplementary/$(EXAMPLEDIR)/%)

installsuppl_no_makefile: $(EXAMPLESRC:%=$(EXAMPLES)/supplementary/$(EXAMPLEDIR)/%)

tlmsubdir: $(EXAMPLESRC:%=$(INCLUDE)/$(TLMSUBDIR)/%)

ifndef CUSTOM_MAKEFILES
installexample: Makefile.dist
	$(INSTALL) Makefile.dist $(EXAMPLES)/$(EXAMPLEDIR)/Makefile
else
installexample: force
installexample: $(CUSTOM_MAKEFILES:%=$(EXAMPLES)/$(EXAMPLEDIR)/%)
endif

installsuppl: Makefile.dist
	$(INSTALL) Makefile.dist $(EXAMPLES)/supplementary/$(EXAMPLEDIR)/Makefile

force: ; 
Makefile.dist: force
ifndef CUSTOM_MAKEFILES
	@echo "#SYSTEMC=/path-to-systemc-2.1.v1" > $@
	@echo "#SCV=/path-to-scv-01.00-p001-sc2.1v" >> $@
	@echo "#PERF_MONITOR=true" >> $@
	@echo "#TRACE_MONITOR=true" >> $@
	@echo "# use one of these" >> $@
	@echo "#TARGET_ARCH = linux" >> $@
	@echo "#TARGET_ARCH = gccsparcOS5" >> $@
	@echo "# use one of these if using SystemC 2.0.1 or SystemC 2.1v1" >> $@
	@echo "#SYSC_VER = SYSTEMC201" >> $@
	@echo "#SYSC_VER = SYSTEMC21V1" >> $@
	@echo "" >> $@
	@echo "TL_SC=$(PREFIX)" >> $@
	@echo "SRC_EXT=$(SRC_EXT)" >> $@
	@echo "EXEC=$(EXAMPLEDIR)" >> $@
	@echo "" >> $@
	@echo "INCLUDEPATH=-I. -I\$$(SCV)/include -I\$$(SYSTEMC)/include -I\$$(TL_SC)/include" >> $@
	@echo "" >> $@
	@echo "CC = g++" >> $@
	@echo "opt: OPT = -O" >> $@
	@echo "debug: OPT = -g" >> $@
	@echo "FLAGS = -Wall -Wno-deprecated" >> $@
	@echo "ifdef PERF_MONITOR" >> $@
	@echo "MONFLAG1 = -DPERF_MONITOR" >> $@
	@echo "endif" >> $@
	@echo "ifdef TRACE_MONITOR" >> $@
	@echo "MONFLAG2 = -DTRACE_MONITOR" >> $@
	@echo "endif" >> $@
	@echo "ifdef SCV" >> $@
	@echo "SCVLINK=-lscv" >> $@
	@echo "SCVFLAG=-DSCV" >> $@
	@echo "endif" >> $@
	@echo "ifdef SYSC_VER" >> $@
	@echo "SYSC_V_FLAG=-D\$$(SYSC_VER)" >> $@
	@echo "endif" >> $@
	@echo "" >> $@
	@echo ".cpp.o:" >> $@
	@echo "	\$$(CC) \$$(OPT) \$$(FLAGS) \$$(MONFLAG1) \$$(MONFLAG2) \$$(SCVFLAG) \$$(SYSC_V_FLAG) \$$(INCLUDEPATH) -c \$$<" >> $@
	@echo ".cc.o:" >> $@
	@echo "	\$$(CC) \$$(OPT) \$$(FLAGS) \$$(MONFLAG1) \$$(MONFLAG2) \$$(SCVFLAG) \$$(SYSC_V_FLAG) \$$(INCLUDEPATH) -c \$$<" >> $@
	@echo "" >> $@
	@echo "SOURCES=\$$(wildcard *.\$$(SRC_EXT))" >> $@
	@echo "OBJECTS=\$$(SOURCES:%.\$$(SRC_EXT)=%.o)" >> $@
	@echo "" >> $@
	@echo "LDPATH += -L\$$(SCV)/lib-\$$(TARGET_ARCH) -L\$$(SYSTEMC)/lib-\$$(TARGET_ARCH)" >> $@
	@echo "LDLIBS +=  \$$(SCVLINK) -lsystemc -lm" >> $@
	@echo "" >> $@
	@echo "debug | opt : \$$(EXEC)" >> $@
	@echo "\$$(EXEC): \$$(OBJECTS) Makefile" >> $@
	@echo "	\$$(CC) \$$(OPT) -o \$$@ \$$(OBJECTS) \$$(LDPATH) \$$(LDLIBS)" >> $@
	@echo "" >> $@
	@echo "clean:" >> $@
	@echo "	- rm *.o" >> $@
	@echo "	- rm \$$(EXEC)" >> $@
endif


clean:
	-rm Makefile.dist

default: installheaders installdocs
