]> git.ipfire.org Git - thirdparty/cups.git/blob - Makefile
Fix a few STACK-detected issues:
[thirdparty/cups.git] / Makefile
1 #
2 # "$Id$"
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
16 include Makedefs
17
18
19 #
20 # Directories to make...
21 #
22
23 DIRS = cups test $(BUILDDIRS)
24
25
26 #
27 # Make all targets...
28 #
29
30 all:
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
50 libs:
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
69 unittests:
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
88 clean:
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
99 distclean: 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
123 depend:
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
139 clang:
140 $(RM) -r clang
141 scan-build -V -k -o `pwd`/clang $(MAKE) $(MFLAGS) clean all
142 clang-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
157 stack:
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
170 ctags:
171 ctags -R .
172
173
174 #
175 # Install everything...
176 #
177
178 install: install-data install-headers install-libs install-exec
179
180
181 #
182 # Install data files...
183 #
184
185 install-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
201 install-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
217 install-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
228 install-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
239 uninstall:
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
253 test: all unittests
254 echo Running CUPS test suite...
255 cd test; ./run-stp-tests.sh
256
257
258 check: all unittests
259 echo Running CUPS test suite with defaults...
260 cd test; ./run-stp-tests.sh 1 0 n n
261
262 debugcheck: 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
271 apihelp:
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
277 framedhelp:
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
288 docset: 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
314 sloc:
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
324 EPMFLAGS = -v --output-dir dist $(EPMARCH)
325
326 bsd deb pkg slackware tardist:
327 epm $(EPMFLAGS) -f $@ cups packaging/cups.list
328
329 epm:
330 epm $(EPMFLAGS) -s packaging/installer.gif cups packaging/cups.list
331
332 rpm:
333 epm $(EPMFLAGS) -f rpm -s packaging/installer.gif cups packaging/cups.list
334
335 .PHONEY: dist
336 dist: 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$".
356 #