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