#
-# 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,
# 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@
#
# 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
#
# 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 = \
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 \
ip6_forward.o \
in6_ifattach.o \
ip6_input.o \
- ip6_mroute.o \
ip6_output.o \
ipcomp_input.o \
ipcomp_output.o \
mld6.o \
nd6.o \
nd6_nbr.o \
+ nd6_prproxy.o \
nd6_rtr.o \
raw_ip6.o \
route6.o \
$(foreach file,$(OBJS_NO_SIGN_COMPARE),$(eval $(call add_perfile_cflags,$(file),-Wno-sign-compare)))
-#
-# 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
+# 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)))
#
# This rule insures that the subr_prof.c does NOT get compiled with
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