1#
2# Makefile for Generic Security Services Daemon - gssd
3#
4
5Project = gssd
6
7SRCROOT ?= .
8OBJROOT ?= .
9SYMROOT ?= .
10DSTROOT ?= .
11
12DST_DIR = $(DSTROOT)/usr/sbin
13MAN_DIR = $(DSTROOT)/usr/share/man/man8
14
15#
16# Standard B&I targets
17#
18all: $(SYMROOT)/gssd $(SRCROOT)/gssd.8 $(SYMROOT)/gsstest 
19
20install: all
21	install -d -o root -g wheel -m 755 $(MAN_DIR)
22	install -c -o root -g wheel -m 644 $(SRCROOT)/gssd.8 $(MAN_DIR)
23	install -d -o root -g wheel -m 755 $(DST_DIR)
24	install -c -o root -g wheel -m 555 -s $(SYMROOT)/gssd   $(DST_DIR)
25	install -d -o root -g wheel -m 755 $(DSTROOT)/System/Library/LaunchAgents
26	install -c -o root -g wheel -m 644 $(SRCROOT)/com.apple.gssd-agent.plist  $(DSTROOT)/System/Library/LaunchAgents
27	install -d -o root -g wheel -m 644 $(DSTROOT)/System/Library/LaunchDaemons
28	install -c -o root -g wheel -m 644 $(SRCROOT)/com.apple.gssd.plist $(DSTROOT)/System/Library/LaunchDaemons
29
30installhdrs:
31	@echo installhdrs
32
33clean:
34	-rm -f *.o gssd gsstest \
35		gssd_mach.h gssd_machServer.c gssd_machUser.c gssd_machServer.h
36installsrc: clean
37	ditto . $(SRCROOT)
38
39#
40# Build
41#
42CFLAGS		= -g -Os -Wall -Wextra -Wshadow -Wmissing-prototypes \
43		  -Wmissing-declarations -Wno-discard-qual \
44		  -I $(SRCROOT) -I $(OBJROOT) -F/System/Library/PrivateFrameworks 
45
46CFLAGS		+= $(RC_CFLAGS)
47LDFLAGS	= -lbsm -framework Heimdal -framework GSS
48
49$(SYMROOT)/gssd: $(OBJROOT)/gssd.o $(OBJROOT)/gssd_machUser.o $(OBJROOT)/gssd_machServer.o $(OBJROOT)/gssd_validate.o
50	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
51
52$(SRCROOT)/gssd.c: $(OBJROOT)/gssd_mach.h $(OBJROOT)/gssd_machServer.h
53
54$(OBJROOT)/%.o: $(SRCROOT)/%.c
55	$(CC) -c $(CFLAGS) -o $@ $<
56
57$(OBJROOT)/gssd_mach.h $(OBJROOT)/gssd_machServer.c $(OBJROOT)/gssd_machUser.c \
58	$(OBJROOT)/gssd_machServer.h: $(SRCROOT)/gssd_mach.defs
59	mig  \
60		-user    $(OBJROOT)/gssd_machUser.c \
61		-header  $(OBJROOT)/gssd_mach.h \
62		-server  $(OBJROOT)/gssd_machServer.c \
63		-sheader $(OBJROOT)/gssd_machServer.h \
64		$(SRCROOT)/gssd_mach.defs
65
66
67# gsstest is a client used to test gssd - not installed
68
69$(SYMROOT)/gsstest: $(OBJROOT)/gsstest.o $(OBJROOT)/gssd_machUser.o
70	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
71
72$(SRCROOT)/gsstest.c: $(OBJROOT)/gssd_mach.h
73