@ -6,32 +6,23 @@ endif
# default config
# set to 'etpan' or 'pEpMIME'
MIME_LIB ?= etpan
# these are source builds
PREFIX ?= $( HOME) /local
# where pEp stuff is installed into:
PEP_LIB_PATH ?= $( PREFIX) /lib
PEP_INCLUDE ?= $( PREFIX) /include
# where libs from the packages systems are installed into:
LIBRARY_PATH ?= /usr/local/lib
PEP_WEBSERVER ?= ../../webserver
PEP_ADAPTER_LIBRARY = ../../libpEpAdapter
PEP_ENGINE ?= ../../pEpEngine/src
LIBETPAN_FDIK ?= ../../libetpan/src/.libs
SEQUOIA_PGP ?= ../../sequoia/target/release
NETTLE ?= ../../nettle
BOOST_INCLUDE_PATH ?= ../../boost_1_72_0
BOOST_LIBRARY_PATH ?= ../../boost_1_72_0/stage/lib
ASN1_PATH ?= $( PEP_ENGINE) /asn.1
# path to installed libraries
# 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)
PREFIX ?= $( HOME)
PEP_INCLUDE ?= $( PREFIX) /include
LIBRARY_PATH ?= $( PREFIX) /lib
@ -41,78 +32,39 @@ LIBZ_LIBRARY_PATH?=$(LIBRARY_PATH)
ICONV_LIBRARY_PATH ?= $( LIBRARY_PATH)
LIBEVENT_LIBRARY_PATH = $( LIBRARY_PATH)
AR ?= /usr/bin/ ar
AR ?= ar
CC ?= cc
CXX ?= c++
CFLAGS += -std= c14 -fvisibility= hidden
CXXFLAGS += -I$( BOOST_INCLUDE_PATH) -I$( PEP_INCLUDE) -std= c++14 -fvisibility= hidden -fsanitize= address
LDFLAGS += -std= c++14 -fsanitize= address
CFLAGS += -std= c14
CXXFLAGS += -I$( BOOST_INCLUDE_PATH) -I$( PEP_INCLUDE) -std= c++14
LDFLAGS += -std= c++14
i f d e f N D E B U G
CFLAGS += -O3 -DNDEBUG
CXXFLAGS += -O3 -DNDEBUG
CFLAGS += -O3 -DNDEBUG -fvisibility= hidden -fno-stack-check
CXXFLAGS += -O3 -DNDEBUG -fvisibility= hidden -fno-stack-check
e l s e
CFLAGS += -O0 -g -DDEBUG_ENABLED
CXXFLAGS += -O0 -g -DDEBUG_ENABLED
CFLAGS += -O0 -g -DDEBUG_ENABLED -fvisibility= hidden -fno-stack-check
CXXFLAGS += -O0 -g -DDEBUG_ENABLED -fvisibility= hidden -fno-stack-check
e n d i f
TARGET = pEp-mini-json-adapter
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
# is already in libpEpMIME:
OMIT_NFC_SOURCE = nfc.cc nfc_sets.cc
e l s e
$( error "You must set MIME_LIB to 'etpan' or 'pEpMIME'!" )
e n d i f
ALL_SOURCE = $( filter-out parse_mail.cc unittest_%.cc, $( wildcard *.cc) )
MA_SOURCE = $( wildcard mini-adapter-*.cc)
LIB_SOURCE = $( filter-out $( MA_SOURCE) $( OMIT_NFC_SOURCE) , $( ALL_SOURCE) )
ALL_SOURCE = $( filter-out unittest_%.cc,$( wildcard *.cc) )
LIB_SOURCE = $( filter-out miniadapter-%.cc,$( ALL_SOURCE) )
MA_SOURCE = $( wildcard miniadapter-*.cc)
DEPENDS = $( subst .cc,.d,$( ALL_SOURCE) )
ALL_OBJECTS = $( subst .d,.o,$( DEPENDS) )
LIB_OBJECTS = $( subst .cc,.o,$( LIB_SOURCE) )
MA_OBJECTS = $( subst .cc,.o,$( MA_SOURCE) )
SPIRIT_SOURCE = $( wildcard json_spirit/*.cpp)
SPIRIT_OBJECTS = $( subst .cpp,.o,$( SPIRIT_SOURCE) )
TEST_SOURCE = $( wildcard unit test_*.cc)
TEST_SOURCE = $( wildcard test_*.cc)
TEST_OBJECTS = $( subst .cc,.o,$( TEST_SOURCE) )
TESTS = $( subst .cc,,$( 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 \
$( ICONV_LIBRARY_PATH) /libiconv.a
all : $( TARGET ) unittests parse_mail
all : $( TARGET )
%.d : %.cc
@set -e; rm -f $@ ; \
@ -129,20 +81,35 @@ $(LIB_TARGET): $(LIB_OBJECTS)
$( AR) -cr $@ $^
$(TARGET) : $( LIB_TARGET ) $( MA_OBJECTS ) $( SPIRIT_OBJECTS )
$( CXX) $( LDFLAGS) \
$( MA_OBJECTS) $( SPIRIT_OBJECTS) $( LIB_TARGET) \
$( CXX) $( LDFLAGS) -liconv \
-lobjc -framework Foundation -framework Security \
$( ALL_STATIC_LIBS)
-o " $@ "
$( 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 \
$( ICONV_LIBRARY_PATH) /libiconv.a \
$( LIBZ_LIBRARY_PATH) /libz.a \
$( SQLITE3_LIBRARY_PATH) /libsqlite3.a \
$( GMP_LIBRARY_PATH) /libgmp.a \
$( NETTLE) /libnettle.a $( NETTLE) /libhogweed.a \
$( SEQUOIA_PGP) /libsequoia_ffi.a \
$( SEQUOIA_PGP) /libsequoia_openpgp_ffi.a \
$( LIBETPAN_FDIK) /libetpan.a \
$( PEP_ENGINE) /libpEpEngine.a \
$( ASN1_PATH) /libasn1.a \
$( PEP_ADAPTER_LIBRARY) /libpEpAdapter.a \
$( MA_OBJECTS) $( SPIRIT_OBJECTS) $( LIB_TARGET) -o " $@ "
%.o : %.cc
$( CXX) $( CXXFLAGS) -c -o $@ $^
unittests : $( TEST_OBJECTS )
$( CXX) $( CXXFLAGS) -o $@ $^ $( ALL_STATIC_LIBS)
test_% : test_ %.o $( TARGET )
$( CXX) $( LDFLAGS) $( TARGET) -o $@ $<
parse_mail : parse_mail .o $( LIB_TARGET ) $( SPIRIT_OBJECTS )
$( CXX) $( CXXFLAGS) -o $@ $^ $( ALL_STATIC_LIBS) $( LIB_TARGET) -liconv
test : $( TES TS)
for i in $( TESTS) ; do ./$$ i ; done
.PHONY : clean uninstall install
@ -155,7 +122,7 @@ uninstall:
for i in *.hh; do rm -f $( PREFIX) /include/pEp/\$ i ; done
clean :
rm -vf *.o *.d *.d.* $( TARGET) $( TESTS) encode_decode
rm -vf *.o *.d *.d.* $( TARGET) $( TESTS)
local.conf :
@echo "# the following are directories with the source build" >> local.conf