]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/conf/Makefile.template
xnu-4570.1.46.tar.gz
[apple/xnu.git] / bsd / conf / Makefile.template
index 7ba4782297e808254b06d53b6633ccbee8b9a49e..afe23cf346d0e4a60088637c59d20f87c2bf71a9 100644 (file)
@@ -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@
 #
 # @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.
 # 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,
 # 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.
 # 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@
 #
 
 # @APPLE_LICENSE_HEADER_END@
 #
 
 # the terms and conditions for use and redistribution.
 #
 
 # 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
 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
 #
 #
 # 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 \
        -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
 #
 
 #
 # Directories for mig generated files
 #
-COMP_SUBDIRS = 
+COMP_SUBDIRS =
 
 #
 #  Make sure we don't remove this by accident if interrupted at the wrong
 
 #
 #  Make sure we don't remove this by accident if interrupted at the wrong
@@ -74,15 +66,199 @@ COMP_SUBDIRS =
 
 %CFILES
 
 
 %CFILES
 
-%MFILES
+%CXXFILES
 
 %SFILES
 
 
 %SFILES
 
-%BFILES
-
-%ORDERED
 %MACHDEP
 
 %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.
 #
 # 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
 
 
 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)
 
 %RULES
 
 include $(MakeInc_rule)
 include $(MakeInc_dir)
-