Makefile.utils
c6f75a7e
 #
 # $Id$
 #
 # utils Makefile
 #(to be included from each util/ subdirectory)
 #
 # History:
 # --------
 #  2009-04-23  initial version derived from Makefile.modules (andrei)
 
6f7433d3
 #
 # 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)
 #
 
911f3742
 UTIL_NAME=$(NAME)
c6f75a7e
 
 # 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=
 
911f3742
 # temporary def (visible only in the util makefile, not exported)
89d40068
 DEFS += -DMOD_NAME="utils/$(UTIL_NAME)"
911f3742
 
c6f75a7e
 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)
 
89d40068
 # set CFLAGS & LDFLAGS
 CFLAGS:=$(UTILS_CFLAGS)
 LDFLAGS:=$(UTILS_LDFLAGS)
 
911f3742
 err_fail?=1
c6f75a7e
 
 include $(COREPATH)/Makefile.dirs
 include $(COREPATH)/Makefile.targets
 include $(COREPATH)/Makefile.rules
911f3742
 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)
c6f75a7e
 
 modules:
 
911f3742
 .PHONY: install
 .PHONY: install-libs
 install: $(NAME) $(util_dst) install-libs
 	$(INSTALL_TOUCH) $(util_dst)/$(NAME)
 	$(INSTALL_BIN)  $(NAME)  $(util_dst)
 
6f7433d3
 ifneq (,$(SER_LIBS))
911f3742
 install-libs:
 	@for lib in $(dir $(SER_LIBS)); do \
 		$(call try_err, $(MAKE) -C "$${lib}" install-if-newer ) ;\
6f7433d3
 	done; true
 
 else
 install-libs:
 
 endif # $(SER_LIBS)
911f3742
 
 .PHONY: install-if-newer
 install-if-newer: $(util_dst)/$(NAME)
 
 $(util_dst)/$(NAME): $(NAME)
 	@$(MAKE) install
 
c6f75a7e
 # README build rules
 ifneq (,$(wildcard doc/Makefile))
 #doc/Makefile present => we can generate README
 
 README: doc/*.xml
911f3742
 	$(MAKE) -C doc $(UTIL_NAME).txt
 	mv doc/$(UTIL_NAME).txt $@
c6f75a7e
 
 else
 # do nothing
 
 README:
 endif
 
 #man page build rules
911f3742
 ifneq (,$(wildcard $(UTIL_NAME).xml))
c6f75a7e
 
911f3742
 $(UTIL_NAME).7: $(UTIL_NAME).xml
c6f75a7e
 	docbook2x-man -s ../../doc/stylesheets/serdoc2man.xsl $<
 
911f3742
 man: $(UTIL_NAME).7
c6f75a7e
 
 else
 
 man:
 
 endif
 
 endif # ifeq($(makefile_defs),1)
 
 include $(COREPATH)/Makefile.cfg