# -*-mode: Makefile;-*- ;; Have EMACS always use makefile-mode for this file. # # makefile.root: recursive descend # # Don't change anything below this line! ############################################################################### # Do not assign anything to this variables _DOT_DOT= ifeq "${_CURR_DIR}" "" _CURR_DIR=. else _CURR_DIR+= endif # Include more stuff PROJECT_NAME:= $(notdir $(shell pwd)) include makeVar _DIRECTORY_LIST:=$(filter-out ${SKIP_DIRECTORIES},$(subst /makefile,,$(wildcard */makefile))) _DIRECTORY_ORDER:=$(filter ${_DIRECTORY_LIST},${DIR_PRIORITY}) \ $(filter-out ${DIR_PRIORITY} ${DIR_LOWPRIORITY},${_DIRECTORY_LIST}) \ $(filter ${_DIRECTORY_LIST},${DIR_LOWPRIORITY}) ifneq "$(firstword ${DEBUG_ON})" "TRUE" _DBG_INDICATOR:=(optimized) DEBUG_FLAGS:=${NODEBUG} else _DBG_INDICATOR:=(debug) DEBUG_FLAGS:=${DEBUG} endif export _DBG_INDICATOR export DEBUG_FLAGS CFG_FILE=${SRC_ROOT}/config #----------------------------------------------- # Specify PHONY targets here #----------------------------------------------- .PHONY : install installdoc installlink installall cleaninstall #----------------------------------------------- # Rule: all & cleanall & clean & printtype #----------------------------------------------- all: ${ALL_EXEC_LIST} $(CFG_FILE): $(error 'config' not found -> call configure at top level first) cleanall: $(CFG_FILE) $(ALL_EXEC_LIST:%=clean%) ${PRE_CMD}${CMD_FINAL} clean: $(_DIRECTORY_ORDER:%=clean_%) ${PRE_CMD}${CMD_FINAL} clean_%: ${PRE_CMD}${CMD_MAKE} ${EXTRAMAKEFLAGS} clean -C $(subst clean_,,$@)\ "_CURR_DIR=$(subst clean_,${strip ${_CURR_DIR}}/,$@)" MAKEFLAGS= ${PRE_CMD}${CMD_RM} *~ *.bak printtype: ${PRE_CMD}${CMD_ECHO} "Type: RecursiveDescend" #----------------------------------------------- # Rule: doc & cleandoc #----------------------------------------------- doc: $(_DIRECTORY_ORDER:%=doc_%) doc_%: ${PRE_CMD}${CMD_MAKE} ${EXTRAMAKEFLAGS} doc -C $(subst doc_,,$@)\ "_CURR_DIR=$(subst doc_,${strip ${_CURR_DIR}}/,$@)" MAKEFLAGS= cleandoc: $(_DIRECTORY_ORDER:%=cleandoc_%) cleandoc_%: ${PRE_CMD}${CMD_MAKE} ${EXTRAMAKEFLAGS} cleandoc -C $(subst cleandoc_,,$@)\ "_CURR_DIR=$(subst cleandoc_,${strip ${_CURR_DIR}}/,$@)" MAKEFLAGS= ${PRE_CMD}${CMD_RM} *~ *.bak #----------------------------------------------- # Rule: obj & cleanobj #----------------------------------------------- obj: $(CFG_FILE) $(_DIRECTORY_ORDER:%=obj_%) obj_%: $(CFG_FILE) ${PRE_CMD}${CMD_MAKE} ${EXTRAMAKEFLAGS} obj -C $(subst obj_,,$@)\ "_CURR_DIR=$(subst obj_,${strip ${_CURR_DIR}}/,$@)" MAKEFLAGS= cleanobj: $(_DIRECTORY_ORDER:%=cleanobj_%) cleanobj_%: ${PRE_CMD}${CMD_MAKE} ${EXTRAMAKEFLAGS} cleanobj -C $(subst cleanobj_,,$@)\ "_CURR_DIR=$(subst cleanobj_,${strip ${_CURR_DIR}}/,$@)" ${PRE_CMD}${CMD_RM} *~ *.bak #----------------------------------------------- # Rule: lib & cleanlib #----------------------------------------------- lib: $(CFG_FILE) $(_DIRECTORY_ORDER:%=lib_%) lib_%: $(CFG_FILE) ${PRE_CMD}${CMD_MAKE} ${EXTRAMAKEFLAGS} lib -C $(subst lib_,,$@)\ "_CURR_DIR=$(subst lib_,${strip ${_CURR_DIR}}/,$@)" MAKEFLAGS= cleanlib: $(_DIRECTORY_ORDER:%=cleanlib_%) cleanlib_%: ${PRE_CMD}${CMD_MAKE} ${EXTRAMAKEFLAGS} cleanlib -C $(subst cleanlib_,,$@)\ "_CURR_DIR=$(subst cleanlib_,${strip ${_CURR_DIR}}/,$@)" MAKEFLAGS= ${PRE_CMD}${CMD_RM} *~ *.bak #----------------------------------------------- # Rule: exe & cleanexe #----------------------------------------------- exe: $(CFG_FILE) $(_DIRECTORY_ORDER:%=exe_%) exe_%: $(CFG_FILE) ${PRE_CMD}${CMD_MAKE} ${EXTRAMAKEFLAGS} exe -C $(subst exe_,,$@)\ "_CURR_DIR=$(subst exe_,${strip ${_CURR_DIR}}/,$@)" MAKEFLAGS= cleanexe: $(_DIRECTORY_ORDER:%=cleanexe_%) cleanexe_%: ${PRE_CMD}${CMD_MAKE} ${EXTRAMAKEFLAGS} cleanexe -C $(subst cleanexe_,,$@)\ "_CURR_DIR=$(subst cleanexe_,${strip ${_CURR_DIR}}/,$@)" MAKEFLAGS= ${PRE_CMD}${CMD_RM} *~ *.bak #----------------------------------------------- # Rule: install & cleaninstall #----------------------------------------------- install: $(CFG_FILE) ${PRE_CMD}${CMD_ECHO} "**** Installing Project: ${PROJECT_ROOT_NAME} ****" ${PRE_CMD}perl ./install/Install ${PROJECT_ROOT_NAME} 1 ${CONFIG_LIST} installdoc: $(CFG_FILE) ${PRE_CMD}${CMD_ECHO} "**** Installing Project documentation for: ${PROJECT_ROOT_NAME} ****" ${PRE_CMD}perl ./install/Install ${PROJECT_ROOT_NAME} 2 ${CONFIG_LIST} installlink: $(CFG_FILE) ${PRE_CMD}${CMD_ECHO} "**** Installing Project: ${PROJECT_ROOT_NAME} ****" ${PRE_CMD}perl ./install/Install ${PROJECT_ROOT_NAME} 3 ${CONFIG_LIST} installall: $(CFG_FILE) ${PRE_CMD}${CMD_ECHO} "**** Installing Project documentation for: ${PROJECT_ROOT_NAME} ****" ${PRE_CMD}perl ./install/Install ${PROJECT_ROOT_NAME} 0 ${CONFIG_LIST} cleaninstall: $(CFG_FILE) ${PRE_CMD}${CMD_ECHO} "**** Uninstalling ${PROJECT_ROOT_NAME} from ${ICL_INSTALL_ROOT} ****" ${PRE_CMD}perl ./install/Uninstall ${PROJECT_ROOT_NAME} ${ICL_INSTALL_ROOT} #----------------------------------------------- # Rule: depend #----------------------------------------------- depend: $(CFG_FILE) $(_DIRECTORY_ORDER:%=depend_%) depend_%: $(CFG_FILE) ${PRE_CMD}${CMD_MAKE} ${EXTRAMAKEFLAGS} depend -C $(subst depend_,,$@)\ "_CURR_DIR=$(subst depend_,${strip ${_CURR_DIR}}/,$@)" MAKEFLAGS= cleandepend: $(_DIRECTORY_ORDER:%=cleandepend_%) cleandepend_%: ${PRE_CMD}${CMD_MAKE} ${EXTRAMAKEFLAGS} cleandepend -C $(subst cleandepend_,,$@)\ "_CURR_DIR=$(subst cleandepend_,${strip ${_CURR_DIR}}/,$@)" MAKEFLAGS= #----------------------------------------------- # Rule: run (examples) #----------------------------------------------- run: $(CFG_FILE) $(_DIRECTORY_ORDER:%=run_%) run_%: $(CFG_FILE) ${PRE_CMD}${CMD_MAKE} ${EXTRAMAKEFLAGS} run -C $(subst run_,,$@)\ "_CURR_DIR=$(subst run_,${strip ${_CURR_DIR}}/,$@)" MAKEFLAGS=