# # $Id$ # # utils Makefile #(to be included from each util/ subdirectory) # # History: # -------- # 2009-04-23 initial version derived from Makefile.modules (andrei) # # Variables that should be defined in the util Makefiles, prior to including # this makefile: # # NAME - util binary name, with no path (MUST). # # COREPATH - path to the main/core directory (OPTIONAL, default ../..) # # DEFS - local extra defines (OPTIONAL) # # LIBS - local extra libs (OPTIONAL) # # SER_LIBS - ser/sr libs that should be compiled, linked against and installed # along the binary. The format is: <path>/<shortname>, e.g. # SER_LIBS=../../lib/srdb2/srdb2 for libsrdb2 with the sources # in ../../lib/srdb2. (OPTIONAL) # UTIL_NAME=$(NAME) # default path to the core makefiles COREPATH ?=../.. ALLDEP=Makefile $(COREPATH)/Makefile.sources $(COREPATH)/Makefile.rules \ $(COREPATH)/Makefile.utils $(COREPATH)/Makefile.dirs $(COREPATH)/config.mak #override modules value, an util cannot have submodules override modules= override static_modules= override static_modules_path= # temporary def (visible only in the util makefile, not exported) DEFS += -DMOD_NAME="utils/$(UTIL_NAME)" ifneq ($(makefile_defs_included),1) $(error "the local makefile does not include Makefile.defs!") endif ifeq ($(MAKELEVEL), 0) # make called directly in the module dir! else # called by the main Makefile ALLDEP+=$(COREPATH)/Makefile endif include $(COREPATH)/Makefile.sources # if config was not loaded (makefile_defs!=1) ignore # the rest of makefile and try only to remake the config ifeq ($(makefile_defs),1) # set CFLAGS & LDFLAGS CFLAGS:=$(UTILS_CFLAGS) LDFLAGS:=$(UTILS_LDFLAGS) err_fail?=1 include $(COREPATH)/Makefile.dirs include $(COREPATH)/Makefile.targets include $(COREPATH)/Makefile.rules include $(COREPATH)/Makefile.shared # default: if not overwritten by the main Makefile, install in bin_dir util_dst=$(bin_prefix)/$(bin_dir) $(util_dst): mkdir -p $(util_dst) modules: .PHONY: install .PHONY: install-libs install: $(NAME) $(util_dst) install-libs $(INSTALL_TOUCH) $(util_dst)/$(NAME) $(INSTALL_BIN) $(NAME) $(util_dst) ifneq (,$(SER_LIBS)) install-libs: @for lib in $(dir $(SER_LIBS)); do \ $(call try_err, $(MAKE) -C "$${lib}" install-if-newer ) ;\ done; true else install-libs: endif # $(SER_LIBS) .PHONY: install-if-newer install-if-newer: $(util_dst)/$(NAME) $(util_dst)/$(NAME): $(NAME) @$(MAKE) install # README build rules ifneq (,$(wildcard doc/Makefile)) #doc/Makefile present => we can generate README README: doc/*.xml $(MAKE) -C doc $(UTIL_NAME).txt mv doc/$(UTIL_NAME).txt $@ else # do nothing README: endif #man page build rules ifneq (,$(wildcard $(UTIL_NAME).xml)) $(UTIL_NAME).7: $(UTIL_NAME).xml $(DOCBOOK) -s ../../doc/stylesheets/serdoc2man.xsl $< man: $(UTIL_NAME).7 else man: endif endif # ifeq($(makefile_defs),1) include $(COREPATH)/Makefile.cfg