X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/0b4e3aa066abc0728aacb4bbeb86f53f9737156e..813fb2f63a553c957e917ede5f119b021d6ce391:/bsd/conf/Makefile.template diff --git a/bsd/conf/Makefile.template b/bsd/conf/Makefile.template index 235b7663f..edfd0c767 100644 --- a/bsd/conf/Makefile.template +++ b/bsd/conf/Makefile.template @@ -1,19 +1,31 @@ # -# 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 @@ -26,15 +38,14 @@ include $(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 @@ -42,14 +53,6 @@ COMP_SUBDIRS = # .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 @@ -62,45 +65,246 @@ COPYRIGHT_FILES = \ %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) -