# Bentigte Kommandos und Dateien

CXX := g++-3.0 -fno-exceptions -fno-rtti -O6
export CXX

PUMA_DIR     := /proj/i4bs/tools/Puma
SOSP_DIR     := /proj/i4bs/tools/Sosp

SOSP         := $(SOSP_DIR)/sosp
EXLINE_CMD   := $(SOSP_DIR)/scripts/lines_gt 5
EXLINE_INFO  := Inlining/exline_info
EXCLUDE_CMD  := $(SOSP_DIR)/scripts/excluder
EXCLUDE_INFO := Inlining/exclude_info

LIB_FILES    := $(shell find Source -name "*.cc") \
                $(shell find Include -name "*.h")

# Regeln

test% : test%.cc libOSE.a
	@echo Compiling test program $@
	@$(CXX) -IInclude-SOSP -IInlining -D__inlining__  -nostartfiles \
        -o $@ $@.cc -L. -lOSE -static

libOSE.a : puma.config $(LIB_FILES)
	@rm -rf Include-SOSP Source-SOSP libOSE.a
	@echo Splitting
	@export PUMA_CONFIG=puma.config && \
	$(SOSP) -p -p Source Source-SOSP -p Include Include-SOSP -v1 \
	-IInclude -S $(EXLINE_INFO) $(EXCLUDE_INFO) -H exline_set.h Source && \
	export EXLINE_INFO=$(EXLINE_INFO) && \
	$(EXLINE_CMD) | sed 's=\([0-9]*\)=#define __exline_\1__=g;' > \
	Inlining/exline_set.h && \
	$(EXCLUDE_CMD) $(EXCLUDE_INFO) | \
	sed 's=\([0-9]*\)=#define __exclude_\1__=g;' >> Inlining/exline_set.h
	@cd Source-SOSP && make -f ../Makefile.compile

puma.config :
	@$(PUMA_DIR)/Runtime/Binaries/pumag++conf.pl puma.config "$(CXX)"

clean :
	@echo Cleaning up
	@rm -rf Include-SOSP Source-SOSP libOSE.a test? *~ puma.config \
	Inlining/*

.PHONY: clean
