1# Compile Noise Source as user space application
2
3CC=gcc
4CFLAGS +=-Wextra -Wall -pedantic -fPIC -O0
5#Hardening
6CFLAGS +=-fstack-protector-strong -fwrapv --param ssp-buffer-size=4
7LDFLAGS +=-Wl,-z,relro,-z,now
8
9# Change as necessary
10PREFIX := /usr/local
11# library target directory (either lib or lib64)
12LIBDIR := lib
13
14NAME := jitterentropy
15LIBMAJOR=$(shell cat jitterentropy-base.c | grep define | grep MAJVERSION | awk '{print $$3}')
16LIBMINOR=$(shell cat jitterentropy-base.c | grep define | grep MINVERSION | awk '{print $$3}')
17LIBPATCH=$(shell cat jitterentropy-base.c | grep define | grep PATCHLEVEL | awk '{print $$3}')
18LIBVERSION := $(LIBMAJOR).$(LIBMINOR).$(LIBPATCH)
19
20#C_SRCS := $(wildcard *.c)
21C_SRCS := jitterentropy-base.c
22C_OBJS := ${C_SRCS:.c=.o}
23OBJS := $(C_OBJS)
24
25INCLUDE_DIRS :=
26LIBRARY_DIRS :=
27LIBRARIES := rt
28
29CFLAGS += $(foreach includedir,$(INCLUDE_DIRS),-I$(includedir))
30LDFLAGS += $(foreach librarydir,$(LIBRARY_DIRS),-L$(librarydir))
31LDFLAGS += $(foreach library,$(LIBRARIES),-l$(library))
32
33.PHONY: all scan install clean distclean
34
35all: $(NAME)
36
37$(NAME): $(OBJS)
38	$(CC) -shared -Wl,-soname,lib$(NAME).so.$(LIBMAJOR) -o lib$(NAME).so.$(LIBVERSION) $(OBJS) $(LDFLAGS)
39
40scan:	$(OBJS)
41	scan-build --use-analyzer=/usr/bin/clang $(CC) -shared -Wl,-soname,lib$(NAME).so.$(LIBMAJOR) -o lib$(NAME).so.$(LIBVERSION) $(OBJS) $(LDFLAGS)
42
43install:
44	install -m 644 doc/$(NAME).3 $(PREFIX)/share/man/man3/
45	gzip -9 $(PREFIX)/share/man/man3/$(NAME).3
46	install -m 0755 -s lib$(NAME).so.$(LIBVERSION) $(PREFIX)/$(LIBDIR)/
47	$(RM) $(PREFIX)/$(LIBDIR)/lib$(NAME).so.$(LIBMAJOR)
48	ln -s lib$(NAME).so.$(LIBVERSION) $(PREFIX)/$(LIBDIR)/lib$(NAME).so.$(LIBMAJOR)
49
50clean:
51	@- $(RM) $(NAME)
52	@- $(RM) $(OBJS)
53	@- $(RM) lib$(NAME).so*
54
55distclean: clean
56