aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 83294c40b7e3f0af8a55389de7cc9d7c989a5773 (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
52
LIBBU:=$(foreach f,paramproc.h paramproc.cpp fstring.h fstring.cpp exceptions.h exceptions.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,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):
	mkdir -p src/bu
	wget -nv -Psrc/bu http://svn.xagasoft.com/libbu++/trunk/$@

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,%,$@) $<