|  |  |  | @ -25,6 +25,18 @@ vpath %.hpp $(VPATH_SRC) | 
			
		
	
		
			
				
					|  |  |  |  | vpath %.S $(VPATH_SRC) | 
			
		
	
		
			
				
					|  |  |  |  | VPATH := | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Convert all SRC to OBJ
 | 
			
		
	
		
			
				
					|  |  |  |  | define OBJ_FROM_SRC | 
			
		
	
		
			
				
					|  |  |  |  | $(patsubst %.c,$1/%.o,$(patsubst %.cpp,$1/%.o,$(patsubst %.S,$1/%.o,$($1_SRC)))) | 
			
		
	
		
			
				
					|  |  |  |  | endef | 
			
		
	
		
			
				
					|  |  |  |  | $(foreach OUTPUT,$(OUTPUTS),$(eval $(OUTPUT)_OBJ +=$(call OBJ_FROM_SRC,$(OUTPUT)))) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Define a list of all objects
 | 
			
		
	
		
			
				
					|  |  |  |  | OBJ := $(foreach OUTPUT,$(OUTPUTS),$($(OUTPUT)_OBJ)) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | MASTER_OUTPUT := $(firstword $(OUTPUTS)) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Output format. (can be srec, ihex, binary)
 | 
			
		
	
		
			
				
					|  |  |  |  | FORMAT = ihex | 
			
		
	
	
		
			
				
					|  |  |  | @ -53,17 +65,18 @@ CSTANDARD = -std=gnu99 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Place -D or -U options here for C sources
 | 
			
		
	
		
			
				
					|  |  |  |  | CDEFS += $(OPT_DEFS) | 
			
		
	
		
			
				
					|  |  |  |  | #CDEFS +=
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Place -D or -U options here for ASM sources
 | 
			
		
	
		
			
				
					|  |  |  |  | ADEFS += $(OPT_DEFS) | 
			
		
	
		
			
				
					|  |  |  |  | #ADEFS +=
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Place -D or -U options here for C++ sources
 | 
			
		
	
		
			
				
					|  |  |  |  | #CPPDEFS += -D__STDC_LIMIT_MACROS
 | 
			
		
	
		
			
				
					|  |  |  |  | #CPPDEFS += -D__STDC_CONSTANT_MACROS
 | 
			
		
	
		
			
				
					|  |  |  |  | CPPDEFS += $(OPT_DEFS) | 
			
		
	
		
			
				
					|  |  |  |  | #CPPDEFS +=
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -134,7 +147,8 @@ endif | 
			
		
	
		
			
				
					|  |  |  |  | #             files -- see avr-libc docs [FIXME: not yet described there]
 | 
			
		
	
		
			
				
					|  |  |  |  | #  -listing-cont-lines: Sets the maximum number of continuation lines of hex
 | 
			
		
	
		
			
				
					|  |  |  |  | #       dump that will be displayed for a given single line of source input.
 | 
			
		
	
		
			
				
					|  |  |  |  | ASFLAGS += $(ADEFS) -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100 | 
			
		
	
		
			
				
					|  |  |  |  | ASFLAGS += $(ADEFS)  | 
			
		
	
		
			
				
					|  |  |  |  | ASFLAGS += -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100 | 
			
		
	
		
			
				
					|  |  |  |  | ASFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) | 
			
		
	
		
			
				
					|  |  |  |  | ifdef CONFIG_H | 
			
		
	
		
			
				
					|  |  |  |  |     ASFLAGS += -include $(CONFIG_H) | 
			
		
	
	
		
			
				
					|  |  |  | @ -193,48 +207,6 @@ COPY = cp | 
			
		
	
		
			
				
					|  |  |  |  | WINSHELL = cmd | 
			
		
	
		
			
				
					|  |  |  |  | SECHO = $(SILENT) || echo | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Define Messages
 | 
			
		
	
		
			
				
					|  |  |  |  | # English
 | 
			
		
	
		
			
				
					|  |  |  |  | MSG_ERRORS_NONE = Errors: none | 
			
		
	
		
			
				
					|  |  |  |  | MSG_BEGIN = -------- begin -------- | 
			
		
	
		
			
				
					|  |  |  |  | MSG_END = --------  end  -------- | 
			
		
	
		
			
				
					|  |  |  |  | MSG_SIZE_BEFORE = Size before: | 
			
		
	
		
			
				
					|  |  |  |  | MSG_SIZE_AFTER = Size after: | 
			
		
	
		
			
				
					|  |  |  |  | MSG_COFF = Converting to AVR COFF: | 
			
		
	
		
			
				
					|  |  |  |  | MSG_EXTENDED_COFF = Converting to AVR Extended COFF: | 
			
		
	
		
			
				
					|  |  |  |  | MSG_FLASH = Creating load file for Flash: | 
			
		
	
		
			
				
					|  |  |  |  | MSG_EEPROM = Creating load file for EEPROM: | 
			
		
	
		
			
				
					|  |  |  |  | MSG_BIN = Creating binary load file for Flash: | 
			
		
	
		
			
				
					|  |  |  |  | MSG_EXTENDED_LISTING = Creating Extended Listing: | 
			
		
	
		
			
				
					|  |  |  |  | MSG_SYMBOL_TABLE = Creating Symbol Table: | 
			
		
	
		
			
				
					|  |  |  |  | MSG_LINKING = Linking: | 
			
		
	
		
			
				
					|  |  |  |  | MSG_COMPILING = Compiling: | 
			
		
	
		
			
				
					|  |  |  |  | MSG_COMPILING_CPP = Compiling: | 
			
		
	
		
			
				
					|  |  |  |  | MSG_ASSEMBLING = Assembling: | 
			
		
	
		
			
				
					|  |  |  |  | MSG_CLEANING = Cleaning project: | 
			
		
	
		
			
				
					|  |  |  |  | MSG_CREATING_LIBRARY = Creating library: | 
			
		
	
		
			
				
					|  |  |  |  | MSG_SUBMODULE_DIRTY = $(WARN_COLOR)WARNING:$(NO_COLOR)\n \
 | 
			
		
	
		
			
				
					|  |  |  |  | 	Some git sub-modules are out of date or modified, please consider runnning:$(BOLD)\n\
 | 
			
		
	
		
			
				
					|  |  |  |  | 	git submodule sync --recursive\n\
 | 
			
		
	
		
			
				
					|  |  |  |  | 	git submodule update --init --recursive$(NO_COLOR)\n\n\
 | 
			
		
	
		
			
				
					|  |  |  |  | 	You can ignore this warning if you are not compiling any ChibiOS keyboards,\n\
 | 
			
		
	
		
			
				
					|  |  |  |  | 	or if you have modified the ChibiOS libraries yourself. \n\n | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Define all object files.
 | 
			
		
	
		
			
				
					|  |  |  |  | OBJ = $(patsubst %.c,$(OBJDIR)/%.o,$(patsubst %.cpp,$(OBJDIR)/%.o,$(patsubst %.S,$(OBJDIR)/%.o,$(SRC)))) | 
			
		
	
		
			
				
					|  |  |  |  | # The files in the lib folder are shared between all keymaps, so generate that folder name by removing
 | 
			
		
	
		
			
				
					|  |  |  |  | # the keymap from the name
 | 
			
		
	
		
			
				
					|  |  |  |  | KBOBJDIR=$(subst _$(KEYMAP),,$(OBJDIR)) | 
			
		
	
		
			
				
					|  |  |  |  | # And fixup the object files to match
 | 
			
		
	
		
			
				
					|  |  |  |  | LIBOBJ = $(foreach v,$(OBJ),$(if $(findstring /lib/,$v),$v)) | 
			
		
	
		
			
				
					|  |  |  |  | NONLIBOBJ := $(filter-out $(LIBOBJ),$(OBJ)) | 
			
		
	
		
			
				
					|  |  |  |  | LIBOBJ := $(subst _$(KEYMAP)/,/,$(LIBOBJ)) | 
			
		
	
		
			
				
					|  |  |  |  | OBJ := $(LIBOBJ) $(NONLIBOBJ) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Define all listing files.
 | 
			
		
	
		
			
				
					|  |  |  |  | LST = $(patsubst %.c,$(OBJDIR)/%.lst,$(patsubst %.cpp,$(OBJDIR)/%.lst,$(patsubst %.S,$(OBJDIR)/%.lst,$(SRC)))) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Compiler flags to generate dependency files.
 | 
			
		
	
		
			
				
					|  |  |  |  | #GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -320,68 +292,66 @@ gccversion : | 
			
		
	
		
			
				
					|  |  |  |  | 	$(eval CMD=$(BIN) $< $@ || exit 0) | 
			
		
	
		
			
				
					|  |  |  |  | 	@$(BUILD_CMD) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Create library from object files.
 | 
			
		
	
		
			
				
					|  |  |  |  | .SECONDARY : $(BUILD_DIR)/$(TARGET).a | 
			
		
	
		
			
				
					|  |  |  |  | .PRECIOUS : $(OBJ) | 
			
		
	
		
			
				
					|  |  |  |  | %.a: $(OBJ) | 
			
		
	
		
			
				
					|  |  |  |  | 	@$(SILENT) || printf "$(MSG_CREATING_LIBRARY) $@" | $(AWK_CMD) | 
			
		
	
		
			
				
					|  |  |  |  | 	$(eval CMD=$(AR) $@ $(OBJ) ) | 
			
		
	
		
			
				
					|  |  |  |  | 	@$(BUILD_CMD) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | BEGIN = gccversion sizebefore | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Link: create ELF output file from object files.
 | 
			
		
	
		
			
				
					|  |  |  |  | .SECONDARY : $(BUILD_DIR)/$(TARGET).elf | 
			
		
	
		
			
				
					|  |  |  |  | .PRECIOUS : $(OBJ) | 
			
		
	
		
			
				
					|  |  |  |  | # Note the obj.txt depeendency is there to force linking if a source file is deleted
 | 
			
		
	
		
			
				
					|  |  |  |  | %.elf: $(OBJ) $(OBJDIR)/cflags.txt $(OBJDIR)/ldflags.txt $(OBJDIR)/obj.txt | $(BEGIN) | 
			
		
	
		
			
				
					|  |  |  |  | %.elf: $(OBJ) $(MASTER_OUTPUT)/cflags.txt $(MASTER_OUTPUT)/ldflags.txt $(MASTER_OUTPUT)/obj.txt | $(BEGIN) | 
			
		
	
		
			
				
					|  |  |  |  | 	@$(SILENT) || printf "$(MSG_LINKING) $@" | $(AWK_CMD) | 
			
		
	
		
			
				
					|  |  |  |  | 	$(eval CMD=$(CC) $(ALL_CFLAGS) $(filter-out %.txt,$^) --output $@ $(LDFLAGS)) | 
			
		
	
		
			
				
					|  |  |  |  | 	@$(BUILD_CMD) | 
			
		
	
		
			
				
					|  |  |  |  | 	 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | define GEN_OBJRULE | 
			
		
	
		
			
				
					|  |  |  |  | $1_CFLAGS = $$(ALL_CFLAGS) $$($1_DEFS) | 
			
		
	
		
			
				
					|  |  |  |  | $1_CPPFLAGS= $$(ALL_CPPFLAGS) $$($1_DEFS) | 
			
		
	
		
			
				
					|  |  |  |  | $1_ASFLAGS= $$(ALL_ASFLAGS) $$($1_DEFS) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Compile: create object files from C source files.
 | 
			
		
	
		
			
				
					|  |  |  |  | $1/%.o : %.c $1/%.d $1/cflags.txt $1/compiler.txt | $(BEGIN) | 
			
		
	
		
			
				
					|  |  |  |  | 	@mkdir -p $$(@D) | 
			
		
	
		
			
				
					|  |  |  |  | 	@$$(SILENT) || printf "$$(MSG_COMPILING) $$<" | $$(AWK_CMD) | 
			
		
	
		
			
				
					|  |  |  |  | 	$$(eval CMD=$$(CC) -c $$(ALL_CFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP)) | 
			
		
	
		
			
				
					|  |  |  |  | 	$$(eval CMD := $$(CC) -c $$($1_CFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP)) | 
			
		
	
		
			
				
					|  |  |  |  | 	@$$(BUILD_CMD) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Compile: create object files from C++ source files.
 | 
			
		
	
		
			
				
					|  |  |  |  | $1/%.o : %.cpp $1/%.d $1/cppflags.txt $1/compiler.txt | $(BEGIN) | 
			
		
	
		
			
				
					|  |  |  |  | 	@mkdir -p $$(@D) | 
			
		
	
		
			
				
					|  |  |  |  | 	@$$(SILENT) || printf "$$(MSG_COMPILING_CPP) $$<" | $$(AWK_CMD) | 
			
		
	
		
			
				
					|  |  |  |  | 	$$(eval CMD=$$(CC) -c $$(ALL_CPPFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP)) | 
			
		
	
		
			
				
					|  |  |  |  | 	$$(eval CMD=$$(CC) -c $$($1_CPPFLAGS) $$(GENDEPFLAGS) $$< -o $$@ && $$(MOVE_DEP)) | 
			
		
	
		
			
				
					|  |  |  |  | 	@$(BUILD_CMD) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Assemble: create object files from assembler source files.
 | 
			
		
	
		
			
				
					|  |  |  |  | $1/%.o : %.S $1/asflags.txt $1/compiler.txt | $(BEGIN) | 
			
		
	
		
			
				
					|  |  |  |  | 	@mkdir -p $$(@D) | 
			
		
	
		
			
				
					|  |  |  |  | 	@$(SILENT) || printf "$$(MSG_ASSEMBLING) $$<" | $$(AWK_CMD) | 
			
		
	
		
			
				
					|  |  |  |  | 	$$(eval CMD=$$(CC) -c $$(ALL_ASFLAGS) $$< -o $$@) | 
			
		
	
		
			
				
					|  |  |  |  | 	$$(eval CMD=$$(CC) -c $$($1_ASFLAGS) $$< -o $$@) | 
			
		
	
		
			
				
					|  |  |  |  | 	@$$(BUILD_CMD) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | $1/force: | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | $1/cflags.txt: $1/force | 
			
		
	
		
			
				
					|  |  |  |  | 	echo '$$(ALL_CFLAGS)' | cmp -s - $$@ || echo '$$(ALL_CFLAGS)' > $$@ | 
			
		
	
		
			
				
					|  |  |  |  | 	echo '$$($1_CFLAGS)' | cmp -s - $$@ || echo '$$($1_CFLAGS)' > $$@ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | $1/cppflags.txt: $1/force | 
			
		
	
		
			
				
					|  |  |  |  | 	echo '$$(ALL_CPPFLAGS)' | cmp -s - $$@ || echo '$$(ALL_CPPFLAGS)' > $$@ | 
			
		
	
		
			
				
					|  |  |  |  | 	echo '$$($1_CPPFLAGS)' | cmp -s - $$@ || echo '$$($1_CPPFLAGS)' > $$@ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | $1/asflags.txt: $1/force | 
			
		
	
		
			
				
					|  |  |  |  | 	echo '$$(ALL_ASFLAGS)' | cmp -s - $$@ || echo '$$(ALL_ASFLAGS)' > $$@ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | $1/ldflags.txt: $1/force | 
			
		
	
		
			
				
					|  |  |  |  | 	echo '$$(LDFLAGS)' | cmp -s - $$@ || echo '$$(LDFLAGS)' > $$@ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | $1/obj.txt: $1/force | 
			
		
	
		
			
				
					|  |  |  |  | 	echo '$$(OBJ)' | cmp -s - $$@ || echo '$$(OBJ)' > $$@ | 
			
		
	
		
			
				
					|  |  |  |  | 	echo '$$($1_ASFLAGS)' | cmp -s - $$@ || echo '$$($1_ASFLAGS)' > $$@ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | $1/compiler.txt: $1/force | 
			
		
	
		
			
				
					|  |  |  |  | 	$$(CC) --version | cmp -s - $$@ || $$(CC) --version > $$@ | 
			
		
	
		
			
				
					|  |  |  |  | endef | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | $(MASTER_OUTPUT)/obj.txt: $(MASTER_OUTPUT)/force | 
			
		
	
		
			
				
					|  |  |  |  | 	echo '$(OBJ)' | cmp -s - $$@ || echo '$(OBJ)' > $$@ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | $(MASTER_OUTPUT)/ldflags.txt: $(MASTER_OUTPUT)/force | 
			
		
	
		
			
				
					|  |  |  |  | 	echo '$(LDFLAGS)' | cmp -s - $$@ || echo '$(LDFLAGS)' > $$@ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # We have to use static rules for the .d files for some reason
 | 
			
		
	
		
			
				
					|  |  |  |  | DEPS = $(patsubst %.o,%.d,$(OBJ)) | 
			
		
	
		
			
				
					|  |  |  |  | # Keep the .d files
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -390,22 +360,7 @@ DEPS = $(patsubst %.o,%.d,$(OBJ)) | 
			
		
	
		
			
				
					|  |  |  |  | $(DEPS): | 
			
		
	
		
			
				
					|  |  |  |  | 	 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Since the object files could be in two different folders, generate
 | 
			
		
	
		
			
				
					|  |  |  |  | # separate rules for them, rather than having too generic rules
 | 
			
		
	
		
			
				
					|  |  |  |  | $(eval $(call GEN_OBJRULE,$(OBJDIR))) | 
			
		
	
		
			
				
					|  |  |  |  | $(eval $(call GEN_OBJRULE,$(KBOBJDIR))) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Compile: create assembler files from C source files.
 | 
			
		
	
		
			
				
					|  |  |  |  | %.s : %.c | $(BEGIN) | 
			
		
	
		
			
				
					|  |  |  |  | 	@$(SILENT) || printf "$(MSG_ASSEMBLING) $<" | $(AWK_CMD) | 
			
		
	
		
			
				
					|  |  |  |  | 	$(eval CMD=$(CC) -S $(ALL_CFLAGS) $< -o $@) | 
			
		
	
		
			
				
					|  |  |  |  | 	@$(BUILD_CMD) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Compile: create assembler files from C++ source files.
 | 
			
		
	
		
			
				
					|  |  |  |  | %.s : %.cpp | $(BEGIN) | 
			
		
	
		
			
				
					|  |  |  |  | 	@$(SILENT) || printf "$(MSG_ASSEMBLING) $<" | $(AWK_CMD) | 
			
		
	
		
			
				
					|  |  |  |  | 	$(eval CMD=$(CC) -S $(ALL_CPPFLAGS) $< -o $@) | 
			
		
	
		
			
				
					|  |  |  |  | 	@$(BUILD_CMD) | 
			
		
	
		
			
				
					|  |  |  |  | $(foreach OUTPUT,$(OUTPUTS),$(eval $(call GEN_OBJRULE,$(OUTPUT)))) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Create preprocessed source for use in sending a bug report.
 | 
			
		
	
		
			
				
					|  |  |  |  | %.i : %.c | $(BEGIN) | 
			
		
	
	
		
			
				
					|  |  |  | @ -420,13 +375,13 @@ clean: | 
			
		
	
		
			
				
					|  |  |  |  | show_path: | 
			
		
	
		
			
				
					|  |  |  |  | 	@echo VPATH=$(VPATH) | 
			
		
	
		
			
				
					|  |  |  |  | 	@echo SRC=$(SRC) | 
			
		
	
		
			
				
					|  |  |  |  | 	@echo OBJ=$(OBJ) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Create build directory
 | 
			
		
	
		
			
				
					|  |  |  |  | $(shell mkdir $(BUILD_DIR) 2>/dev/null) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Create object files directory
 | 
			
		
	
		
			
				
					|  |  |  |  | $(shell mkdir $(OBJDIR) 2>/dev/null) | 
			
		
	
		
			
				
					|  |  |  |  | $(shell mkdir $(KBOBJDIR) 2>/dev/null) | 
			
		
	
		
			
				
					|  |  |  |  | $(eval $(foreach OUTPUT,$(OUTPUTS),$(shell mkdir $(OUTPUT) 2>/dev/null))) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | # Include the dependency files.
 | 
			
		
	
		
			
				
					|  |  |  |  | -include $(patsubst %.o,%.d,$(OBJ)) | 
			
		
	
	
		
			
				
					|  |  |  | 
 |