add bin/add-dir.sh skeleton for further development

We have added `bin/add-dir.sh` which is just a skeleton
script.  For now, most of what is useful are the top level
comments describing what the command will and will NOT do.
These comments are work in progress and will be updated.

Updated `bin/README.md` to reflect these changes.

Changed usage introduction text to `bin/README.md`.

Made a minor comment change to `bin/add-dir.sh`.

The `bin/new-year.sh` toll will create the YYYY directory if needed.

Added `template/` directory for Makefile templates.

The `bin/new-year.sh` tool will create `YYYY/Makefile` from
the `template/Makefile.year` if needed.

The `YYYY/.year` and `YYYY/.filelist` will be created
for the new IOCCC year.

Change `bin/new-year.sh` VERSION from "1.1 2024-07-21"
to "1.2 2024-07-22".

Added a brief description of `bin/add-dir.sh` to `bin/README.md`
and updated `bin/new-year.sh` entry.

Added `make genpath_top` rule that just updates `.top`.
The existing `make genpath` also runs `make genpath_top`.

The `YYYY/README.md` will be created from a template
for the new IOCCC year.

Flag as error if `YYYY/README.md`, or `YYYY/YYYY.tar.bz2` is
missing in `bin/gen-years.sh`.

Warn if `YYYY/README.md`, or `YYYY/YYYY.tar.bz2` is an empty file
in `bin/gen-years.sh`.

Changed `bin/gen-years.sh` VERSION from "1.3.4 2024-07-13"
to "1.3.5 2024-07-23".

Performed `make www` to accomplish the above and to test under macOS.
This commit is contained in:
Landon Curt Noll committed 2024-07-23 12:55:07 -07:00
1 parent 332255fd40
commit 30334f9716
9 files changed
+1378 -60

No files matched your search

+418
View File
@@ -0,0 +1,418 @@
#!/usr/bin/env make
#
# %%YEAR%% Makefile
################################################################################
#
# IOCCC winning entry code may not work on your system. What was liked/allowed
# and worked in the past may no longer be liked/allowed or compile/run today.
#
# Bug fixes, corrections and typo fixes are VERY WELCOME. If you see a problem,
# first check this URL for a list of known bugs and (mis)features of IOCCC entries:
#
# https://www.ioccc.org/bugs.html
#
# GitHub pull requests are welcome! Please see the above URL for details.
#
################################################################################
#
# This file is Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved.
# You are free to share and adapt this file under the terms of this license:
#
# Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
#
# For more information, see: https://creativecommons.org/licenses/by-sa/4.0/
#############################
# shell used by this Makefile
#############################
#
SHELL= bash
#######################
# common tool locations
#######################
#
include ../var.mk
###############
# IOCCC entries
###############
#
ENTRIES=
YEAR= %%YEAR%%
###################
# build all entries
###################
#
all:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
.PHONY: all alt data everything diff_orig_prog diff_prog_orig \
diff_alt_prog diff_prog_alt diff_orig_alt diff_alt_orig \
clean clobber install genpath love haste waste maker \
easter_egg sandwich supernova deep_magic magic charon pluto
# alternative executable
#
alt:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
# data files
#
data:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
# both all and alt
#
everything:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
#####################
# make a difference #
#####################
#
# diff orig source and source
#
diff_orig_prog:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
# diff source and orig source
#
diff_prog_orig:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
# diff alt source and source
#
diff_alt_prog:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
# diff source and alt source
#
diff_prog_alt:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
# diff orig and alt
#
diff_orig_alt:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
# diff alt and orig
diff_alt_orig:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
###############
# utility rules
###############
#
clean:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
clobber:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
install:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
indent.c:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
genpath:
@echo '=-=-= IOCCC begin make $@ =-=-='
@${RM} -f .tmp.genpath
@${TOUCH} .tmp.genpath
@-for i in ${ENTRIES}; do \
echo "${YEAR}/$$i" >> .tmp.genpath; \
rm -f "$$i/.tmp.genpath"; \
echo "${YEAR}/$$i" >> "$$i/.tmp.genpath"; \
if ${CMP} -s "$$i/.tmp.genpath" "$$i/.path"; then \
rm -f "$$i/.tmp.genpath"; \
echo "$$i/.path already up to date"; \
else \
${MV} -f "$$i/.tmp.genpath" "$$i/.path"; \
${CHMOD} 0444 "$$i/.path"; \
echo "updated $$i/.path"; \
fi; \
done
@-if ${CMP} -s .tmp.genpath .year; then \
${RM} -f .tmp.genpath; \
echo ".year already up to date"; \
else \
${MV} -f .tmp.genpath .year; \
${CHMOD} 0444 .year; \
echo "updated .year"; \
fi
@echo '=-=-= IOCCC complete make $@ =-=-='
##################
# 133t hacker rulz
##################
#
love:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
haste:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
waste:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
maker:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
easter_egg:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
sandwich:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
# The IOCCC resident astronomer states
#
supernova:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
deep_magic:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
magic:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
charon:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='
pluto:
@echo '=-=-= ${YEAR} begin make $@ =-=-='
@echo
@for i in ${ENTRIES}; do \
echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && ${MAKE} $@)"; \
(cd $$i && ${MAKE} $@); \
echo "=-= end ${YEAR}/$$i =-="; \
echo; \
done
@echo '=-=-= ${YEAR} complete make $@ =-=-='