X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/316670eb35587141e969394ae8537d66b9211e80..813fb2f63a553c957e917ede5f119b021d6ce391:/bsd/conf/Makefile.template diff --git a/bsd/conf/Makefile.template b/bsd/conf/Makefile.template index 61a088bd8..edfd0c767 100644 --- a/bsd/conf/Makefile.template +++ b/bsd/conf/Makefile.template @@ -1,14 +1,14 @@ # -# Copyright (c) 2000-2011 Apple Inc. All rights reserved. +# Copyright (c) 2000-2016 Apple Inc. All rights reserved. # # @APPLE_LICENSE_HEADER_START@ -# +# # The contents of this file constitute Original Code as defined in and # are subject to the Apple Public Source License Version 1.1 (the # "License"). You may not use this file except in compliance with the # License. Please obtain a copy of the License at # http://www.apple.com/publicsource and read it before using this file. -# +# # This Original Code and all software distributed under the License are # distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER # EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, @@ -16,7 +16,7 @@ # FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the # License for the specific language governing rights and limitations # under the License. -# +# # @APPLE_LICENSE_HEADER_END@ # @@ -27,11 +27,6 @@ # the terms and conditions for use and redistribution. # -# -# Export IDENT for sub-makefiles -# -export IDENT - export MakeInc_cmd=${SRCROOT}/makedefs/MakeInc.cmd export MakeInc_def=${SRCROOT}/makedefs/MakeInc.def export MakeInc_rule=${SRCROOT}/makedefs/MakeInc.rule @@ -43,14 +38,51 @@ include $(MakeInc_def) # # XXX: CFLAGS # -CFLAGS+= -include meta_features.h -DARCH_PRIVATE -DDRIVER_PRIVATE \ +CFLAGS+= -include meta_features.h -DDRIVER_PRIVATE \ -D_KERNEL_BUILD -DKERNEL_BUILD -DMACH_KERNEL -DBSD_BUILD \ - -DBSD_KERNEL_PRIVATE -DLP64KERN=1 -DLP64_DEBUG=0 -I. $(CFLAGS_INLINE_CONFIG) + -DBSD_KERNEL_PRIVATE -DLP64_DEBUG=0 + +# +# Directories for mig generated files +# +COMP_SUBDIRS = + +# +# Make sure we don't remove this by accident if interrupted at the wrong +# time. +# +.PRECIOUS: Makefile + +# +# Theses macros are filled in by the config program depending on the +# current configuration. The MACHDEP macro is replaced by the +# contents of the machine dependent makefile template and the others +# are replaced by the corresponding symbol definitions for the +# configuration. +# + +%OBJS + +%CFILES + +%CXXFILES + +%SFILES + +%MACHDEP + +# +# Machine-independent per-file flags +# dp_backing_file.o_CFLAGS_ADD += -Wshorten-64-to-32 ubc_subr.o_CFLAGS_ADD += -Wshorten-64-to-32 vnode_pager.o_CFLAGS_ADD += -Wshorten-64-to-32 vm_unix.o_CFLAGS_ADD += -Wshorten-64-to-32 +pthread_synch.o_CFLAGS_ADD += -Wno-unused-parameter -Wno-missing-prototypes +pthread_support.o_CFLAGS_ADD += -Wno-unused-parameter -Wno-missing-prototypes + +ip_icmp.o_CFLFAGS_ADD += -O0 # Objects that don't want -Wsign-compare OBJS_NO_SIGN_COMPARE = \ @@ -67,9 +99,9 @@ OBJS_NO_SIGN_COMPARE = \ ip_fw2_compat.o \ ip_icmp.o \ ip_input.o \ - ip_mroute.o \ ip_output.o \ raw_ip.o \ + tcp_cache.o \ tcp_input.o \ tcp_output.o \ tcp_subr.o \ @@ -94,7 +126,6 @@ OBJS_NO_SIGN_COMPARE = \ ip6_forward.o \ in6_ifattach.o \ ip6_input.o \ - ip6_mroute.o \ ip6_output.o \ ipcomp_input.o \ ipcomp_output.o \ @@ -119,194 +150,114 @@ OBJS_NO_SIGN_COMPARE = \ $(foreach file,$(OBJS_NO_SIGN_COMPARE),$(eval $(call add_perfile_cflags,$(file),-Wno-sign-compare))) -# Objects that want -Wcast-align warning treated as error -OBJS_ERROR_CAST_ALIGN = \ - kern_control.o \ - mcache.o \ - sys_socket.o \ +# Objects that don't want -Wcast-align warning (8474835) +OBJS_NO_CAST_ALIGN = \ + audit_bsm_token.o \ + audit_pipe.o \ + audit_session.o \ + bsd_i386.o \ + decmpfs.o \ + dtrace.o \ + fasttrap.o \ + fasttrap_isa.o \ + fbt_arm.o \ + fbt_x86.o \ + if_bond.o \ + ip6_fw.o \ + ip_dummynet.o \ + ip_fw2.o \ + kern_credential.o \ + kern_descrip.o \ + kern_event.o \ + kern_exec.o \ + kern_lockf.o \ + kern_subr.o \ + km.o \ + lockstat.o \ + mach_loader.o \ + memdev.o \ + nfs4_subs.o \ + nfs4_vnops.o \ + nfs_boot.o \ + nfs_gss.o \ + nfs_serv.o \ + nfs_socket.o \ + nfs_srvcache.o \ + nfs_subs.o \ + nfs_syscalls.o \ + nfs_vfsops.o \ + nfs_vnops.o \ + proc_info.o \ + pthread_synch.o \ + qsort.o \ + sdt.o \ + shadow.o \ + spec_vnops.o \ + subr_log.o \ + subr_prof.o \ + sys_generic.o \ + sys_pipe.o \ + systemcalls.o \ + systrace.o \ + tcp_lro.o \ + tty.o \ + tty_compat.o \ + tty_dev.o \ + tty_ptmx.o \ + tty_pty.o \ + ubc_subr.o \ + uipc_usrreq.o \ + vfs_attrlist.o \ + vfs_fsevents.o \ + vfs_lookup.o \ + vfs_syscalls.o \ + vfs_utfconv.o \ + vfs_vnops.o \ + vfs_xattr.o \ + vn.o \ + munge.o \ + aes.o \ + aeskey.o \ + sdt_arm.o \ uipc_mbuf.o \ - uipc_mbuf2.o \ - uipc_socket.o \ - uipc_socket2.o \ - uipc_syscalls.o \ - bpf.o \ - bpf_filter.o \ - bridgestp.o \ - bsd_comp.o \ - devtimer.o \ - dlil.o \ - ether_if_module.o \ - ether_inet_pr_module.o \ - ether_inet6_pr_module.o \ - flowhash.o \ - if.o \ - if_bridge.o \ - if_gif.o \ - if_llreach.o \ - if_loop.o \ - if_media.o \ - if_mib.o \ - if_pflog.o \ - if_stf.o \ - if_utun.o \ - if_utun_crypto.o \ - if_utun_crypto_ipsec.o \ - if_vlan.o \ - init.o \ - iptap.o \ - kext_net.o \ - kpi_interface.o \ - kpi_interfacefilter.o \ - kpi_protocol.o \ - kpi_protocol.o \ - ndrv.o \ - net_osdep.o \ - net_str_id.o \ - netsrc.o \ - ntstat.o \ - pf.o \ - pf_if.o \ - pf_ioctl.o \ - pf_norm.o \ - pf_osfp.o \ - pf_ruleset.o \ - pf_table.o \ - ppp_deflate.o \ - radix.o \ - raw_cb.o \ - raw_usrreq.o \ - route.o \ - rtsock.o \ - dhcp_options.o \ - altq_cbq.o \ - altq_fairq.o \ - altq_hfsc.o \ - altq_priq.o \ - altq_qfq.o \ - altq_subr.o \ - pktsched.o \ - pktsched_cbq.o \ - pktsched_fairq.o \ - pktsched_hfsc.o \ - pktsched_priq.o \ - pktsched_qfq.o \ - pktsched_rmclass.o \ - pktsched_tcq.o \ - classq.o \ - classq_blue.o \ - classq_red.o \ - classq_rio.o \ - classq_sfb.o \ - classq_subr.o \ - classq_util.o \ - igmp.o \ - in.o \ - in_arp.o \ - in_cksum.o \ - in_dhcp.o \ - in_gif.o \ - in_mcast.o \ - in_pcb.o \ - in_pcblist.o \ - in_proto.o \ - in_rmx.o \ - in_tclass.o \ - ip_divert.o \ - ip_ecn.o \ - ip_encap.o \ - ip_icmp.o \ - ip_id.o \ - ip_input.o \ - ip_mroute.o \ - ip_output.o \ - kpi_ipfilter.o \ - raw_ip.o \ - tcp_debug.o \ - tcp_input.o \ - tcp_ledbat.o \ - tcp_newreno.o \ - tcp_output.o \ - tcp_sack.o \ - tcp_subr.o \ - tcp_timer.o \ - tcp_usrreq.o \ - udp_usrreq.o \ - ah_core.o \ - ah_input.o \ - ah_output.o \ - dest6.o \ - esp_core.o \ - esp_input.o \ - esp_output.o \ - esp_rijndael.o \ - frag6.o \ - icmp6.o \ - in6.o \ - in6_cksum.o \ - in6_gif.o \ - in6_ifattach.o \ - in6_mcast.o \ - in6_pcb.o \ - in6_prefix.o \ - in6_proto.o \ - in6_rmx.o \ - in6_src.o \ - ip6_forward.o \ - ip6_id.o \ - ip6_input.o \ - ip6_mroute.o \ - ip6_output.o \ - ipcomp_core.o \ - ipcomp_input.o \ - ipcomp_output.o \ - ipsec.o \ - mld6.o \ - nd6.o \ - nd6_nbr.o \ - nd6_rtr.o \ - raw_ip6.o \ - route6.o \ - scope6.o \ - udp6_output.o \ - udp6_usrreq.o \ - key.o \ - key_debug.o \ - keydb.o \ - keysock.o - -$(foreach file,$(OBJS_ERROR_CAST_ALIGN),$(eval $(call add_perfile_cflags,$(file),-Werror=cast-align))) - -# -# Directories for mig generated files -# -COMP_SUBDIRS = - -# -# Make sure we don't remove this by accident if interrupted at the wrong -# time. -# -.PRECIOUS: Makefile - -# -# Theses macros are filled in by the config program depending on the -# current configuration. The MACHDEP macro is replaced by the -# contents of the machine dependent makefile template and the others -# are replaced by the corresponding symbol definitions for the -# configuration. -# - -%OBJS - -%CFILES - -%MFILES - -%SFILES - -%BFILES - -%ORDERED -%MACHDEP + kern_guarded.o + +$(foreach file,$(OBJS_NO_CAST_ALIGN),$(eval $(call add_perfile_cflags,$(file),-Wno-cast-align))) + +# Relax -Waddress-of-packed-member on networking (28123676) +OBJS_NO_PACKED_ADDRESS = \ + ah_core.o \ + ah_input.o \ + esp_input.o \ + esp_output.o \ + frag6.o \ + icmp6.o \ + if_stf.o \ + in6_cksum.o \ + in6_gif.o \ + ip6_forward.o \ + ip6_input.o \ + ip6_output.o \ + ipsec.o \ + mld6.o \ + mptcp_opt.o \ + nd6.o \ + nd6_nbr.o \ + nd6_prproxy.o \ + nd6_rtr.o \ + necp.o \ + pf.o \ + pf_norm.o \ + pktap.o \ + raw_ip6.o \ + tcp_input.o \ + tcp_subr.o \ + udp6_output.o \ + udp6_usrreq.o \ + udp_usrreq.o + +$(foreach file,$(OBJS_NO_PACKED_ADDRESS),$(eval $(call add_perfile_cflags,$(file),-Wno-unknown-warning-option))) +$(foreach file,$(OBJS_NO_PACKED_ADDRESS),$(eval $(call add_perfile_cflags,$(file),-Wno-address-of-packed-member))) # # This rule insures that the subr_prof.c does NOT get compiled with @@ -315,44 +266,43 @@ COMP_SUBDIRS = subr_prof.o_CFLAGS_RM = -pg -# -# OBJSDEPS is the set of files (defined in the machine dependent -# template if necessary) which all objects depend on (such as an -# in-line assembler expansion filter) -# -${OBJS}: ${OBJSDEPS} - - -%LOAD - -LDOBJS = $(OBJS) - -$(COMPONENT).filelist: $(LDOBJS) - @echo LDFILELIST $(COMPONENT) - $(_v)( for obj in ${LDOBJS}; do \ - echo $(TARGET)$(COMP_OBJ_DIR)/$(KERNEL_CONFIG)/$${obj}; \ - done; ) > $(COMPONENT).filelist +# Rebuild if per-file overrides change +${OBJS}: $(firstword $(MAKEFILE_LIST)) + +# Rebuild if global compile flags change +$(COBJS): .CFLAGS +.CFLAGS: ALWAYS + $(_v)$(REPLACECONTENTS) $@ $(KCC) $(CFLAGS) $(INCFLAGS) +$(CXXOBJS): .CXXFLAGS +.CXXFLAGS: ALWAYS + $(_v)$(REPLACECONTENTS) $@ $(KC++) $(CXXFLAGS) $(INCFLAGS) +$(SOBJS): .SFLAGS +.SFLAGS: ALWAYS + $(_v)$(REPLACECONTENTS) $@ $(S_KCC) $(SFLAGS) $(INCFLAGS) + +$(COMPONENT).filelist: $(OBJS) + @echo "$(ColorL)LDFILELIST$(Color0) $(ColorLF)$(COMPONENT)$(Color0)" + $(_v)for obj in ${OBJS}; do \ + echo $(TARGET)/$(CURRENT_KERNEL_CONFIG)/$${obj}; \ + done > $(COMPONENT).filelist MAKESYSCALLS = $(SRCROOT)/bsd/kern/makesyscalls.sh init_sysent.c: $(SRCROOT)/bsd/kern/syscalls.master $(MAKESYSCALLS) - @echo "Generating $@ from $<"; + @echo "[$(CMD_MC)] $(ColorH)GENERATING$(Color0) $(ColorLF)$@$(Color0) from $(ColorF)$<$(Color0)"; $(_v)$(MAKESYSCALLS) $< table > /dev/null syscalls.c: $(SRCROOT)/bsd/kern/syscalls.master $(MAKESYSCALLS) - @echo "Generating $@ from $<"; + @echo "[$(CMD_MC)] $(ColorH)GENERATING$(Color0) $(ColorLF)$@$(Color0) from $(ColorF)$<$(Color0)"; $(_v)$(MAKESYSCALLS) $< names > /dev/null audit_kevents.c: $(SRCROOT)/bsd/kern/syscalls.master $(MAKESYSCALLS) - @echo "Generating $@ from $<"; + @echo "[$(CMD_MC)] $(ColorH)GENERATING$(Color0) $(ColorLF)$@$(Color0) from $(ColorF)$<$(Color0)"; $(_v)$(MAKESYSCALLS) $< audit > /dev/null -do_depend: do_all - $(_v)${MD} -u Makedep -f -d `ls *.d`; - do_all: $(COMPONENT).filelist -do_build_all: do_depend +do_build_all:: do_all %RULES