1 # Copyright 2017, pEp Foundation
2 # This file is part of pEpEngine
3 # This file may be used under the terms of the GNU General Public License version 3
6 include ../Makefile.conf
8 ifdef PER_USER_DIRECTORY
9 EXTRA_MACROS+= -DPER_USER_DIRECTORY=$(PER_USER_DIRECTORY)
12 ifdef PER_MACHINE_DIRECTORY
13 EXTRA_MACROS+= -DPER_MACHINE_DIRECTORY=$(PER_MACHINE_DIRECTORY)
16 CFLAGS+= $(ETPAN_INC) $(PEP_MIME_INC) -I../asn.1 $(EXTRA_MACROS)
17 LDFLAGS+= $(ETPAN_LIB) $(PEP_MIME_LIB) -L../asn.1 -shared
25 NO_SOURCE+= etpan_mime.c
28 ifeq ($(BUILD_ON),Darwin)
29 ifeq ($(BUILD_FOR),Darwin)
30 CFLAGS+= -DSQLITE_THREADSAFE=1
33 $(error I do not know how to make for $(BUILD_FOR) on $(BUILD_ON))
35 else ifeq ($(BUILD_ON),Linux)
36 ifeq ($(BUILD_FOR),Linux)
37 CFLAGS+= -DSQLITE_THREADSAFE=1 -D_GNU_SOURCE
40 $(error I do not know how to make for $(BUILD_FOR) on $(BUILD_ON))
43 $(error I do not know how to make for $(BUILD_FOR) on $(BUILD_ON))
48 CFLAGS+= -DSQLITE3_FROM_OS
53 NO_SOURCE+= pgp_netpgp.c pgp_sequoia.c
54 CFLAGS+= -DUSE_GPG $(GPGME_INC) -DLIBGPGME=\"$(LIBGPGME)\"
55 LDFLAGS+= $(GPGME_LIB)
56 # No extra LDLIBS are needed here, because GPGME is dynamically loaded
57 else ifeq ($(OPENPGP),NETPGP)
58 NO_SOURCE+= pgp_gpg.c pgp_sequoia.c
59 CFLAGS+= -DUSE_NETPGP $(NETGPG_INC)
60 LDFLAGS+= $(NETGPG_LIB)
61 LDLIBS+= -lnetpgp -lcurl
62 else ifeq ($(OPENPGP),SEQUOIA)
63 NO_SOURCE+= pgp_gpg.c pgp_netpgp.c
64 CFLAGS+= -DUSE_SEQUOIA $(SEQUOIA_CFLAGS) $(SEQUOIA_INC)
65 LDFLAGS+= $(SEQUOIA_LDFLAGS)
66 LDLIBS+= $(SEQUOIA_LIB)
68 $(error Unknown OpenPGP library: $(OPENPGP))
71 ALL_SOURCE=$(filter-out $(NO_SOURCE),$(wildcard *.c))
72 DEPENDS=$(subst .c,.d,$(ALL_SOURCE))
73 ALL_OBJECTS=$(subst .c,.o,$(ALL_SOURCE))
77 -include Makefile.protocols
81 $(CC) -MM $(CPPFLAGS) $(CFLAGS) $< > $@.$$$$; \
82 sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
85 # If only the goal 'clean' is given, do not generate and include the '%.d' files.
86 ifneq ($(MAKECMDGOALS),clean)
90 $(TARGET): libpEpEngine.a
91 $(CC) $(CFLAGS) $(ALL_OBJECTS) $(LDFLAGS) $(LDLIBS) -o $@
93 .PHONY: objects clean install_headers install uninstall
95 objects: $(ALL_OBJECTS)
97 libpEpEngine.a: $(ALL_OBJECTS)
101 rm -f *.d *.o *.a $(TARGET) *.dll *.so *.zip *.d.* *.def *~
102 rm -Rf $(TARGET).dSYM
103 rm -f KeySync_fsm.* Sync_actions.c Sync_event.* Sync_func.* Sync_impl.* sync_codec.*
106 # install_headers is needed for building pEp MIME
109 mkdir -p $(PREFIX)/include/pEp
110 cp pEpEngine.h keymanagement.h message_api.h dynamic_api.h stringlist.h \
111 timestamp.h identity_list.h bloblist.h stringpair.h message.h mime.h \
112 cryptotech.h sync_api.h blacklist.h pEp_string.h openpgp_compat.h \
113 labeled_int_list.h key_reset.h base64.h sync_codec.h status_to_string.h\
114 aux_mime_msg.h ../asn.1/*.h $(PREFIX)/include/pEp/
116 install: $(TARGET) install_headers
117 mkdir -p "$(PREFIX)/lib/"
121 rm -f $(PREFIX)/lib/$(TARGET)
122 rm -rf $(PREFIX)/include/pEp
124 tags: $(wildcard *.c) $(wildcard *.h)