Makefile.template   [plain text]


#
# Copyright (c) 2000-2011 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,
# 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@
#

#
# 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.
#

export MakeInc_cmd=${SRCROOT}/makedefs/MakeInc.cmd
export MakeInc_def=${SRCROOT}/makedefs/MakeInc.def
export MakeInc_rule=${SRCROOT}/makedefs/MakeInc.rule
export MakeInc_dir=${SRCROOT}/makedefs/MakeInc.dir

include $(MakeInc_cmd)
include $(MakeInc_def)

#
# XXX: CFLAGS
#
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 = 

#
#  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

# 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

$(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 =			\
		BTree.o			\
		BTreeAllocate.o		\
		BTreeMiscOps.o		\
		BTreeNodeOps.o		\
		BTreeScanner.o		\
		BTreeTreeOps.o		\
		CatalogUtilities.o	\
		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		\
		hfs_attrlist.o		\
		hfs_btreeio.o		\
		hfs_catalog.o		\
		hfs_cnode.o		\
		hfs_endian.o		\
		hfs_hotfiles.o		\
		hfs_link.o		\
		hfs_quota.o		\
		hfs_readwrite.o		\
		hfs_search.o		\
		hfs_vfsops.o		\
		hfs_vnops.o		\
		hfs_xattr.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_journal.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
# 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 LDFILELIST $(COMPONENT)
	$(_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 $<";
	$(_v)$(MAKESYSCALLS) $< table > /dev/null

syscalls.c: $(SRCROOT)/bsd/kern/syscalls.master $(MAKESYSCALLS)
	@echo "Generating $@ from $<";
	$(_v)$(MAKESYSCALLS) $< names > /dev/null

audit_kevents.c: $(SRCROOT)/bsd/kern/syscalls.master $(MAKESYSCALLS)
	@echo "Generating $@ from $<";
	$(_v)$(MAKESYSCALLS) $< audit > /dev/null

do_all: $(COMPONENT).filelist

do_build_all:: do_all

%RULES

include $(MakeInc_rule)
include $(MakeInc_dir)