File: makefile

package info (click to toggle)
klutshnik 0.2.1-1.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 644 kB
  • sloc: python: 771; ansic: 330; makefile: 107; sh: 79
file content (98 lines) | stat: -rw-r--r-- 3,321 bytes parent folder | download
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
90
91
92
93
94
95
96
97
98
INCLUDES=$(shell pkgconf --cflags liboprf)
CFLAGS?=-march=native -Wall -O2 -g \
       -fstack-protector-strong -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 \
       -Wformat=2 -Wconversion -Wimplicit-fallthrough \
		 -fasynchronous-unwind-tables -fpic -fstack-clash-protection -fcf-protection=full \
		 -Werror=format-security -Werror=implicit-function-declaration -Wl,-z,defs -Wl,-z,relro \
		 -ftrapv -Wl,-z,noexecstack $(INCLUDES) -D_BSD_SOURCE -D_DEFAULT_SOURCE

#LDFLAGS?=/usr/lib/liboprf.a /usr/lib/liboprf-noiseXK.a -lsodium
LDFLAGS?=-loprf -lsodium
CC?=gcc
SOEXT?=so
STATICEXT?=a
SOVER=0

UNAME := $(shell uname -s)
ARCH := $(shell uname -m)
ifeq ($(UNAME),Darwin)
   SOEXT=dylib
   SOFLAGS=-Wl,-install_name,$(DESTDIR)$(PREFIX)/lib/libklutshnik.$(SOEXT)
else
   CFLAGS+=-Wl,-z,defs -Wl,-z,relro -Wl,-z,noexecstack -Wl,-z,now -Wtrampolines \
           -fsanitize=signed-integer-overflow -fsanitize-undefined-trap-on-error
           #-fstrict-flex-arrays=3 -mbranch-protection=standard
   SOEXT=so
   SOFLAGS=-Wl,-soname,libklutshnik.$(SOEXT).$(SOVER)
   ifeq ($(ARCH),x86_64)
      CFLAGS+=-fcf-protection=full
   endif

   ifeq ($(ARCH),parisc64)
   else ifeq ($(ARCH),parisc64)
   else
      CFLAGS+=-fstack-clash-protection
   endif
endif


all: libklutshnik.so libklutshnik.pc

asan: CFLAGS=-fsanitize=address -static-libasan -g -march=native -Wall -O2 \
	-g -fstack-protector-strong -fpic -fstack-clash-protection -fcf-protection=full \
	-Werror=format-security -Werror=implicit-function-declaration -Wl, -z,noexecstack
asan: LDFLAGS+= -fsanitize=address -static-libasan
asan: all

SOURCES=streamcrypt.c tuokms.c utils.c
OBJECTS=$(patsubst %.c,%.o,$(SOURCES))

libklutshnik.$(SOEXT): $(SOURCES)
	$(CC) -fPIC -shared $(CPPFLAGS) $(CFLAGS) $(SOFLAGS) -o libklutshnik.$(SOEXT) $^ $(LDFLAGS)

libklutshnik.$(STATICEXT): $(OBJECTS)
	$(AR) rcs $@ $^

libklutshnik.pc:
	echo "prefix=$(PREFIX)" >libklutshnik.pc
	cat libklutshnik.pc0 >>libklutshnik.pc

install: $(DESTDIR)$(PREFIX)/lib/libklutshnik.$(SOEXT) \
         $(DESTDIR)$(PREFIX)/lib/libklutshnik.$(STATICEXT) \
         $(DESTDIR)$(PREFIX)/lib/pkgconfig/libklutshnik.pc \
         $(DESTDIR)$(PREFIX)/include/klutshnik/streamcrypt.h \
         $(DESTDIR)$(PREFIX)/include/klutshnik/tuokms.h

uninstall: $(DESTDIR)$(PREFIX)/lib/libklutshnik.$(SOEXT) $(DESTDIR)$(PREFIX)/lib/libklutshnik.$(STATICEXT) \
	        $(DESTDIR)$(PREFIX)/include/klutshnik/streamcrypt.h $(DESTDIR)$(PREFIX)/include/klutshnik/tuokms.h \
	rm $^
	rmdir $(PREFIX)/include/klutshnik/

$(DESTDIR)$(PREFIX)/lib/libklutshnik.$(SOEXT): libklutshnik.$(SOEXT)
	mkdir -p $(DESTDIR)$(PREFIX)/lib
	cp $< $@.$(SOVER)
	ln -sf $@.$(SOVER) $@

$(DESTDIR)$(PREFIX)/lib/libklutshnik.$(STATICEXT): libklutshnik.$(STATICEXT)
	mkdir -p $(DESTDIR)$(PREFIX)/lib
	cp $< $@

$(DESTDIR)$(PREFIX)/lib/pkgconfig/libklutshnik.pc: libklutshnik.pc
	mkdir -p $(DESTDIR)$(PREFIX)/lib/pkgconfig
	cp $< $@

$(DESTDIR)$(PREFIX)/include/klutshnik/streamcrypt.h: streamcrypt.h
	mkdir -p $(DESTDIR)$(PREFIX)/include/klutshnik
	cp $< $@

$(DESTDIR)$(PREFIX)/include/klutshnik/tuokms.h: tuokms.h
	mkdir -p $(DESTDIR)$(PREFIX)/include/klutshnik
	cp $< $@

test: libklutshnik.$(SOEXT) libklutshnik.$(STATICEXT)
	make -C tests tests

clean:
	@rm -f *.o libklutshnik.$(STATICEXT) libklutshnik.$(SOEXT) libklutshnik.pc

PHONY: clean