Home | History | Annotate | Download | only in scripts
      1 ifneq ($(O),)
      2 ifeq ($(origin O), command line)
      3 	dummy := $(if $(shell test -d $(O) || echo $(O)),$(error O=$(O) does not exist),)
      4 	ABSOLUTE_O := $(shell cd $(O) ; pwd)
      5 	OUTPUT := $(ABSOLUTE_O)/$(if $(subdir),$(subdir)/)
      6 	COMMAND_O := O=$(ABSOLUTE_O)
      7 ifeq ($(objtree),)
      8 	objtree := $(O)
      9 endif
     10 endif
     11 endif
     12 
     13 # check that the output directory actually exists
     14 ifneq ($(OUTPUT),)
     15 OUTDIR := $(shell cd $(OUTPUT) && /bin/pwd)
     16 $(if $(OUTDIR),, $(error output directory "$(OUTPUT)" does not exist))
     17 endif
     18 
     19 #
     20 # Include saner warnings here, which can catch bugs:
     21 #
     22 EXTRA_WARNINGS := -Wbad-function-cast
     23 EXTRA_WARNINGS += -Wdeclaration-after-statement
     24 EXTRA_WARNINGS += -Wformat-security
     25 EXTRA_WARNINGS += -Wformat-y2k
     26 EXTRA_WARNINGS += -Winit-self
     27 EXTRA_WARNINGS += -Wmissing-declarations
     28 EXTRA_WARNINGS += -Wmissing-prototypes
     29 EXTRA_WARNINGS += -Wnested-externs
     30 EXTRA_WARNINGS += -Wno-system-headers
     31 EXTRA_WARNINGS += -Wold-style-definition
     32 EXTRA_WARNINGS += -Wpacked
     33 EXTRA_WARNINGS += -Wredundant-decls
     34 EXTRA_WARNINGS += -Wshadow
     35 EXTRA_WARNINGS += -Wstrict-aliasing=3
     36 EXTRA_WARNINGS += -Wstrict-prototypes
     37 EXTRA_WARNINGS += -Wswitch-default
     38 EXTRA_WARNINGS += -Wswitch-enum
     39 EXTRA_WARNINGS += -Wundef
     40 EXTRA_WARNINGS += -Wwrite-strings
     41 EXTRA_WARNINGS += -Wformat
     42 
     43 ifneq ($(findstring $(MAKEFLAGS), w),w)
     44 PRINT_DIR = --no-print-directory
     45 else
     46 NO_SUBDIR = :
     47 endif
     48 
     49 #
     50 # Define a callable command for descending to a new directory
     51 #
     52 # Call by doing: $(call descend,directory[,target])
     53 #
     54 descend = \
     55 	+mkdir -p $(OUTPUT)$(1) && \
     56 	$(MAKE) $(COMMAND_O) subdir=$(if $(subdir),$(subdir)/$(1),$(1)) $(PRINT_DIR) -C $(1) $(2)
     57 
     58 QUIET_SUBDIR0  = +$(MAKE) $(COMMAND_O) -C # space to separate -C and subdir
     59 QUIET_SUBDIR1  =
     60 
     61 ifneq ($(findstring $(MAKEFLAGS),s),s)
     62 ifneq ($(V),1)
     63 	QUIET_CC       = @echo '   ' CC $@;
     64 	QUIET_AR       = @echo '   ' AR $@;
     65 	QUIET_LINK     = @echo '   ' LINK $@;
     66 	QUIET_MKDIR    = @echo '   ' MKDIR $@;
     67 	QUIET_GEN      = @echo '   ' GEN $@;
     68 	QUIET_SUBDIR0  = +@subdir=
     69 	QUIET_SUBDIR1  = ;$(NO_SUBDIR) echo '   ' SUBDIR $$subdir; \
     70 			 $(MAKE) $(PRINT_DIR) -C $$subdir
     71 	QUIET_FLEX     = @echo '   ' FLEX $@;
     72 	QUIET_BISON    = @echo '   ' BISON $@;
     73 
     74 	descend = \
     75 		+@echo '   ' DESCEND $(1); \
     76 		mkdir -p $(OUTPUT)$(1) && \
     77 		$(MAKE) $(COMMAND_O) subdir=$(if $(subdir),$(subdir)/$(1),$(1)) $(PRINT_DIR) -C $(1) $(2)
     78 endif
     79 endif
     80