Index: projects/bmake/share/mk/src.libnames.mk =================================================================== --- projects/bmake/share/mk/src.libnames.mk (revision 283584) +++ projects/bmake/share/mk/src.libnames.mk (revision 283585) @@ -1,62 +1,369 @@ # $FreeBSD$ # # The include file define library names suitable # for INTERNALLIB and PRIVATELIB definition .if !target(____) .error src.libnames.mk cannot be included directly. .endif -.if defined(OBJTOP) -ROOTOBJDIR= ${OBJTOP} +.include + +.if defined(MAKEOBJDIRPREFIX) && ${.OBJDIR:M${MAKEOBJDIRPREFIX}/*} != "" +ROOTOBJDIR= ${.OBJDIR:S/${.CURDIR}//}${SRCTOP} +.elif defined(OBJTOP) && ${.OBJDIR:M${OBJTOP}*} != "" +ROOTOBJDIR= ${OBJTOP} +.endif + +_PRIVATELIBS= \ + atf_c \ + atf_cxx \ + bsdstat \ + event \ + heimipcc \ + heimipcs \ + ldns \ + sqlite3 \ + ssh \ + ucl \ + unbound + +_INTERNALLIBS= \ + amu \ + bsnmptools \ + cron \ + elftc \ + fifolog \ + ipf \ + lpr \ + netbsd \ + ntp \ + ntpevent \ + ohash \ + opts \ + parse \ + readline \ + sl \ + sm \ + smdb \ + smutil \ + telnet \ + vers + +_LIBRARIES= \ + ${_PRIVATELIBS} \ + ${_INTERNALLIBS} \ + alias \ + archive \ + asn1 \ + auditd \ + begemot \ + bluetooth \ + bsdxml \ + bsm \ + bsnmp \ + bz2 \ + c \ + c_pic \ + calendar \ + cam \ + capsicum \ + casper \ + com_err \ + compiler_rt \ + crypt \ + crypto \ + ctf \ + cuse \ + cxxrt \ + devctl \ + devinfo \ + devstat \ + dialog \ + dpv \ + dtrace \ + dwarf \ + edit \ + elf \ + execinfo \ + fetch \ + figpar \ + geom \ + gnuregex \ + gpio \ + gssapi \ + gssapi_krb5 \ + hdb \ + heimbase \ + heimntlm \ + heimsqlite \ + hx509 \ + ipsec \ + jail \ + kadm5clnt \ + kadm5srv \ + kafs5 \ + kdc \ + kiconv \ + krb5 \ + kvm \ + l \ + lzma \ + m \ + magic \ + md \ + memstat \ + mp \ + mt \ + nandfs \ + ncurses \ + ncursesw \ + netgraph \ + ngatm \ + nv \ + opie \ + pam \ + pcap \ + pcsclite \ + pjdlog \ + pmc \ + proc \ + procstat \ + pthread \ + radius \ + readline \ + roken \ + rpcsec_gss \ + rpcsvc \ + rt \ + rtld_db \ + sbuf \ + sdp \ + sm \ + smb \ + ssl \ + ssp_nonshared \ + stdthreads \ + supcplusplus \ + tacplus \ + termcapw \ + ufs \ + ugidfw \ + ulog \ + usb \ + usbhid \ + util \ + vmmapi \ + wind \ + wrap \ + xo \ + y \ + ypclnt \ + z + +_DP_archive= z bz2 lzma bsdxml +.if ${MK_OPENSSL} != "no" +_DP_archive+= crypto .else -ROOTOBJDIR= ${.OBJDIR:S/${.CURDIR}//}${.MAKE.MAKEFILES:M*/src.libnames.mk:H:H:H} +_DP_archive+= md .endif +_DP_ssl= crypto +_DP_ssh= crypto crypt +.if ${MK_LDNS} != "no" +_DP_ssh+= ldns z +.endif +_DP_edit= ncursesw +.if ${MK_OPENSSL} != "no" +_DP_bsnmp= crypto +.endif +_DP_geom= bsdxml sbuf +_DP_cam= sbuf +_DP_casper= capsicum nv pjdlog +_DP_capsicum= nv +_DP_pjdlog= util +_DP_opie= md +_DP_usb= pthread +_DP_unbound= pthread +_DP_rt= pthread +.if ${MK_OPENSSL} == "no" +_DP_radius= md +.else +_DP_radius= crypto +.endif +_DP_procstat= kvm util elf +.if ${MK_CXX} == "yes" +.if ${MK_LIBCPLUSPLUS} != "no" +_DP_proc= cxxrt +.else +_DP_proc= supcplusplus +.endif +.endif +.if ${MK_CDDL} != "no" +_DP_proc+= ctf +.endif +_DP_mp= crypto +_DP_memstat= kvm +_DP_magic= z +_DP_mt= bsdxml +_DP_ldns= crypto +.if ${MK_OPENSSL} != "no" +_DP_fetch= ssl crypto +.else +_DP_fetch= md +.endif +_DP_execinfo= elf +_DP_dwarf= elf +_DP_dpv= dialog figpar util +_DP_dialog= ncursesw m +_DP_cuse= pthread +_DP_atf_cxx= atf_c +_DP_devstat= kvm +_DP_pam= radius tacplus opie md util +.if ${MK_KERBEROS} != "no" +_DP_pam+= krb5 +.endif +.if ${MK_OPENSSH} != "no" +_DP_pam+= ssh +.endif +.if ${MK_NIS} != "no" +_DP_pam+= ypclnt +.endif +_DP_krb5+= asn1 com_err crypt crypto hx509 roken wind heimbase heimipcc \ + pthread +_DP_gssapi_krb5+= gssapi krb5 crypto roken asn1 com_err +_DP_lzma= pthread +_DP_ucl= m +_DP_vmmapi= util +_DP_ctf= z +_DP_proc= rtld_db util +_DP_dtrace= rtld_db pthread -LIBATF_CDIR= ${ROOTOBJDIR}/lib/atf/libatf-c -LDATF_C?= ${LIBATF_CDIR}/libatf-c.so -LIBATF_C?= ${LIBATF_CDIR}/libatf-c.a +# Define spacial cases +LDADD_supcplusplus= -lsupc++ +LIBATF_C= ${DESTDIR}${LIBDIR}/libprivateatf-c.a +LIBATF_CXX= ${DESTDIR}${LIBDIR}/libprivateatf-c++.a +LDADD_atf_c= -lprivateatf-c +LDADD_atf_cxx= -lprivateatf-c++ -LIBATF_CXXDIR= ${ROOTOBJDIR}/lib/atf/libatf-c++ -LDATF_CXX?= ${LIBATF_CXXDIR}/libatf-c++.so -LIBATF_CXX?= ${LIBATF_CXXDIR}/libatf-c++.a +.for _l in ${_PRIVATELIBS} +LIB${_l:tu}?= ${DESTDIR}${LIBDIR}/libprivate${_l}.a +.endfor -LIBBSDSTATDIR= ${ROOTOBJDIR}/lib/libbsdstat -LDBSDSTAT?= ${LIBBSDSTATDIR}/libbsdstat.so -LIBBSDSTAT?= ${LIBBSDSTATDIR}/libbsdstat.a +.for _l in ${_LIBRARIES} +.if ${_INTERNALLIBS:M${_l}} +LDADD_${_l}_L+= -L${LIB${_l:tu}DIR} +.endif +DPADD_${_l}?= ${LIB${_l:tu}} +.if ${_PRIVATELIBS:M${_l}} +LDADD_${_l}?= -lprivate${_l} +.else +LDADD_${_l}?= ${LDADD_${_l}_L} -l${_l} +.endif +.if defined(_DP_${_l}) && defined(NO_SHARED) +.for _d in ${_DP_${_l}} +DPADD_${_l}+= ${DPADD_${_d}} +LDADD_${_l}+= ${LDADD_${_d}} +.endfor +.endif +.endfor -LIBEVENTDIR= ${ROOTOBJDIR}/lib/libevent -LDEVENT?= ${LIBEVENTDIR}/libevent.so -LIBEVENT?= ${LIBEVENTDIR}/libevent.a +DPADD_atf_cxx+= ${DPADD_atf_c} +LDADD_atf_cxx+= ${LDADD_atf_c} -LIBHEIMIPCCDIR= ${ROOTOBJDIR}/kerberos5/lib/libheimipcc -LDHEIMIPCC?= ${LIBHEIMIPCCDIR}/libheimipcc.so -LIBHEIMIPCC?= ${LIBHEIMIPCCDIR}/libheimipcc.a +DPADD_sqlite3+= ${DPADD_pthread} +LDADD_sqlite3+= ${LDADD_pthread} -LIBHEIMIPCSDIR= ${ROOTOBJDIR}/kerberos5/lib/libheimipcs -LDHEIMIPCS?= ${LIBHEIMIPCSDIR}/libheimipcs.so -LIBHEIMIPCS?= ${LIBHEIMIPCSDIR}/libheimipcs.a +DPADD_fifolog+= ${DPADD_z} +LDADD_fifolog+= ${LDADD_z} -LIBLDNSDIR= ${ROOTOBJDIR}/lib/libldns -LDLDNS?= ${LIBLDNSDIR}/libldns.so -LIBLDNS?= ${LIBLDNSDIR}/libldns.a +DPADD_ipf+= ${DPADD_kvm} +LDADD_ipf+= ${LDADD_kvm} -LIBSSHDIR= ${ROOTOBJDIR}/secure/lib/libssh -LDSSH?= ${LIBSSHDIR}/libssh.so -LIBSSH?= ${LIBSSHDIR}/libssh.a +DPADD_mt+= ${DPADD_sbuf} +LDADD_mt+= ${LDADD_sbuf} -LIBUNBOUNDDIR= ${ROOTOBJDIR}/lib/libunbound -LDUNBOUND?= ${LIBUNBOUNDDIR}/libunbound.so -LIBUNBOUND?= ${LIBUNBOUNDDIR}/libunbound.a +DPADD_dtrace+= ${DPADD_ctf} ${DPADD_elf} ${DPADD_proc} +LDADD_dtrace+= ${LDADD_ctf} ${LDADD_elf} ${LDADD_proc} -LIBUCLDIR= ${ROOTOBJDIR}/lib/libucl -LDUCL?= ${LIBUCLDIR}/libucl.so -LIBUCL?= ${LIBUCLDIR}/libucl.a +# The following depends on libraries which are using pthread +DPADD_hdb+= ${DPADD_pthread} +LDADD_hdb+= ${LDADD_pthread} +DPADD_kadm5srv+= ${DPADD_pthread} +LDADD_kadm5srv+= ${LDADD_pthread} +DPADD_krb5+= ${DPADD_pthread} +LDADD_krb5+= ${LDADD_pthread} +DPADD_gssapi_krb5+= ${DPADD_pthread} +LDADD_gssapi_krb5+= ${LDADD_pthread} +.for _l in ${LIBADD} +.if ${_PRIVATELIBS:M${_l}} +USEPRIVATELIB+= ${_l} +.endif +DPADD+= ${DPADD_${_l}:Umissing-dpadd_${_l}} +LDADD+= ${LDADD_${_l}} +.endfor + +.if defined(DPADD) && ${DPADD:Mmissing-dpadd_*} +.error Missing ${DPADD:Mmissing-dpadd_*:S/missing-dpadd_//:S/^/DPADD_/} variable add "${DPADD:Mmissing-dpadd_*:S/missing-dpadd_//}" to _LIBRARIES, _INTERNALLIBS, or _PRIVATELIBS and define "${DPADD:Mmissing-dpadd_*:S/missing-dpadd_//:S/^/LIB/:tu}". +.endif + +LIBELFTCDIR= ${ROOTOBJDIR}/lib/libelftc +LIBELFTC?= ${LIBELFTCDIR}/libelftc.a + LIBREADLINEDIR= ${ROOTOBJDIR}/gnu/lib/libreadline/readline -LDREADLINE?= ${LIBREADLINEDIR}/libreadline.a LIBREADLINE?= ${LIBREADLINEDIR}/libreadline.a LIBOHASHDIR= ${ROOTOBJDIR}/lib/libohash -LDOHASH?= ${LIBOHASHDIR}/libohash.a LIBOHASH?= ${LIBOHASHDIR}/libohash.a + +LIBSMDIR= ${ROOTOBJDIR}/lib/libsm +LIBSM?= ${LIBSMDIR}/libsm.a + +LIBSMDBDIR= ${ROOTOBJDIR}/lib/libsmdb +LIBSMDB?= ${LIBSMDBDIR}/libsmdb.a + +LIBSMUTILDIR= ${ROOTOBJDIR}/lib/libsmutil +LIBSMUTIL?= ${LIBSMDBDIR}/libsmutil.a + +LIBNETBSDDIR?= ${ROOTOBJDIR}/lib/libnetbsd +LIBNETBSD?= ${LIBNETBSDDIR}/libnetbsd.a + +LIBVERSDIR?= ${ROOTOBJDIR}/kerberos5/lib/libvers +LIBVERS?= ${LIBVERSDIR}/libvers.a + +LIBSLDIR= ${ROOTOBJDIR}/kerberos5/lib/libsl +LIBSL?= ${LIBSLDIR}/libsl.a + +LIBIPFDIR= ${ROOTOBJDIR}/sbin/ipf/libipf +LIBIPF?= ${LIBIPFDIR}/libipf.a + +LIBTELNETDIR= ${ROOTOBJDIR}/lib/libtelnet +LIBTELNET?= ${LIBIPFDIR}/libtelnet.a + +LIBCRONDIR= ${ROOTOBJDIR}/usr.sbin/cron/lib +LIBCRON?= ${LIBCRONDIR}/libcron.a + +LIBNTPDIR= ${ROOTOBJDIR}/usr.sbin/ntp/libntp +LIBNTP?= ${LIBNTPDIR}/libntp.a + +LIBNTPEVENTDIR= ${ROOTOBJDIR}/usr.sbin/ntp/libntpevent +LIBNTPEVENT?= ${LIBNTPEVENTDIR}/libntpevent.a + +LIBOPTSDIR= ${ROOTOBJDIR}/usr.sbin/ntp/libopts +LIBOTPS?= ${LIBOPTSDIR}/libopts.a + +LIBPARSEDIR= ${ROOTOBJDIR}/usr.sbin/ntp/libparse +LIBPARSE?= ${LIBPARSEDIR}/libparse.a + +LIBLPRDIR= ${ROOTOBJDIR}/usr.sbin/lpr/common_source +LIBLPR?= ${LIBOPTSDIR}/liblpr.a + +LIBFIFOLOGDIR= ${ROOTOBJDIR}/usr.sbin/fifolog/lib +LIBFIFOLOG?= ${LIBOPTSDIR}/libfifolog.a + +LIBBSNMPTOOLSDIR= ${ROOTOBJDIR}/usr.sbin/bsnmpd/tools/libbsnmptools +LIBBSNMPTOOLS?= ${LIBBSNMPTOOLSDIR}/libbsnmptools.a + +LIBAMUDIR= ${ROOTOBJDIR}/usr.sbin/amd/libamu +LIBAMU?= ${LIBAMUDIR}/libamu/libamu.a + Index: projects/bmake/share/mk/src.opts.mk =================================================================== --- projects/bmake/share/mk/src.opts.mk (revision 283584) +++ projects/bmake/share/mk/src.opts.mk (revision 283585) @@ -1,372 +1,399 @@ # $FreeBSD$ # # Option file for FreeBSD /usr/src builds. # # Users define WITH_FOO and WITHOUT_FOO on the command line or in /etc/src.conf # and /etc/make.conf files. These translate in the build system to MK_FOO={yes,no} # with sensible (usually) defaults. # # Makefiles must include bsd.opts.mk after defining specific MK_FOO options that # are applicable for that Makefile (typically there are none, but sometimes there # are exceptions). Recursive makes usually add MK_FOO=no for options that they wish # to omit from that make. # -# Makefiles must include bsd.srcpot.mk before they test the value of any MK_FOO +# Makefiles must include bsd.mkopt.mk before they test the value of any MK_FOO # variable. # # Makefiles may also assume that this file is included by src.opts.mk should it # need variables defined there prior to the end of the Makefile where # bsd.{subdir,lib.bin}.mk is traditionally included. # # The old-style YES_FOO and NO_FOO are being phased out. No new instances of them # should be added. Old instances should be removed since they were just to # bridge the gap between FreeBSD 4 and FreeBSD 5. # # Makefiles should never test WITH_FOO or WITHOUT_FOO directly (although an # exception is made for _WITHOUT_SRCONF which turns off this mechanism # completely inside bsd.*.mk files). # .if !target(____) ____: .include # # Define MK_* variables (which are either "yes" or "no") for users # to set via WITH_*/WITHOUT_* in /etc/src.conf and override in the # make(1) environment. # These should be tested with `== "no"' or `!= "no"' in makefiles. # The NO_* variables should only be set by makefiles for variables # that haven't been converted over. # # These options are used by src the builds __DEFAULT_YES_OPTIONS = \ ACCT \ ACPI \ AMD \ APM \ AT \ ATM \ AUDIT \ AUTHPF \ + AUTOFS \ + BHYVE \ BINUTILS \ BINUTILS_BOOTSTRAP \ BLUETOOTH \ BOOT \ + BOOTPARAMD \ + BOOTPD \ BSD_CPIO \ + BSDINSTALL \ BSNMP \ BZIP2 \ CALENDAR \ CAPSICUM \ CASPER \ + CCD \ CDDL \ CPP \ CROSS_COMPILER \ CRYPT \ CTM \ CUSE \ CXX \ DICT \ DMAGENT \ DYNAMICROOT \ ED_CRYPTO \ + EE \ + ELFTOOLCHAIN_TOOLS \ EXAMPLES \ FDT \ + FILE \ + FINGER \ FLOPPY \ FMTREE \ FORTH \ FP_LIBC \ FREEBSD_UPDATE \ + FTP \ GAMES \ GCOV \ GDB \ GNU \ GNU_GREP_COMPAT \ - GPIB \ GPIO \ GPL_DTC \ GROFF \ + HAST \ HTML \ HYPERV \ ICONV \ INET \ INET6 \ + INETD \ IPFILTER \ IPFW \ + ISCSI \ JAIL \ KDUMP \ KVM \ LDNS \ LDNS_UTILS \ LEGACY_CONSOLE \ LIB32 \ LIBPTHREAD \ LIBTHR \ LOCALES \ LOCATE \ LPR \ LS_COLORS \ LZMA_SUPPORT \ MAIL \ MAILWRAPPER \ MAKE \ NDIS \ NETCAT \ NETGRAPH \ NLS_CATALOGS \ NS_CACHING \ NTP \ OPENSSL \ PAM \ PC_SYSINSTALL \ PF \ PKGBOOTSTRAP \ PMC \ PORTSNAP \ PPP \ QUOTAS \ + RADIUS_SUPPORT \ RCMDS \ + RBOOTD \ RCS \ RESCUE \ ROUTED \ SENDMAIL \ SETUID_LOGIN \ SHAREDOCS \ SOURCELESS \ SOURCELESS_HOST \ SOURCELESS_UCODE \ SVNLITE \ - SYSCALL_COMPAT \ SYSCONS \ SYSINSTALL \ + TALK \ + TCP_WRAPPERS \ TCSH \ TELNET \ TESTS \ TEXTPROC \ + TFTP \ + TIMED \ UNBOUND \ USB \ UTMPX \ VI \ VT \ WIRELESS \ WPA_SUPPLICANT_EAPOL \ ZFS \ ZONEINFO __DEFAULT_NO_OPTIONS = \ BSD_GREP \ CLANG_EXTRAS \ EISA \ FMAKE \ HESIOD \ LLDB \ NAND \ OFED \ OPENLDAP \ OPENSSH_NONE_CIPHER \ SHARED_TOOLCHAIN \ SORT_THREADS \ - SVN \ STALE_STAGED \ - SYSROOT + SVN # # Default behaviour of some options depends on the architecture. Unfortunately # this means that we have to test TARGET_ARCH (the buildworld case) as well # as MACHINE_ARCH (the non-buildworld case). Normally TARGET_ARCH is not # used at all in bsd.*.mk, but we have to make an exception here if we want # to allow defaults for some things like clang to vary by target architecture. # Additional, per-target behavior should be rarely added only after much # gnashing of teeth and grinding of gears. # .if defined(TARGET_ARCH) __T=${TARGET_ARCH} .else __T=${MACHINE_ARCH} .endif .if defined(TARGET) __TT=${TARGET} .else __TT=${MACHINE} .endif -# Clang is only for x86, powerpc and little-endian arm right now, by default. -.if ${__T} == "amd64" || ${__T} == "i386" || ${__T:Mpowerpc*} -__DEFAULT_YES_OPTIONS+=CLANG CLANG_FULL CLANG_BOOTSTRAP + +.include +.if !${COMPILER_FEATURES:Mc++11} +# If the compiler is not C++11 capable, disable clang and use gcc instead. +__DEFAULT_YES_OPTIONS+=GCC GCC_BOOTSTRAP GNUCXX +__DEFAULT_NO_OPTIONS+=CLANG CLANG_BOOTSTRAP CLANG_FULL CLANG_IS_CC +.elif ${__T} == "aarch64" || ${__T} == "amd64" || ${__T} == "i386" +# On x86 and arm64, clang is enabled, and will be installed as the default cc. +__DEFAULT_YES_OPTIONS+=CLANG CLANG_BOOTSTRAP CLANG_FULL CLANG_IS_CC +__DEFAULT_NO_OPTIONS+=GCC GCC_BOOTSTRAP GNUCXX .elif ${__TT} == "arm" && ${__T:Marm*eb*} == "" -__DEFAULT_YES_OPTIONS+=CLANG CLANG_BOOTSTRAP -# GCC is unable to build the full clang on arm, disable it by default. -__DEFAULT_NO_OPTIONS+=CLANG_FULL +# On little-endian arm, clang is enabled, and it is installed as the default +# cc, but since gcc is unable to build the full clang, disable it by default. +__DEFAULT_YES_OPTIONS+=CLANG CLANG_BOOTSTRAP CLANG_IS_CC +__DEFAULT_NO_OPTIONS+=CLANG_FULL GCC GCC_BOOTSTRAP GNUCXX +.elif ${__T:Mpowerpc*} +# On powerpc, clang is enabled, but gcc is installed as the default cc. +__DEFAULT_YES_OPTIONS+=CLANG CLANG_FULL GCC GCC_BOOTSTRAP GNUCXX +__DEFAULT_NO_OPTIONS+=CLANG_BOOTSTRAP CLANG_IS_CC .else -__DEFAULT_NO_OPTIONS+=CLANG CLANG_FULL CLANG_BOOTSTRAP -.endif -# Clang the default system compiler only on little-endian arm and x86. -.if ${__T} == "amd64" || (${__TT} == "arm" && ${__T:Marm*eb*} == "") || \ - ${__T} == "i386" -__DEFAULT_YES_OPTIONS+=CLANG_IS_CC -__DEFAULT_NO_OPTIONS+=GCC GCC_BOOTSTRAP GNUCXX -.else -# If clang is not cc, then build gcc by default -__DEFAULT_NO_OPTIONS+=CLANG_IS_CC CLANG CLANG_BOOTSTRAP +# Everything else disables clang, and uses gcc instead. __DEFAULT_YES_OPTIONS+=GCC GCC_BOOTSTRAP GNUCXX +__DEFAULT_NO_OPTIONS+=CLANG CLANG_BOOTSTRAP CLANG_FULL CLANG_IS_CC .endif +.if ${__T} == "aarch64" +BROKEN_OPTIONS+=BINUTILS BINUTILS_BOOTSTRAP GCC GCC_BOOTSTRAP GDB +.endif +# LLVM lacks support for FreeBSD 64-bit atomic operations for ARMv4/ARMv5 +.if ${__T} == "arm" || ${__T} == "armeb" +BROKEN_OPTIONS+=LLDB +.endif .include # # MK_* options that default to "yes" if the compiler is a C++11 compiler. # -.include .for var in \ LIBCPLUSPLUS .if !defined(MK_${var}) .if ${COMPILER_FEATURES:Mc++11} .if defined(WITHOUT_${var}) MK_${var}:= no .else MK_${var}:= yes .endif .else .if defined(WITH_${var}) MK_${var}:= yes .else MK_${var}:= no .endif .endif .endif .endfor # # Force some options off if their dependencies are off. # Order is somewhat important. # .if ${MK_LIBPTHREAD} == "no" MK_LIBTHR:= no .endif .if ${MK_LDNS} == "no" MK_LDNS_UTILS:= no MK_UNBOUND:= no .endif .if ${MK_SOURCELESS} == "no" MK_SOURCELESS_HOST:= no MK_SOURCELESS_UCODE:= no .endif .if ${MK_CDDL} == "no" MK_ZFS:= no MK_CTF:= no .endif .if ${MK_CRYPT} == "no" MK_OPENSSL:= no MK_OPENSSH:= no MK_KERBEROS:= no .endif .if ${MK_CXX} == "no" MK_CLANG:= no MK_GROFF:= no MK_GNUCXX:= no .endif .if ${MK_MAIL} == "no" MK_MAILWRAPPER:= no MK_SENDMAIL:= no MK_DMAGENT:= no .endif .if ${MK_NETGRAPH} == "no" MK_ATM:= no MK_BLUETOOTH:= no .endif .if ${MK_OPENSSL} == "no" MK_OPENSSH:= no MK_KERBEROS:= no .endif .if ${MK_PF} == "no" MK_AUTHPF:= no .endif .if ${MK_TEXTPROC} == "no" MK_GROFF:= no .endif .if ${MK_CROSS_COMPILER} == "no" MK_BINUTILS_BOOTSTRAP:= no MK_CLANG_BOOTSTRAP:= no MK_GCC_BOOTSTRAP:= no .endif .if ${MK_TOOLCHAIN} == "no" MK_BINUTILS:= no MK_CLANG:= no MK_GCC:= no MK_GDB:= no MK_INCLUDES:= no .endif .if ${MK_CLANG} == "no" MK_CLANG_EXTRAS:= no MK_CLANG_FULL:= no .endif # # Set defaults for the MK_*_SUPPORT variables. # # # MK_*_SUPPORT options which default to "yes" unless their corresponding # MK_* variable is set to "no". # .for var in \ BZIP2 \ GNU \ INET \ INET6 \ KERBEROS \ KVM \ NETGRAPH \ PAM \ TESTS \ WIRELESS .if defined(WITHOUT_${var}_SUPPORT) || ${MK_${var}} == "no" MK_${var}_SUPPORT:= no .else MK_${var}_SUPPORT:= yes .endif .endfor # # MK_* options whose default value depends on another option. # .for vv in \ GSSAPI/KERBEROS \ MAN_UTILS/MAN .if defined(WITH_${vv:H}) MK_${vv:H}:= yes .elif defined(WITHOUT_${vv:H}) MK_${vv:H}:= no .else MK_${vv:H}:= ${MK_${vv:T}} .endif .endfor .if !${COMPILER_FEATURES:Mc++11} MK_LLDB:= no .endif # gcc 4.8 and newer supports libc++, so suppress gnuc++ in that case. # while in theory we could build it with that, we don't want to do # that since it creates too much confusion for too little gain. .if ${COMPILER_TYPE} == "gcc" && ${COMPILER_VERSION} >= 40800 MK_GNUCXX:=no MK_GCC:=no .endif .endif # !target(____) Index: projects/bmake/share/mk/src.sys.mk =================================================================== --- projects/bmake/share/mk/src.sys.mk (revision 283584) +++ projects/bmake/share/mk/src.sys.mk (revision 283585) @@ -1,13 +1,26 @@ # $FreeBSD$ # Note: This file is also duplicated in the sys/conf/kern.pre.mk so # it will always grab SRCCONF, even if it isn't being built in-tree # to preserve historical (and useful) behavior. Changes here need to # be reflected there so SRCCONF isn't included multiple times. +# make sure this is defined in a consistent manner +SRCTOP:= ${.PARSEDIR:tA:H:H} + # Allow user to configure things that only effect src tree builds. SRCCONF?= /etc/src.conf .if (exists(${SRCCONF}) || ${SRCCONF} != "/etc/src.conf") && !target(_srcconf_included_) .sinclude "${SRCCONF}" _srcconf_included_: .NOTMAIN +.endif +# If we were found via .../share/mk we need to replace that in +# with ${SRCTOP} so that we can be found by +# sub-makes launched from objdir. +.if ${.MAKEFLAGS:M.../share/mk} != "" +.MAKEFLAGS:= ${.MAKEFLAGS:S,.../share/mk,${SRCTOP}/share/mk,} +.endif +.if ${MAKESYSPATH:Uno:M*.../*} != "" +MAKESYSPATH:= ${MAKESYSPATH:S,.../share/mk,${SRCTOP}/share/mk,} +.export MAKESYSPATH .endif