• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
2# Top-level Makefile for CUPS.
3#
4# Copyright © 2007-2019 by Apple Inc.
5# Copyright © 1997-2007 by Easy Software Products, all rights reserved.
6#
7# Licensed under Apache License v2.0.  See the file "LICENSE" for more
8# information.
9#
10
11include Makedefs
12
13
14#
15# Directories to make...
16#
17
18DIRS	=	cups $(BUILDDIRS)
19
20
21#
22# Test suite options - normally blank, override with make command...
23#
24
25TESTOPTIONS	=
26
27
28#
29# Make all targets...
30#
31
32all:
33	chmod +x cups-config
34	echo Using ARCHFLAGS="$(ARCHFLAGS)"
35	echo Using ALL_CFLAGS="$(ALL_CFLAGS)"
36	echo Using ALL_CXXFLAGS="$(ALL_CXXFLAGS)"
37	echo Using CC="$(CC)"
38	echo Using CXX="$(CC)"
39	echo Using DSOFLAGS="$(DSOFLAGS)"
40	echo Using LDFLAGS="$(LDFLAGS)"
41	echo Using LIBS="$(LIBS)"
42	for dir in $(DIRS); do\
43		echo Making all in $$dir... ;\
44		(cd $$dir ; $(MAKE) $(MFLAGS) all $(UNITTESTS)) || exit 1;\
45	done
46
47
48#
49# Make library targets...
50#
51
52libs:
53	echo Using ARCHFLAGS="$(ARCHFLAGS)"
54	echo Using ALL_CFLAGS="$(ALL_CFLAGS)"
55	echo Using ALL_CXXFLAGS="$(ALL_CXXFLAGS)"
56	echo Using CC="$(CC)"
57	echo Using CXX="$(CC)"
58	echo Using DSOFLAGS="$(DSOFLAGS)"
59	echo Using LDFLAGS="$(LDFLAGS)"
60	echo Using LIBS="$(LIBS)"
61	for dir in $(DIRS); do\
62		echo Making libraries in $$dir... ;\
63		(cd $$dir ; $(MAKE) $(MFLAGS) libs) || exit 1;\
64	done
65
66
67#
68# Make unit test targets...
69#
70
71unittests:
72	echo Using ARCHFLAGS="$(ARCHFLAGS)"
73	echo Using ALL_CFLAGS="$(ALL_CFLAGS)"
74	echo Using ALL_CXXFLAGS="$(ALL_CXXFLAGS)"
75	echo Using CC="$(CC)"
76	echo Using CXX="$(CC)"
77	echo Using DSOFLAGS="$(DSOFLAGS)"
78	echo Using LDFLAGS="$(LDFLAGS)"
79	echo Using LIBS="$(LIBS)"
80	for dir in $(DIRS); do\
81		echo Making all in $$dir... ;\
82		(cd $$dir ; $(MAKE) $(MFLAGS) unittests) || exit 1;\
83	done
84
85
86#
87# Remove object and target files...
88#
89
90clean:
91	for dir in $(DIRS); do\
92		echo Cleaning in $$dir... ;\
93		(cd $$dir; $(MAKE) $(MFLAGS) clean) || exit 1;\
94	done
95
96
97#
98# Remove all non-distribution files...
99#
100
101distclean:	clean
102	$(RM) Makedefs config.h config.log config.status
103	$(RM) conf/cups-files.conf conf/cupsd.conf conf/mime.convs conf/pam.std conf/snmp.conf
104	$(RM) cups-config
105	$(RM) desktop/cups.desktop
106	$(RM) doc/index.html
107	$(RM) packaging/cups.list
108	$(RM) scheduler/cups-lpd.xinetd scheduler/cups.sh scheduler/cups.xml scheduler/org.cups.cups-lpd.plist scheduler/org.cups.cups-lpdAT.service scheduler/org.cups.cupsd.path scheduler/org.cups.cupsd.service scheduler/org.cups.cupsd.socket
109	$(RM) templates/header.tmpl
110	-$(RM) doc/*/index.html
111	-$(RM) templates/*/header.tmpl
112	-$(RM) -r autom4te*.cache cups/charmaps cups/locale
113
114
115#
116# Make dependencies
117#
118
119depend:
120	for dir in $(DIRS); do\
121		echo Making dependencies in $$dir... ;\
122		(cd $$dir; $(MAKE) $(MFLAGS) depend) || exit 1;\
123	done
124
125
126#
127# Run the STACK tool on the sources, available here:
128#
129#    http://css.csail.mit.edu/stack/
130#
131# Do the following to pass options to configure:
132#
133#    make CONFIGFLAGS="--foo --bar" stack
134#
135
136.PHONY: stack
137stack:
138	stack-build ./configure $(CONFIGFLAGS)
139	stack-build $(MAKE) $(MFLAGS) clean all
140	poptck
141	$(MAKE) $(MFLAGS) distclean
142	$(RM) */*.ll
143	$(RM) */*.ll.out
144
145
146#
147# Generate a ctags file...
148#
149
150ctags:
151	ctags -R .
152
153
154#
155# Install everything...
156#
157
158install:	install-data install-headers install-libs install-exec
159
160
161#
162# Install data files...
163#
164
165install-data:
166	echo Making all in cups...
167	(cd cups; $(MAKE) $(MFLAGS) all)
168	for dir in $(DIRS); do\
169		echo Installing data files in $$dir... ;\
170		(cd $$dir; $(MAKE) $(MFLAGS) install-data) || exit 1;\
171	done
172	echo Installing cups-config script...
173	$(INSTALL_DIR) -m 755 $(BINDIR)
174	$(INSTALL_SCRIPT) cups-config $(BINDIR)/cups-config
175
176
177#
178# Install header files...
179#
180
181install-headers:
182	for dir in $(DIRS); do\
183		echo Installing header files in $$dir... ;\
184		(cd $$dir; $(MAKE) $(MFLAGS) install-headers) || exit 1;\
185	done
186	if test "x$(privateinclude)" != x; then \
187		echo Installing config.h into $(PRIVATEINCLUDE)...; \
188		$(INSTALL_DIR) -m 755 $(PRIVATEINCLUDE); \
189		$(INSTALL_DATA) config.h $(PRIVATEINCLUDE)/config.h; \
190	fi
191
192
193#
194# Install programs...
195#
196
197install-exec:	all
198	for dir in $(DIRS); do\
199		echo Installing programs in $$dir... ;\
200		(cd $$dir; $(MAKE) $(MFLAGS) install-exec) || exit 1;\
201	done
202
203
204#
205# Install libraries...
206#
207
208install-libs:	libs
209	for dir in $(DIRS); do\
210		echo Installing libraries in $$dir... ;\
211		(cd $$dir; $(MAKE) $(MFLAGS) install-libs) || exit 1;\
212	done
213
214
215#
216# Uninstall object and target files...
217#
218
219uninstall:
220	for dir in $(DIRS); do\
221		echo Uninstalling in $$dir... ;\
222		(cd $$dir; $(MAKE) $(MFLAGS) uninstall) || exit 1;\
223	done
224	echo Uninstalling cups-config script...
225	$(RM) $(BINDIR)/cups-config
226	-$(RMDIR) $(BINDIR)
227
228
229#
230# Run the test suite...
231#
232
233test:	all unittests
234	echo Running CUPS test suite...
235	cd test; ./run-stp-tests.sh $(TESTOPTIONS)
236
237
238check:	all unittests
239	echo Running CUPS test suite with defaults...
240	cd test; ./run-stp-tests.sh 1 0 n n
241
242debugcheck:	all unittests
243	echo Running CUPS test suite with debug printfs...
244	cd test; ./run-stp-tests.sh 1 0 n y
245
246
247#
248# Create HTML documentation using codedoc (http://www.msweet.org/codedoc)...
249#
250
251apihelp:
252	for dir in cups filter; do\
253		echo Generating API help in $$dir... ;\
254		(cd $$dir; $(MAKE) $(MFLAGS) apihelp) || exit 1;\
255	done
256
257
258#
259# Lines of code computation...
260#
261
262sloc:
263	for dir in cups scheduler; do \
264		(cd $$dir; $(MAKE) $(MFLAGS) sloc) || exit 1;\
265	done
266
267
268#
269# Make software distributions using EPM (http://www.msweet.org/)...
270#
271
272EPMFLAGS	=	-v --output-dir dist $(EPMARCH)
273
274bsd deb epm pkg rpm slackware:
275	epm $(EPMFLAGS) -f $@ cups packaging/cups.list
276
277.PHONY:	dist
278dist:	all
279	$(RM) -r dist
280	$(MAKE) $(MFLAGS) epm
281	case `uname` in \
282		*BSD*) $(MAKE) $(MFLAGS) bsd;; \
283		Linux*) test ! -x /usr/bin/rpm || $(MAKE) $(MFLAGS) rpm;; \
284		SunOS*) $(MAKE) $(MFLAGS) pkg;; \
285	esac
286
287
288#
289# Don't run top-level build targets in parallel...
290#
291
292.NOTPARALLEL:
293