# # Example of a Makefile that detects "environment change". # # I.e.: # # andreiw-lnx:~/src/ make clean # Cleaning # andreiw-lnx:~/src/ make # Resuming build with env "" # Building with "" # andreiw-lnx:~/src/ make CONFIG_EXAMPLE=1 # Cleaning due to env change (was "" now "-DCONFIG_EXAMPLE") # Cleaning # Building with "-DCONFIG_EXAMPLE" # andreiw-lnx:~/src/ make CONFIG_EXAMPLE=1 # Resuming build with env "-DCONFIG_EXAMPLE" # Building with "-DCONFIG_EXAMPLE" # andreiw-lnx:~/src # ENV_FILE=old_build_env -include $(ENV_FILE) # # Environment definition. # ifeq ($(CONFIG_EXAMPLE), 1) BUILD_FLAGS = -DCONFIG_EXAMPLE endif BUILD_ENV = "OLD_BUILD_FLAGS=$(BUILD_FLAGS)" # # Detect environment change. # ifneq ($(BUILD_FLAGS),$(OLD_BUILD_FLAGS)) PRETARGET=clean_env else PRETARGET=log_env endif all: $(PRETARGET) target target: @echo Building with \"$(BUILD_FLAGS)\" log_env: @echo Resuming build with env \"$(BUILD_FLAGS)\" log_clean_env: @echo Cleaning due to env change \(was \"$(OLD_BUILD_FLAGS)\" now \"$(BUILD_FLAGS)\"\) clean_env: log_clean_env clean @rm -f $(ENV_FILE) @echo $(BUILD_ENV) > $(ENV_FILE) clean: @echo Cleaning
Tuesday, June 3, 2014
Detecting 'make' environment variables change
While playing with 'iquik' and trying to add a mode to build a reduced-logging version that is smaller, I ran into an interesting question - how do I force a rebuild of everything with a clean?
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment