Index: Makefile =================================================================== --- Makefile +++ Makefile @@ -133,7 +133,7 @@ xdev-links native-xtools stageworld stagekernel stage-packages \ create-world-packages create-kernel-packages create-packages \ packages installconfig real-packages sign-packages package-pkg \ - print-dir test-system-compiler + print-dir test-system-compiler config rmconfig # XXX: r156740: This can't work since bsd.subdir.mk is not included ever. # It will only work for SUBDIR_TARGETS in make.conf. Index: Makefile.inc1 =================================================================== --- Makefile.inc1 +++ Makefile.inc1 @@ -2606,3 +2606,53 @@ xdev xdev-build xdev-install xdev-links: .PHONY @echo "*** Error: Both TARGET and TARGET_ARCH must be defined for \"${.TARGET}\" target" .endif + + +TEMPCONFDIR=/usr/bin/mktemp -d -t config +SHORTDESC_FILE=${.CURDIR}/tools/build/options/shortdesc + +config: + @SRC_ENV_TMP=`${TEMPCONFDIR}` ; ${MAKE} ${.MAKEFLAGS} -C ${.CURDIR} -f /dev/null -n -V dummy -dg1 2>&1 | \ + grep -E '^MK_' | sort -u > $${SRC_ENV_TMP}/_src.env.conf ; \ + ${MAKE} -C ${.CURDIR} showconfig | while read var _ val ; do \ + SHORTDESC=`grep -E "^$${var#MK_}:" ${SHORTDESC_FILE} | sed "s,^$${var#MK_}:,,"`; \ + echo "$${var#MK_} \"$${SHORTDESC}\"" ; \ + echo "$${var}=$${val}" >> $${SRC_ENV_TMP}/default ; \ + [ "$${val}" = "yes" ] && echo on || echo "off" ; \ + done | xargs dialog --checklist 'Build options' 80 80 65 ; \ + YES_OPTIONS="" ; NO_OPTIONS="" ; \ + touch $${SRC_ENV_TMP}/src.conf ; touch $${SRC_ENV_TMP}/src-env.conf ; \ + for option in `cut -d'=' -f1 $${SRC_ENV_TMP}/default` ; do \ + FILE=/dev/null ; \ + if grep -qF "$${option#MK_}" $${SRC_ENV_TMP}/_src.conf ; then \ + if grep -qF "$${option}" $${SRC_ENV_TMP}/_src.env.conf ; then \ + FILE=$${SRC_ENV_TMP}/src-env.conf ; \ + else \ + FILE=$${SRC_ENV_TMP}/src.conf ; \ + fi ; \ + echo "WITH_$${option#MK_}=yes" >> $${FILE} ; \ + else \ + if grep -qF "$${option}" $${SRC_ENV_TMP}/_src.env.conf ; then \ + FILE=$${SRC_ENV_TMP}/src-env.conf ; \ + else \ + FILE=$${SRC_ENV_TMP}/src.conf ; \ + fi; \ + echo "WITHOUT_$${option#MK_}=no" >> $${FILE} ; \ + fi ; \ + done ; \ + ${MAKE} -C ${.CURDIR} SRCCONF=$${SRC_ENV_TMP}/src.conf SRC_ENV_CONF=$${SRC_ENV_TMP}/src-env.conf \ + showconfig | while read var _ val ; do \ + if ! grep -qF "$${var#MK_}=$${val}" $${SRC_ENV_TMP}/src.conf && \ + ! grep -qF "$${var#MK_}=$${val}" $${SRC_ENV_TMP}/src-env.conf ; then \ + echo " $${var#MK_}: $${val}" >> $${SRC_ENV_TMP}/overridden ; \ + fi ; \ + done ; \ + if [ -r $${SRC_ENV_TMP}/overridden ] ; then \ + echo "The following options will be overridden: " ; \ + cat $${SRC_ENV_TMP}/overridden ; \ + fi ; \ + mv $${SRC_ENV_TMP}/src* /etc ; \ + rm -r $${SRC_ENV_TMP} + +rmconfig: + @rm /etc/src.conf /etc/src-env.conf Index: tools/build/options/shortdesc =================================================================== --- /dev/null +++ tools/build/options/shortdesc @@ -0,0 +1,205 @@ +# Short descriptions of the build options. The use of double quotes (") is forbidden +ACCT:Accounting tools +ACPI:acpiconf, acpidump, ... +AMD:amd, ... +APM:apm, apkmd, ... +ASSERT_DEBUG:Programs & libraries with assert checks +AT:at, ... +ATM:ATM networking +AUDIT:audit support in system programs +AUTHPF:authpf program +AUTOFS:autofs programs, libraries and kernel modules. +AUTO_OBJ:Automatic creation of objdirs +BHYVE:bhyve, bhyve utilities and examples (amd64 only) +BINUTILS:Binutiles (as, ld, objcopy, objdump) in the target system +BINUTILS_BOOTSTRAP:Build binutils in the bootstrap process +BLACKLIST:blacklist / blacklistctl +BLACKLIST_SUPPORT:Build programs with blacklistd support +BLUETOOTH:Bluetooth kernel modules, programs & libraries +BMAKE:Use traditional FreeBSD make (or BSD make - bmake) +BOOT:Boot blocks and loader +BOOTPARAMD:Build & install bootparamd +BOOTPD:Build & install bootpd +BSDINSTALL:Build bsdinstall, sade, ... +BSD_CPIO:Build BSD licensed cpio +BSD_GREP:BSD-licensed grep +BSNMP:Build & install bsnmpd +BZIP2:Build bzip2 +BZIP2_SUPPORT:Build programs with bzip2 support +CALENDAR:Build calendar +CAPSICUM:Capsicum support into system +CASPER:Casper program & libraries +CCACHE_BUILD:Build using ccache +CCD:geom_ccd & related +CDDL:Sun's CDDL +CLANG:Clang C/C++ compiler. +CLANG_BOOTSTRAP:Clang C/C++ compiler during the bootstrap phase of the build. +CLANG_EXTRAS:Build additional clang and llvm tools, such as bugpoint. +CLANG_FULL:Clang C/C++ additional components (ARCMigrate, Rewritter,...) +CLANG_IS_CC:GCC compiler installed as cc, c++, cpp +CPP:Build cpp. +CROSS_COMPILER:Cross compiler in the cross-tools stage of buildworld +CRYPT:Build crypto code +CTF:Compile with CTF data. +CTM:ctm & related utilities +CUSE:CUSE-related programs and libraries +CVS:Build CVS +CXX:Build c++ & related libraries +DEBUG_FILES:Build & install debug files for binaries and libraries +DIALOG:dialog & dpv +DICT:Build Webster dictionary files. +DIRDEPS_BUILD:ASSISTANCE REQUIRED! +DIRDEPS_CACHE:Use ccache for the DIRDEPS +DMAGENT:Build dma Mail Transport Agent +DOCCOMPRESS:Install compressed system documentation +DTRACE_TESTS:DTrace test suite +DYNAMICROOT:Link /bin and /sbin dynamically +ED_CRYPTO:Build ed with/without crypto support +EE:edit, ee, ... +EISA:EISA kernel modules +ELFTOOLCHAIN_BOOTSTRAP:BuildELF Tool Chain tools as part of the bootstrap process +EXAMPLES:Install examples to /usr/share/examples +EXTRA_TCP_STACKS:EXtra TCP stack modules. +FDT:Flattened Device Tree +FILE:file program & related +FINGER:finger & fingerd +FLOPPY:Floppy disk support +FMAKE:Old FreeBSD make as fmake +FMTREE:fmtree +FORMAT_EXTENSIONS:fformat-extensions when compiling the kernel +FORTH:Bootloaders without Forth support +FP_LIBC:Floating-point support in libc +FREEBSD_UPDATE:freebsd-update +FTP:ftp & ftpd +GAMES:Build games +GCC:gcc and g++ as part of the build process. +GCC_BOOTSTRAP:Build gcc and g++ as part of the bootstrap process +GCOV:gcov tool +GDB:gdb +GNU:Build GNU software +GNUCXX:GNU C++ stack (g++, libstdc++) +GNU_GREP_COMPAT:Build GNU extensions in BSD grep +GNU_SUPPORT:GNU support +GPIO:gpioctl +GPL_DTC:GPL licensed device tree compiler +GROFF:groff & vgrind +GSSAPI:libgssapi +HAST:hastd & related +HESIOD:Build Hesiod support. +HTML:HTML documentation +HYPERV:HyperV utilities +ICONV:iconv as part of libc +INCLUDES:Install header files. +INET:IPv4 programs +INET6:IPv6 programs +INET6_SUPPORT:uild libraries, programs, and kernel modules with IPv6 support. +INETD:inetd +INET_SUPPORT:Build libraries, programs, and kernel modules with IPv4 support. +INFO:Make & install info files +INSTALLLIB:Optional libraries +INSTALL_AS_USER:Install as non-root user +IPFILTER:IP Filter package +IPFW:IPFW tools +ISCSI:iscid & related +JAIL:Jail support +KDUMP:kdump & truss +KERBEROS:Kerberos 5 (KTH Heimdal) +KERBEROS_SUPPORT:ssh, telnet, sshd, telnetd +KERNEL_SYMBOLS:Install kernel symbol files +KVM:libkvm +KVM_SUPPORT:libkvm support +LDNS:LDNS library +LDNS_UTILS:drill & host +LEGACY_CONSOLE:kbdcontrol & vidcontrol +LIB32:Build 32-bit library set & ld-elf32.so.1 +LIBCPLUSPLUS:libcxxrt & libc++ +LIBPTHREAD:libpthread +LIBSOFT:Soft float ABI compatibility libraries +LIBTHR:libthr +LLDB:LLDB debugger +LLVM_LIBUNWIND:LLVM's stack unwinder +LOCALES:Localization files +LOCATE:locate & related +LPR:lpr & related +LS_COLORS:ls with colors +LZMA_SUPPORT:lzma compression support +MAIL:mail support (MUA or MTA) +MAILWRAPPER:mailwrapper +MAKE:make & related support files +MAN:Manual pages +MANCOMPRESS:Compressed man pages +MANDOCDB:Use mandoc DB +MAN_UTILS:Utilities for manual pages +META_MODE:Use make meta files +NAND:NAND Flash components +NCP:NetWare Core protocol +NDIS:NDIS emulation support +NETCAT:nc utility +NETGRAPH:netgraph support +NETGRAPH_SUPPORT:netgraph support in libraries, programs and kernel modules +NIS:NIS support & related +NLS:NLS catalogs +NLS_CATALOGS:NLS catalog support for csh +NS_CACHING:Name caching in nsswitch +NTP:ntpd & related +OFED:Build the 'OpenFabrics Enterprise Distribution' Infiniband software stack +OPENLDAP:Enable building openldap support for kerberos +OPENSSH:OpenSSH +OPENSSL:OpenSSL +PAM:PAM library and modules +PAM_SUPPORT:PAM support for programs +PC_SYSINSTALL:pc-sysinstall & related +PF:PF firewall package +PKGBOOTSTRAP:pkg bootstrap tool +PMC:pmccontrol & related +PORTSNAP:portsnap & related +PPP:ppp & related +PROFILE:Profiled libraries +QUOTAS:quota & related +RADIUS_SUPPORT:Radius support into applications +RBOOTD:rbootd +RCMDS:r-commands (rlogin, rsh, ...) +RCS:rcs & related +RESCUE:rescue +ROUTED:routed utility +SENDMAIL:sendmail & related +SETUID_LOGIN:login as set-user-ID root program +SHAREDOCS:4.4 legacy docs +SHARED_TOOLCHAIN:Set to build the toolchain binaries shared. +SORT_THREADS:Enable threads in sort +SOURCELESS:Sourceless code kernel modules +SOURCELESS_HOST:Sourceless native code for host CPU kernel modules +SOURCELESS_UCODE:Sourceless microcode kernel modules +SSP:Propolice stack smashing protection +STAGING:Enable staging of files to a stage tree +STAGING_MAN:Enable staging of MAN pages to stage tree +STAGING_PROG:Enable staging of PROGs to stage tree +STALE_STAGED:Check staged files are not stale +SVN:Install svnlite as svn +SVNLITE:svnlite & related +SYMVER:Symbol versioning when building shared libraries +SYSCONS:syscons support files +SYSROOT:Enable use of sysroot during build +SYSTEM_COMPILER:Build a cross-compiler during the bootstrap phase +TALK:talk & talkd +TCP_WRAPPERS:tcpd & related +TCSH:csh & tcsh +TELNET:telnet & related +TESTS:Test suite +TESTS_SUPPORT:Test support of programs +TEXTPROC:Text processing programs +TFTP:tftp & tftpd +TIMED:timed +TOOLCHAIN:Header or programs for program development +UNBOUND:unbound & related +USB:USB related programs and libraries +USB_GADGET_EXAMPLES:USB gadget kernel modules +UTMPX:User accounting tools +VI:vi, view, ex & related +VT:vt support files +WARNS:Warning flags during compilation +WIRELESS:802.11 wireless network programs +WIRELESS_SUPPORT:Libraries, programs and kernel modules with 802.11 support +WPA_SUPPLICANT_EAPOL:wpa_supplicant with support for the IEEE 802.1X protocol +ZFS:ZFS file system +ZONEINFO:Timezone database