BUILD: add initial Makefiles

This commit is contained in:
hasufell 2014-04-14 22:29:55 +02:00
parent ff40048d55
commit 565abd95d7
No known key found for this signature in database
GPG Key ID: 220CD1C5BDEED020
2 changed files with 114 additions and 0 deletions

18
Makefile Normal file
View File

@ -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

96
src/Makefile Normal file
View File

@ -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