From da9efb53fc48c34d917f28f97a01c1f238eaf01f Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Fri, 5 Jul 2013 09:21:59 +0200 Subject: Makefile, INSTALL: Simplify clean/uninstall Makefile targets Streamline the Makfile targets by separating the clean targets (which only affect the build tree) from the uninstall targets (affecting files installed in the system). Do this by renaming the 'distclean' target to 'uninstall' and removing unnecessary aliases. The 'distclean' target serves now as a way to remove build files and Config. The 'mrproper' will bring the source into a pristine state as checked out from git. Summary of the new/changed targets: clean: remove all build related files (but not Config) distclean: 'make clean' + remove Config mrproper: remove all files not in git repository uninstall: remove all files installed by us from the system, but not affecting the build environment. %_uninstall: tool specific uninstall The following targets were removed: mostlyclean, realclean and clobber. Also the target names in the INSTALL file are adjusted. Signed-off-by: Tobias Klauser --- INSTALL | 22 +++++++++++++++------- Makefile | 43 +++++++++++++++++++++++-------------------- 2 files changed, 38 insertions(+), 27 deletions(-) diff --git a/INSTALL b/INSTALL index 4df7d1a..1d1d70f 100644 --- a/INSTALL +++ b/INSTALL @@ -61,17 +61,25 @@ The installation (deinstallation) process is fairly simple: $ make # make install - (# make distclean) - ($ make clean) - (or for both at once: # make mrproper) + (# make uninstall) -You can also build only a particular tool, e.g.: +In order to remove all build files from the source tree: + + $ make clean + +To bring the source tree into a pristine state, there are two options. +The first one will remove all build and build config file, the latter +will also remove any manually added files: + + $ make distclean + ($ make mrproper) + +You can also build/install/uninstall only a particular tool, e.g.: $ make trafgen # make trafgen_install - (# make trafgen_distclean) - ($ make trafgen_clean) + (# make trafgen_uninstall) If you want to build all tools, but {curvetun,mausezahn} (i.e. because you don't need the tunneling software and the NaCl build process lasts quite long): @@ -79,7 +87,7 @@ don't need the tunneling software and the NaCl build process lasts quite long): $ make allbutcurvetun (allbutmausezahn) # make install_allbutcurvetun (install_allbutmausezahn) - (# make mrproper) + (# make uninstall) In order to build curvetun, libnacl must be built first. A helper script called nacl_build.sh is there to facilitate this process. If you want to diff --git a/Makefile b/Makefile index 930c684..dc39aa4 100644 --- a/Makefile +++ b/Makefile @@ -190,7 +190,7 @@ clean_showinfo: $(YAAC) -p $(shell perl -wlne 'print $$1 if /yaac-func-prefix:\s([a-z]+)/' $<) \ -o $(BUILD_DIR)/$(shell basename $< .y).tab.c $(YAAC_FLAGS) -d $< -.PHONY: all toolkit $(TOOLS) clean %_prehook %_distclean %_clean %_install tag tags cscope +.PHONY: all toolkit $(TOOLS) clean %_prehook %_clean %_install %_uninstall tag tags cscope .FORCE: .DEFAULT_GOAL := all .DEFAULT: @@ -203,16 +203,18 @@ all: build_showinfo toolkit allbutcurvetun: $(filter-out curvetun,$(TOOLS)) allbutmausezahn: $(filter-out mausezahn,$(TOOLS)) toolkit: $(TOOLS) +clean: $(foreach tool,$(TOOLS),$(tool)_clean) +distclean: clean + $(Q)$(call RM,Config) +mrproper: distclean + $(Q)$(GIT_REM) + install: install_all install_all: $(foreach tool,$(TOOLS),$(tool)_install) install_allbutcurvetun: $(foreach tool,$(filter-out curvetun,$(TOOLS)),$(tool)_install) install_allbutmausezahn: $(foreach tool,$(filter-out mausezahn,$(TOOLS)),$(tool)_install) -clean mostlyclean: $(foreach tool,$(TOOLS),$(tool)_clean) - $(Q)$(call RM,Config) -realclean distclean clobber: $(foreach tool,$(TOOLS),$(tool)_distclean) +uninstall: $(foreach tool,$(TOOLS),$(tool)_uninstall) $(Q)$(call RMDIR,$(ETCDIRE)) -mrproper: clean distclean - $(Q)$(GIT_REM) define TOOL_templ include $(1)/Makefile @@ -226,7 +228,7 @@ define TOOL_templ $(Q)$$(call INSTX,$(1)/$(1),$$(SBINDIR)) $(Q)$(GZIP) $(1).8 > $(1)/$(1).8.gz $(Q)$$(call INSTX,$(1)/$(1).8.gz,$$(MAN8DIR)) - $(1)_distclean: $(1)_distclean_custom + $(1)_uninstall: $(1)_uninstall_custom $(Q)$$(call RM,$$(SBINDIR)/$(1)) $(Q)$$(call RM,$$(MAN8DIR)/$(1).8.gz) $(1)/%.yy.o: $(1)/%.yy.c @@ -255,15 +257,6 @@ bpfc_clean_custom: $(Q)$(call RM,$(BUILD_DIR)/*.h $(BUILD_DIR)/*.c) trafgen_clean_custom: $(Q)$(call RM,$(BUILD_DIR)/*.h $(BUILD_DIR)/*.c) -netsniff-ng_distclean_custom flowtop_distclean_custom: - $(Q)$(foreach file,$(NCONF_FILES),$(call RM,$(ETCDIRE)/$(file));) - $(Q)$(call RMDIR,$(ETCDIRE)) -trafgen_distclean_custom: - $(Q)$(call RM,$(ETCDIRE)/stddef.h) - $(Q)$(call RMDIR,$(ETCDIRE)) -astraceroute_distclean_custom: - $(Q)$(call RM,$(ETCDIRE)/geoip.conf) - $(Q)$(call RMDIR,$(ETCDIRE)) netsniff-ng_install_custom flowtop_install_custom: $(Q)$(foreach file,$(NCONF_FILES),$(call INST,$(file),$(ETCDIRE));) @@ -272,6 +265,15 @@ trafgen_install_custom: $(Q)ln -fs $(ETCDIRE)/trafgen_stddef.h $(ETCDIRE)/stddef.h astraceroute_install_custom: $(Q)$(call INST,geoip.conf,$(ETCDIRE)) +netsniff-ng_uninstall_custom flowtop_uninstall_custom: + $(Q)$(foreach file,$(NCONF_FILES),$(call RM,$(ETCDIRE)/$(file));) + $(Q)$(call RMDIR,$(ETCDIRE)) +trafgen_uninstall_custom: + $(Q)$(call RM,$(ETCDIRE)/stddef.h) + $(Q)$(call RMDIR,$(ETCDIRE)) +astraceroute_uninstall_custom: + $(Q)$(call RM,$(ETCDIRE)/geoip.conf) + $(Q)$(call RMDIR,$(ETCDIRE)) $(TOOLS): $(LD) $(ALL_LDFLAGS) -o $@/$@ $@/*.o $($@-libs) @@ -330,15 +332,16 @@ help: $(Q)echo " allbutmausezahn - Build all except mausezahn" $(Q)echo " - Build only one of the tools" $(Q)echo "$(bold)Targets for cleaning the toolkit's build files:$(normal)" - $(Q)echo " clean|mostlyclean - Remove all build files" + $(Q)echo " clean - Remove all build files" $(Q)echo " _clean - Remove only one of the tool's files" + $(Q)echo " distclean - Remove all build and build config files" + $(Q)echo " mrproper - Remove all files not in source distribution" $(Q)echo "$(bold)Targets for installing the toolkit:$(normal)" $(Q)echo " install - Install the whole toolkit" $(Q)echo " _install - Install only one of the tools" $(Q)echo "$(bold)Targets for removing the toolkit:$(normal)" - $(Q)echo " realclean|distclean|clobber - Remove the whole toolkit from the system" - $(Q)echo " _distclean - Remove only one of the tools" - $(Q)echo " mrproper - Remove build and install files" + $(Q)echo " uninstall - Remove the whole toolkit from the system" + $(Q)echo " _uninstall - Remove only one of the tools" $(Q)echo "$(bold)Hacking/development targets:$(normal)" $(Q)echo " tag - Generate Git tag of current version" $(Q)echo " tarball - Generate tarball of latest version" -- cgit v1.2.3-54-g00ecf