2006-03-06 01:14:10 +03:00
#
# This file is included by the global makefile so that you can add your own
# architecture-specific flags and dependencies.
#
2007-10-16 12:26:54 +04:00
# Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
2005-04-17 02:20:36 +04:00
# Licensed under the GPL
#
2013-09-27 08:14:46 +04:00
# select defconfig based on actual architecture
i f e q ( $( SUBARCH ) , x 8 6 )
ifeq ( $( shell uname -m) ,x86_64)
KBUILD_DEFCONFIG := x86_64_defconfig
else
KBUILD_DEFCONFIG := i386_defconfig
endif
e l s e
KBUILD_DEFCONFIG := $( SUBARCH) _defconfig
e n d i f
2005-04-17 02:20:36 +04:00
ARCH_DIR := arch/um
OS := $( shell uname -s)
# We require bash because the vmlinux link and loader script cpp use bash
# features.
SHELL := /bin/bash
core-y += $( ARCH_DIR) /kernel/ \
$( ARCH_DIR) /drivers/ \
$( ARCH_DIR) /os-$( OS) /
2008-08-17 21:48:37 +04:00
MODE_INCLUDE += -I$( srctree) /$( ARCH_DIR) /include/shared/skas
2005-04-17 02:20:36 +04:00
2011-08-18 23:06:29 +04:00
HEADER_ARCH := $( SUBARCH)
2013-11-29 18:39:41 +04:00
i f n e q ( $( filter $ ( SUBARCH ) ,x 86 x 86_ 64 i 386) , )
HEADER_ARCH := x86
2011-08-18 23:06:29 +04:00
e n d i f
2013-11-29 18:39:41 +04:00
i f d e f C O N F I G _ 6 4 B I T
2012-01-24 23:09:12 +04:00
KBUILD_CFLAGS += -mcmodel= large
2011-08-18 23:06:29 +04:00
e n d i f
2011-08-18 23:06:39 +04:00
HOST_DIR := arch/$( HEADER_ARCH)
2015-03-27 14:43:36 +03:00
i n c l u d e $( ARCH_DIR ) / M a k e f i l e - s k a s
i n c l u d e $( HOST_DIR ) / M a k e f i l e . u m
2011-08-18 23:06:39 +04:00
core-y += $( HOST_DIR) /um/
2005-04-17 02:20:36 +04:00
2009-01-05 20:18:42 +03:00
SHARED_HEADERS := $( ARCH_DIR) /include/shared
ARCH_INCLUDE := -I$( srctree) /$( SHARED_HEADERS)
2011-08-18 23:06:39 +04:00
ARCH_INCLUDE += -I$( srctree) /$( HOST_DIR) /um/shared
KBUILD_CPPFLAGS += -I$( srctree) /$( HOST_DIR) /um
2005-04-17 02:20:36 +04:00
2006-02-01 14:06:25 +03:00
# -Dvmap=kernel_vmap prevents anything from referencing the libpcap.o symbol so
# named - it's a common symbol in libpcap, so we get a binary which crashes.
2005-09-21 20:39:32 +04:00
#
2006-02-01 14:06:25 +03:00
# Same things for in6addr_loopback and mktime - found in libc. For these two we
# only get link-time error, luckily.
#
2017-05-24 03:32:31 +03:00
# -Dlongjmp=kernel_longjmp prevents anything from referencing the libpthread.a
# embedded copy of longjmp, same thing for setjmp.
#
2006-02-01 14:06:25 +03:00
# These apply to USER_CFLAGS to.
2005-04-17 02:20:36 +04:00
2012-02-11 14:39:56 +04:00
KBUILD_CFLAGS += $( CFLAGS) $( CFLAGS-y) -D__arch_um__ \
2006-02-01 14:06:25 +03:00
$( ARCH_INCLUDE) $( MODE_INCLUDE) -Dvmap= kernel_vmap \
2017-05-24 03:32:31 +03:00
-Dlongjmp= kernel_longjmp -Dsetjmp= kernel_setjmp \
2007-10-16 12:26:45 +04:00
-Din6addr_loopback= kernel_in6addr_loopback \
2011-09-15 03:21:38 +04:00
-Din6addr_any= kernel_in6addr_any -Dstrrchr= kernel_strrchr
2005-09-21 20:39:32 +04:00
2007-10-15 23:59:31 +04:00
KBUILD_AFLAGS += $( ARCH_INCLUDE)
2005-04-17 02:20:36 +04:00
2015-05-31 20:50:57 +03:00
USER_CFLAGS = $( patsubst $( KERNEL_DEFINES) ,,$( patsubst -I%,,$( KBUILD_CFLAGS) ) ) \
$( ARCH_INCLUDE) $( MODE_INCLUDE) $( filter -I%,$( CFLAGS) ) \
2015-06-28 23:55:26 +03:00
-D_FILE_OFFSET_BITS= 64 -idirafter $( srctree) /include \
-idirafter $( obj) /include -D__KERNEL__ -D__UM_HOST__
2006-10-30 09:46:42 +03:00
#This will adjust *FLAGS accordingly to the platform.
2015-03-27 14:43:36 +03:00
i n c l u d e $( ARCH_DIR ) / M a k e f i l e - o s - $( OS )
2005-07-14 11:33:41 +04:00
2011-12-06 04:03:30 +04:00
KBUILD_CPPFLAGS += -I$( srctree) /$( HOST_DIR) /include \
2012-10-02 21:01:26 +04:00
-I$( srctree) /$( HOST_DIR) /include/uapi \
2016-06-15 18:45:46 +03:00
-I$( objtree) /$( HOST_DIR) /include/generated \
-I$( objtree) /$( HOST_DIR) /include/generated/uapi
2008-08-18 06:54:55 +04:00
2005-07-14 11:33:41 +04:00
# -Derrno=kernel_errno - This turns all kernel references to errno into
# kernel_errno to separate them from the libc errno. This allows -fno-common
2007-10-15 00:21:35 +04:00
# in KBUILD_CFLAGS. Otherwise, it would cause ld to complain about the two different
2005-07-14 11:33:41 +04:00
# errnos.
2006-02-01 14:06:25 +03:00
# These apply to kernelspace only.
2007-11-06 01:50:59 +03:00
#
# strip leading and trailing whitespace to make the USER_CFLAGS removal of these
# defines more robust
2005-07-14 11:33:41 +04:00
2007-11-06 01:50:59 +03:00
KERNEL_DEFINES = $( strip -Derrno= kernel_errno -Dsigprocmask= kernel_sigprocmask \
-Dmktime= kernel_mktime $( ARCH_KERNEL_DEFINES) )
2007-10-15 00:21:35 +04:00
KBUILD_CFLAGS += $( KERNEL_DEFINES)
2005-04-17 02:20:36 +04:00
2006-03-06 01:14:10 +03:00
PHONY += linux
2005-04-17 02:20:36 +04:00
all : linux
linux : vmlinux
2006-05-01 23:16:06 +04:00
@echo ' LINK $@'
2006-05-01 23:16:03 +04:00
$( Q) ln -f $< $@
2005-04-17 02:20:36 +04:00
d e f i n e a r c h h e l p
echo '* linux - Binary kernel image (./linux) - for backward'
echo ' compatibility only, this creates a hard link to the'
2006-10-04 00:21:02 +04:00
echo ' real kernel binary, the "vmlinux" binary you'
2005-04-17 02:20:36 +04:00
echo ' find in the kernel root.'
e n d e f
2011-12-06 04:03:30 +04:00
archheaders :
2018-08-04 07:47:03 +03:00
$( Q) $( MAKE) -f $( srctree) /Makefile ARCH = $( HEADER_ARCH) asm-generic archheaders
2017-09-04 09:37:17 +03:00
2018-11-29 05:58:50 +03:00
archprepare :
$( Q) $( MAKE) $( build) = $( HOST_DIR) /um include/generated/user_constants.h
2005-04-17 02:20:36 +04:00
LINK-$(CONFIG_LD_SCRIPT_STATIC) += -static
2017-08-20 14:26:04 +03:00
LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib $( call cc-option, -no-pie)
2005-04-17 02:20:36 +04:00
2006-05-01 23:16:04 +04:00
CFLAGS_NO_HARDENING := $( call cc-option, -fno-PIC,) $( call cc-option, -fno-pic,) \
$( call cc-option, -fno-stack-protector,) \
$( call cc-option, -fno-stack-protector-all,)
2009-09-20 14:28:22 +04:00
# Options used by linker script
export LDS_START := $( START)
export LDS_ELF_ARCH := $( ELF_ARCH)
export LDS_ELF_FORMAT := $( ELF_FORMAT)
2005-04-17 02:20:36 +04:00
2007-10-16 12:26:54 +04:00
# The wrappers will select whether using "malloc" or the kernel allocator.
2005-04-17 02:20:36 +04:00
LINK_WRAPS = -Wl,--wrap,malloc -Wl,--wrap,free -Wl,--wrap,calloc
2018-08-24 02:20:39 +03:00
LD_FLAGS_CMDLINE = $( foreach opt,$( KBUILD_LDFLAGS) ,-Wl,$( opt) )
2008-02-05 09:30:45 +03:00
2012-05-05 12:18:41 +04:00
# Used by link-vmlinux.sh which has special support for um link
export CFLAGS_vmlinux := $( LINK-y) $( LINK_WRAPS) $( LD_FLAGS_CMDLINE)
2005-04-17 02:20:36 +04:00
2007-10-16 12:26:54 +04:00
# When cleaning we don't include .config, so we don't include
# TT or skas makefiles and don't clean skas_ptregs.h.
2011-08-18 23:01:49 +04:00
CLEAN_FILES += linux x.i gmon.out
2005-04-17 02:20:36 +04:00
archclean :
@find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \
-o -name '*.gcov' \) -type f -print | xargs rm -f
2018-07-31 14:39:26 +03:00
export HEADER_ARCH SUBARCH USER_CFLAGS CFLAGS_NO_HARDENING OS DEV_NULL_PATH