@ -18,36 +18,16 @@ PEP_INCLUDE?=$(PREFIX)/include
# where libs from the packages systems are installed into:
LIBRARY_PATH ?= /usr/local/lib
# paths to the .a libraries. Can be overridden in local.conf
PEP_WEBSERVER ?= $( PEP_LIB_PATH)
PEP_ADAPTER_LIBRARY ?= $( PEP_LIB_PATH)
PEP_ENGINE ?= $( PEP_LIB_PATH)
LIBETPAN_FDIK ?= $( PEP_LIB_PATH)
PEP_MIME_PATH ?= $( PEP_LIB_PATH)
SEQUOIA_PGP ?= $( PEP_LIB_PATH)
ASN1_PATH ?= $( PEP_LIB_PATH)
NETTLE ?= $( LIBRARY_PATH)
BOOST_INCLUDE_PATH ?= /usr/local/include
BOOST_LIBRARY_PATH ?= $( LIBRARY_PATH)
LIBRARY_PATH ?= $( PREFIX) /lib
GMP_LIBRARY_PATH ?= $( LIBRARY_PATH)
SQLITE3_LIBRARY_PATH ?= $( LIBRARY_PATH)
LIBZ_LIBRARY_PATH ?= $( LIBRARY_PATH)
UUID_LIBRARY_PATH ?= $( LIBRARY_PATH)
ICONV_LIBRARY_PATH ?= $( LIBRARY_PATH)
LIBEVENT_LIBRARY_PATH = $( LIBRARY_PATH)
AR ?= /usr/bin/ar
CC ?= cc
CXX ?= c++
CFLAGS += -std= c14 -fvisibility= hidden
CXXFLAGS += -I$( BOOST_INCLUDE_PATH) -I$( PEP_INCLUDE) -std= c++14 -fvisibility= hidden
LDFLAGS += -std= c++14
CXXFLAGS += -I$( PEP_INCLUDE) -std= c++14 -fvisibility= hidden
LDFLAGS += -std= c++14 -L$( PEP_LIB_PATH) -L$( LIBRARY_PATH)
LDLIBS += -lpEpEngine -lpEpAdapter -lpEpwebserver -lasn1 \
-lboost_filesystem -lboost_program_options -lboost_system -lboost_thread -lboost_regex \
-lsequoia_openpgp_ffi -lhogweed -lnettle -lgmp \
-lz -lsqlite3
# This idiom is from the pEp Engine Makefile, but we don't sure Makefile.conf here.
BUILD_ON := $( shell uname)
@ -57,14 +37,12 @@ ifeq ($(BUILD_ON),Darwin)
LDLIBS += -liconv -lobjc -framework Foundation -framework Security
# ASAN is not strictly a MacOS/clang feature, but won't work with musl.
CXXFLAGS += -fsanitize= address
EXTRA_STATIC_LIBS = $( ICONV_LIBRARY_PATH) /libiconv.a
else
$( error I do not know how to make for $( BUILD_FOR) on $( BUILD_ON) )
endif
e l s e i f e q ( $( BUILD_ON ) , L i n u x )
ifeq ( $( BUILD_FOR) ,Linux)
LDLIBS += -luuid
EXTRA_STATIC_LIBS = $( UUID_LIBRARY_PATH) /libuuid.a
else
$( error I do not know how to make for $( BUILD_FOR) on $( BUILD_ON) )
endif
@ -86,11 +64,9 @@ LIB_TARGET=libjson-adapter.a
i f e q ( $( MIME_LIB ) , e t p a n )
LDLIBS += -letpan
MIME_LIB_A = $( LIBETPAN_FDIK) /libetpan.a
OMIT_NFC_SOURCE =
e l s e i f e q ( $( MIME_LIB ) , p E p M I M E )
LDLUBS += -lpEpMIME
MIME_LIB_A = $( PEP_MIME_PATH) /libpEpMIME.a
LDLIBS += -lpEpMIME
# is already in libpEpMIME:
OMIT_NFC_SOURCE = nfc.cc nfc_sets.cc
@ -116,27 +92,6 @@ SPIRIT_OBJECTS=$(subst .cpp,.o,$(SPIRIT_SOURCE))
TEST_SOURCE = $( wildcard unittest_*.cc)
TEST_OBJECTS = $( subst .cc,.o,$( TEST_SOURCE) )
ALL_STATIC_LIBS = $( PEP_ENGINE) /libpEpEngine.a \
$( PEP_ADAPTER_LIBRARY) /libpEpAdapter.a \
$( PEP_WEBSERVER) /libpEpwebserver.a \
$( BOOST_LIBRARY_PATH) /libboost_filesystem$( BOOST_MT) .a \
$( BOOST_LIBRARY_PATH) /libboost_program_options$( BOOST_MT) .a \
$( BOOST_LIBRARY_PATH) /libboost_system$( BOOST_MT) .a \
$( BOOST_LIBRARY_PATH) /libboost_thread$( BOOST_MT) .a \
$( BOOST_LIBRARY_PATH) /libboost_regex$( BOOST_MT) .a \
$( SEQUOIA_PGP) /libsequoia_openpgp_ffi.a \
$( MIME_LIB_A) \
$( ASN1_PATH) /libasn1.a \
$( LIBZ_LIBRARY_PATH) /libz.a \
$( SQLITE3_LIBRARY_PATH) /libsqlite3.a \
$( NETTLE) /libhogweed.a \
$( NETTLE) /libnettle.a \
$( GMP_LIBRARY_PATH) /libgmp.a \
$( EXTRA_STATIC_LIBS)
all : $( TARGET ) unittests parse_mail
%.d : %.cc
@ -156,17 +111,16 @@ $(LIB_TARGET): $(LIB_OBJECTS)
$(TARGET) : $( LIB_TARGET ) $( MA_OBJECTS ) $( SPIRIT_OBJECTS )
$( CXX) $( LDFLAGS) \
$( MA_OBJECTS) $( SPIRIT_OBJECTS) $( LIB_TARGET) \
$( ALL_STATIC_LIBS) \
-o " $@ "
-o " $@ " $( LDLIBS)
%.o : %.cc
$( CXX) $( CXXFLAGS) -c -o $@ $^
unittests : $( TEST_OBJECTS ) $( LIB_TARGET ) $( SPIRIT_OBJECTS )
$( CXX) $( CXXFLAGS) -o $@ $^ $( ALL_STATIC_ LIBS) -lgtest
$( CXX) $( LDFLAGS) -o $@ $^ $( LD LIBS) -lgtest
parse_mail : parse_mail .o $( LIB_TARGET ) $( SPIRIT_OBJECTS )
$( CXX) $( CXXFLAGS) -o $@ $^ $( ALL_STATIC_LIBS) $( LIB_TARGET )
parse_mail : parse_mail .o nfc .o $( LIB_TARGET ) $( SPIRIT_OBJECTS )
$( CXX) $( LDFLAGS) -o $@ $^ $( LDLIBS )
.PHONY : clean uninstall install
@ -182,75 +136,30 @@ clean:
rm -vf *.a *.o */*.o *.d *.d.* $( TARGET) $( TESTS) encode_decode
local.conf :
@echo "# the following are directories with the source build" >> local.conf
@echo "# ---------------------------------------------------" >> local.conf
@echo >> local.conf
@echo "# path to pEp webserver" >> local.conf
@echo >> local.conf
@echo " PEP_WEBSERVER= $( PEP_WEBSERVER) " >> local.conf
@echo >> local.conf
@echo "# path to pEp adapter library" >> local.conf
@echo >> local.conf
@echo " PEP_ADAPTER_LIBRARY= $( PEP_ADAPTER_LIBRARY) " >> local.conf
@echo >> local.conf
@echo "# path to pEp engine" >> local.conf
@echo >> local.conf
@echo " PEP_ENGINE= $( PEP_ENGINE) " >> local.conf
@echo >> local.conf
@echo "# path to fdik fork of libetpan" >> local.conf
@echo >> local.conf
@echo " LIBETPAN_FDIK= $( LIBETPAN_FDIK) " >> local.conf
@echo >> local.conf
@echo "# path to Sequoia PGP" >> local.conf
@echo >> local.conf
@echo " SEQUOIA_PGP= $( SEQUOIA_PGP) " >> local.conf
@echo >> local.conf
@echo "# path to ASN1 (part of pEp Engine)" >> local.conf
@echo >> local.conf
@echo " ASN1_PATH= $( ASN1_PATH) " >> local.conf
@echo >> local.conf
@echo "# path to nettle and hogweed crypto libraries" >> local.conf
@echo >> local.conf
@echo " NETTLE= $( NETTLE) " >> local.conf
@echo >> local.conf
@echo "# path where to find boost" >> local.conf
@echo >> local.conf
@echo " BOOST_INCLUDE_PATH= $( BOOST_INCLUDE_PATH) " >> local.conf
@echo " BOOST_LIBRARY_PATH= $( BOOST_LIBRARY_PATH) " >> local.conf
@echo >> local.conf
@echo >> local.conf
@echo "# these are installation directories" >> local.conf
@echo "# ----------------------------------" >> local.conf
@echo >> local.conf
@echo "# pEp installation header file directory" >> local.conf
@echo >> local.conf
@echo " PEP_INCLUDE= $( PEP_INCLUDE) " >> local.conf
@echo >> local.conf
@echo "# path where to find GMP" >> local.conf
@echo >> local.conf
@echo " GMP_LIBRARY_PATH= $( GMP_LIBRARY_PATH) " >> local.conf
@echo >> local.conf
@echo "# path where to find SQLite3" >> local.conf
@echo >> local.conf
@echo " SQLITE3_LIBRARY_PATH= $( SQLITE3_LIBRARY_PATH) " >> local.conf
@echo >> local.conf
@echo "# path where to find libz" >> local.conf
@echo >> local.conf
@echo " LIBZ_LIBRARY_PATH= $( LIBZ_LIBRARY_PATH) " >> local.conf
@echo >> local.conf
@echo "# path where to find libuuid" >> local.conf
@echo >> local.conf
@echo " UUID_LIBRARY_PATH= $( UUID_LIBRARY_PATH) " >> local.conf
@echo >> local.conf
@echo "# path where to find GNU iconv" >> local.conf
@echo >> local.conf
@echo " ICONV_LIBRARY_PATH= $( ICONV_LIBRARY_PATH) " >> local.conf
@echo "# installation destination for make install" >> local.conf
@echo " PREFIX?= $( PREFIX) " >> local.conf
@echo >> local.conf
@echo "# Additional options" >> local.conf
@echo "# ------------------" >> local.conf
@echo >> local.conf
@echo "# for a dynamically linked binary (for development) remove this." >> local.conf
@echo "LD_FLAGS+=--static" >> local.conf
@echo "# also add -L<path> here if .a or .so files from non-standard paths are needed." >> local.conf
@echo "LDFLAGS+=--static" >> local.conf
@echo >> local.conf
@echo "# Path where pEp libraries are installed." >> local.conf
@echo " PEP_LIB_PATH= $( PEP_LIB_PATH) " >> local.conf
@echo >> local.conf
@echo "# Path where system libraries are installed." >> local.conf
@echo " LIBRARY_PATH= $( LIBRARY_PATH) " >> local.conf
@echo >> local.conf
@echo "# remove this for a debug build." >> local.conf
@echo "NDEBUG=yes" >> local.conf
help :
@echo "usage:"