#!/usr/bin/env make # # 2001 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 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 winners ############### # WINNERS= anonymous bellard cheong coupard ctk dgbeards herrmann1 herrmann2 jason \ kev ollinger rosten schweikh westley williams YEAR= 2001 ################### # build all entries ################### # all: @echo '=-=-= ${YEAR} begin make $@ =-=-=' @echo @for i in ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 @-for i in ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; 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 ${WINNERS}; do \ echo "=-= start ${YEAR}/$$i =-="; \ echo "(cd $$i && ${MAKE} $@)"; \ (cd $$i && ${MAKE} $@); \ echo "=-= end ${YEAR}/$$i =-="; \ echo; \ done @echo '=-=-= ${YEAR} complete make $@ =-=-='