1dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# -*- tab-width: 4 -*-
2dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt#
3dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# Copyright (c) 2002-2004 Apple Computer, Inc. All rights reserved.
4dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt#
5dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# Licensed under the Apache License, Version 2.0 (the "License");
6dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# you may not use this file except in compliance with the License.
7dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# You may obtain a copy of the License at
8dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# 
9dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt#     http://www.apache.org/licenses/LICENSE-2.0
10dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# 
11dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# Unless required by applicable law or agreed to in writing, software
12dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# distributed under the License is distributed on an "AS IS" BASIS,
13dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# See the License for the specific language governing permissions and
15dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# limitations under the License.
16dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt#
17dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# Notes:
18dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# $@ means "The file name of the target of the rule"
19dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# $< means "The name of the first prerequisite"
20dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# $+ means "The names of all the prerequisites, with spaces between them, exactly as given"
21dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# For more magic automatic variables, see
22dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# <http://www.gnu.org/software/make/manual/html_chapter/make_10.html#SEC111>
23dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt
24dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt#############################################################################
25dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt
26dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# On OS X the dns_sd library functions are included in libSystem, which is implicitly linked with every executable
27dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# 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
28dd52342e088715929196886494c5055f9186d5c3Robert Greenwaltifneq "$(wildcard /usr/lib/libSystem.dylib)" ""
29dd52342e088715929196886494c5055f9186d5c3Robert GreenwaltTARGETS = build/dns-sd build/dns-sd64
30dd52342e088715929196886494c5055f9186d5c3Robert GreenwaltLIBS =
31dd52342e088715929196886494c5055f9186d5c3Robert Greenwaltelse
32dd52342e088715929196886494c5055f9186d5c3Robert GreenwaltTARGETS = build/dns-sd
33dd52342e088715929196886494c5055f9186d5c3Robert GreenwaltLIBS = -L../mDNSPosix/build/prod/ -ldns_sd
34dd52342e088715929196886494c5055f9186d5c3Robert Greenwaltendif
35dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt
36dd52342e088715929196886494c5055f9186d5c3Robert Greenwaltall: $(TARGETS)
37dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt
38dd52342e088715929196886494c5055f9186d5c3Robert Greenwaltclean:
39dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt	rm -rf build
40dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt
41dd52342e088715929196886494c5055f9186d5c3Robert Greenwaltbuild:
42dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt	mkdir build
43dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt
44dd52342e088715929196886494c5055f9186d5c3Robert Greenwaltbuild/dns-sd: build dns-sd.c ClientCommon.c
45dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt	cc $(filter %.c %.o, $+) $(LIBS) -I../mDNSShared -Wall -o $@
46dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt
47dd52342e088715929196886494c5055f9186d5c3Robert Greenwaltbuild/dns-sd64: build dns-sd.c ClientCommon.c
48dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt	cc $(filter %.c %.o, $+) $(LIBS) -I../mDNSShared -Wall -o $@ -m64
49dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt
50dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# Note, we can make a 'fat' version of dns-sd using 'lipo', as shown below, but we
51dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# don't, because we don't want or need a 'fat' version of dns-sd, because it will
52dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# never need to access more than 4GB of data. We build the 64-bit version purely so
53dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# we have a test tool for making sure that the APIs work properly from 64-bit clients.
54dd52342e088715929196886494c5055f9186d5c3Robert Greenwalt# lipo -create dns-sd dns-sd64 -output dns-sd-fat
55