2013-02-20 19:32:29 +04:00
i f n e q ( $( O ) , )
2012-11-06 01:02:08 +04:00
i f e q ( $( origin O ) , c o m m a n d l i n e )
2012-08-13 18:23:02 +04:00
dummy := $( if $( shell test -d $( O) || echo $( O) ) ,$( error O = $( O) does not exist) ,)
ABSOLUTE_O := $( shell cd $( O) ; pwd )
2012-11-06 01:02:08 +04:00
OUTPUT := $( ABSOLUTE_O) /$( if $( subdir) ,$( subdir) /)
2012-08-13 18:23:02 +04:00
COMMAND_O := O = $( ABSOLUTE_O)
2012-11-06 01:02:08 +04:00
i f e q ( $( objtree ) , )
objtree := $( O)
e n d i f
2012-04-11 20:36:14 +04:00
e n d i f
2013-02-20 19:32:29 +04:00
e n d i f
2012-04-11 20:36:14 +04:00
# check that the output directory actually exists
2013-02-20 19:32:29 +04:00
i f n e q ( $( OUTPUT ) , )
2012-04-11 20:36:14 +04:00
OUTDIR := $( shell cd $( OUTPUT) && /bin/pwd)
$( if $ ( OUTDIR ) ,, $ ( error output directory "$ ( OUTPUT ) " does not exist ) )
e n d i f
#
# Include saner warnings here, which can catch bugs:
#
2012-04-11 20:36:15 +04:00
EXTRA_WARNINGS := -Wbad-function-cast
EXTRA_WARNINGS += -Wdeclaration-after-statement
EXTRA_WARNINGS += -Wformat-security
EXTRA_WARNINGS += -Wformat-y2k
EXTRA_WARNINGS += -Winit-self
EXTRA_WARNINGS += -Wmissing-declarations
EXTRA_WARNINGS += -Wmissing-prototypes
EXTRA_WARNINGS += -Wnested-externs
EXTRA_WARNINGS += -Wno-system-headers
EXTRA_WARNINGS += -Wold-style-definition
EXTRA_WARNINGS += -Wpacked
EXTRA_WARNINGS += -Wredundant-decls
EXTRA_WARNINGS += -Wshadow
EXTRA_WARNINGS += -Wstrict-prototypes
EXTRA_WARNINGS += -Wswitch-default
EXTRA_WARNINGS += -Wswitch-enum
EXTRA_WARNINGS += -Wundef
EXTRA_WARNINGS += -Wwrite-strings
EXTRA_WARNINGS += -Wformat
2012-04-11 20:36:14 +04:00
2017-02-14 16:34:35 +03:00
i f n e q ( $( CC ) , c l a n g )
EXTRA_WARNINGS += -Wstrict-aliasing= 3
e n d i f
2017-02-22 22:54:53 +03:00
# Hack to avoid type-punned warnings on old systems such as RHEL5:
# We should be changing CFLAGS and checking gcc version, but this
# will do for now and keep the above -Wstrict-aliasing=3 in place
# in newer systems.
# Needed for the __raw_cmpxchg in tools/arch/x86/include/asm/cmpxchg.h
i f n e q ( $( filter 3.%,$ ( MAKE_VERSION ) ) , ) # make-3
EXTRA_WARNINGS += -fno-strict-aliasing
e n d i f
2012-04-11 20:36:14 +04:00
i f n e q ( $( findstring $ ( MAKEFLAGS ) , w ) , w )
PRINT_DIR = --no-print-directory
e l s e
NO_SUBDIR = :
e n d i f
2017-01-19 07:16:55 +03:00
i f n e q ( $( filter 4.%,$ ( MAKE_VERSION ) ) , ) # make-4
i f n e q ( $( filter %s ,$ ( firstword x $ ( MAKEFLAGS ) ) ) , )
silent = 1
e n d i f
e l s e # make-3.8x
i f n e q ( $( filter s % -s %,$ ( MAKEFLAGS ) ) , )
silent = 1
e n d i f
e n d i f
2012-11-05 19:15:24 +04:00
#
# Define a callable command for descending to a new directory
#
# Call by doing: $(call descend,directory[,target])
#
descend = \
2012-11-06 01:02:08 +04:00
+mkdir -p $( OUTPUT) $( 1) && \
2012-11-13 21:14:38 +04:00
$( MAKE) $( COMMAND_O) subdir = $( if $( subdir) ,$( subdir) /$( 1) ,$( 1) ) $( PRINT_DIR) -C $( 1) $( 2)
2012-11-05 19:15:24 +04:00
2012-11-06 01:02:08 +04:00
QUIET_SUBDIR0 = +$( MAKE) $( COMMAND_O) -C # space to separate -C and subdir
2012-04-11 20:36:14 +04:00
QUIET_SUBDIR1 =
2017-01-19 07:16:55 +03:00
i f n e q ( $( silent ) , 1 )
2013-10-09 13:49:27 +04:00
ifneq ( $( V) ,1)
QUIET_CC = @echo ' CC ' $@ ;
2013-12-19 17:42:03 +04:00
QUIET_CC_FPIC = @echo ' CC FPIC ' $@ ;
2013-10-09 13:49:27 +04:00
QUIET_AR = @echo ' AR ' $@ ;
QUIET_LINK = @echo ' LINK ' $@ ;
QUIET_MKDIR = @echo ' MKDIR ' $@ ;
QUIET_GEN = @echo ' GEN ' $@ ;
2012-04-11 20:36:14 +04:00
QUIET_SUBDIR0 = +@subdir=
2013-10-09 13:49:27 +04:00
QUIET_SUBDIR1 = ; $( NO_SUBDIR) \
echo ' SUBDIR ' $$ subdir; \
2012-04-11 20:36:14 +04:00
$( MAKE) $( PRINT_DIR) -C $$ subdir
2013-10-09 13:49:27 +04:00
QUIET_FLEX = @echo ' FLEX ' $@ ;
QUIET_BISON = @echo ' BISON ' $@ ;
2012-11-06 01:02:08 +04:00
descend = \
2013-10-09 13:49:27 +04:00
+@echo ' DESCEND ' $( 1) ; \
2012-11-06 01:02:08 +04:00
mkdir -p $( OUTPUT) $( 1) && \
2012-11-13 21:14:38 +04:00
$( MAKE) $( COMMAND_O) subdir = $( if $( subdir) ,$( subdir) /$( 1) ,$( 1) ) $( PRINT_DIR) -C $( 1) $( 2)
2013-12-19 17:42:00 +04:00
QUIET_CLEAN = @printf ' CLEAN %s\n' $1 ;
QUIET_INSTALL = @printf ' INSTALL %s\n' $1 ;
2013-10-09 13:49:27 +04:00
endif
2012-04-11 20:36:14 +04:00
e n d i f