###############################################################################
# This file contains composite macros and rules for creating objects.
-# This file should be included in the user's makefile after the variables
+# This file should be included in the user makefile after the variables
# have been initialized appropriately for the particular project being
-# created. The user's own targets should be placed after the include
+# created. The user targets should be placed after the include
# directive that specifies this file.
###############################################################################
LAST_TARGETS += $(BUILD_AFTER:%=%.make)
endif
-# Make the default action be an error stop if we can't find an appropriate rule.
+# Make the default action be an error stop if we ca not find an appropriate rule.
.DEFAULT:
$(HIDER)echo
$(HIDER)echo [$@] is missing files or has a makefile problem.
$(HIDER)echo
- $(HIDESH)$(CLAM_DIR)/exit_make.sh
+ $(HIDESH)$(CLAM_SCRIPTS)/exit_make.sh
# This rule halts make for some supposedly devastating reason. More
# information should be printed out by the cause of the halt.
%.halt:
@echo CLAM execution halted, the cause being: $@
- $(HIDESH)$(CLAM_DIR)/exit_make.sh
+ $(HIDESH)$(CLAM_SCRIPTS)/exit_make.sh
# Provides a time-stamp in the make log.
show_date.%:
- $(HIDER)echo "The time right now is $(shell date)"
+ $(HIDER)echo "{$(shell date)}"
# The .make rule changes to the directory with the same first part of the
# pattern and makes whatever projects are there. This is used by the build
if [ -f "$*/$(MAKEFILE_NAME)" ]; then \
$(MAKE) --silent -f "$(MAKEFILE_NAME)" NOT_FIRST_MAKE=t -C "$*"; \
else \
- echo Skipping makefile-less directory [$*]; \
+ echo "($@ skipping directory $*)"; \
fi \
else \
echo Skipping missing directory [$*]; \
fi'
+#hmmm: maybe convert above to a script also.
# always run the exes listed in RUN_TARGETS.
.PHONY: run_targets
ifeq "$(NOT_FIRST_MAKE)" ""
$(HIDESH) -c '\
if [ ! -f "$(FAILURE_FILE)" ]; then \
- $(SHELL) $(CLAM_DIR)/sound_play.sh $(CLAM_FINISH_SOUND); \
+ $(SHELL) $(FEISTY_MEOW_SCRIPTS)/multimedia/sound_play.sh $(CLAM_FINISH_SOUND); \
fi'
endif
# toss the flag files so we do not see them again.
# runs the programs specified in the RUN_TARGETS variable.
run_targets:
- $(HIDESH)"$(CLAM_DIR)/target_runner.sh"
-#### "$(RUN_TARGETS)"
+ $(HIDESH)"$(CLAM_SCRIPTS)/target_runner.sh"
# "make_subdirs" travels down each subdirectory and builds using make.
make_subdirs:
- $(HIDESH) -c '\
-for i in *; do \
- if [ -d $$i ]; then \
- if [ -f $$i/$(MAKEFILE_NAME) -a ! $$i -ef `pwd` ]; then \
- echo; \
- (cd $$i; $(MAKE) --silent NOT_FIRST_MAKE=t -f $(MAKEFILE_NAME) ); \
- else \
- echo Skipping makefile-less directory $$i...; \
- echo; \
- fi \
- fi \
-done; \
-exit 0'
+ $(HIDESH)$(CLAM_SCRIPTS)/make_subdirs.sh
# "clean" is a default target that removes object files, libs, executable
# files and such that were created by the project. it invokes the makefile
# again with the CLEAN variable defined so that this can be passed down into
# all subsequent makes.
-clean:
- $(HIDER)$(MAKE) --silent CLEAN=t ready_to_clean
-
-ready_to_clean: $(OTHER_CLEANS) clean_subdirs
- @echo Whacking [$(CLEANUPS)]
+clean: establish_cleanup_variable $(OTHER_CLEANS) scratch_other_cleans clean_subdirs add_to_cleanups_variable ready_to_clean
+ @# no code here.
+
+establish_cleanup_variable:
+ $(eval CLEAN := true)
+
+scratch_other_cleans:
+ $(eval OTHER_CLEANS := )
+
+# add late breaking items to the cleanup list. this is mainly the actual
+# targets to build, since those are not specified until the user makefile
+# is included. we take a liberty here and also add different versions of
+# the file suffixes so we can clean all versions of the targets.
+add_to_cleanups_variable: $(SUPPLEMENTAL_CLEANUP_TARGETS)
+ $(eval CLEANUPS = $(ACTUAL_TARGETS) $(CLEANUPS) )
+# $(eval CLEANUPS = $(ACTUAL_TARGETS) $(ACTUAL_TARGETS:%.exe=%) $(ACTUAL_TARGETS:%.dll=%.so) $(ACTUAL_TARGETS:%.so=%.dll) $(CLEANUPS) )
+# echo "new CLEANUPS variable: $(CLEANUPS)"
+
+# main cleaning task.
+ready_to_clean:
+ifneq "$(CLEANUPS)" ""
+ @echo Whacking [$(notdir $(CLEANUPS))]
+endif
$(HIDESH) -c '\
-echo the other cleans were: $(OTHER_CLEANS); \
-echo the clean list is: $(CLEANUPS); \
if [ ! -z "$(CLEANUPS)" ]; then \
- for i in $(CLEANUPS) nonexistentishfileforlist; do \
- rm -rf "$$i"; \
+ for spork19 in $(CLEANUPS) nonexistentishfileforlist; do \
+ rm -rf "$$spork19"; \
done \
fi'
+############################################################################
+
# "clean_subdirs" travels down each subdirectory and cleans using make.
clean_subdirs:
- $(HIDESH) -c '\
-for i in *; do \
- if [ -d "$$i" ]; then \
- if [ -f "$$i/$(MAKEFILE_NAME)" -a ! "$$i" -ef `pwd` ]; then \
- (cd "$$i"; $(MAKE) --silent NOT_FIRST_MAKE=t -f $(MAKEFILE_NAME) clean); \
- else \
- echo "Skipping makefile-less directory $$i..."; \
- fi \
- fi \
-done; \
-exit 0'
-###echo Cleaning "$$i" now...;
+ $(HIDESH)$(CLAM_SCRIPTS)/clean_subdirs.sh
# "rm_links" removes the files in the current directory that are links
# to other files. this is only useful in a unix environment.
rm_links:
$(HIDESH) -c '\
-for i in *; do \
- if [ -h "$$i" ]; then \
- /bin/rm -f "$$i"; \
+for gujira26 in *; do \
+ if [ -h "$$gujira26" ]; then \
+ /bin/rm -f "$$gujira26"; \
fi \
done; \
exit 0'