diff options
Diffstat (limited to 'tmk_core')
| -rw-r--r-- | tmk_core/common/command.c | 4 | ||||
| -rw-r--r-- | tmk_core/rules.mk | 36 | 
2 files changed, 32 insertions, 8 deletions
| diff --git a/tmk_core/common/command.c b/tmk_core/common/command.c index f79d5a257b..aab99290d2 100644 --- a/tmk_core/common/command.c +++ b/tmk_core/common/command.c @@ -181,7 +181,11 @@ static void print_version(void)      print("VID: " STR(VENDOR_ID) "(" STR(MANUFACTURER) ") "            "PID: " STR(PRODUCT_ID) "(" STR(PRODUCT) ") "            "VER: " STR(DEVICE_VER) "\n"); +#ifdef SKIP_VERSION +    print("BUILD:  (" __DATE__ ")\n"); +#else      print("BUILD: " STR(QMK_VERSION) " (" __TIME__ " " __DATE__ ")\n"); +#endif      /* build options */      print("OPTIONS:" diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index ce3cd83b3f..2e419dd667 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -28,12 +28,13 @@ VPATH :=  # Convert all SRC to OBJ  define OBJ_FROM_SRC -$(patsubst %.c,$1/%.o,$(patsubst %.cpp,$1/%.o,$(patsubst %.cc,$1/%.o,$(patsubst %.S,$1/%.o,$($1_SRC))))) +$(patsubst %.c,$1/%.o,$(patsubst %.cpp,$1/%.o,$(patsubst %.cc,$1/%.o,$(patsubst %.S,$1/%.o,$(patsubst %.clib,$1/%.a,$($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)) +NO_LTO_OBJ := $(filter %.a,$(OBJ))  MASTER_OUTPUT := $(firstword $(OUTPUTS)) @@ -81,7 +82,9 @@ CSTANDARD = -std=gnu99  #  -Wall...:     warning level  #  -Wa,...:      tell GCC to pass this to the assembler.  #    -adhlns...: create assembler listing -CFLAGS += -g$(DEBUG) +ifndef SKIP_DEBUG_INFO +  CFLAGS += -g$(DEBUG) +endif  CFLAGS += $(CDEFS)  CFLAGS += -O$(OPT)  # add color @@ -110,7 +113,9 @@ CFLAGS += $(CSTANDARD)  #  -Wall...:     warning level  #  -Wa,...:      tell GCC to pass this to the assembler.  #    -adhlns...: create assembler listing -CPPFLAGS += -g$(DEBUG) +ifndef SKIP_DEBUG_INFO +  CPPFLAGS += -g$(DEBUG) +endif  CPPFLAGS += $(CPPDEFS)  CPPFLAGS += -O$(OPT)  # to supress "warning: only initialized variables can be placed into program memory area" @@ -138,7 +143,11 @@ CPPFLAGS += -Wa,-adhlns=$(@:%.o=%.lst)  #  -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)  -ASFLAGS += -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100 +ifndef SKIP_DEBUG_INFO +  ASFLAGS += -Wa,-adhlns=$(@:%.o=%.lst),-gstabs,--listing-cont-lines=100 +else +  ASFLAGS += -Wa,-adhlns=$(@:%.o=%.lst),--listing-cont-lines=100 +endif  #---------------- Library Options ----------------  # Minimalistic printf version @@ -210,6 +219,11 @@ ALL_CFLAGS = $(MCUFLAGS) $(CFLAGS) $(EXTRAFLAGS)  ALL_CPPFLAGS = $(MCUFLAGS) -x c++ $(CPPFLAGS) $(EXTRAFLAGS)  ALL_ASFLAGS = $(MCUFLAGS) -x assembler-with-cpp $(ASFLAGS) $(EXTRAFLAGS) +define NO_LTO +$(patsubst %.a,%.o,$1): NOLTO_CFLAGS += -fno-lto +endef +$(foreach LOBJ, $(NO_LTO_OBJ), $(eval $(call NO_LTO,$(LOBJ)))) +  MOVE_DEP = mv -f $(patsubst %.o,%.td,$@) $(patsubst %.o,%.d,$@) @@ -290,8 +304,8 @@ $1_INCFLAGS := $$(patsubst %,-I%,$$($1_INC))  ifdef $1_CONFIG  $1_CONFIG_FLAGS += $$(patsubst %,-include %,$$($1_CONFIG))  endif -$1_CFLAGS = $$(ALL_CFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS) -$1_CPPFLAGS= $$(ALL_CPPFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS) +$1_CFLAGS = $$(ALL_CFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS) $$(NOLTO_CFLAGS) +$1_CPPFLAGS= $$(ALL_CPPFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS) $$(NOLTO_CFLAGS)  $1_ASFLAGS= $$(ALL_ASFLAGS) $$($1_DEFS) $$($1_INCFLAGS) $$($1_CONFIG_FLAGS)  # Compile: create object files from C source files. @@ -321,6 +335,12 @@ $1/%.o : %.S $1/asflags.txt $1/compiler.txt | $(BEGIN)  	$$(eval CMD=$$(CC) -c $$($1_ASFLAGS) $$< -o $$@)  	@$$(BUILD_CMD) +$1/%.a : $1/%.o +	@mkdir -p $$(@D) +	@$(SILENT) || printf "Archiving: $$<" | $$(AWK_CMD) +	$$(eval CMD=$$(AR) $$@ $$<) +	@$$(BUILD_CMD) +  $1/force:  $1/cflags.txt: $1/force @@ -346,7 +366,7 @@ $(MASTER_OUTPUT)/ldflags.txt: $(MASTER_OUTPUT)/force  # We have to use static rules for the .d files for some reason -DEPS = $(patsubst %.o,%.d,$(OBJ)) +DEPS = $(patsubst %.o,%.d,$(patsubst %.a,%.o,$(OBJ)))  # Keep the .d files  .PRECIOUS: $(DEPS)  # Empty rule to force recompilation if the .d file is missing @@ -391,7 +411,7 @@ $(shell mkdir -p $(BUILD_DIR) 2>/dev/null)  $(eval $(foreach OUTPUT,$(OUTPUTS),$(shell mkdir -p $(OUTPUT) 2>/dev/null)))  # Include the dependency files. --include $(patsubst %.o,%.d,$(OBJ)) +-include $(patsubst %.o,%.d,$(patsubst %.a,%.o,$(OBJ)))  # Listing of phony targets. | 
