snp_compiler/makefile

120 lines
2.7 KiB
Makefile

#
# baut das komplette Scanner Projekt
#
AUTOMATDIR = Automat
BUFFERDIR = Buffer
SYMBOLTABLEDIR = Symboltable
SCANNERDIR = Scanner
PARSERDIR = Parser
SHAREDLIB = sharedlib
INCLUDES = includes
all: empty-dirs automatLib bufferLib symboltableLib scanner
@echo "target all"
run:
@echo "Running ScannerTest\n\n=====BEGIN====="
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:sharedlib Scanner/debug/ScannerTest testfiles/Scanner/testFile
@echo "=====END====="
clean:
rm -rf $(AUTOMATDIR)/lib/*
rm -rf $(BUFFERDIR)/lib/*
rm -rf $(SYMBOLTABLEDIR)/lib/*
rm -rf $(SHAREDLIB)/*
rm -rf $(SCANNERDIR)/debug/*
rm -rf $(AUTOMATDIR)/debug/*
rm -rf $(BUFFERDIR)/debug/*
rm -rf $(SYMBOLTABLEDIR)/debug/*
empty-dirs:
test -d $(AUTOMATDIR)/lib || mkdir $(AUTOMATDIR)/lib
test -d $(AUTOMATDIR)/debug || mkdir $(AUTOMATDIR)/debug
test -d $(BUFFERDIR)/lib || mkdir $(BUFFERDIR)/lib
test -d $(BUFFERDIR)/debug || mkdir $(BUFFERDIR)/debug
test -d $(SYMBOLTABLEDIR)/lib || mkdir $(SYMBOLTABLEDIR)/lib
test -d $(SYMBOLTABLEDIR)/debug || mkdir $(SYMBOLTABLEDIR)/debug
test -d $(SCANNERDIR)/lib || mkdir $(SCANNERDIR)/lib
test -d $(SCANNERDIR)/debug || mkdir $(SCANNERDIR)/debug
test -d $(SCANNERDIR)/lib || mkdir $(SCANNERDIR)/lib
test -d $(SHAREDLIB) || mkdir $(SHAREDLIB)
parser:
$(MAKE) -C $(PARSERDIR) parser
scanner:
$(MAKE) -C $(SCANNERDIR) makeTestScanner
automatLib:
$(MAKE) -C $(AUTOMATDIR) AutomatLib
bufferLib:
$(MAKE) -C $(BUFFERDIR) BufferLib
# scannerLib wird erst fuer den Parser Teil benoetigt
#scannerLib:
#$(MAKE) -C $(SCANNERDIR) ScannerLib
symboltableLib:
$(MAKE) -C $(SYMBOLTABLEDIR) SymboltableLib
# stand-alone compiling and testing of some modules
testAutomat:
$(MAKE) -C $(AUTOMATDIR) makeTestAutomat
testBuffer:
$(MAKE) -C $(BUFFERDIR) makeTestBuffer
testSymtab:
$(MAKE) -C $(SYMBOLTABLEDIR) makeTestSymboltable
runTestAutomat:
@echo "Running runTestAutomat\n\n=====BEGIN====="
Automat/debug/AutomatTest
@echo "=====END====="
runTestBuffer:
@echo "Running runTestBuffer\n\n=====BEGIN====="
Buffer/debug/BufferTest testfiles/Scanner/testFile
@echo "=====END====="
runTestSymtab:
@echo "Running runTestSymtab\n\n=====BEGIN====="
Symboltable/debug/SymboltableTest
@echo "=====END====="
# compile object files
automatObj:
$(MAKE) -C $(AUTOMATDIR) AutomatLibTarget
bufferObj:
$(MAKE) -C $(BUFFERDIR) BufferLibTarget
symboltableObj:
$(MAKE) -C $(SYMBOLTABLEDIR) SymboltableLibTarget
scannerObj:
$(MAKE) -C $(SCANNERDIR) ScannerLibTarget
# build the scannerLib
scannerLib: empty-dirs automatObj bufferObj symboltableObj scannerObj
g++ -shared -o $(SHAREDLIB)/libScanner.so \
$(AUTOMATDIR)/lib/Automat.o \
$(BUFFERDIR)/lib/Buffer.o \
$(SYMBOLTABLEDIR)/lib/Symboltable.o \
$(SCANNERDIR)/lib/Scanner.o \
$(SCANNERDIR)/lib/Token.o