]> pd.if.org Git - zpackage/blob - Makefile
add zpm-log increase version
[zpackage] / Makefile
1 CFLAGS=-Wall -W -Wextra -Werror -Wno-implicit-fallthrough -std=c99 -Ilib -Isqlite -Ielf -I. -Ilzma/api
2
3 ZPMVER:=$(shell git tag --list 'v[0-9]*' | sed -e 's/^v//' | sort -nr | head -1)
4 ifeq ($(strip $(ZPMVER)),)
5         ZPMVER:=0.1.1
6 endif
7
8 LZMAFLAGS=-Ilzma/api -Ilzma/tuklib -Ilzma/lzma -Ilzma/common -Ilzma/check -Ilzma/lz -Ilzma/rangecoder -Ilzma/simple -Ilzma/delta -DHAVE_CHECK_CRC64 -DHAVE_CHECK_CRC32 -DHAVE_ENCODER_LZMA2 -DHAVE_DECODER_LZMA2 -DHAVE_MF_BT4
9
10 LDFLAGS=-L. -ldl
11
12 LZMACHECKSRC=lzma/check/check.c lzma/check/crc32_fast.c lzma/check/crc64_fast.c lzma/check/crc32_table.c lzma/check/crc64_table.c
13 LZMASRC=$(shell ls lzma/lzma/*.c lzma/common/*.c lzma/lz/*.c) $(LZMACHECKSRC) lzma/rangecoder/price_table.c
14 LZMAOBJ=$(filter-out lzma/common/stream_encoder_mt.o, $(LZMASRC:%.c=%.o))
15
16 curdir=$(shell pwd)
17
18 ZPKGBIN=zpm-addfile zpm-extract zpm-init zpm-vercmp zpm-stat zpm-hash \
19         zpm-findpkg zpm-shell zpm-soneed
20
21 SCRIPTS=zpm zpm-install zpm-merge zpm-list zpm-preserve zpm-test zpm-log
22 COMPILED=$(ZPKGBIN)
23 PROGRAMS=$(SCRIPTS) $(COMPILED)
24
25 def: programs
26 d:
27         printf '%s\n' $(LZMAOBJ)
28         printf '%s\n' $(PATH)
29
30 package: zpm-$(ZPMVER)-1.zpm
31
32 ZPM:= ./zpm -P scripts:bin:.
33
34 zpm-$(ZPMVER)-1.zpm: programs
35         rm -f $@
36         $(ZPM) newpackage -f $@ -v $(ZPMVER) zpm
37         $(ZPM) addtopackage -u root -g root -f $@ -P /sbin -v $(ZPMVER) zpm $(PROGRAMS)
38
39 tarball: zpm-$(ZPMVER)-1.tar.xz
40
41 zpm-$(ZPMVER)-1.tar.xz: programs
42         rm -f $@
43         tar -cJf $@ --transform='s|^|bin/|' \
44                 $(PROGRAMS)
45
46 lzma.c: mklzma
47         sh mklzma
48
49 lzma.o: lzma.c
50         gcc -std=c99 -Wall -c -o $@ $<
51
52 stest: $(ZPKGBIN)
53         PATH=$(curdir)/t:$(curdir):$(PATH) t/$(T).t
54
55 t/ctap/prove: t/ctap/prove.o
56         $(CC) $(CFLAGS) -o $@ $+
57
58 test: $(ZPKGBIN) t/ctap/prove
59         PATH=$(curdir)/t:$(curdir):$(PATH) t/ctap/prove t/*.t
60
61 programs: elftype zpm-soname zpm-soneed zpm-addfile zpm-extract zpm-init \
62         zpm-vercmp zpm-findpkg zpm-merge
63
64 uncompress: uncompress.o 
65         $(CC) $(CFLAGS) -o $@ $+ -llzma
66
67 elftype: elf/elftype.c
68         $(CC) $(CFLAGS) -o $@ $+
69
70 zpm-soname: elf/soname.c
71         $(CC) -Ielf $(CFLAGS) -o $@ $+
72
73 zpm-soneed: elf/needed.c
74         $(CC) -Ielf $(CFLAGS) -o $@ $+
75
76 zpm-addfile: zpm-addfile.o libzpm.a libelf.a
77         $(CC) -Ielf $(CFLAGS) $(LDFLAGS) -o $@ $< -lzpm -lelf
78
79 zpm-hash: zpm-hash.o libzpm.a
80         $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< -lzpm -lelf
81
82 zpm-init: zpm-init.o libzpm.a
83         $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< -lzpm -lelf
84
85 zpm-extract: zpm-extract.o libzpm.a
86         $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< -lzpm -lelf
87
88 zpm-findpkg: zpm-findpkg.o libzpm.a
89         $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< -lzpm -lelf
90
91 newdb.c: db.sql
92         echo "char createdb[] = {" > $@
93         xxd -i < $< >> $@
94         echo ", 0};" >> $@
95
96 sqlite/sqlite3.o: sqlite/sqlite3.c sqlite/config.h
97         $(CC) -Wall -std=c99 -Ilib -D_HAVE_SQLITE_CONFIG_H=1 -c -o $@ $<
98
99 sqlite/shell.o: sqlite/shell.c sqlite/config.h
100         $(CC) -Wall -std=c99 -Ilib -D_POSIX_C_SOURCE=200112L -D_HAVE_SQLITE_CONFIG_H=1 -c -o $@ $<
101
102 $(LZMAOBJ):
103         $(CC) $(CFLAGS) $(LZMAFLAGS) -c -o $@ $*.c
104
105 lib/zpm.o: newdb.c
106
107 zpm-vercmp: zpm-vercmp.o lib/vercmp.o
108         $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $+
109         
110 zpm-shell: sqlite/sqlite3.o sqlite/shell.o
111         $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $+
112
113 libzpm.a: lib/sha256.o lib/db.o lib/compress.o lib/uncompress.o lib/zpm.o \
114         sqlite/sqlite3.o lib/zpm_hash.o \
115         lib/vercmp.o \
116         lib/sha256.o \
117         $(LZMAOBJ)
118         ar rcuv $@ $?
119
120 libelf.a: elf/libelf.o
121         ar rcuv $@ $?
122
123 install: $(COMPILED)
124         test -d $(DESTDIR)/bin || install -d $(DESTDIR)/bin
125         install -D $(PROGRAMS) $(DESTDIR)/bin
126
127 clean:
128         rm -f *.o sqlite/*.o lib/*.o $(LZMAOBJ) liblzma.a \
129                 libelf.a libzpm.a zpm-addfile soname \
130                 *.xz *.zpm \
131                 local.db t/ctap/prove.o
132
133 tmpinstall: package
134         rm -rf tmp
135         mkdir tmp
136         ZPMDB=tmp/db.zpm ./zpm -P. install -R tmp -f zpm-$(ZPMVER)-1.zpm -u nw -g nw