From c80ca4f3e8c3bac94e35a2e286a90c0eabd3d6f8 Mon Sep 17 00:00:00 2001 From: Daniel De Graaf Date: Wed, 19 May 2010 10:15:22 -0500 Subject: [PATCH] Add print-vars to show the overridable settings in the Makefile --- make/template/main.mk | 129 ++++++++++++++++++++++++++---------------- 1 file changed, 80 insertions(+), 49 deletions(-) diff --git a/make/template/main.mk b/make/template/main.mk index bccb605f9..35cb5ec90 100644 --- a/make/template/main.mk +++ b/make/template/main.mk @@ -15,21 +15,21 @@ SYSTEM = @SYSTEM@ BUILDPATH = @BUILD_DIR@ SOCKETENGINE = @SOCKETENGINE@ PURE_STATIC = @PURE_STATIC@ -CXXFLAGS = -pipe -fPIC -DPIC +CXXFLAGS = -pipe -fPIC -DPIC -Iinclude LDLIBS = -pthread -lstdc++ LDFLAGS = -SHARED = -shared -rdynamic CORELDFLAGS = -rdynamic -L. $(LDFLAGS) PICLDFLAGS = -fPIC -shared -rdynamic $(LDFLAGS) -BASE = "@BASE_DIR@" -CONPATH = "@CONFIG_DIR@" -MODPATH = "@MODULE_DIR@" -BINPATH = "@BINARY_DIR@" +BASE = @BASE_DIR@ +CONPATH = @CONFIG_DIR@ +MODPATH = @MODULE_DIR@ +BINPATH = @BINARY_DIR@ INSTUID = @UID@ INSTMODE_DIR = 0755 INSTMODE_BIN = 0755 INSTMODE_LIB = 0644 + @IFEQ $(CC) icc CXXFLAGS += -Wshadow @ELSE @@ -46,7 +46,6 @@ INSTMODE_LIB = 0644 @ELSIFEQ $(SYSTEM) darwin CXXFLAGS += -DDARWIN -frtti LDLIBS += -ldl - SHARED = -bundle -twolevel_namespace -undefined dynamic_lookup CORELDFLAGS = -dynamic -bind_at_load -L. @ELSIFEQ $(SYSTEM) interix CXXFLAGS += -D_ALL_SOURCE -I/usr/local/include @@ -68,12 +67,25 @@ INSTMODE_LIB = 0644 @ELSE HEADER = unknown-debug-level @ENDIF + +# Default target +TARGET = all FOOTER = finishmessage -CXXFLAGS += -Iinclude +@IFDEF M + HEADER = mod-header + FOOTER = mod-footer + @BSD_ONLY TARGET = modules/${M:S/.so$//}.so + @GNU_ONLY TARGET = modules/$(M:.so=).so +@ENDIF + +@IFDEF T + HEADER = + FOOTER = target + TARGET = $(T) +@ENDIF @GNU_ONLY MAKEFLAGS += --no-print-directory - @GNU_ONLY SOURCEPATH = $(shell /bin/pwd) @BSD_ONLY SOURCEPATH != /bin/pwd @@ -81,11 +93,13 @@ CXXFLAGS += -Iinclude RUNCC = $(CC) RUNLD = $(CC) VERBOSE = -v + HEADER += print-vars @ELSE @GNU_ONLY MAKEFLAGS += --silent @BSD_ONLY MAKE += -s RUNCC = perl $(SOURCEPATH)/make/run-cc.pl $(CC) RUNLD = perl $(SOURCEPATH)/make/run-cc.pl $(CC) + VERBOSE = @ENDIF @IFEQ $(PURE_STATIC) 0 @@ -99,25 +113,9 @@ CXXFLAGS += -Iinclude @DO_EXPORT RUNCC RUNLD CXXFLAGS LDLIBS PICLDFLAGS VERBOSE SOCKETENGINE CORELDFLAGS @DO_EXPORT SOURCEPATH BUILDPATH PURE_STATIC SPLIT_CC -# Default target -TARGET = all - -@IFDEF M - HEADER = mod-header - FOOTER = mod-footer - @BSD_ONLY TARGET = modules/${M:S/.so$//}.so - @GNU_ONLY TARGET = modules/$(M:.so=).so -@ENDIF - -@IFDEF T - HEADER = - FOOTER = target - TARGET = $(T) -@ENDIF - all: $(FOOTER) -target: $(HEADER) +target: $(HEADER) $(VERBOSE_HEADER) $(MAKEENV) perl make/calcdep.pl cd $(BUILDPATH); $(MAKEENV) $(MAKE) -f real.mk $(TARGET) @@ -139,15 +137,19 @@ debug-header: @echo "*************************************" mod-header: -@IFDEF PURE_STATIC +@IFEQ $(PURE_STATIC) 1 @echo 'Cannot build single modules in pure-static build' @exit 1 @ENDIF @echo 'Building single module:' mod-footer: target - @echo 'To install, copy $(BUILDPATH)/$(TARGET) to $(MODPATH)' - @echo 'Or, run "make install"' + @if [ '$(BUILDPATH)'/modules/ -ef '$(MODPATH)' ]; then \ + echo 'Build successful; load or reload the module to use'; \ + else \ + echo 'To install, copy $(BUILDPATH)/$(TARGET) to $(MODPATH)'; \ + echo 'Or, run "make install"'; \ + fi std-header: @echo "*************************************" @@ -179,30 +181,30 @@ install: target echo ""; \ exit 1; \ fi - @-install -d -o $(INSTUID) -m $(INSTMODE_DIR) $(BASE) - @-install -d -o $(INSTUID) -m $(INSTMODE_DIR) $(BASE)/data - @-install -d -o $(INSTUID) -m $(INSTMODE_DIR) $(BASE)/logs - @-install -d -m $(INSTMODE_DIR) $(BINPATH) - @-install -d -m $(INSTMODE_DIR) $(CONPATH) - @-install -d -m $(INSTMODE_DIR) $(MODPATH) - [ $(BUILDPATH)/bin/ -ef $(BINPATH) ] || install -m $(INSTMODE_BIN) $(BUILDPATH)/bin/inspircd $(BINPATH) + @-install -d -o $(INSTUID) -m $(INSTMODE_DIR) '$(BASE)' + @-install -d -o $(INSTUID) -m $(INSTMODE_DIR) '$(BASE)'/data + @-install -d -o $(INSTUID) -m $(INSTMODE_DIR) '$(BASE)'/logs + @-install -d -m $(INSTMODE_DIR) '$(BINPATH)' + @-install -d -m $(INSTMODE_DIR) '$(CONPATH)' + @-install -d -m $(INSTMODE_DIR) '$(MODPATH)' + [ '$(BUILDPATH)'/bin/ -ef '$(BINPATH)' ] || install -m $(INSTMODE_BIN) '$(BUILDPATH)'/bin/inspircd '$(BINPATH)' @IFEQ PURE_STATIC 0 - [ $(BUILDPATH)/modules/ -ef $(MODPATH) ] || install -m $(INSTMODE_LIB) $(BUILDPATH)/modules/*.so $(MODPATH) + [ '$(BUILDPATH)'/modules/ -ef '$(MODPATH)' ] || install -m $(INSTMODE_LIB) '$(BUILDPATH)'/modules/*.so '$(MODPATH)' @ENDIF - -install -m $(INSTMODE_BIN) @STARTSCRIPT@ $(BASE) 2>/dev/null - -install -m $(INSTMODE_LIB) tools/gdbargs $(BASE)/.gdbargs 2>/dev/null - -install -m $(INSTMODE_LIB) docs/*.example $(CONPATH) + -install -m $(INSTMODE_BIN) @STARTSCRIPT@ '$(BASE)' 2>/dev/null + -install -m $(INSTMODE_LIB) tools/gdbargs '$(BASE)'/.gdbargs 2>/dev/null + -install -m $(INSTMODE_LIB) docs/*.example '$(CONPATH)' @echo "" @echo "*************************************" @echo "* INSTALL COMPLETE! *" @echo "*************************************" @echo 'Paths:' - @echo ' Base install:' $(BASE) - @echo ' Configuration:' $(CONPATH) - @echo ' Binaries:' $(BINPATH) - @echo ' Modules:' $(MODPATH) - @echo 'To start the ircd, run:' $(BASE)/inspircd start - @echo 'Remember to edit your config file:' $(CONPATH)/inspircd.conf + @echo ' Base install: $(BASE)' + @echo ' Configuration: $(CONPATH)' + @echo ' Binaries: $(BINPATH)' + @echo ' Modules: $(MODPATH)' + @echo 'To start the ircd, run: $(BASE)/inspircd start' + @echo 'Remember to edit your config file: $(CONPATH)/inspircd.conf' @GNU_ONLY RCS_FILES = $(wildcard .git/index src/version.sh) @BSD_ONLY RCS_FILES = src/version.sh @@ -221,8 +223,7 @@ clean: deinstall: -rm $(BINPATH)/inspircd -rm $(MODPATH)/*.so - -squeakyclean: distclean + @echo Configuration files and logs in ${BASE} were not removed configureclean: rm -f .config.cache @@ -237,6 +238,35 @@ configureclean: distclean: clean configureclean +print-vars: + @echo 'Global settings:' + @echo ' SYSTEM = ${SYSTEM}' + @echo ' SOCKETENGINE = ${SOCKETENGINE}' + @echo ' PURE_STATIC = ${PURE_STATIC}' + @echo ' SPLIT_CC = ${SPLIT_CC}' + @echo ' TARGET = ${TARGET}' + @echo ' HEADER = ${HEADER}' + @echo ' FOOTER = ${FOOTER}' + @echo 'Compilation settings:' + @echo ' CC = ${CC}' + @echo ' RUNCC = ${RUNCC}' + @echo ' RUNLD = ${RUNLD}' + @echo ' CXXFLAGS = ${CXXFLAGS}' + @echo ' LDFLAGS = ${LDFLAGS}' + @echo ' LDLIBS = ${LDLIBS}' + @echo ' PICLDFLAGS = ${PICLDFLAGS}' + @echo ' CORELDFLAGS = ${CORELDFLAGS}' + @echo 'Paths:' + @echo ' SOURCEPATH = ${SOURCEPATH}' + @echo ' BUILDPATH = ${BUILDPATH}' + @echo ' BASE = ${BASE}' + @echo ' CONPATH = ${CONPATH}' + @echo ' MODPATH = ${MODPATH}' + @echo ' BINPATH = ${BINPATH}' + @echo 'Install:' + @echo ' INSTUID = ${INSTUID}' + @echo ' INSTMODE DIR/BIN/LIB = ${INSTMODE_DIR}/${INSTMODE_BIN}/${INSTMODE_LIB}' + help: @echo 'InspIRCd Makefile' @echo '' @@ -246,6 +276,7 @@ help: @echo ' V=1 Show the full command being executed instead of "BUILD: dns.cpp"' @echo ' D=1 Enable debug build, for module development or crash tracing' @echo ' -j Run a parallel build using N jobs' + @echo ' VAR=VALUE Override a Makefile setting; see "make print-vars" for values' @echo '' @echo 'User targets:' @echo ' all Complete build of InspIRCd, without installing' @@ -264,4 +295,4 @@ help: @echo ' deinstall Removes the files created by "make install"' @echo -.PHONY: all target debug debug-header mod-header mod-footer std-header finishmessage install clean deinstall squeakyclean configureclean help +.PHONY: all target debug debug-header mod-header mod-footer std-header finishmessage install clean deinstall configureclean print-vars help