From 565abd95d7492cf0f8975ea8f7547074107a630c Mon Sep 17 00:00:00 2001 From: hasufell Date: Mon, 14 Apr 2014 22:29:55 +0200 Subject: [PATCH] BUILD: add initial Makefiles --- Makefile | 18 ++++++++++ src/Makefile | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 Makefile create mode 100644 src/Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..2cdd541 --- /dev/null +++ b/Makefile @@ -0,0 +1,18 @@ +all: + $(MAKE) -C src + +clean: + $(MAKE) -C src clean + +clean-all: clean + $(MAKE) -C external/libtommath-0.42.0 clean + $(MAKE) -C external/libtompoly-0.04 clean + +doc: + doxygen + +doc-pdf: doc + $(MAKE) -C latex pdf + + +.PHONY: clean clean-all doc doc-pdf diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..d500c7f --- /dev/null +++ b/src/Makefile @@ -0,0 +1,96 @@ +# compiler, tools +CC = gcc +PKG_CONFIG ?= pkg-config + +# flags +CFLAGS ?= -march=native -O2 -pipe +CFLAGS += -std=c99 -pedantic -Wall -Wextra -Werror -Wno-unused-variable +ifeq ($(shell $(CC) -v 2>&1 | grep 'gcc version' &>/dev/null && echo 1),1) +CFLAGS += -Wno-unused-but-set-variable +endif +LDFLAGS ?= -Wl,-O1 -Wl,--as-needed -Wl,--hash-style=gnu +# ifndef NOSTATIC +# LDFLAGS += -static +# endif + +ifndef NODEBUG +CFLAGS += -O0 -g3 +endif + +# install variables +INSTALL = install +INSTALL_BIN = install -m755 +INSTALL_DIR = install -d +PREFIX = /usr/local +LIBDIR = lib64 +INSTALL_BINDIR = $(PREFIX)/bin +INSTALL_LIBDIR = $(PREFIX)/$(LIBDIR) + + +# libs +ifdef SHARED_LIB +PQC_LIBS = libpqc.so +else +PQC_LIBS = libpqc.a +endif +# CUNIT_LIBS = -lcunit +LIBS += -L. + +# objects +PQC_OBJS = rand.o poly.o +PQC_HEADERS = err.h rand.h poly.h context.h +# CUNIT_OBJS = cunit.o + +# includes +INCS = -I. + +ifndef UNBUNDLE +LIBTOMMATH = ../external/libtommath-0.42.0/libtommath.a +LIBTOMPOLY = ../external/libtompoly-0.04/libtompoly.a +INCS += -I../external/libtommath-0.42.0 -I../external/libtompoly-0.04 +else +LIBTOMMATH = -ltommath +LIBTOMPOLY = -ltompoly +endif + + +%.o: %.c + $(CC) -fPIC $(CFLAGS) $(CPPFLAGS) $(INCS) -c $*.c + +all: libpqc.a libpqc.so + + +# test: $(CUNIT_OBJS) $(PQC_LIBS) + # $(CC) $(CFLAGS) -o $@ $(CUNIT_OBJS) $(LDFLAGS) $(CUNIT_LIBS) $(PQC_LIBS) $(LIBS) + +ifndef UNBUNDLE +$(LIBTOMMATH): + $(MAKE) -C ../external/libtommath-0.42.0 + +$(LIBTOMPOLY): + $(MAKE) -C ../external/libtompoly-0.04 +endif + +libpqc.a: $(PQC_OBJS) $(PQC_HEADERS) + $(AR) cru libpqc.a $(PQC_OBJS) + +libpqc.so: libpqc.a $(PQC_HEADERS) $(LIBTOMMATH) $(LIBTOMPOLY) + $(CC) -shared $(CFLAGS) -o $@ $(LDFLAGS) \ + libpqc.a $(LIBTOMMATH) $(LIBTOMPOLY) $(LIBS) + +install: + $(INSTALL_DIR) "$(DESTDIR)$(INSTALL_BINDIR)" + [ -e libpqc.so ] && $(INSTALL_DIR) "$(DESTDIR)$(INSTALL_LIBDIR)" + [ -e libpqc.so ] && $(INSTALL_BIN) libpqc.so "$(DESTDIR)$(INSTALL_LIBDIR)" + +uninstall: + [ -e "$(DESTDIR)$(INSTALL_LIBDIR)/libpqc.so" ] && rm "$(DESTDIR)$(INSTALL_LIBDIR)/libpqc.so" + +# check: + # ./test + +clean: + rm -f *.o test libpqc.a libpqc.so main + + +.PHONY: clean install