Files
ioccc/Makefile
T
Cody Boone Ferguson e6fb9bb67a Fix top level Makefile 'all' rule
It had a stray 'fi;' in it without an 'if'.
2023-12-30 13:37:30 -08:00

310 lines
7.6 KiB
Makefile

#!/usr/bin/env make
#
# IOCCC 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 winners:
#
# https://www.ioccc.org/bugs.md
#
# 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 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 years
#############
#
YEARS= 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 \
1994 1995 1996 1998 2000 2001 2004 2005 2006 2011 \
2012 2013 2014 2015 2018 2019 2020
###################
# build all entries
###################
#
all:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC 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 '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
# data files
#
data:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
# both all and alt
#
everything:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
#####################
# make a difference #
#####################
#
# diff orig source and source
#
diff_orig_prog:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
# diff source and orig source
#
diff_prog_orig:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
# diff alt source and source
#
diff_alt_prog:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
# diff source and alt source
#
diff_prog_alt:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
# diff orig and alt
#
diff_orig_alt:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
# diff alt and orig
diff_alt_orig:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
###############
# utility rules
###############
#
clean:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
clobber:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
install:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
indent.c:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
genpath:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@${RM} -f .tmp.genpath
@-for i in ${YEARS}; do \
echo "$$i" >> .tmp.genpath; \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@-if ${CMP} -s .tmp.genpath .top; then \
${RM} -f .tmp.genpath; \
echo ".top already up to date"; \
else \
${MV} -f .tmp.genpath .top; \
${CHMOD} 0444 .top; \
echo "updated .top"; \
fi
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
##################
# 133t hacker rulz
##################
#
love:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
haste:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
waste:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
maker:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
easter_egg:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
sandwich:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
# The IOCCC resident astronomer states
#
supernova:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
deep_magic:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
magic:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
charon:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
pluto:
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
@-for i in ${YEARS}; do \
echo "cd $$i; make $@"; \
(cd $$i; make $@); \
done
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='