Fix unspecified behavior in rust makefile and add release target stripping

This commit is contained in:
rexy712 2021-04-19 12:50:37 -07:00
parent 9a56b99f27
commit 5f5710ffd9

View File

@ -19,7 +19,7 @@ ifeq ($(OS),Windows_NT)
WINDOWS::=1 WINDOWS::=1
endif endif
MAIN_SOURCE_FILE::=src/hello.rs MAIN_SOURCE_FILE::=src/main.rs
DEPDIR::=dep DEPDIR::=dep
LIBDIRS::=lib LIBDIRS::=lib
LDLIBS::= LDLIBS::=
@ -31,6 +31,7 @@ RELEASE?=0
SAVEFLAGS?=1 SAVEFLAGS?=1
RUSTC::=rustc RUSTC::=rustc
STRIP::=strip
ifeq ($(WINDOWS),1) ifeq ($(WINDOWS),1)
MAIN_EXECUTABLE::=$(MAIN_EXECUTABLE).exe MAIN_EXECUTABLE::=$(MAIN_EXECUTABLE).exe
@ -41,7 +42,7 @@ endif
all:: all::
#main target #main target
all:: | flags-update $(MAIN_EXECUTABLE) all:: $(MAIN_EXECUTABLE) $(MAIN_DEP_FILE)
#postrun targets #postrun targets
all:: all::
@ -96,37 +97,43 @@ ifeq ($(SAVEFLAGS),1)
OLD_LINKFLAGS::=$(file <$(LDFLAGS_TMPFILE)) OLD_LINKFLAGS::=$(file <$(LDFLAGS_TMPFILE))
endif endif
#Compile all the rust 'crates' ifeq ($(SAVEFLAGS),1)
$(MAIN_EXECUTABLE): $(MAIN_SOURCE_FILE) $(MAIN_DEP_FILE) $(LDFLAGS_TMPFILE)
$(COMPILER) $< $(RUSTFLAGS) -o $@ $(ALL_LDFLAGS)
#create a dependency tracking file so that the project rebuilds when any dep is updated
$(MAIN_DEP_FILE): $(MAIN_SOURCE_FILE) $(DEPDIR) $(RUSTFLAGS_TMPFILE)
$(COMPILER) $< --emit dep-info $(RUSTFLAGS) -o $@
$(DEPDIR): #Check if compile flags have changed since last build
$(call mkdir,"$(DEPDIR)") ifneq ($(OLD_COMPILEFLAGS),$(RUSTFLAGS))
.PHONY: $(RUSTFLAGS_TMPFILE)
$(RUSTFLAGS_TMPFILE):
$(file >$(RUSTFLAGS_TMPFILE),$(RUSTFLAGS))
else
$(RUSTFLAGS_TMPFILE):
endif
#Check if link flags have changed since last build
ifneq ($(ALL_LDFLAGS),$(OLD_LINKFLAGS))
.PHONY: $(LDFLAGS_TMPFILE)
$(LDFLAGS_TMPFILE):
$(file >$(LDFLAGS_TMPFILE),$(ALL_LDFLAGS))
else
$(LDFLAGS_TMPFILE):
endif
endif
.PHONY: flags-update .PHONY: flags-update
flags-update: rustflags-update ldflags-update flags-update: rustflags-update ldflags-update
#Check if compile flags have changed since last build #Compile all the rust 'crates'
.PHONY: rustflags-update $(MAIN_EXECUTABLE): $(MAIN_SOURCE_FILE) $(LDFLAGS_TMPFILE) $(RUSTFLAGS_TMPFILE)
rustflags-update: $(COMPILER) $< $(RUSTFLAGS) -o $@ $(ALL_LDFLAGS)
ifeq ($(SAVEFLAGS),1) ifeq ($(RELEASE),1)
ifneq ($(OLD_COMPILEFLAGS),$(RUSTFLAGS)) $(STRIP) --strip-all "$(MAIN_EXECUTABLE)"
$(file >$(RUSTFLAGS_TMPFILE),$(RUSTFLAGS))
endif
$(RUSTFLAGS_TMPFILE): rustflags-update
endif
#Check if link flags have changed since last build
.PHONY: ldflags-update
ldflags-update:
ifeq ($(SAVEFLAGS),1)
ifneq ($(ALL_LDFLAGS),$(OLD_LINKFLAGS))
$(file >$(LDFLAGS_TMPFILE),$(ALL_LDFLAGS))
endif
$(LDFLAGS_TMPFILE): ldflags-update
endif endif
#create a dependency tracking file so that the project rebuilds when any dep is updated
$(MAIN_DEP_FILE): $(MAIN_SOURCE_FILE) $(RUSTFLAGS_TMPFILE) | $(DEPDIR)
$(COMPILER) $< --emit dep-info $(RUSTFLAGS) -o $@
$(DEPDIR):
$(call mkdir,"$(DEPDIR)")
.PHONY: clean .PHONY: clean
clean:: clean::