-# Copyright (c) 2002-2004 Apple Computer, Inc. All rights reserved.
+# -*- tab-width: 4 -*-
#
-# @APPLE_LICENSE_HEADER_START@
+# Copyright (c) 2002-2004, 2015 Apple Computer, Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
#
-# This file contains Original Code and/or Modifications of Original Code
-# as defined in and that are subject to the Apple Public Source License
-# Version 2.0 (the 'License'). You may not use this file except in
-# compliance with the License. Please obtain a copy of the License at
-# http://www.opensource.apple.com/apsl/ and read it before using this
-# file.
+# http://www.apache.org/licenses/LICENSE-2.0
#
-# The Original Code and all software distributed under the License are
-# distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
-# EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
-# INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
-# Please see the License for the specific language governing rights and
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
# limitations under the License.
-#
-# @APPLE_LICENSE_HEADER_END@
-#
-# $Log: Makefile,v $
-# Revision 1.7 2006/01/06 01:06:17 cheshire
-# <rdar://problem/3978979> Compile library and client programs in one pass
-#
-# Revision 1.6 2004/09/24 21:15:26 cheshire
-# <rdar://problem/3724985> Library "libmdns" misnamed; should be "libdns_sd"
-#
-# Revision 1.5 2004/09/02 17:32:45 cheshire
-# Look for headers in ../mDNSShared before we go to /usr/include
-#
-# Revision 1.4 2004/05/21 17:25:56 cheshire
-# Fixes to make sample client work on Linux
-#
-# Revision 1.3 2004/03/12 08:05:32 cheshire
-# Add a "make clean" target
-#
-# Revision 1.2 2004/02/11 20:59:26 cheshire
-# Fix Makefile so it creates the "build" directory if necessary
-#
-# Revision 1.1 2004/02/06 03:19:09 cheshire
-# Check in code to make command-line "dns-sd" testing tool
-#
#
# Notes:
# $@ means "The file name of the target of the rule"
# $+ means "The names of all the prerequisites, with spaces between them, exactly as given"
# For more magic automatic variables, see
# <http://www.gnu.org/software/make/manual/html_chapter/make_10.html#SEC111>
+#
+# This makefile uses $(CC) for compilation and linking, which is
+# an automatic implicit gcc variable that defaults to "cc"
+# <https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html>
#############################################################################
# On OS X the dns_sd library functions are included in libSystem, which is implicitly linked with every executable
# If /usr/lib/libSystem.dylib exists, then we're on OS X, so we don't need also to link the "dns_sd" shared library
+ifeq "$(DEBUG)" "1"
+DEBUGFLAGS = -g
+BUILDDIR = build/debug
+else
+DEBUGFLAGS = -Os
+BUILDDIR = build/prod
+endif
+
ifneq "$(wildcard /usr/lib/libSystem.dylib)" ""
+TARGETS = build/dns-sd build/dns-sd64
LIBS =
else
-LIBS = -L../mDNSPosix/build/prod/ -ldns_sd
+TARGETS = build/dns-sd
+LIBS = -L../mDNSPosix/$(BUILDDIR)/ -ldns_sd
endif
-targets: build/dns-sd
+all: $(TARGETS)
clean:
rm -rf build
build:
mkdir build
-build/dns-sd: build dns-sd.c
- cc $(filter %.c %.o, $+) $(LIBS) -I../mDNSShared -o $@
+build/dns-sd: build dns-sd.c ClientCommon.c
+ $(CC) $(SUPMAKE_CFLAGS) $(filter %.c %.o, $+) $(LIBS) -I../mDNSShared -Wall -o $@
+
+build/dns-sd64: build dns-sd.c ClientCommon.c
+ $(CC) $(SUPMAKE_CFLAGS) $(filter %.c %.o, $+) $(LIBS) -I../mDNSShared -Wall -o $@ -m64
+
+# Note, we can make a 'fat' version of dns-sd using 'lipo', as shown below, but we
+# don't, because we don't want or need a 'fat' version of dns-sd, because it will
+# never need to access more than 4GB of data. We build the 64-bit version purely so
+# we have a test tool for making sure that the APIs work properly from 64-bit clients.
+# lipo -create dns-sd dns-sd64 -output dns-sd-fat