blob: 823c68f6bb9752f9111eef76196c81825dd23b99 (
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
ifeq ($(ARCH),)
ARCH=x64
endif
UNAME:=$(shell uname)
ifeq ($(UNAME),Linux)
BUILDSUFFIX=_ux_$(ARCH)
SOEXT=.so
EXEEXT=
STATICCOPTS=
# SHAREDCOPTS=-fPIC
LFLAGS=
LIBS=-lm
else
BUILDSUFFIX=_win_$(ARCH)
SOEXT=.dll
EXEEXT=.exe
STATICCOPTS=
# SHAREDCOPTS=-DPPDLL
LFLAGS = -Wl,--output-def,$@.def,--out-implib,$@.a
LIBS=
endif
CC=gcc
W=-Wall -Wunused -Wimplicit -Wreturn-type -Wdeclaration-after-statement -Wno-unknown-pragmas -Wmissing-prototypes -Wmissing-declarations -Wparentheses -Wswitch -Wtrigraphs -Wcast-qual -Wcast-align -Wwrite-strings -Wold-style-definition -Wpointer-arith
#W=-Wall
CFLAGS=$(W) -O2
OBJEXT=$(BUILDSUFFIX).o
PPUTILS=utilmem utillog utilnumber utiliof utilmd5 utilsha utilcrypt
PPFILTERS=utilbasexx utilflate utillzw utilfpred
PPMODULES=ppheap pparray ppdict ppstream ppcrypt ppxref ppload
OUTDIR=build
UTILSDIR=util
PPSTATICUTILSOBJ=$(patsubst %, $(OUTDIR)/%$(OBJEXT), $(PPUTILS))
PPSTATICFILTERSOBJ=$(patsubst %, $(OUTDIR)/%$(OBJEXT), $(PPFILTERS))
PPSTATICOBJ=$(patsubst %, $(OUTDIR)/%$(OBJEXT), $(PPMODULES))
PPSTATICLIB=$(OUTDIR)/libpp.static$(BUILDSUFFIX).a
# dependencies
FLATEDIR=zlib
FLATELIB=$(FLATEDIR)/libz.static$(BUILDSUFFIX).a
PPSTATICDEPS=$(FLATELIB)
# test programm
PPTEST1=$(OUTDIR)/pptest1$(EXEEXT)
PPTEST2=$(OUTDIR)/pptest2$(EXEEXT)
PPTEST3=$(OUTDIR)/pptest3$(EXEEXT)
# includes
INC=-I $(UTILSDIR)
AUX=-I $(FLATEDIR)
default: md $(PPSTATICLIB) $(PPTEST1) $(PPTEST2) $(PPTEST3)
md:
@[ -d $(OUTDIR) ] || mkdir -p $(OUTDIR)
$(PPSTATICOBJ): $(OUTDIR)/%$(OBJEXT): %.c %.h
$(CC) $(CFLAGS) $(STATICCOPTS) $(INC) -o $@ -c $<
$(PPSTATICUTILSOBJ): $(OUTDIR)/%$(OBJEXT): $(UTILSDIR)/%.c $(UTILSDIR)/%.h
$(CC) $(CFLAGS) $(STATICCOPTS) $(INC) -o $@ -c $<
$(PPSTATICFILTERSOBJ): $(OUTDIR)/%$(OBJEXT): $(UTILSDIR)/%.c $(UTILSDIR)/%.h
$(CC) $(CFLAGS) $(STATICCOPTS) $(INC) $(AUX) -o $@ -c $<
$(PPSTATICLIB): $(PPSTATICOBJ) $(PPSTATICUTILSOBJ) $(PPSTATICFILTERSOBJ)
ar rcs $@ $^
strip -N print_hex $@
$(PPTEST1): $(PPSTATICLIB) pptest1.c
$(CC) $(CFLAGS) $(STATICCOPTS) -o $(OUTDIR)/pptest1$(OBJEXT) -c pptest1.c
$(CC) -static-libgcc $(CFLAGS) -o $(PPTEST1) $(OUTDIR)/pptest1$(OBJEXT) $(PPSTATICLIB) $(PPSTATICDEPS) $(LIBS)
$(PPTEST2): $(PPSTATICLIB) pptest2.c
$(CC) $(CFLAGS) $(STATICCOPTS) -o $(OUTDIR)/pptest2$(OBJEXT) -c pptest2.c
$(CC) -static-libgcc $(CFLAGS) -o $(PPTEST2) $(OUTDIR)/pptest2$(OBJEXT) $(PPSTATICLIB) $(PPSTATICDEPS) $(LIBS)
$(PPTEST3): $(PPSTATICLIB) pptest3.c
$(CC) $(CFLAGS) $(STATICCOPTS) -I util -o $(OUTDIR)/pptest3$(OBJEXT) -c pptest3.c
$(CC) -static-libgcc $(CFLAGS) -o $(PPTEST3) $(OUTDIR)/pptest3$(OBJEXT) $(PPSTATICLIB) $(PPSTATICDEPS) $(LIBS)
clean:
rm -f $(OUTDIR)/*$(OBJEXT) $(OUTDIR)/*.a $(OUTDIR)/*$(EXEEXT)
|