1 BUILDDIR = build 2 OBJDIR = objects 3 GENKEY=\"/usr/local/bin/mbedtls_gen_key\" 4 CERTWRITE=\"/usr/local/bin/mbedtls_cert_write\" 5 6 ifndef os 7 SYSTEM := $(shell uname -s) 8 ifeq ($(SYSTEM), Darwin) 9 os=x 10 else ifeq ($(SYSTEM), Linux) 11 os_id := $(shell sed -n -e 's/^ID=//p' < /etc/os-release) 12 ifeq ($(os_id), raspbian) 13 os=raspbian 14 else 15 os=linux 16 endif 17 endif 18 endif 19 20 ifdef INSTBASE 21 INSTALL_PREFIX=$(INSTBASE) 22 else 23 INSTALL_PREFIX=$(DESTDIR)/usr 24 endif 25 26 INSTALL?=install 27 28 INCLUDEDIRS=-I../mDNSShared -I../mDNSMacOSX/xpc_services -I../DSO -I../mDNSCore -I../mDNSShared/utilities 29 ifeq ($(os),x) 30 SRPCFLAGS = -O0 -g -Wall -Werror -I../mDNSCore -I/usr/local/include -I. -I../mDNSMacOSX/Private $(INCLUDEDIRS) -I../DSO -MMD -MF .depfile-${notdir $@} -DUSE_KQUEUE -DHAVE_SOCKADDR_DL -DGENKEY_PROGRAM=$(GENKEY) -DCERTWRITE_PROGRAM=$(CERTWRITE) -DEXCLUDE_TLS -DPOSIX_BUILD -D__APPLE_USE_RFC_3542 -DSTANDALONE 31 SRPLDOPTS = -framework CoreServices -framework Security -framework CoreFoundation -framework Network 32 HMACOBJS = $(OBJDIR)/hmac-macos.o 33 SIGNOBJS = $(OBJDIR)/sign-macos.o $(OBJDIR)/srp-filedata.o 34 VERIFYOBJS = $(OBJDIR)/verify-macos.o 35 TLSOBJS = $(OBJDIR)/tls-macos.o 36 IOOBJS = $(OBJDIR)/ioloop.o $(OBJDIR)/posix.o $(OBJDIR)/ioloop-common.o 37 IOWOTLSOBJS = $(OBJDIR)/ioloop.o $(OBJDIR)/posix.o 38 else ifeq ($(os), linux) 39 SRPCFLAGS = -DMDNS_UDS_SERVERPATH=\"/var/run/mdnsd\" -O0 -g -Wall -Werror -DSTANDALONE -I../mDNSCore -I/usr/local/include -I. -I../mDNSMacOSX/Private $(INCLUDEDIRS) -I../DSO -MMD -MF .depfile-${notdir $@} -DNOT_HAVE_SA_LEN -DUSE_SELECT -DUSE_INOTIFY -DGENKEY_PROGRAM=$(GENKEY) -DCERTWRITE_PROGRAM=$(CERTWRITE) -DLINUX -DSRP_CRYPTO_MBEDTLS -DPOSIX_BUILD -DMDNS_NO_STRICT 40 #SRPLDOPTS = /usr/local/lib/libmbedtls.a /usr/local/lib/libmbedx509.a /usr/local/lib/libmbedcrypto.a -lbsd 41 SRPLDOPTS = -lmbedcrypto -lmbedtls -lmbedx509 42 HMACOBJS = $(OBJDIR)/hmac-mbedtls.o 43 SIGNOBJS = $(OBJDIR)/sign-mbedtls.o $(OBJDIR)/srp-filedata.o 44 VERIFYOBJS = $(OBJDIR)/verify-mbedtls.o 45 TLSOBJS = $(OBJDIR)/tls-mbedtls.o 46 IOOBJS = $(OBJDIR)/ioloop.o $(OBJDIR)/posix.o $(TLSOBJS) $(OBJDIR)/ioloop-common.o 47 IOWOTLSOBJS = $(OBJDIR)/ioloop-notls.o $(OBJDIR)/posix.o 48 else ifeq ($(os), linux-uclibc) 49 SRPCFLAGS = -DMDNS_UDS_SERVERPATH=\"/var/run/mdnsd\" -O0 -g -Wall -Werror -DSTANDALONE -I../mDNSCore -I/usr/local/include -I. -I../mDNSMacOSX/Private $(INCLUDEDIRS) -I../DSO -MMD -MF .depfile-${notdir $@} -DNOT_HAVE_SA_LEN -DUSE_SELECT -DLINUX_GETENTROPY -DGENKEY_PROGRAM=$(GENKEY) -DCERTWRITE_PROGRAM=$(CERTWRITE) -DLINUX -DSRP_CRYPTO_MBEDTLS -DPOSIX_BUILD -DMDNS_NO_STRICT 50 SRPLDOPTS = -lmbedcrypto -lmbedtls -lmbedx509 -lbsd 51 HMACOBJS = $(OBJDIR)/hmac-mbedtls.o 52 SIGNOBJS = $(OBJDIR)/sign-mbedtls.o $(OBJDIR)/srp-filedata.o 53 VERIFYOBJS = $(OBJDIR)/verify-mbedtls.o 54 TLSOBJS = $(OBJDIR)/tls-mbedtls.o 55 IOOBJS = $(OBJDIR)/ioloop.o $(OBJDIR)/posix.o $(TLSOBJS) $(OBJDIR)/ioloop-common.o 56 IOWOTLSOBJS = $(OBJDIR)/ioloop-notls.o $(OBJDIR)/posix.o 57 else ifeq ($(os), raspbian) 58 ifdef ASAN 59 SRPCFLAGS = -DMDNS_UDS_SERVERPATH=\"/var/run/mdnsd\" -O0 -g -Wall -Werror -DSTANDALONE -I../mDNSCore -I/usr/local/include -I. -I../mDNSMacOSX/Private $(INCLUDEDIRS) -I../DSO -MMD -MF .depfile-${notdir $@} -DNOT_HAVE_SA_LEN -DUSE_SELECT -DGENKEY_PROGRAM=$(GENKEY) -DCERTWRITE_PROGRAM=$(CERTWRITE) -DLINUX -DRPI -DSRP_CRYPTO_MBEDTLS -DPOSIX_BUILD -fsanitize=address -DMDNS_NO_STRICT 60 SRPLDOPTS = -lasan -lmbedtls -lmbedx509 -lmbedcrypto -lbsd 61 else 62 SRPCFLAGS = -DMDNS_UDS_SERVERPATH=\"/var/run/mdnsd\" -O0 -g -Wall -Werror -DSTANDALONE -I../mDNSCore -I/usr/local/include -I. -I../mDNSMacOSX/Private $(INCLUDEDIRS) -I../DSO -MMD -MF .depfile-${notdir $@} -DNOT_HAVE_SA_LEN -DUSE_SELECT -DGENKEY_PROGRAM=$(GENKEY) -DCERTWRITE_PROGRAM=$(CERTWRITE) -DLINUX -DRPI -DSRP_CRYPTO_MBEDTLS -DPOSIX_BUILD -DMDNS_NO_STRICT 63 SRPLDOPTS = -lmbedtls -lmbedx509 -lmbedcrypto -lbsd 64 endif 65 HMACOBJS = $(OBJDIR)/hmac-mbedtls.o 66 SIGNOBJS = $(OBJDIR)/sign-mbedtls.o $(OBJDIR)/srp-filedata.o 67 VERIFYOBJS = $(OBJDIR)/verify-mbedtls.o 68 TLSOBJS = $(OBJDIR)/tls-mbedtls.o 69 IOOBJS = $(OBJDIR)/ioloop.o $(OBJDIR)/posix.o $(TLSOBJS) $(OBJDIR)/ioloop-common.o 70 IOWOTLSOBJS = $(OBJDIR)/ioloop-notls.o $(OBJDIR)/posix.o 71 else 72 SRPCFLAGS=$(os) $(os_id) 73 endif 74 75 all: setup $(BUILDDIR)/srp-client $(BUILDDIR)/srp-mdns-proxy $(BUILDDIR)/keydump $(BUILDDIR)/dnssd-proxy $(BUILDDIR)/cti-server $(BUILDDIR)/srputil # $(BUILDDIR)/srp-dns-proxy $(BUILDDIR)/dnssd-relay 76 77 install: all 78 $(INSTALL) -D $(BUILDDIR)/srp-client $(INSTALL_PREFIX)/sbin/srp-client 79 $(INSTALL) -D $(BUILDDIR)/srp-mdns-proxy $(INSTALL_PREFIX)/sbin/srp-mdns-proxy 80 $(INSTALL) -D $(BUILDDIR)/keydump $(INSTALL_PREFIX)/bin/keydump 81 $(INSTALL) -D $(BUILDDIR)/dnssd-proxy $(INSTALL_PREFIX)/sbin/dnssd-proxy 82 $(INSTALL) -D $(BUILDDIR)/srp-dns-proxy $(INSTALL_PREFIX)/sbin/srp-dns-proxy 83 # $(INSTALL) -D $(BUILDDIR)/dnssd-relay $(INSTALL_PREFIX)/sbin/dnssd-relay 84 85 # 'setup' sets up the build directory structure the way we want 86 setup: 87 @if test ! -d $(OBJDIR) ; then mkdir -p $(OBJDIR) ; fi 88 @if test ! -d $(BUILDDIR) ; then mkdir -p $(BUILDDIR) ; fi 89 90 # clean removes targets and objects 91 clean: 92 @if test -d $(OBJDIR) ; then rm -r $(OBJDIR) ; fi 93 @if test -d $(BUILDDIR) ; then rm -r $(BUILDDIR) ; fi 94 95 SIMPLEOBJS = $(OBJDIR)/towire.o $(SIGNOBJS) 96 DSOOBJS = $(OBJDIR)/dso.o $(OBJDIR)/dso-utils.o 97 MDNSOBJS = $(OBJDIR)/dnssd_clientstub.o $(OBJDIR)/dnssd_ipc.o $(OBJDIR)/dnssd_clientlib.o 98 FROMWIREOBJS = $(OBJDIR)/fromwire.o $(VERIFYOBJS) $(OBJDIR)/wireutils.o 99 CFOBJS = $(OBJDIR)/config-parse.o 100 CTIOBJS = $(OBJDIR)/cti-services.o $(OBJDIR)/cti-proto.o 101 $(BUILDDIR)/dnssd-relay: $(OBJDIR)/dnssd-relay.o $(DSOOBJS) $(IOOBJS) $(CFOBJS) 102 $(CC) -o $@ $+ $(SRPLDOPTS) 103 104 $(BUILDDIR)/dnssd-proxy: $(OBJDIR)/dnssd-proxy.o $(SIMPLEOBJS) $(DSOOBJS) $(MDNSOBJS) $(FROMWIREOBJS) $(IOOBJS) $(CFOBJS) $(OBJDIR)/srp-log.o 105 $(CC) -o $@ $+ $(SRPLDOPTS) 106 107 $(BUILDDIR)/srp-client: $(OBJDIR)/srp-ioloop.o $(OBJDIR)/srp-client.o $(OBJDIR)/dnssd_clientlib.o $(CTIOBJS) $(SIMPLEOBJS) $(IOWOTLSOBJS) $(CFOBJS) $(DSOOBJS) $(FROMWIREOBJS) 108 $(CC) -o $@ $+ $(SRPLDOPTS) 109 110 $(BUILDDIR)/srp-dns-proxy: $(OBJDIR)/srp-dns-proxy.o $(OBJDIR)/srp-parse.o $(SIMPLEOBJS) $(FROMWIREOBJS) $(IOOBJS) $(HMACOBJS) $(CFOBJS) 111 $(CC) -o $@ $+ $(SRPLDOPTS) 112 113 $(BUILDDIR)/srp-mdns-proxy: $(OBJDIR)/srp-mdns-proxy.o $(OBJDIR)/srp-parse.o $(OBJDIR)/route.o $(OBJDIR)/omr-watcher.o $(OBJDIR)/adv-ctl-server.o $(OBJDIR)/combined-dnssd-proxy.o $(OBJDIR)/srp-replication.o $(OBJDIR)/srp-log.o $(CTIOBJS) $(MDNSOBJS) $(SIMPLEOBJS) $(DSOOBJS) $(FROMWIREOBJS) $(IOOBJS) $(HMACOBJS) $(CFOBJS) 114 $(CC) -o $@ $+ $(SRPLDOPTS) 115 116 $(BUILDDIR)/keydump: $(OBJDIR)/keydump.o $(MDNSOBJS) $(SIMPLEOBJS) $(FROMWIREOBJS) $(IOOBJS) 117 $(CC) -o $@ $+ $(SRPLDOPTS) 118 119 $(BUILDDIR)/cti-server: $(OBJDIR)/cti-server.o $(OBJDIR)/cti-proto-noioloop.o 120 $(CC) -o $@ $+ $(SRPLDOPTS) 121 122 $(BUILDDIR)/srputil: $(OBJDIR)/srputil.o $(OBJDIR)/advertising_proxy_services.o $(CTIOBJS) $(MDNSOBJS) $(SIMPLEOBJS) $(FROMWIREOBJS) $(IOOBJS) 123 $(CC) -o $@ $+ $(SRPLDOPTS) 124 125 $(OBJDIR)/dso.o: ../DSO/dso.c 126 $(CC) -o $@ $(SRPCFLAGS) $(CFLAGS) -c -I. $(INCLUDEDIRS) $< 127 128 $(OBJDIR)/dnssd_clientstub.o: ../mDNSShared/dnssd_clientstub.c 129 $(CC) -o $@ $(SRPCFLAGS) $(CFLAGS) -c -I. $(INCLUDEDIRS) $< 130 131 $(OBJDIR)/dnssd_clientlib.o: ../mDNSShared/dnssd_clientlib.c 132 $(CC) -o $@ $(SRPCFLAGS) $(CFLAGS) -c -I. $(INCLUDEDIRS) $< 133 134 $(OBJDIR)/dnssd_ipc.o: ../mDNSShared/dnssd_ipc.c 135 $(CC) -o $@ $(SRPCFLAGS) $(CFLAGS) -c -I. $(INCLUDEDIRS) $< 136 137 $(OBJDIR)/srputil.o: ../Clients/srputil/srputil.c 138 $(CC) -o $@ $(SRPCFLAGS) $(CFLAGS) -c -I. $(INCLUDEDIRS) $< 139 140 $(OBJDIR)/ioloop-notls.o: ioloop.c 141 $(CC) -o $@ $(SRPCFLAGS) $(CFLAGS) -DEXCLUDE_TLS -DEXCLUDE_DNSSD_TXN_SUPPORT -c $< 142 143 $(OBJDIR)/cti-proto-noioloop.o: cti-proto.c 144 $(CC) -o $@ $(SRPCFLAGS) $(CFLAGS) -DNO_IOLOOP -c $< 145 146 $(OBJDIR)/cti-server.o: cti-server.c 147 $(CC) -o $@ $(SRPCFLAGS) $(CFLAGS) -DNO_IOLOOP -c $< 148 149 $(OBJDIR)/dnssd-proxy.o: dnssd-proxy.c 150 $(CC) -o $@ $(SRPCFLAGS) $(CFLAGS) -DSRP_FEATURE_DYNAMIC_CONFIGURATION=0 -DSRP_FEATURE_COMBINED_SRP_DNSSD_PROXY=0 -DTHREAD_BORDER_ROUTER=0 -DSRP_FEATURE_REPLICATION=0 -c $< 151 152 $(OBJDIR)/combined-dnssd-proxy.o: dnssd-proxy.c 153 $(CC) -o $@ $(SRPCFLAGS) $(CFLAGS) -c $< 154 155 $(OBJDIR)/%.o: %.c 156 $(CC) -o $@ $(SRPCFLAGS) $(CFLAGS) -c $< 157 158 -include .depfile-adv-ctl-server.o 159 -include .depfile-advertising_proxy_services.o 160 -include .depfile-combined-dnssd-proxy.o 161 -include .depfile-config-parse.o 162 -include .depfile-cti-proto-noioloop.o 163 -include .depfile-cti-proto.o 164 -include .depfile-cti-server.o 165 -include .depfile-cti-services.o 166 -include .depfile-dnssd_clientlib.o 167 -include .depfile-dnssd_clientstub.o 168 -include .depfile-dnssd_ipc.o 169 -include .depfile-dnssd_clientlib.o 170 -include .depfile-dnssd-proxy.o 171 -include .depfile-dso.o 172 -include .depfile-fromwire.o 173 -include .depfile-hmac-mbedtls.o 174 -include .depfile-ioloop-common.o 175 -include .depfile-ioloop-notls.o 176 -include .depfile-ioloop.o 177 -include .depfile-keydump.o 178 -include .depfile-posix.o 179 -include .depfile-route.o 180 -include .depfile-sign-mbedtls.o 181 -include .depfile-srp-client.o 182 -include .depfile-srp-filedata.o 183 -include .depfile-srp-ioloop.o 184 -include .depfile-srp-mdns-proxy.o 185 -include .depfile-srp-parse.o 186 -include .depfile-srp-replication.o 187 -include .depfile-srputil.o 188 -include .depfile-tls-mbedtls.o 189 -include .depfile-towire.o 190 -include .depfile-verify-mbedtls.o 191 -include .depfile-wireutils.o 192