1# 2# "$Id: Makefile 11433 2013-11-20 18:57:44Z msweet $" 3# 4# Top-level Makefile for CUPS. 5# 6# Copyright 2007-2013 by Apple Inc. 7# Copyright 1997-2007 by Easy Software Products, all rights reserved. 8# 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/". 14# 15 16include Makedefs 17 18 19# 20# Directories to make... 21# 22 23DIRS = cups test $(BUILDDIRS) 24 25 26# 27# Make all targets... 28# 29 30all: 31 chmod +x cups-config 32 echo Using ARCHFLAGS="$(ARCHFLAGS)" 33 echo Using ALL_CFLAGS="$(ALL_CFLAGS)" 34 echo Using ALL_CXXFLAGS="$(ALL_CXXFLAGS)" 35 echo Using CC="$(CC)" 36 echo Using CXX="$(CC)" 37 echo Using DSOFLAGS="$(DSOFLAGS)" 38 echo Using LDFLAGS="$(LDFLAGS)" 39 echo Using LIBS="$(LIBS)" 40 for dir in $(DIRS); do\ 41 echo Making all in $$dir... ;\ 42 (cd $$dir ; $(MAKE) $(MFLAGS) all $(UNITTESTS)) || exit 1;\ 43 done 44 45 46# 47# Make library targets... 48# 49 50libs: 51 echo Using ARCHFLAGS="$(ARCHFLAGS)" 52 echo Using ALL_CFLAGS="$(ALL_CFLAGS)" 53 echo Using ALL_CXXFLAGS="$(ALL_CXXFLAGS)" 54 echo Using CC="$(CC)" 55 echo Using CXX="$(CC)" 56 echo Using DSOFLAGS="$(DSOFLAGS)" 57 echo Using LDFLAGS="$(LDFLAGS)" 58 echo Using LIBS="$(LIBS)" 59 for dir in $(DIRS); do\ 60 echo Making libraries in $$dir... ;\ 61 (cd $$dir ; $(MAKE) $(MFLAGS) libs) || exit 1;\ 62 done 63 64 65# 66# Make unit test targets... 67# 68 69unittests: 70 echo Using ARCHFLAGS="$(ARCHFLAGS)" 71 echo Using ALL_CFLAGS="$(ALL_CFLAGS)" 72 echo Using ALL_CXXFLAGS="$(ALL_CXXFLAGS)" 73 echo Using CC="$(CC)" 74 echo Using CXX="$(CC)" 75 echo Using DSOFLAGS="$(DSOFLAGS)" 76 echo Using LDFLAGS="$(LDFLAGS)" 77 echo Using LIBS="$(LIBS)" 78 for dir in $(DIRS); do\ 79 echo Making all in $$dir... ;\ 80 (cd $$dir ; $(MAKE) $(MFLAGS) unittests) || exit 1;\ 81 done 82 83 84# 85# Remove object and target files... 86# 87 88clean: 89 for dir in $(DIRS); do\ 90 echo Cleaning in $$dir... ;\ 91 (cd $$dir; $(MAKE) $(MFLAGS) clean) || exit 1;\ 92 done 93 94 95# 96# Remove all non-distribution files... 97# 98 99distclean: clean 100 $(RM) Makedefs config.h config.log config.status 101 $(RM) cups-config 102 $(RM) conf/cupsd.conf conf/mime.convs conf/pam.std conf/snmp.conf 103 $(RM) doc/help/ref-cupsd-conf.html doc/help/standard.html doc/index.html 104 $(RM) man/client.conf.man 105 $(RM) man/cups-deviced.man man/cups-driverd.man 106 $(RM) man/cups-lpd.man man/cupsaddsmb.man man/cupsd.man 107 $(RM) man/cupsd.conf.man man/drv.man man/lpoptions.man 108 $(RM) packaging/cups.list 109 $(RM) packaging/cups-desc.plist packaging/cups-info.plist 110 $(RM) templates/header.tmpl 111 $(RM) desktop/cups.desktop 112 $(RM) scheduler/cups.sh scheduler/cups-lpd.xinetd 113 $(RM) scheduler/org.cups.cups-lpd.plist scheduler/cups.xml 114 -$(RM) doc/*/index.html 115 -$(RM) templates/*/header.tmpl 116 -$(RM) -r autom4te*.cache clang cups/charmaps cups/locale driver/test 117 118 119# 120# Make dependencies 121# 122 123depend: 124 for dir in $(DIRS); do\ 125 echo Making dependencies in $$dir... ;\ 126 (cd $$dir; $(MAKE) $(MFLAGS) depend) || exit 1;\ 127 done 128 129 130# 131# Run the Clang static code analysis tool on the sources, available here: 132# 133# http://clang-analyzer.llvm.org 134# 135# At least checker-231 is required. 136# 137 138.PHONY: clang clang-changes 139clang: 140 $(RM) -r clang 141 scan-build -V -k -o `pwd`/clang $(MAKE) $(MFLAGS) clean all 142clang-changes: 143 scan-build -V -k -o `pwd`/clang $(MAKE) $(MFLAGS) all 144 145 146# 147# Run the STACK tool on the sources, available here: 148# 149# http://css.csail.mit.edu/stack/ 150# 151# Do the following to pass options to configure: 152# 153# make CONFIGFLAGS="--foo --bar" stack 154# 155 156.PHONY: stack 157stack: 158 stack-build ./configure $(CONFIGFLAGS) 159 stack-build $(MAKE) $(MFLAGS) clean all 160 poptck 161 $(MAKE) $(MFLAGS) distclean 162 $(RM) */*.ll 163 $(RM) */*.ll.out 164 165 166# 167# Generate a ctags file... 168# 169 170ctags: 171 ctags -R . 172 173 174# 175# Install everything... 176# 177 178install: install-data install-headers install-libs install-exec 179 180 181# 182# Install data files... 183# 184 185install-data: 186 echo Making all in cups... 187 (cd cups; $(MAKE) $(MFLAGS) all) 188 for dir in $(DIRS); do\ 189 echo Installing data files in $$dir... ;\ 190 (cd $$dir; $(MAKE) $(MFLAGS) install-data) || exit 1;\ 191 done 192 echo Installing cups-config script... 193 $(INSTALL_DIR) -m 755 $(BINDIR) 194 $(INSTALL_SCRIPT) cups-config $(BINDIR)/cups-config 195 196 197# 198# Install header files... 199# 200 201install-headers: 202 for dir in $(DIRS); do\ 203 echo Installing header files in $$dir... ;\ 204 (cd $$dir; $(MAKE) $(MFLAGS) install-headers) || exit 1;\ 205 done 206 if test "x$(privateinclude)" != x; then \ 207 echo Installing config.h into $(PRIVATEINCLUDE)...; \ 208 $(INSTALL_DIR) -m 755 $(PRIVATEINCLUDE); \ 209 $(INSTALL_DATA) config.h $(PRIVATEINCLUDE)/config.h; \ 210 fi 211 212 213# 214# Install programs... 215# 216 217install-exec: all 218 for dir in $(DIRS); do\ 219 echo Installing programs in $$dir... ;\ 220 (cd $$dir; $(MAKE) $(MFLAGS) install-exec) || exit 1;\ 221 done 222 223 224# 225# Install libraries... 226# 227 228install-libs: libs 229 for dir in $(DIRS); do\ 230 echo Installing libraries in $$dir... ;\ 231 (cd $$dir; $(MAKE) $(MFLAGS) install-libs) || exit 1;\ 232 done 233 234 235# 236# Uninstall object and target files... 237# 238 239uninstall: 240 for dir in $(DIRS); do\ 241 echo Uninstalling in $$dir... ;\ 242 (cd $$dir; $(MAKE) $(MFLAGS) uninstall) || exit 1;\ 243 done 244 echo Uninstalling cups-config script... 245 $(RM) $(BINDIR)/cups-config 246 -$(RMDIR) $(BINDIR) 247 248 249# 250# Run the test suite... 251# 252 253test: all unittests 254 echo Running CUPS test suite... 255 cd test; ./run-stp-tests.sh 256 257 258check: all unittests 259 echo Running CUPS test suite with defaults... 260 cd test; ./run-stp-tests.sh 1 0 n n 261 262debugcheck: all unittests 263 echo Running CUPS test suite with debug printfs... 264 cd test; ./run-stp-tests.sh 1 0 n y 265 266 267# 268# Create HTML documentation using Mini-XML's mxmldoc (http://www.msweet.org/)... 269# 270 271apihelp: 272 for dir in cgi-bin cups filter ppdc scheduler; do\ 273 echo Generating API help in $$dir... ;\ 274 (cd $$dir; $(MAKE) $(MFLAGS) apihelp) || exit 1;\ 275 done 276 277framedhelp: 278 for dir in cgi-bin cups filter ppdc scheduler; do\ 279 echo Generating framed API help in $$dir... ;\ 280 (cd $$dir; $(MAKE) $(MFLAGS) framedhelp) || exit 1;\ 281 done 282 283 284# 285# Create an Xcode docset using Mini-XML's mxmldoc (http://www.msweet.org/)... 286# 287 288docset: apihelp 289 echo Generating docset directory tree... 290 $(RM) -r org.cups.docset 291 mkdir -p org.cups.docset/Contents/Resources/Documentation/help 292 mkdir -p org.cups.docset/Contents/Resources/Documentation/images 293 cd man; $(MAKE) $(MFLAGS) html 294 cd doc; $(MAKE) $(MFLAGS) docset 295 cd cgi-bin; $(MAKE) $(MFLAGS) makedocset 296 cgi-bin/makedocset org.cups.docset \ 297 `svnversion . | sed -e '1,$$s/[a-zA-Z]//g'` \ 298 doc/help/api-*.tokens 299 $(RM) doc/help/api-*.tokens 300 echo Indexing docset... 301 /Applications/Xcode.app/Contents/Developer/usr/bin/docsetutil index org.cups.docset 302 echo Generating docset archive and feed... 303 $(RM) org.cups.docset.atom 304 /Applications/Xcode.app/Contents/Developer/usr/bin/docsetutil package --output org.cups.docset.xar \ 305 --atom org.cups.docset.atom \ 306 --download-url http://www.cups.org/org.cups.docset.xar \ 307 org.cups.docset 308 309 310# 311# Lines of code computation... 312# 313 314sloc: 315 for dir in cups scheduler; do \ 316 (cd $$dir; $(MAKE) $(MFLAGS) sloc) || exit 1;\ 317 done 318 319 320# 321# Make software distributions using EPM (http://www.msweet.org/)... 322# 323 324EPMFLAGS = -v --output-dir dist $(EPMARCH) 325 326aix bsd deb depot inst pkg setld slackware swinstall tardist: 327 epm $(EPMFLAGS) -f $@ cups packaging/cups.list 328 329epm: 330 epm $(EPMFLAGS) -s packaging/installer.gif cups packaging/cups.list 331 332rpm: 333 epm $(EPMFLAGS) -f rpm -s packaging/installer.gif cups packaging/cups.list 334 335.PHONEY: dist 336dist: all 337 $(RM) -r dist 338 $(MAKE) $(MFLAGS) epm 339 case `uname` in \ 340 *BSD*) $(MAKE) $(MFLAGS) bsd;; \ 341 Darwin*) $(MAKE) $(MFLAGS) osx;; \ 342 Linux*) test ! -x /usr/bin/rpm || $(MAKE) $(MFLAGS) rpm;; \ 343 SunOS*) $(MAKE) $(MFLAGS) pkg;; \ 344 esac 345 346 347# 348# Don't run top-level build targets in parallel... 349# 350 351.NOTPARALLEL: 352 353 354# 355# End of "$Id: Makefile 11433 2013-11-20 18:57:44Z msweet $". 356# 357