# # 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
Showing posts with label build. Show all posts
Showing posts with label build. Show all posts
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:
Posts (Atom)