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
endif
MAIN_SOURCE_FILE::=src/hello.rs
MAIN_SOURCE_FILE::=src/main.rs
DEPDIR::=dep
LIBDIRS::=lib
LDLIBS::=
@ -31,6 +31,7 @@ RELEASE?=0
SAVEFLAGS?=1
RUSTC::=rustc
STRIP::=strip
ifeq ($(WINDOWS),1)
MAIN_EXECUTABLE::=$(MAIN_EXECUTABLE).exe
@ -41,7 +42,7 @@ endif
all::
#main target
all:: | flags-update $(MAIN_EXECUTABLE)
all:: $(MAIN_EXECUTABLE) $(MAIN_DEP_FILE)
#postrun targets
all::
@ -96,37 +97,43 @@ ifeq ($(SAVEFLAGS),1)
OLD_LINKFLAGS::=$(file <$(LDFLAGS_TMPFILE))
endif
#Compile all the rust 'crates'
$(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 $@
ifeq ($(SAVEFLAGS),1)
$(DEPDIR):
$(call mkdir,"$(DEPDIR)")
#Check if compile flags have changed since last build
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
flags-update: rustflags-update ldflags-update
#Check if compile flags have changed since last build
.PHONY: rustflags-update
rustflags-update:
ifeq ($(SAVEFLAGS),1)
ifneq ($(OLD_COMPILEFLAGS),$(RUSTFLAGS))
$(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
#Compile all the rust 'crates'
$(MAIN_EXECUTABLE): $(MAIN_SOURCE_FILE) $(LDFLAGS_TMPFILE) $(RUSTFLAGS_TMPFILE)
$(COMPILER) $< $(RUSTFLAGS) -o $@ $(ALL_LDFLAGS)
ifeq ($(RELEASE),1)
$(STRIP) --strip-all "$(MAIN_EXECUTABLE)"
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
clean::