aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: c1cf095f4a264afd088532c19dfa5a6cf6cbfa3d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
LIBBU:=$(foreach f,paramproc.h paramproc.cpp fstring.h fstring.cpp exceptionbase.cpp exceptionbase.h archive.cpp archive.h archival.cpp archival.h plugger.h plugger.cpp singleton.h hash.cpp hash.h file.h file.cpp stream.h stream.cpp list.h list.cpp set.h set.cpp trace.h trace.cpp util.h fbasicstring.cpp fbasicstring.h sharedcore.cpp sharedcore.h archivebase.cpp archivebase.h util.h util.cpp,src/$f)
SRC:=$(sort $(wildcard src/*.cpp) $(patsubst src/%,src/bu/%,$(filter %.cpp,$(LIBBU))))
OBJ:=src/build.yy.o src/build.tab.o $(patsubst %.cpp,%.o,$(SRC)) 
REV:=$(shell svn info | grep "Revision" | cut -d\  -f2)
VER:=r$(REV)
PKG:=build-$(VER).tar.bz2

.PHONY: all extern clean distclean package
# .SILENT:

all: extern build

package: clean distclean extern $(PKG)

$(PKG):
	mkdir build-$(VER)
	mkdir build-$(VER)/src
	mkdir build-$(VER)/src/bu
	cp -a src/*.{cpp,h,y,l} build-$(VER)/src
	cp -a src/bu/*.{cpp,h} build-$(VER)/src/bu
	cp -a build.conf build-$(VER)
	cp -a Makefile.slim build-$(VER)/Makefile
	tar -c build-$(VER) | bzip2 -9 > $(PKG)
	rm -Rf build-$(VER)

clean:
	-rm -Rf build $(OBJ)

distclean:
	-rm -Rf $(LIBBU)
	-rm -Rf src/bu

extern: $(LIBBU)

$(LIBBU):
	if [ ! -f src/bu/$@ ]; then mkdir -p src/bu; wget -nv -Psrc/bu http://svn.xagasoft.com/libbu++/trunk/$@; fi

build: src/build.yy.c src/build.tab.c $(OBJ)
	g++ -ggdb -ldl -o build $(OBJ)

%.o: %.cpp
	g++ -ggdb -Isrc -c -o $@ $<

%.o: %.c
	g++ -ggdb -Isrc -c -o $@ $<

%.yy.c: %.l
	flex --bison-bridge --bison-locations -o $@ $<

%.tab.c: %.y
	bison -v -b$(patsubst %.tab.c,%,$@) $<