2 # "$Id: Makefile 9766 2011-05-11 22:17:34Z mike $"
4 # Scheduler Makefile for CUPS.
6 # Copyright 2007-2011 by Apple Inc.
7 # Copyright 1997-2007 by Easy Software Products, all rights reserved.
9 # These coded instructions, statements, and computer programs are the
10 # property of Apple Inc. and are protected by Federal copyright
11 # law. Distribution and use rights are outlined in the file "LICENSE.txt"
12 # which should have been included with this file. If this file is
13 # file is missing or damaged, see the license at "http://www.cups.org/".
102 # Make library targets...
112 unittests: $(UNITTARGETS)
116 # Clean all object files...
121 $(RM) $(TARGETS) $(UNITTARGETS) convert
122 $(RM) libcupsmime.so libcupsmime.sl libcupsmime.dylib
126 # Update dependencies (without system header dependencies...)
130 makedepend -Y -I.. -fDependencies $(COBJS:.o=.c) \
131 $(CXXOBJS:.o=.cxx) >/dev/null 2>&1
135 # Install all targets...
138 install: all install-data install-headers install-libs install-exec
142 # Install data files...
146 echo Creating $(SERVERBIN)/driver...
147 $(INSTALL_DIR) -m 755 $(SERVERBIN)/driver
148 echo Creating $(SERVERROOT)...
149 $(INSTALL_DIR) -m 755 -g $(CUPS_GROUP) $(SERVERROOT)
150 echo Creating $(SERVERROOT)/interfaces...
151 $(INSTALL_DIR) -m 755 -g $(CUPS_GROUP) $(SERVERROOT)/interfaces
152 echo Creating $(SERVERROOT)/ppd...
153 $(INSTALL_DIR) -m 755 -g $(CUPS_GROUP) $(SERVERROOT)/ppd
154 if test "x`uname`" != xDarwin; then \
155 echo Creating $(SERVERROOT)/ssl...; \
156 $(INSTALL_DIR) -m 700 -g $(CUPS_GROUP) $(SERVERROOT)/ssl; \
158 if test "$(STATEDIR)" != "$(SERVERROOT)"; then \
159 echo Creating $(STATEDIR)...; \
160 $(INSTALL_DIR) -m 755 $(STATEDIR); \
162 echo Creating $(STATEDIR)/certs...
163 $(INSTALL_DIR) -m 511 -o $(CUPS_USER) -g $(CUPS_PRIMARY_SYSTEM_GROUP) \
165 echo Creating $(LOGDIR)...
166 $(INSTALL_DIR) -m 755 $(LOGDIR)
167 echo Creating $(REQUESTS)...
168 $(INSTALL_DIR) -m 710 -g $(CUPS_GROUP) $(REQUESTS)
169 echo Creating $(REQUESTS)/tmp...
170 $(INSTALL_DIR) -m 1770 -g $(CUPS_GROUP) $(REQUESTS)/tmp
171 echo Creating $(CACHEDIR)...
172 $(INSTALL_DIR) -m 775 -g $(CUPS_GROUP) $(CACHEDIR)
173 if test "x$(INITDIR)" != x; then \
174 echo Installing init scripts...; \
175 $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/init.d; \
176 $(INSTALL_SCRIPT) cups.sh $(BUILDROOT)$(INITDIR)/init.d/cups; \
177 for level in $(RCLEVELS); do \
178 $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/rc$${level}.d; \
179 $(LN) ../init.d/cups $(BUILDROOT)$(INITDIR)/rc$${level}.d/S$(RCSTART)cups; \
180 if test `uname` = HP-UX; then \
181 level=`expr $$level - 1`; \
182 $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/rc$${level}.d; \
184 $(LN) ../init.d/cups $(BUILDROOT)$(INITDIR)/rc$${level}.d/K$(RCSTOP)cups; \
186 $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDIR)/rc0.d; \
187 $(LN) ../init.d/cups $(BUILDROOT)$(INITDIR)/rc0.d/K$(RCSTOP)cups; \
189 if test "x$(INITDIR)" = x -a "x$(INITDDIR)" != x; then \
190 $(INSTALL_DIR) $(BUILDROOT)$(INITDDIR); \
191 if test "$(INITDDIR)" = "/System/Library/LaunchDaemons"; then \
192 echo Installing LaunchDaemons configuration files...; \
193 $(INSTALL_DATA) org.cups.cupsd.plist $(BUILDROOT)$(DEFAULT_LAUNCHD_CONF); \
194 $(INSTALL_DATA) org.cups.cups-lpd.plist $(BUILDROOT)/System/Library/LaunchDaemons; \
196 echo Installing RC script...; \
197 $(INSTALL_SCRIPT) cups.sh $(BUILDROOT)$(INITDDIR)/cups; \
200 if test "x$(SMFMANIFESTDIR)" != x; then \
201 echo Installing SMF manifest in $(SMFMANIFESTDIR)...;\
202 $(INSTALL_DIR) $(BUILDROOT)/$(SMFMANIFESTDIR); \
203 $(INSTALL_SCRIPT) cups.xml $(BUILDROOT)$(SMFMANIFESTDIR)/cups.xml; \
205 if test "x$(XINETD)" != x; then \
206 echo Installing xinetd configuration file for cups-lpd...; \
207 $(INSTALL_DIR) -m 755 $(BUILDROOT)$(XINETD); \
208 $(INSTALL_DATA) cups-lpd.xinetd $(BUILDROOT)$(XINETD)/cups-lpd; \
213 # Install programs...
217 echo Installing programs in $(SBINDIR)...
218 $(INSTALL_DIR) -m 755 $(SBINDIR)
219 $(INSTALL_BIN) -m 500 cupsd $(SBINDIR)
220 $(INSTALL_BIN) cupsfilter $(SBINDIR)
221 -if test "x`uname`" = xDarwin; then \
222 $(INSTALL_DIR) $(BUILDROOT)/System/Library/Printers/Libraries; \
223 $(LN) $(sbindir)/cupsfilter $(BUILDROOT)/System/Library/Printers/Libraries/convert; \
225 echo Installing programs in $(SERVERBIN)/daemon...
226 $(INSTALL_DIR) -m 755 $(SERVERBIN)
227 $(INSTALL_DIR) -m 755 $(SERVERBIN)/daemon
228 $(INSTALL_BIN) cups-deviced $(SERVERBIN)/daemon
229 $(INSTALL_BIN) cups-driverd $(SERVERBIN)/daemon
230 $(INSTALL_BIN) cups-exec $(SERVERBIN)/daemon
231 $(INSTALL_BIN) cups-lpd $(SERVERBIN)/daemon
232 $(INSTALL_BIN) cups-polld $(SERVERBIN)/daemon
233 if test "x$(SYMROOT)" != "x"; then \
234 $(INSTALL_DIR) $(SYMROOT); \
235 for file in $(PROGRAMS); do \
236 cp $$file $(SYMROOT); \
246 echo Installing header files in $(INCLUDEDIR)/cups...
247 $(INSTALL_DIR) -m 755 $(INCLUDEDIR)/cups
248 $(INSTALL_DATA) mime.h $(INCLUDEDIR)/cups
252 # Install libraries...
255 install-libs: $(INSTALLSTATIC)
256 echo Installing libraries in $(LIBDIR)...
257 $(INSTALL_DIR) -m 755 $(LIBDIR)
258 $(INSTALL_LIB) $(LIBCUPSMIME) $(LIBDIR)
259 if test $(LIBCUPSMIME) = "libcupsmime.so.1" -o $(LIBCUPSMIME) = "libcupsmime.sl.1"; then \
260 $(RM) $(LIBDIR)/`basename $(LIBCUPSMIME) .1`; \
261 $(LN) $(LIBCUPSMIME) $(LIBDIR)/`basename $(LIBCUPSMIME) .1`; \
263 if test $(LIBCUPSMIME) = "libcupsmime.1.dylib"; then \
264 $(RM) $(LIBDIR)/libcupsmime.dylib; \
265 $(LN) $(LIBCUPSMIME) $(LIBDIR)/libcupsmime.dylib; \
267 if test "x$(SYMROOT)" != "x"; then \
268 $(INSTALL_DIR) $(SYMROOT); \
269 cp $(LIBCUPSMIME) $(SYMROOT); \
273 $(INSTALL_DIR) -m 755 $(LIBDIR)
274 $(INSTALL_LIB) -m 755 libcupsmime.a $(LIBDIR)
275 $(RANLIB) $(LIBDIR)/libcupsmime.a
276 $(CHMOD) 555 $(LIBDIR)/libcupsmime.a
280 # Uninstall the scheduler...
284 $(RM) $(SBINDIR)/cupsd
285 $(RM) $(SBINDIR)/cupsfilter
286 $(RM) $(SERVERBIN)/daemon/cups-deviced
287 $(RM) $(SERVERBIN)/daemon/cups-driverd
288 $(RM) $(SERVERBIN)/daemon/cups-exec
289 $(RM) $(SERVERBIN)/daemon/cups-lpd
290 $(RM) $(SERVERBIN)/daemon/cups-polld
291 $(RM) $(BUILDROOT)/System/Library/Printers/Libraries/convert
292 -$(RMDIR) $(STATEDIR)/certs
293 -$(RMDIR) $(STATEDIR)
294 -$(RMDIR) $(SERVERROOT)/ppd
295 -$(RMDIR) $(SERVERROOT)/interfaces
296 -$(RMDIR) $(SERVERROOT)
297 -$(RMDIR) $(SERVERBIN)/driver
298 -$(RMDIR) $(SERVERBIN)/daemon
299 -$(RMDIR) $(SERVERBIN)
301 -$(RMDIR) $(REQUESTS)/tmp
302 -$(RMDIR) $(REQUESTS)
304 -$(RMDIR) $(CACHEDIR)
305 $(RM) $(LIBDIR)/libcupsmime.1.dylib
306 $(RM) $(LIBDIR)/libcupsmime.a
307 $(RM) $(LIBDIR)/libcupsmime.dylib
308 $(RM) $(LIBDIR)/libcupsmime_s.a
309 $(RM) $(LIBDIR)/libcupsmime.sl
310 $(RM) $(LIBDIR)/libcupsmime.sl.1
311 $(RM) $(LIBDIR)/libcupsmime.so
312 $(RM) $(LIBDIR)/libcupsmime.so.1
314 $(RM) $(INCLUDEDIR)/cups/mime.h
315 -$(RMDIR) $(INCLUDEDIR)/cups
316 echo Uninstalling startup script...
317 if test "x$(INITDIR)" != x; then \
318 $(RM) $(BUILDROOT)$(INITDIR)/init.d/cups; \
319 $(RMDIR) $(BUILDROOT)$(INITDIR)/init.d; \
320 $(RM) $(BUILDROOT)$(INITDIR)/rc0.d/K00cups; \
321 $(RMDIR) $(BUILDROOT)$(INITDIR)/rc0.d; \
322 $(RM) $(BUILDROOT)$(INITDIR)/rc2.d/S99cups; \
323 $(RMDIR) $(BUILDROOT)$(INITDIR)/rc2.d; \
324 $(RM) $(BUILDROOT)$(INITDIR)/rc3.d/S99cups; \
325 $(RMDIR) $(BUILDROOT)$(INITDIR)/rc3.d; \
326 $(RM) $(BUILDROOT)$(INITDIR)/rc5.d/S99cups; \
327 $(RMDIR) $(BUILDROOT)$(INITDIR)/rc5.d; \
329 if test "x$(INITDIR)" = x -a "x$(INITDDIR)" != x; then \
330 if test "$(INITDDIR)" = "/System/Library/StartupItems/PrintingServices"; then \
331 $(RM) $(BUILDROOT)$(INITDDIR)/PrintingServices; \
332 $(RM) $(BUILDROOT)$(INITDDIR)/StartupParameters.plist; \
333 $(RM) $(BUILDROOT)$(INITDDIR)/Resources/English.lproj/Localizable.strings; \
334 $(RMDIR) $(BUILDROOT)$(INITDDIR)/Resources/English.lproj; \
335 elif test "$(INITDDIR)" = "/System/Library/LaunchDaemons"; then \
336 $(RM) $(BUILDROOT)$(INITDDIR)/org.cups.cupsd.plist; \
337 $(RM) $(BUILDROOT)$(INITDDIR)/org.cups.cups-lpd.plist; \
338 $(RMDIR) $(BUILDROOT)/System/Library/StartupItems/PrintingServices; \
340 $(INSTALL_SCRIPT) init/cups.sh $(BUILDROOT)$(INITDDIR)/cups; \
342 $(RMDIR) $(BUILDROOT)$(INITDDIR); \
344 if test "x$(SMFMANIFESTDIR)" != x; then \
345 echo Uninstalling SMF manifest in $(SMFMANIFESTDIR)...;\
346 $(RM) $(BUILDROOT)$(SMFMANIFESTDIR)/cups.xml; \
348 if test "x$(XINETD)" != x; then \
349 echo Uninstalling xinetd configuration file for cups-lpd...; \
350 $(RM) $(BUILDROOT)$(XINETD)/cups-lpd; \
355 # Automatic API help files...
359 mxmldoc --section "Programming" \
361 --css ../doc/cups-printable.css \
362 --header api-mime.header --intro api-mime.shtml \
363 mime.h $(LIBOBJS:.o=.c) >../doc/help/api-mime.html
364 mxmldoc --tokens help/api-mime.html api-mime.xml >../doc/help/api-mime.tokens
368 mxmldoc --framed api-mime \
369 --section "Programming" \
371 --css ../doc/cups-printable.css \
372 --header api-mime.header --intro api-mime.shtml \
373 mime.h $(LIBOBJS:.o=.c)
377 # Make the scheduler executable, "cupsd".
380 cupsd: $(CUPSDOBJS) $(LIBCUPSMIME) ../cups/$(LIBCUPS)
382 $(CC) $(LDFLAGS) -o cupsd $(CUPSDOBJS) -L. -lcupsmime \
383 $(LIBZ) $(SSLLIBS) $(LIBSLP) $(LIBLDAP) $(PAMLIBS) \
384 $(LIBPAPER) $(LIBMALLOC) $(SERVERLIBS) $(DNSSDLIBS) $(LIBS) \
385 $(LIBGSSAPI) $(LIBWRAP)
387 cupsd-static: $(CUPSDOBJS) libcupsmime.a ../cups/$(LIBCUPSSTATIC)
389 $(CC) $(LDFLAGS) -o cupsd-static $(CUPSDOBJS) libcupsmime.a \
390 $(LIBZ) $(SSLLIBS) $(LIBSLP) $(LIBLDAP) $(PAMLIBS) \
391 ../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(LIBZ) $(LIBPAPER) \
392 $(LIBMALLOC) $(SERVERLIBS) $(DNSSDLIBS) $(LIBGSSAPI) \
397 # Make the cupsfilter utility.
400 cupsfilter: cupsfilter.o $(LIBCUPSMIME) ../cups/$(LIBCUPS)
402 $(CC) $(LDFLAGS) -o cupsfilter cupsfilter.o -L. -lcupsmime $(LIBS)
404 $(LN) cupsfilter convert
408 # Make the device daemon, "cups-deviced".
411 cups-deviced: cups-deviced.o util.o ../cups/$(LIBCUPS)
413 $(CC) $(LDFLAGS) -o cups-deviced cups-deviced.o util.o $(LIBS)
417 # Make the driver daemon, "cups-driverd".
420 cups-driverd: cups-driverd.o util.o ../cups/$(LIBCUPS) ../ppdc/$(LIBCUPSPPDC)
422 $(CXX) $(LDFLAGS) -o cups-driverd cups-driverd.o util.o \
423 -L../ppdc -lcupsppdc $(LIBS)
427 # Make the sandbox execution helper, "cups-exec".
430 cups-exec: cups-exec.o
432 $(CC) $(LDFLAGS) -o cups-exec cups-exec.o $(LIBS)
436 # Make the line printer daemon, "cups-lpd".
439 cups-lpd: cups-lpd.o ../cups/$(LIBCUPS)
441 $(CC) $(LDFLAGS) -o cups-lpd cups-lpd.o $(LIBS)
445 # Make the polling daemon, "cups-polld".
448 cups-polld: cups-polld.o ../cups/$(LIBCUPS)
450 $(CC) $(LDFLAGS) -o cups-polld cups-polld.o $(LIBS)
454 # libcupsmime.so.1, libcupsmime.sl.1
457 libcupsmime.so.1 libcupsmime.sl.1: $(LIBOBJS)
459 $(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS) $(LIBS)
460 $(RM) `basename $@ .1`
461 $(LN) $@ `basename $@ .1`
465 # libcupsmime.1.dylib
468 libcupsmime.1.dylib: $(LIBOBJS) libcupsmime.exp
470 $(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
471 -install_name $(libdir)/$@ \
472 -current_version 1.0.0 \
473 -compatibility_version 1.0.0 \
474 -exported_symbols_list libcupsmime.exp \
476 $(RM) libcupsmime.dylib
477 $(LN) $@ libcupsmime.dylib
484 libcupsmime_s.a: $(LIBOBJS)
486 $(DSO) $(DSOFLAGS) -o libcupsmime_s.o $(LIBOBJS) $(LIBS)
488 $(AR) $(ARFLAGS) $@ libcupsmime_s.o
495 libcupsmime.la: $(LIBOBJS)
497 $(CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) -rpath $(LIBDIR) \
498 -version-info 1:0 $(LIBS)
505 libcupsmime.a: $(LIBOBJS)
508 $(AR) $(ARFLAGS) $@ $(LIBOBJS)
513 # Make the test program, "testdirsvc".
516 testdirsvc: testdirsvc.o
518 $(CC) $(LDFLAGS) -o testdirsvc testdirsvc.o $(COMMONLIBS) $(NETLIBS)
522 # Make the test program, "testlpd".
525 testlpd: testlpd.o ../cups/$(LIBCUPSSTATIC) cups-lpd
527 $(CC) $(LDFLAGS) -o testlpd testlpd.o ../cups/$(LIBCUPSSTATIC) \
528 $(COMMONLIBS) $(LIBZ) $(SSLLIBS) $(DNSSDLIBS) $(LIBGSSAPI)
535 testmime: testmime.o libcupsmime.a ../cups/$(LIBCUPSSTATIC)
537 $(CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testmime.o libcupsmime.a \
538 ../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(LIBZ) $(SSLLIBS) \
539 $(DNSSDLIBS) $(LIBGSSAPI)
540 echo Running MIME tests...
545 # Make the test program, "testspeed".
548 testspeed: testspeed.o ../cups/$(LIBCUPSSTATIC)
550 $(CC) $(LDFLAGS) -o testspeed testspeed.o ../cups/$(LIBCUPSSTATIC) \
551 $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ) $(LIBGSSAPI)
555 # Make the test program, "testsub".
558 testsub: testsub.o ../cups/$(LIBCUPSSTATIC)
560 $(CC) $(LDFLAGS) -o testsub testsub.o ../cups/$(LIBCUPSSTATIC) \
561 $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ) $(LIBGSSAPI)
565 # Lines of code computation...
570 sloccount $(CUPSDOBJS:.o=.c) $(LIBOBJS:.o=.c) cups-driverd.cxx cups-polld.c cups-lpd.c 2>/dev/null | grep "Total Physical" | awk '{print $$9}'
581 # End of "$Id: Makefile 9766 2011-05-11 22:17:34Z mike $".