X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/91447636331957f3d9b5ca5b508f07c526b0074d..5ba3f43ea354af8ad55bea84372a2bc834d8757c:/bsd/conf/Makefile.template?ds=sidebyside diff --git a/bsd/conf/Makefile.template b/bsd/conf/Makefile.template index 7ba478229..afe23cf34 100644 --- a/bsd/conf/Makefile.template +++ b/bsd/conf/Makefile.template @@ -1,14 +1,14 @@ # -# Copyright (c) 2000-2004 Apple Computer, 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,18 +38,15 @@ include $(MakeInc_def) # # XXX: CFLAGS # -CFLAGS+= -imacros meta_features.h -DARCH_PRIVATE -DKERNEL -DDRIVER_PRIVATE \ +CFLAGS+= -include meta_features.h -DDRIVER_PRIVATE \ -D_KERNEL_BUILD -DKERNEL_BUILD -DMACH_KERNEL -DBSD_BUILD \ - -DBSD_KERNEL_PRIVATE -DNCPUS=1 -Wno-four-char-constants -fpascal-strings \ - -D__APPLE__ -DLP64KERN=1 -DLP64_DEBUG=0 -I. - -# XXX: ld flags for bsd.o -export LDFLAGS_COMPONENT += -keep_private_externs + -DBSD_KERNEL_PRIVATE -DLP64_DEBUG=0 +SFLAGS+= -include meta_features.h # # Directories for mig generated files # -COMP_SUBDIRS = +COMP_SUBDIRS = # # Make sure we don't remove this by accident if interrupted at the wrong @@ -74,15 +66,199 @@ COMP_SUBDIRS = %CFILES -%MFILES +%CXXFILES %SFILES -%BFILES - -%ORDERED %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 + +# Objects that don't want -Wsign-compare +OBJS_NO_SIGN_COMPARE = \ + radix.o \ + route.o \ + rtsock.o \ + dhcp_options.o \ + igmp.o \ + in_cksum.o \ + ip_divert.o \ + ip_dummynet.o \ + ip_flow.o \ + ip_fw2.o \ + ip_fw2_compat.o \ + ip_icmp.o \ + ip_input.o \ + ip_output.o \ + raw_ip.o \ + tcp_cache.o \ + tcp_input.o \ + tcp_output.o \ + tcp_subr.o \ + tcp_usrreq.o \ + tcp_timer.o \ + udp_usrreq.o \ + ah_input.o \ + ah_core.o \ + ah_output.o \ + esp_core.o \ + esp_input.o \ + esp_output.o \ + esp_rijndael.o \ + esp_chachapoly.o \ + ipsec.o \ + dest6.o \ + frag6.o \ + icmp6.o \ + in6.o \ + in6_src.o \ + in6_cksum.o \ + ip6_fw.o \ + ip6_forward.o \ + in6_ifattach.o \ + ip6_input.o \ + ip6_output.o \ + ipcomp_input.o \ + ipcomp_output.o \ + in6_proto.o \ + mld6.o \ + nd6.o \ + nd6_nbr.o \ + nd6_prproxy.o \ + nd6_rtr.o \ + raw_ip6.o \ + route6.o \ + scope6.o \ + udp6_usrreq.o \ + key.o \ + keysock.o \ + keydb.o \ + des_setkey.o \ + uipc_mbuf.o \ + uipc_mbuf2.o \ + uipc_socket.o \ + uipc_socket2.o + +$(foreach file,$(OBJS_NO_SIGN_COMPARE),$(eval $(call add_perfile_cflags,$(file),-Wno-sign-compare))) + +# 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 \ + 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 \ + iptap.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-address-of-packed-member))) + # # This rule insures that the subr_prof.c does NOT get compiled with # profiling. It implements mcount() and profiling it leads to recursion. @@ -90,32 +266,49 @@ 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} +# 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 -%LOAD +MAKESYSCALLS = $(SRCROOT)/bsd/kern/makesyscalls.sh -LDOBJS = $(OBJS) +init_sysent.c: $(SRCROOT)/bsd/kern/syscalls.master $(MAKESYSCALLS) + @echo "[$(CMD_MC)] $(ColorH)GENERATING$(Color0) $(ColorLF)$@$(Color0) from $(ColorF)$<$(Color0)"; + $(_v)$(MAKESYSCALLS) $< table > /dev/null -$(COMPONENT).o: $(LDOBJS) - @echo "[ creating $(COMPONENT).o ]" - @echo [ updating $(COMPONENT).o ${BSD_KERNEL_CONFIG} ] - $(LD) $(LDFLAGS_COMPONENT) -o $(COMPONENT).o ${LDOBJS} +syscalls.c: $(SRCROOT)/bsd/kern/syscalls.master $(MAKESYSCALLS) + @echo "[$(CMD_MC)] $(ColorH)GENERATING$(Color0) $(ColorLF)$@$(Color0) from $(ColorF)$<$(Color0)"; + $(_v)$(MAKESYSCALLS) $< names > /dev/null -do_depend: do_all - ${MD} -u Makedep -f -d `ls *.d`; - -do_all: $(COMPONENT).o +audit_kevents.c: $(SRCROOT)/bsd/kern/syscalls.master $(MAKESYSCALLS) + @echo "[$(CMD_MC)] $(ColorH)GENERATING$(Color0) $(ColorLF)$@$(Color0) from $(ColorF)$<$(Color0)"; + $(_v)$(MAKESYSCALLS) $< audit > /dev/null -do_build_all: do_depend +systrace_args.c: $(SRCROOT)/bsd/kern/syscalls.master $(MAKESYSCALLS) + @echo "[$(CMD_MC)] $(ColorH)GENERATING$(Color0) $(ColorLF)$@$(Color0) from $(ColorF)$<$(Color0)"; + $(_v)$(MAKESYSCALLS) $< systrace > /dev/null + +do_all: $(COMPONENT).filelist + +do_build_all:: do_all %RULES include $(MakeInc_rule) include $(MakeInc_dir) -