• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1dnl
2dnl Default cupsd configuration settings for CUPS.
3dnl
4dnl Copyright © 2020-2024 by OpenPrinting.
5dnl Copyright © 2007-2018 by Apple Inc.
6dnl Copyright © 2006-2007 by Easy Software Products, all rights reserved.
7dnl
8dnl Licensed under Apache License v2.0.  See the file "LICENSE" for more
9dnl information.
10dnl
11
12dnl Set a default systemd WantedBy directive
13SYSTEMD_WANTED_BY="printer.target"
14
15dnl Default languages...
16LANGUAGES="$(ls -1 locale/cups_*.po 2>/dev/null | sed -e '1,$s/locale\/cups_//' -e '1,$s/\.po//' | tr '\n' ' ')"
17
18AC_ARG_WITH([languages], AS_HELP_STRING([--with-languages], [set installed languages, default=all]), [
19    AS_CASE(["$withval"], [none | no], [
20        LANGUAGES=""
21    ], [all], [
22    ], [*], [
23        LANGUAGES="$withval"
24    ])
25])
26AC_SUBST([LANGUAGES])
27
28dnl macOS bundle-based localization support
29AC_ARG_WITH([bundledir], AS_HELP_STRING([--with-bundledir], [set localization bundle directory]), [
30    CUPS_BUNDLEDIR="$withval"
31], [
32    AS_IF([test "x$host_os_name" = xdarwin -a $host_os_version -ge 100], [
33        CUPS_BUNDLEDIR="/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A"
34	LANGUAGES=""
35    ], [
36	CUPS_BUNDLEDIR=""
37    ])
38])
39
40AC_SUBST([CUPS_BUNDLEDIR])
41AS_IF([test "x$CUPS_BUNDLEDIR" != x], [
42    AC_DEFINE_UNQUOTED([CUPS_BUNDLEDIR], ["$CUPS_BUNDLEDIR"], [macOS bundle directory.])
43])
44
45AC_ARG_WITH([bundlelang], AS_HELP_STRING([--with-bundlelang], [set localization bundle base language (English or en)]), [
46    cups_bundlelang="$withval"
47], [
48    AS_IF([test $host_os_version -ge 190], [
49	cups_bundlelang="en"
50    ], [
51	cups_bundlelang="English"
52    ])
53])
54
55AS_IF([test "x$cups_bundlelang" != x -a "x$CUPS_BUNDLEDIR" != x], [
56    CUPS_RESOURCEDIR="$CUPS_BUNDLEDIR/Resources/$cups_bundlelang.lproj"
57], [
58    CUPS_RESOURCEDIR=""
59])
60AC_SUBST([CUPS_RESOURCEDIR])
61
62dnl Default executable file permissions
63AC_ARG_WITH([exe_file_perm], AS_HELP_STRING([--with-exe-file-perm], [set default executable permissions value, default=0755]), [
64    CUPS_EXE_FILE_PERM="$withval"
65], [
66    CUPS_EXE_FILE_PERM="755"
67])
68AC_SUBST([CUPS_EXE_FILE_PERM])
69
70dnl Default ConfigFilePerm
71AC_ARG_WITH([config_file_perm], AS_HELP_STRING([--with-config-file-perm], [set default ConfigFilePerm value, default=0640]), [
72    CUPS_CONFIG_FILE_PERM="$withval"
73], [
74    CUPS_CONFIG_FILE_PERM="640"
75])
76AC_SUBST([CUPS_CONFIG_FILE_PERM])
77AC_DEFINE_UNQUOTED([CUPS_DEFAULT_CONFIG_FILE_PERM], [0$CUPS_CONFIG_FILE_PERM], [Default ConfigFilePerm value.])
78
79dnl Default permissions for cupsd
80AC_ARG_WITH([cupsd_file_perm], AS_HELP_STRING([--with-cupsd-file-perm], [set default cupsd permissions, default=0700]), [
81    CUPS_CUPSD_FILE_PERM="$withval"
82], [
83    CUPS_CUPSD_FILE_PERM="700"
84])
85AC_SUBST([CUPS_CUPSD_FILE_PERM])
86
87dnl Default LogFilePerm
88AC_ARG_WITH([log_file_perm], AS_HELP_STRING([--with-log-file-perm], [set default LogFilePerm value, default=0644]), [
89    CUPS_LOG_FILE_PERM="$withval"
90], [
91    CUPS_LOG_FILE_PERM="644"
92])
93AC_SUBST([CUPS_LOG_FILE_PERM])
94AC_DEFINE_UNQUOTED([CUPS_DEFAULT_LOG_FILE_PERM], [0$CUPS_LOG_FILE_PERM], [Default LogFilePerm value.])
95
96dnl Default MaxLogSize
97AC_ARG_WITH([max_log_size], AS_HELP_STRING([--with-max-log-size], [set default MaxLogSize value, default=1m]), [
98    CUPS_MAX_LOG_SIZE="$withval"
99], [
100    CUPS_MAX_LOG_SIZE="1m"
101])
102AC_SUBST([CUPS_MAX_LOG_SIZE])
103AC_DEFINE_UNQUOTED([CUPS_DEFAULT_MAX_LOG_SIZE], ["$CUPS_MAX_LOG_SIZE"], [Default MaxLogSize value.])
104
105dnl Default ErrorPolicy
106AC_ARG_WITH([error_policy], AS_HELP_STRING([--with-error-policy], [set default ErrorPolicy value, default=stop-printer]), [
107    CUPS_ERROR_POLICY="$withval"
108], [
109    CUPS_ERROR_POLICY="stop-printer"
110])
111AC_SUBST([CUPS_ERROR_POLICY])
112AC_DEFINE_UNQUOTED([CUPS_DEFAULT_ERROR_POLICY], ["$CUPS_ERROR_POLICY"], [Default ErrorPolicy value.])
113
114dnl Default FatalErrors
115AC_ARG_WITH([fatal_errors], AS_HELP_STRING([--with-fatal-errors], [set default FatalErrors value, default=config]), [
116    CUPS_FATAL_ERRORS="$withval"
117], [
118    CUPS_FATAL_ERRORS="config"
119])
120AC_SUBST([CUPS_FATAL_ERRORS])
121AC_DEFINE_UNQUOTED([CUPS_DEFAULT_FATAL_ERRORS], ["$CUPS_FATAL_ERRORS"], [Default FatalErrors value.])
122
123dnl Default LogLevel
124AC_ARG_WITH([log_level], AS_HELP_STRING([--with-log-level], [set default LogLevel value, default=warn]), [
125    CUPS_LOG_LEVEL="$withval"
126], [
127    CUPS_LOG_LEVEL="warn"
128])
129AC_SUBST([CUPS_LOG_LEVEL])
130AC_DEFINE_UNQUOTED([CUPS_DEFAULT_LOG_LEVEL], ["$CUPS_LOG_LEVEL"], [Default LogLevel value.])
131
132dnl Default AccessLogLevel
133AC_ARG_WITH(access_log_level, [  --with-access-log-level set default AccessLogLevel value, default=none],
134	CUPS_ACCESS_LOG_LEVEL="$withval",
135	CUPS_ACCESS_LOG_LEVEL="none")
136AC_SUBST(CUPS_ACCESS_LOG_LEVEL)
137AC_DEFINE_UNQUOTED(CUPS_DEFAULT_ACCESS_LOG_LEVEL, "$CUPS_ACCESS_LOG_LEVEL")
138
139dnl Default PageLogFormat
140AC_ARG_ENABLE([page_logging], AS_HELP_STRING([--enable-page-logging], [enable page_log by default]))
141AS_IF([test "x$enable_page_logging" = xyes], [
142    CUPS_PAGE_LOG_FORMAT=""
143], [
144    CUPS_PAGE_LOG_FORMAT="PageLogFormat"
145])
146AC_SUBST([CUPS_PAGE_LOG_FORMAT])
147
148dnl Default SyncOnClose
149AC_ARG_ENABLE([sync_on_close], AS_HELP_STRING([--enable-sync-on-close], [enable SyncOnClose (off by default)]))
150AS_IF([test "x$enable_sync_on_close" = xyes], [
151    CUPS_SYNC_ON_CLOSE="Yes"
152    AC_DEFINE([CUPS_DEFAULT_SYNC_ON_CLOSE], [1], [Enable SyncOnClose by default?])
153], [
154    CUPS_SYNC_ON_CLOSE="No"
155])
156AC_SUBST([CUPS_SYNC_ON_CLOSE])
157
158dnl Default Browsing
159AC_ARG_ENABLE([browsing], AS_HELP_STRING([--disable-browsing], [disable Browsing by default]))
160AS_IF([test "x$enable_browsing" = xno], [
161    CUPS_BROWSING="No"
162    AC_DEFINE_UNQUOTED([CUPS_DEFAULT_BROWSING], [0], [Enable Browsing by default?])
163], [
164    CUPS_BROWSING="Yes"
165    AC_DEFINE_UNQUOTED([CUPS_DEFAULT_BROWSING], [1], [Enable Browsing by default?])
166])
167AC_SUBST([CUPS_BROWSING])
168
169dnl Default BrowseLocalProtocols
170AC_ARG_WITH([local_protocols], AS_HELP_STRING([--with-local-protocols], [set default BrowseLocalProtocols, default=""]), [
171    default_local_protocols="$withval"
172], [
173    default_local_protocols="default"
174])
175
176AS_IF([test x$with_local_protocols != xno], [
177    AS_IF([test "x$default_local_protocols" = "xdefault"], [
178	AS_IF([test "x$DNSSD_BACKEND" != "x"], [
179	    CUPS_BROWSE_LOCAL_PROTOCOLS="dnssd"
180	], [
181	    CUPS_BROWSE_LOCAL_PROTOCOLS=""
182	])
183    ], [
184	CUPS_BROWSE_LOCAL_PROTOCOLS="$default_local_protocols"
185    ])
186], [
187    CUPS_BROWSE_LOCAL_PROTOCOLS=""
188])
189
190AC_SUBST([CUPS_BROWSE_LOCAL_PROTOCOLS])
191AC_DEFINE_UNQUOTED([CUPS_DEFAULT_BROWSE_LOCAL_PROTOCOLS], ["$CUPS_BROWSE_LOCAL_PROTOCOLS"], [Default BrowseLocalProtocols value.])
192
193dnl Default DefaultShared
194AC_ARG_ENABLE([default_shared], AS_HELP_STRING([--disable-default-shared], [disable DefaultShared by default]))
195AS_IF([test "x$enable_default_shared" = xno], [
196    CUPS_DEFAULT_SHARED="No"
197    AC_DEFINE_UNQUOTED([CUPS_DEFAULT_DEFAULT_SHARED], [0], [Default DefaultShared value.])
198], [
199    CUPS_DEFAULT_SHARED="Yes"
200    AC_DEFINE_UNQUOTED([CUPS_DEFAULT_DEFAULT_SHARED], [1], [Default DefaultShared value.])
201])
202AC_SUBST([CUPS_DEFAULT_SHARED])
203
204dnl Determine the correct username and group for this OS...
205AC_ARG_WITH([cups_user], AS_HELP_STRING([--with-cups-user], [set default user for CUPS]), [
206    CUPS_USER="$withval"
207], [
208    AC_MSG_CHECKING([for default print user])
209    AS_IF([test x$host_os_name = xdarwin], [
210	AS_IF([test "x$(id -u _lp 2>/dev/null)" = x], [
211	    CUPS_USER="lp"
212	], [
213	    CUPS_USER="_lp"
214	])
215	AC_MSG_RESULT([$CUPS_USER])
216    ], [test -f /etc/passwd], [
217	CUPS_USER=""
218	for user in lp lpd guest daemon nobody; do
219	    AS_IF([test "$(grep \^${user}: /etc/passwd)" != ""], [
220		CUPS_USER="$user"
221		AC_MSG_RESULT([$user])
222		break
223	    ])
224	done
225
226	AS_IF([test x$CUPS_USER = x], [
227	    CUPS_USER="nobody"
228	    AC_MSG_RESULT([not found, using "$CUPS_USER"])
229	])
230    ], [
231	CUPS_USER="nobody"
232	AC_MSG_RESULT([no password file, using "$CUPS_USER"])
233    ])
234])
235
236AS_IF([test "x$CUPS_USER" = "xroot" -o "x$CUPS_USER" = "x0"], [
237    AC_MSG_ERROR([The default user for CUPS cannot be root.])
238])
239
240AC_ARG_WITH([cups_group], AS_HELP_STRING([--with-cups-group], [set default group for CUPS]), [
241    CUPS_GROUP="$withval"
242], [
243    AC_MSG_CHECKING([for default print group])
244    AS_IF([test x$host_os_name = xdarwin], [
245	AS_IF([test "x$(id -g _lp 2>/dev/null)" = x], [
246	    CUPS_GROUP="lp"
247	], [
248	    CUPS_GROUP="_lp"
249	])
250	AC_MSG_RESULT([$CUPS_GROUP])
251    ], [test -f /etc/group], [
252	GROUP_LIST="_lp lp nobody"
253	CUPS_GROUP=""
254	for group in $GROUP_LIST; do
255	    AS_IF([test "$(grep \^${group}: /etc/group)" != ""], [
256		CUPS_GROUP="$group"
257		AC_MSG_RESULT([$group])
258		break
259	    ])
260	done
261
262	AS_IF([test x$CUPS_GROUP = x], [
263	    CUPS_GROUP="nobody"
264	    AC_MSG_RESULT([not found, using "$CUPS_GROUP"])
265	])
266    ], [
267	CUPS_GROUP="nobody"
268	AC_MSG_RESULT([no group file, using "$CUPS_GROUP"])
269    ])
270])
271
272AS_IF([test "x$CUPS_GROUP" = "xroot" -o "x$CUPS_GROUP" = "xwheel" -o "x$CUPS_GROUP" = "x0"], [
273    AC_MSG_ERROR([The default group for CUPS cannot be root.])
274])
275
276AC_ARG_WITH([system_groups], AS_HELP_STRING([--with-system-groups], [set default system groups for CUPS]), [
277    CUPS_SYSTEM_GROUPS="$withval"
278], [
279    AS_IF([test x$host_os_name = xdarwin], [
280	CUPS_SYSTEM_GROUPS="admin"
281    ], [
282	AC_MSG_CHECKING([for default system groups])
283	AS_IF([test -f /etc/group], [
284	    CUPS_SYSTEM_GROUPS=""
285	    GROUP_LIST="lpadmin sys system root wheel"
286	    for group in $GROUP_LIST; do
287		AS_IF([test "$(grep \^${group}: /etc/group)" != ""], [
288		    AS_IF([test "x$CUPS_SYSTEM_GROUPS" = x], [
289			CUPS_SYSTEM_GROUPS="$group"
290		    ], [
291			CUPS_SYSTEM_GROUPS="$CUPS_SYSTEM_GROUPS $group"
292		    ])
293		])
294	    done
295
296	    AS_IF([test "x$CUPS_SYSTEM_GROUPS" = x], [
297		CUPS_SYSTEM_GROUPS="$GROUP_LIST"
298		AC_MSG_RESULT([no groups found, using "$CUPS_SYSTEM_GROUPS"])
299	    ], [
300		AC_MSG_RESULT(["$CUPS_SYSTEM_GROUPS"])
301	    ])
302	], [
303	    CUPS_SYSTEM_GROUPS="$GROUP_LIST"
304	    AC_MSG_RESULT([no group file, using "$CUPS_SYSTEM_GROUPS"])
305	])
306    ])
307])
308
309CUPS_PRIMARY_SYSTEM_GROUP="$(echo $CUPS_SYSTEM_GROUPS | awk '{print $1}')"
310
311for group in $CUPS_SYSTEM_GROUPS; do
312    AS_IF([test "x$CUPS_GROUP" = "x$group"], [
313	AC_MSG_ERROR([The default system groups cannot contain the default CUPS group.])
314    ])
315done
316
317AC_SUBST([CUPS_USER])
318AC_SUBST([CUPS_GROUP])
319AC_SUBST([CUPS_SYSTEM_GROUPS])
320AC_SUBST([CUPS_PRIMARY_SYSTEM_GROUP])
321
322AC_DEFINE_UNQUOTED([CUPS_DEFAULT_USER], ["$CUPS_USER"], [Default User value.])
323AC_DEFINE_UNQUOTED([CUPS_DEFAULT_GROUP], ["$CUPS_GROUP"], [Default Group value.])
324AC_DEFINE_UNQUOTED([CUPS_DEFAULT_SYSTEM_GROUPS], ["$CUPS_SYSTEM_GROUPS"], [Default SystemGroup value(s).])
325
326
327dnl Default printcap file...
328AC_ARG_WITH([printcap], AS_HELP_STRING([--with-printcap], [set default printcap file]), [
329    default_printcap="$withval"
330], [
331    default_printcap="default"
332])
333
334AS_IF([test x$default_printcap != xno], [
335    AS_IF([test "x$default_printcap" = "xdefault"], [
336	AS_CASE([$host_os_name], [darwin*], [
337	    CUPS_DEFAULT_PRINTCAP="/Library/Preferences/org.cups.printers.plist"
338	], [sunos* | solaris*], [
339	    CUPS_DEFAULT_PRINTCAP="/etc/printers.conf"
340	], [*], [
341	    CUPS_DEFAULT_PRINTCAP="/etc/printcap"
342	])
343    ], [
344	CUPS_DEFAULT_PRINTCAP="$default_printcap"
345    ])
346], [
347    CUPS_DEFAULT_PRINTCAP=""
348])
349
350AC_SUBST([CUPS_DEFAULT_PRINTCAP])
351AC_DEFINE_UNQUOTED([CUPS_DEFAULT_PRINTCAP], ["$CUPS_DEFAULT_PRINTCAP"], [Default Printcap value.])
352
353dnl Default MaxCopies value...
354AC_ARG_WITH([max_copies], AS_HELP_STRING([--with-max-copies], [set default max copies value, default=9999]), [
355    CUPS_MAX_COPIES="$withval"
356], [
357    CUPS_MAX_COPIES="9999"
358])
359
360AC_SUBST([CUPS_MAX_COPIES])
361AC_DEFINE_UNQUOTED([CUPS_DEFAULT_MAX_COPIES], [$CUPS_MAX_COPIES], [Default MaxCopies value.])
362
363dnl Default raw printing state
364AC_ARG_ENABLE([raw_printing], AS_HELP_STRING([--disable-raw-printing], [do not allow raw printing by default]))
365AS_IF([test "x$enable_raw_printing" != xno], [
366    DEFAULT_RAW_PRINTING=""
367], [
368    DEFAULT_RAW_PRINTING="#"
369])
370AC_SUBST([DEFAULT_RAW_PRINTING])
371
372dnl Default SNMP options...
373AC_ARG_WITH([snmp_address], AS_HELP_STRING([--with-snmp-address], [set SNMP query address, default=auto]), [
374    AS_IF([test "x$withval" = x], [
375	CUPS_SNMP_ADDRESS=""
376    ], [
377	CUPS_SNMP_ADDRESS="Address $withval"
378    ])
379], [
380    AS_IF([test "x$host_os_name" = xdarwin], [
381	CUPS_SNMP_ADDRESS=""
382    ], [
383	CUPS_SNMP_ADDRESS="Address @LOCAL"
384    ])
385])
386
387AC_ARG_WITH([snmp_community], AS_HELP_STRING([--with-snmp-community], [set SNMP community, default=public]), [
388    CUPS_SNMP_COMMUNITY="Community $withval"
389], [
390    CUPS_SNMP_COMMUNITY="Community public"
391])
392
393AC_SUBST([CUPS_SNMP_ADDRESS])
394AC_SUBST([CUPS_SNMP_COMMUNITY])
395
396dnl New default port definition for IPP...
397AC_ARG_WITH([ipp_port], AS_HELP_STRING([--with-ipp-port], [set port number for IPP, default=631]), [
398    DEFAULT_IPP_PORT="$withval"
399], [
400    DEFAULT_IPP_PORT="631"
401])
402
403AC_SUBST([DEFAULT_IPP_PORT])
404AC_DEFINE_UNQUOTED([CUPS_DEFAULT_IPP_PORT], [$DEFAULT_IPP_PORT], [Default IPP port number.])
405
406dnl Web interface...
407AC_ARG_ENABLE([webif], AS_HELP_STRING([--enable-webif], [enable the web interface by default, default=no for macOS]))
408AS_CASE(["x$enable_webif"], [xno], [
409    CUPS_WEBIF=No
410    CUPS_DEFAULT_WEBIF=0
411], [xyes], [
412    CUPS_WEBIF=Yes
413    CUPS_DEFAULT_WEBIF=1
414], [*], [
415    AS_IF([test $host_os_name = darwin], [
416	CUPS_WEBIF=No
417	CUPS_DEFAULT_WEBIF=0
418    ], [
419	CUPS_WEBIF=Yes
420	CUPS_DEFAULT_WEBIF=1
421    ])
422])
423
424AC_SUBST([CUPS_WEBIF])
425AC_DEFINE_UNQUOTED([CUPS_DEFAULT_WEBIF], [$CUPS_DEFAULT_WEBIF], [Default WebInterface value.])
426
427AS_IF([test $CUPS_WEBIF = Yes || test $CUPS_BROWSING = Yes], [
428  SYSTEMD_WANTED_BY="$SYSTEMD_WANTED_BY multi-user.target"], [
429  ])
430AC_SUBST([SYSTEMD_WANTED_BY])
431
432dnl Set default value of IdleExitTimeout
433AC_ARG_WITH([idle_exit_timeout], AS_HELP_STRING([--with-idle-exit-timeout], [set the default value for IdleExitTimeout, default=60]), [
434    AS_IF([test "x$withval" = "xno"], [
435	EXIT_TIMEOUT=0
436    ], [
437	EXIT_TIMEOUT=$withval
438    ])
439], [
440    EXIT_TIMEOUT=60
441])
442
443AC_SUBST([EXIT_TIMEOUT])
444
445dnl set TimeoutStartSec for cups.service
446dnl - if used as --without-*, it sets TimeoutStartSec to infinity
447AC_ARG_WITH([systemd-timeoutstartsec],
448    AS_HELP_STRING([--with-systemd-timeoutstartsec],
449	[set TimeoutStartSec value in cups.service, default=default value in systemd]), [
450    AS_IF([ test "x$withval" = "xno" ], [
451	TIMEOUTSTARTSEC="TimeoutStartSec=infinity"
452    ], [
453	TIMEOUTSTARTSEC="TimeoutStartSec=$withval"
454    ])
455], [
456    TIMEOUTSTARTSEC=""
457])
458AC_SUBST([TIMEOUTSTARTSEC])
459