|
|
|
@ -7,151 +7,197 @@
|
|
|
|
|
# published by the Free Software Foundation.
|
|
|
|
|
#
|
|
|
|
|
# pEp JSON Server Adapter is distributed in the hope that it will be useful,
|
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
|
|
|
|
# Public License for more details.
|
|
|
|
|
#
|
|
|
|
|
# You should have received a copy of the GNU General Public License along
|
|
|
|
|
# with pEp JSON Server Adapter. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
|
|
# this ifeq is not optional, because otherwise local.conf would always be built
|
|
|
|
|
|
|
|
|
|
include Makefile.conf
|
|
|
|
|
|
|
|
|
|
ifneq ($(wildcard local.conf),)
|
|
|
|
|
$(info ================================================)
|
|
|
|
|
$(info Overrides in \`local.conf\` are used.)
|
|
|
|
|
$(info ================================================)
|
|
|
|
|
ifeq ($(wildcard local.conf),local.conf)
|
|
|
|
|
-include local.conf
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
ifdef BUILD_CONFIG
|
|
|
|
|
$(info ================================================)
|
|
|
|
|
$(info Overrides in \`$(BUILD_CONFIG)\` are used.)
|
|
|
|
|
$(info ================================================)
|
|
|
|
|
endif
|
|
|
|
|
# default config
|
|
|
|
|
|
|
|
|
|
# These source files shall _not_ be part of the libjson-adapter.a:
|
|
|
|
|
NO_SOURCE=$(wildcard mini-adapter-*.cc) servertest.cc $(wildcard unittest_*.cc)
|
|
|
|
|
# these are source builds
|
|
|
|
|
|
|
|
|
|
ALL_SOURCE=$(filter-out $(NO_SOURCE),$(wildcard json_spirit/*.cpp))
|
|
|
|
|
ALL_SOURCE+= prefix-config.cc
|
|
|
|
|
ALL_SOURCE+= $(filter-out $(NO_SOURCE),$(wildcard *.cc))
|
|
|
|
|
DEPENDS0=$(subst .cpp,.d,$(ALL_SOURCE))
|
|
|
|
|
DEPENDS=$(subst .cc,.d,$(DEPENDS0))
|
|
|
|
|
ALL_OBJECTS0=$(subst .cpp,.o,$(ALL_SOURCE))
|
|
|
|
|
ALL_OBJECTS=$(subst .cc,.o,$(ALL_OBJECTS0))
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
ifeq ($(BUILD_FOR),Linux)
|
|
|
|
|
LIBPATH=LD_LIBRARY_PATH
|
|
|
|
|
else
|
|
|
|
|
LIBPATH=DYLD_LIBRARY_PATH
|
|
|
|
|
endif
|
|
|
|
|
# path to installed libraries
|
|
|
|
|
|
|
|
|
|
ifeq ($(BUILD_FOR),Linux)
|
|
|
|
|
LD_EAGER_VAR=LD_BIND_NOW=placeholder
|
|
|
|
|
else
|
|
|
|
|
LD_EAGER_VAR=DYLD_BIND_AT_LAUNCH=placeholder
|
|
|
|
|
endif
|
|
|
|
|
PREFIX?=$(HOME)
|
|
|
|
|
|
|
|
|
|
# Create a list of the extra library paths for the loader.
|
|
|
|
|
# Note that += can not be used here, as it changes the amount of whitespace
|
|
|
|
|
EXTRA_LIB_PATHS=$(PREFIX)/lib:
|
|
|
|
|
ifdef BOOST_LIB
|
|
|
|
|
EXTRA_LIB_PATHS:=$(EXTRA_LIB_PATHS)$(patsubst -L%,%,$(BOOST_LIB)):
|
|
|
|
|
endif
|
|
|
|
|
ifdef ENGINE_LIB
|
|
|
|
|
EXTRA_LIB_PATHS:=$(EXTRA_LIB_PATHS)$(patsubst -L%,%,$(ENGINE_LIB)):
|
|
|
|
|
endif
|
|
|
|
|
ifdef ETPAN_LIB
|
|
|
|
|
EXTRA_LIB_PATHS:=$(EXTRA_LIB_PATHS)$(patsubst -L%,%,$(ETPAN_LIB)):
|
|
|
|
|
endif
|
|
|
|
|
ifdef EVENT_LIB
|
|
|
|
|
EXTRA_LIB_PATHS:=$(EXTRA_LIB_PATHS)$(patsubst -L%,%,$(EVENT_LIB)):
|
|
|
|
|
endif
|
|
|
|
|
ifdef GPGME_LIB
|
|
|
|
|
EXTRA_LIB_PATHS:=$(EXTRA_LIB_PATHS)$(patsubst -L%,%,$(GPGME_LIB)):
|
|
|
|
|
endif
|
|
|
|
|
ifdef UUID_LIB
|
|
|
|
|
EXTRA_LIB_PATHS:=$(EXTRA_LIB_PATHS)$(patsubst -L%,%,$(UUID_LIB)):
|
|
|
|
|
endif
|
|
|
|
|
# Remove trailing ':'
|
|
|
|
|
EXTRA_LIB_PATHS:=$(EXTRA_LIB_PATHS::=)
|
|
|
|
|
|
|
|
|
|
CMD_PFX=$(LIBPATH)=$(EXTRA_LIB_PATHS)
|
|
|
|
|
|
|
|
|
|
ifdef DEBUG
|
|
|
|
|
CMD_PFX+= $(LD_EAGER_VAR)
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
.PHONY: all lib
|
|
|
|
|
all: $(TARGET) $(TARGET_TEST) $(TARGET_GTEST)
|
|
|
|
|
|
|
|
|
|
lib: libjson-adapter.a
|
|
|
|
|
PEP_INCLUDE?=$(PREFIX)/include
|
|
|
|
|
|
|
|
|
|
$(TARGET): mini-adapter-main.o mini-adapter-impl.o libjson-adapter.a
|
|
|
|
|
$(CXX) $(CPPFLAGS) $^ $(LDFLAGS) $(LDLIBS) -o $@
|
|
|
|
|
LIBRARY_PATH?=$(PREFIX)/lib
|
|
|
|
|
|
|
|
|
|
$(TARGET)-static: mini-adapter-main.o mini-adapter-impl.o libjson-adapter.a
|
|
|
|
|
$(CXX) $(CPPFLAGS) $^ $(LDFLAGS) $(LDLIBS) -static -o $@
|
|
|
|
|
GMP_LIBRARY_PATH?=$(LIBRARY_PATH)
|
|
|
|
|
SQLITE3_LIBRARY_PATH?=$(LIBRARY_PATH)
|
|
|
|
|
LIBZ_LIBRARY_PATH?=$(LIBRARY_PATH)
|
|
|
|
|
ICONV_LIBRARY_PATH?=$(LIBRARY_PATH)
|
|
|
|
|
LIBEVENT_LIBRARY_PATH=$(LIBRARY_PATH)
|
|
|
|
|
|
|
|
|
|
$(TARGET_TEST): servertest.o libjson-adapter.a
|
|
|
|
|
$(CXX) $(CPPFLAGS) $^ $(LDFLAGS) $(LDLIBS) -o $@
|
|
|
|
|
AR?=ar
|
|
|
|
|
CC?=cc
|
|
|
|
|
CXX?=c++
|
|
|
|
|
CFLAGS+=-std=c14
|
|
|
|
|
CXXFLAGS+=-I$(BOOST_INCLUDE_PATH) -I$(PEP_INCLUDE) -std=c++14
|
|
|
|
|
LDFLAGS+=-std=c++14
|
|
|
|
|
|
|
|
|
|
$(TARGET_GTEST): unittest_json.o unittest_nfc.o unittest_decompose.o unittest_rpc.o \
|
|
|
|
|
unittest_logger.o unittest_pEp.o unittest_sha1.o \
|
|
|
|
|
gtest-all.o gtest_main.o libjson-adapter.a
|
|
|
|
|
$(CXX) $(CPPFLAGS) $^ $(LDFLAGS) $(LDLIBS) -o $@
|
|
|
|
|
|
|
|
|
|
libjson-adapter.a: $(ALL_OBJECTS)
|
|
|
|
|
$(AR) rcs $@ $^
|
|
|
|
|
ifdef NDEBUG
|
|
|
|
|
CFLAGS+=-O3 -DNDEBUG -fvisibility=hidden -fno-stack-check
|
|
|
|
|
CXXFLAGS+=-O3 -DNDEBUG -fvisibility=hidden -fno-stack-check
|
|
|
|
|
else
|
|
|
|
|
CFLAGS+=-O0 -g -DDEBUG_ENABLED -fvisibility=hidden -fno-stack-check
|
|
|
|
|
CXXFLAGS+=-O0 -g -DDEBUG_ENABLED -fvisibility=hidden -fno-stack-check
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
gtest-all.o: $(GTEST_DIR)/src/gtest-all.cc
|
|
|
|
|
$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -o $@ -c $<
|
|
|
|
|
TARGET=pEp-mini-json-adapter
|
|
|
|
|
LIB_TARGET=libjson-adapter.a
|
|
|
|
|
|
|
|
|
|
gtest_main.o: $(GTEST_DIR)/src/gtest_main.cc
|
|
|
|
|
$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -o $@ -c $<
|
|
|
|
|
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))
|
|
|
|
|
|
|
|
|
|
%.o: %.cc %.hh
|
|
|
|
|
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $<
|
|
|
|
|
TEST_SOURCE=$(wildcard test_*.cc)
|
|
|
|
|
TEST_OBJECTS=$(subst .cc,.o,$(TEST_SOURCE))
|
|
|
|
|
TESTS=$(subst .cc,,$(TEST_SOURCE))
|
|
|
|
|
|
|
|
|
|
%.d: %.cpp
|
|
|
|
|
@set -e; rm -f $@; \
|
|
|
|
|
$(CXX) -MM $(CPPFLAGS) $(CXXFLAGS) $< > $@.$$$$; \
|
|
|
|
|
sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
|
|
|
|
|
rm -f $@.$$$$
|
|
|
|
|
all: $(TARGET)
|
|
|
|
|
|
|
|
|
|
%.d: %.cc
|
|
|
|
|
@set -e; rm -f $@; \
|
|
|
|
|
$(CXX) -MM $(CPPFLAGS) $(CXXFLAGS) $< > $@.$$$$; \
|
|
|
|
|
$(CC) -MM $(CPPFLAGS) $(CFLAGS) $< > $@.$$$$; \
|
|
|
|
|
sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
|
|
|
|
|
rm -f $@.$$$$
|
|
|
|
|
|
|
|
|
|
# If only the goal 'clean' is given, do not generate and include the '%.d' files.
|
|
|
|
|
ifneq ($(MAKECMDGOALS),clean)
|
|
|
|
|
-include $(DEPENDS)
|
|
|
|
|
-include $(DEPENDS)
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
.PHONY: install
|
|
|
|
|
install: all
|
|
|
|
|
mkdir -v -p "$(PREFIX)/bin" "$(PREFIX)/lib"
|
|
|
|
|
mkdir -v -p "$(HTML_DIRECTORY)"
|
|
|
|
|
cp -v ../html/* "$(HTML_DIRECTORY)"
|
|
|
|
|
cp -v libjson-adapter.a "$(PREFIX)/lib"
|
|
|
|
|
cp -v "$(TARGET)" "$(TARGET_TEST)" "$(TARGET_GTEST)" "$(PREFIX)/bin"
|
|
|
|
|
$(LIB_TARGET): $(LIB_OBJECTS)
|
|
|
|
|
$(AR) -cr $@ $^
|
|
|
|
|
|
|
|
|
|
$(TARGET): $(LIB_TARGET) $(MA_OBJECTS) $(SPIRIT_OBJECTS)
|
|
|
|
|
$(CXX) $(LDFLAGS) -liconv \
|
|
|
|
|
-lobjc -framework Foundation -framework Security \
|
|
|
|
|
$(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 $@ $^
|
|
|
|
|
|
|
|
|
|
test_%: test_%.o $(TARGET)
|
|
|
|
|
$(CXX) $(LDFLAGS) $(TARGET) -o $@ $<
|
|
|
|
|
|
|
|
|
|
test: $(TESTS)
|
|
|
|
|
for i in $(TESTS) ; do ./$$i ; done
|
|
|
|
|
|
|
|
|
|
.PHONY: clean uninstall install
|
|
|
|
|
|
|
|
|
|
install: $(TARGET)
|
|
|
|
|
mkdir -p $(PREFIX)/include/pEp
|
|
|
|
|
cp -v *.hh $(PREFIX)/include/pEp
|
|
|
|
|
cp -v lib*.a $(PREFIX)/lib/
|
|
|
|
|
|
|
|
|
|
uninstall:
|
|
|
|
|
for i in *.hh; do rm -f $(PREFIX)/include/pEp/\$i ; done
|
|
|
|
|
|
|
|
|
|
.PHONY: clean
|
|
|
|
|
clean:
|
|
|
|
|
rm -vf "$(TARGET)" "$(TARGET_TEST)" "$(TARGET_GTEST)"
|
|
|
|
|
rm -vf *.o json_spirit/*.o
|
|
|
|
|
rm -vf *.a json_spirit/*.a
|
|
|
|
|
rm -vf *.d json_spirit/*.d
|
|
|
|
|
|
|
|
|
|
.PHONY: run
|
|
|
|
|
run:
|
|
|
|
|
@echo "The adapter must be installed for $< to work"
|
|
|
|
|
$(CMD_PFX) "$(PREFIX)/bin/$(TARGET)"
|
|
|
|
|
|
|
|
|
|
.PHONY: test
|
|
|
|
|
test:
|
|
|
|
|
@echo "The adapter must be installed for $< to work"
|
|
|
|
|
$(CMD_PFX) "$(PREFIX)/bin/$(TARGET_TEST)"
|
|
|
|
|
$(CMD_PFX) "$(PREFIX)/bin/$(TARGET_GTEST)"
|
|
|
|
|
rm -vf *.o *.d *.d.* $(TARGET) $(TESTS)
|
|
|
|
|
|
|
|
|
|
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 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 GNU iconv" >> local.conf
|
|
|
|
|
@echo >> local.conf
|
|
|
|
|
@echo "ICONV_LIBRARY_PATH=$(ICONV_LIBRARY_PATH)" >> local.conf
|
|
|
|
|
|
|
|
|
|
help:
|
|
|
|
|
@echo "usage:"
|
|
|
|
|
@echo " make local.conf # optional"
|
|
|
|
|
@echo " generate a local.conf with default paths"
|
|
|
|
|
@echo
|
|
|
|
|
@echo " make libjson-adapter.a"
|
|
|
|
|
@echo " build adapter library"
|
|
|
|
|
@echo
|
|
|
|
|
@echo " make pEp-mini-json-adapter # default"
|
|
|
|
|
@echo " compile and link mini adapter"
|
|
|
|
|
@echo
|
|
|
|
|