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