11da177e4SLinus Torvalds# 24f193362SPaul Smith# This file is included by the global makefile so that you can add your own 34f193362SPaul Smith# architecture-specific flags and dependencies. 44f193362SPaul Smith# 54c9e1385SJeff Dike# Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) 61da177e4SLinus Torvalds# Licensed under the GPL 71da177e4SLinus Torvalds# 81da177e4SLinus Torvalds 91da177e4SLinus TorvaldsARCH_DIR := arch/um 101da177e4SLinus TorvaldsOS := $(shell uname -s) 111da177e4SLinus Torvalds# We require bash because the vmlinux link and loader script cpp use bash 121da177e4SLinus Torvalds# features. 131da177e4SLinus TorvaldsSHELL := /bin/bash 141da177e4SLinus Torvalds 151da177e4SLinus Torvaldsfilechk_gen_header = $< 161da177e4SLinus Torvalds 171da177e4SLinus Torvaldscore-y += $(ARCH_DIR)/kernel/ \ 181da177e4SLinus Torvalds $(ARCH_DIR)/drivers/ \ 191da177e4SLinus Torvalds $(ARCH_DIR)/os-$(OS)/ 201da177e4SLinus Torvalds 218569c914SAl ViroMODE_INCLUDE += -I$(srctree)/$(ARCH_DIR)/include/shared/skas 221da177e4SLinus Torvalds 237bbe7204SAl ViroHEADER_ARCH := $(SUBARCH) 247bbe7204SAl Viro 257bbe7204SAl Viro# Additional ARCH settings for x86 267bbe7204SAl Viroifeq ($(SUBARCH),i386) 277bbe7204SAl Viro HEADER_ARCH := x86 287bbe7204SAl Viroendif 297bbe7204SAl Viroifeq ($(SUBARCH),x86_64) 307bbe7204SAl Viro HEADER_ARCH := x86 3112783aa0SRichard Weinberger KBUILD_CFLAGS += -mcmodel=large 327bbe7204SAl Viroendif 337bbe7204SAl Viro 345c48b108SAl ViroHOST_DIR := arch/$(HEADER_ARCH) 355c48b108SAl Viro 3642fda663SJeff Dikeinclude $(srctree)/$(ARCH_DIR)/Makefile-skas 375c48b108SAl Viroinclude $(srctree)/$(HOST_DIR)/Makefile.um 385c48b108SAl Viro 395c48b108SAl Virocore-y += $(HOST_DIR)/um/ 401da177e4SLinus Torvalds 4122409f9cSAl ViroSHARED_HEADERS := $(ARCH_DIR)/include/shared 4222409f9cSAl ViroARCH_INCLUDE := -I$(srctree)/$(SHARED_HEADERS) 435c48b108SAl ViroARCH_INCLUDE += -I$(srctree)/$(HOST_DIR)/um/shared 445c48b108SAl ViroKBUILD_CPPFLAGS += -I$(srctree)/$(HOST_DIR)/um 451da177e4SLinus Torvalds 4698105d47SPaolo 'Blaisorblade' Giarrusso# -Dvmap=kernel_vmap prevents anything from referencing the libpcap.o symbol so 4798105d47SPaolo 'Blaisorblade' Giarrusso# named - it's a common symbol in libpcap, so we get a binary which crashes. 48fd748104SPaolo 'Blaisorblade' Giarrusso# 4998105d47SPaolo 'Blaisorblade' Giarrusso# Same things for in6addr_loopback and mktime - found in libc. For these two we 5098105d47SPaolo 'Blaisorblade' Giarrusso# only get link-time error, luckily. 5198105d47SPaolo 'Blaisorblade' Giarrusso# 5298105d47SPaolo 'Blaisorblade' Giarrusso# These apply to USER_CFLAGS to. 53ecc354a9SPaolo 'Blaisorblade' Giarrusso 54dc5be20aSAl ViroKBUILD_CFLAGS += $(CFLAGS) $(CFLAGS-y) -D__arch_um__ \ 55fd748104SPaolo 'Blaisorblade' Giarrusso $(ARCH_INCLUDE) $(MODE_INCLUDE) -Dvmap=kernel_vmap \ 56818f6ef4SJeff Dike -Din6addr_loopback=kernel_in6addr_loopback \ 572c51a4bcSAl Viro -Din6addr_any=kernel_in6addr_any -Dstrrchr=kernel_strrchr 58fd748104SPaolo 'Blaisorblade' Giarrusso 59222d394dSSam RavnborgKBUILD_AFLAGS += $(ARCH_INCLUDE) 60ecc354a9SPaolo 'Blaisorblade' Giarrusso 61d45e44d4Sakpm@osdl.orgUSER_CFLAGS = $(patsubst $(KERNEL_DEFINES),,$(patsubst -D__KERNEL__,,\ 62a0f97e06SSam Ravnborg $(patsubst -I%,,$(KBUILD_CFLAGS)))) $(ARCH_INCLUDE) $(MODE_INCLUDE) \ 634d45db9cSAl Viro $(filter -I%,$(CFLAGS)) -D_FILE_OFFSET_BITS=64 -idirafter include 64d45e44d4Sakpm@osdl.org 65d45e44d4Sakpm@osdl.org#This will adjust *FLAGS accordingly to the platform. 66d45e44d4Sakpm@osdl.orginclude $(srctree)/$(ARCH_DIR)/Makefile-os-$(OS) 67ecc354a9SPaolo 'Blaisorblade' Giarrusso 68c9b284b2SH. Peter AnvinKBUILD_CPPFLAGS += -I$(srctree)/$(HOST_DIR)/include \ 69c9b284b2SH. Peter Anvin -I$(HOST_DIR)/include/generated 701de1502cSAl Viro 711da177e4SLinus Torvalds# -Derrno=kernel_errno - This turns all kernel references to errno into 721da177e4SLinus Torvalds# kernel_errno to separate them from the libc errno. This allows -fno-common 73a0f97e06SSam Ravnborg# in KBUILD_CFLAGS. Otherwise, it would cause ld to complain about the two different 741da177e4SLinus Torvalds# errnos. 7598105d47SPaolo 'Blaisorblade' Giarrusso# These apply to kernelspace only. 76f15cf515SJeff Dike# 77f15cf515SJeff Dike# strip leading and trailing whitespace to make the USER_CFLAGS removal of these 78f15cf515SJeff Dike# defines more robust 791da177e4SLinus Torvalds 80f15cf515SJeff DikeKERNEL_DEFINES = $(strip -Derrno=kernel_errno -Dsigprocmask=kernel_sigprocmask \ 81f15cf515SJeff Dike -Dmktime=kernel_mktime $(ARCH_KERNEL_DEFINES)) 82a0f97e06SSam RavnborgKBUILD_CFLAGS += $(KERNEL_DEFINES) 831da177e4SLinus Torvalds 844f193362SPaul SmithPHONY += linux 851da177e4SLinus Torvalds 861da177e4SLinus Torvaldsall: linux 871da177e4SLinus Torvalds 881da177e4SLinus Torvaldslinux: vmlinux 89a4b741e3SJeff Dike @echo ' LINK $@' 90cb8aa3d2SPaolo 'Blaisorblade' Giarrusso $(Q)ln -f $< $@ 911da177e4SLinus Torvalds 921da177e4SLinus Torvaldsdefine archhelp 931da177e4SLinus Torvalds echo '* linux - Binary kernel image (./linux) - for backward' 941da177e4SLinus Torvalds echo ' compatibility only, this creates a hard link to the' 954b3f686dSMatt LaPlante echo ' real kernel binary, the "vmlinux" binary you' 961da177e4SLinus Torvalds echo ' find in the kernel root.' 971da177e4SLinus Torvaldsendef 981da177e4SLinus Torvalds 995c48b108SAl ViroKBUILD_KCONFIG := $(HOST_DIR)/um/Kconfig 1001da177e4SLinus Torvalds 101c9b284b2SH. Peter Anvinarchheaders: 10279320bcbSH. Peter Anvin $(Q)$(MAKE) -C '$(srctree)' KBUILD_SRC= \ 103dc5be20aSAl Viro ARCH=$(HEADER_ARCH) O='$(objtree)' archheaders 104c9b284b2SH. Peter Anvin 1054de1c5f6SAl Viroarchprepare: include/generated/user_constants.h 1061da177e4SLinus Torvalds 1071da177e4SLinus TorvaldsLINK-$(CONFIG_LD_SCRIPT_STATIC) += -static 1081da177e4SLinus TorvaldsLINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib 1091da177e4SLinus Torvalds 110275e6e1eSPaolo 'Blaisorblade' GiarrussoCFLAGS_NO_HARDENING := $(call cc-option, -fno-PIC,) $(call cc-option, -fno-pic,) \ 111275e6e1eSPaolo 'Blaisorblade' Giarrusso $(call cc-option, -fno-stack-protector,) \ 112275e6e1eSPaolo 'Blaisorblade' Giarrusso $(call cc-option, -fno-stack-protector-all,) 113275e6e1eSPaolo 'Blaisorblade' Giarrusso 11451b563fcSSam Ravnborg# Options used by linker script 11551b563fcSSam Ravnborgexport LDS_START := $(START) 11651b563fcSSam Ravnborgexport LDS_ELF_ARCH := $(ELF_ARCH) 11751b563fcSSam Ravnborgexport LDS_ELF_FORMAT := $(ELF_FORMAT) 1181da177e4SLinus Torvalds 1191da177e4SLinus Torvalds# The wrappers will select whether using "malloc" or the kernel allocator. 1201da177e4SLinus TorvaldsLINK_WRAPS = -Wl,--wrap,malloc -Wl,--wrap,free -Wl,--wrap,calloc 1211da177e4SLinus Torvalds 122260c0cb8SJeff DikeLD_FLAGS_CMDLINE = $(foreach opt,$(LDFLAGS),-Wl,$(opt)) 1230ba7fe03SJeff Dike 124*1f2bfbd0SSam Ravnborg# Used by link-vmlinux.sh which has special support for um link 125*1f2bfbd0SSam Ravnborgexport CFLAGS_vmlinux := $(LINK-y) $(LINK_WRAPS) $(LD_FLAGS_CMDLINE) 1261da177e4SLinus Torvalds 1271da177e4SLinus Torvalds# When cleaning we don't include .config, so we don't include 1281da177e4SLinus Torvalds# TT or skas makefiles and don't clean skas_ptregs.h. 1299e636452SAl ViroCLEAN_FILES += linux x.i gmon.out 1301da177e4SLinus Torvalds 1311da177e4SLinus Torvaldsarchclean: 1321da177e4SLinus Torvalds @find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \ 1331da177e4SLinus Torvalds -o -name '*.gcov' \) -type f -print | xargs rm -f 1341da177e4SLinus Torvalds 1351da177e4SLinus Torvalds# Generated files 1364ee189a9SJeff Dike 137392f4b7dSH. Peter Anvin$(HOST_DIR)/um/user-offsets.s: __headers FORCE 1385c48b108SAl Viro $(Q)$(MAKE) $(build)=$(HOST_DIR)/um $@ 1394ee189a9SJeff Dike 140f64a227bSSam Ravnborgdefine filechk_gen-asm-offsets 141f64a227bSSam Ravnborg (set -e; \ 142f64a227bSSam Ravnborg echo "/*"; \ 143f64a227bSSam Ravnborg echo " * DO NOT MODIFY."; \ 144f64a227bSSam Ravnborg echo " *"; \ 145f64a227bSSam Ravnborg echo " * This file was generated by arch/$(ARCH)/Makefile"; \ 146f64a227bSSam Ravnborg echo " *"; \ 147f64a227bSSam Ravnborg echo " */"; \ 148f64a227bSSam Ravnborg echo ""; \ 149f64a227bSSam Ravnborg sed -ne "/^->/{s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;}"; \ 150ecba97d4SAl Viro echo ""; ) 151f64a227bSSam Ravnborgendef 152f64a227bSSam Ravnborg 1535c48b108SAl Viroinclude/generated/user_constants.h: $(HOST_DIR)/um/user-offsets.s 1548d0b9dc9SAl Viro $(call filechk,gen-asm-offsets) 1558d0b9dc9SAl Viro 1565c48b108SAl Viroexport SUBARCH USER_CFLAGS CFLAGS_NO_HARDENING OS DEV_NULL_PATH 157