#
-# Mach Operating System
-# Copyright (c) 1986 Carnegie-Mellon University
-# All rights reserved. The CMU software License Agreement specifies
-# the terms and conditions for use and redistribution.
+# 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.
#
-# Export IDENT for sub-makefiles
+# 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,
+# INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+# 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@
#
-export IDENT
#
-# XXX: INCFLAGS
+# Mach Operating System
+# Copyright (c) 1986 Carnegie-Mellon University
+# All rights reserved. The CMU software License Agreement specifies
+# the terms and conditions for use and redistribution.
#
-INCFLAGS_MAKEFILE= -I$(SOURCE) -I$(SOURCE)include -I$(SOURCE)netat -I$(SOURCE)netat/h -I$(SOURCE)netat/at -I$(SOURCE_DIR)
export MakeInc_cmd=${SRCROOT}/makedefs/MakeInc.cmd
export MakeInc_def=${SRCROOT}/makedefs/MakeInc.def
#
# XXX: CFLAGS
#
-CFLAGS+= -imacros meta_features.h -DARCH_PRIVATE -DKERNEL -DDRIVER_PRIVATE -D_KERNEL_BUILD -DKERNEL_BUILD -DMACH_KERNEL -DBSD_BUILD -DNCPUS=1 -Wno-four-char-constants -fpascal-strings -D__APPLE__ -I.
-
-# XXX: ld flags for bsd.o
-export LDFLAGS_COMPONENT += -keep_private_externs
+CFLAGS+= -include meta_features.h -DDRIVER_PRIVATE \
+ -D_KERNEL_BUILD -DKERNEL_BUILD -DMACH_KERNEL -DBSD_BUILD \
+ -DBSD_KERNEL_PRIVATE -DLP64_DEBUG=0
#
# Directories for mig generated files
#
-COMP_SUBDIRS =
+COMP_SUBDIRS =
#
# Make sure we don't remove this by accident if interrupted at the wrong
#
.PRECIOUS: Makefile
-VERSION_FILES= \
- $(SOURCE_DIR)/$(COMPONENT)/conf/version.major \
- $(SOURCE_DIR)/$(COMPONENT)/conf/version.minor \
- $(SOURCE_DIR)/$(COMPONENT)/conf/version.variant
-
-COPYRIGHT_FILES = \
- $(SOURCE_DIR)/$(COMPONENT)/conf/copyright
-
#
# Theses macros are filled in by the config program depending on the
# current configuration. The MACHDEP macro is replaced by the
%CFILES
-%MFILES
+%CXXFILES
%SFILES
-%BFILES
-
-%ORDERED
%MACHDEP
#
-# 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)
+# Machine-independent per-file flags
#
-${OBJS}: ${OBJSDEPS}
+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
-%LOAD
+# 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 \
+ 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
-LDOBJS = $(OBJS)
+$(foreach file,$(OBJS_NO_SIGN_COMPARE),$(eval $(call add_perfile_cflags,$(file),-Wno-sign-compare)))
-$(COMPONENT).o: $(LDOBJS)
- @echo "[ creating $(COMPONENT).o ]"
- $(RM) $(RMFLAGS) vers.c
- $(OBJROOT)/$(KERNEL_CONFIG)_$(ARCH_CONFIG)/$(COMPONENT)/newvers \
- `$(CAT) ${VERSION_FILES}` ${COPYRIGHT_FILES}
- ${KCC} $(CFLAGS) $(INCLUDES) -c vers.c
- @echo [ updating $(COMPONENT).o ${BSD_KERNEL_CONFIG} ]
- $(LD) $(LDFLAGS_COMPONENT) -o $(COMPONENT).o ${LDOBJS} vers.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 \
+ kern_guarded.o
-do_depend: do_all
- ${MD} -u Makedep -f -d `ls *.d`;
-
-do_all: $(COMPONENT).o
+$(foreach file,$(OBJS_NO_CAST_ALIGN),$(eval $(call add_perfile_cflags,$(file),-Wno-cast-align)))
-do_build_all: do_depend
+# 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
+# profiling. It implements mcount() and profiling it leads to recursion.
+#
+
+subr_prof.o_CFLAGS_RM = -pg
+
+# 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 "[$(CMD_MC)] $(ColorH)GENERATING$(Color0) $(ColorLF)$@$(Color0) from $(ColorF)$<$(Color0)";
+ $(_v)$(MAKESYSCALLS) $< table > /dev/null
+
+syscalls.c: $(SRCROOT)/bsd/kern/syscalls.master $(MAKESYSCALLS)
+ @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 "[$(CMD_MC)] $(ColorH)GENERATING$(Color0) $(ColorLF)$@$(Color0) from $(ColorF)$<$(Color0)";
+ $(_v)$(MAKESYSCALLS) $< audit > /dev/null
+
+do_all: $(COMPONENT).filelist
+
+do_build_all:: do_all
%RULES
include $(MakeInc_rule)
include $(MakeInc_dir)
-