From 31c3cd4f93d35cc2879bf2646810853738829ea2 Mon Sep 17 00:00:00 2001 From: Landon Curt Noll Date: Thu, 19 Jun 2025 21:45:47 -0700 Subject: [PATCH] add Makefile.judging for IOCCC judging use Added `template/entry/Makefile.judging`, a Makefile that is similar to `next/Makefile.example` except that it is more suitable for IOCCC judging, especially during the final rounds of judging. --- template/entry/Makefile.judging | 212 ++++++++++++++++++++++++++++++++ 1 file changed, 212 insertions(+) create mode 100644 template/entry/Makefile.judging diff --git a/template/entry/Makefile.judging b/template/entry/Makefile.judging new file mode 100644 index 000000000..16e63b64e --- /dev/null +++ b/template/entry/Makefile.judging @@ -0,0 +1,212 @@ +#!/usr/bin/env make +# +# XXX - prog - suitable title the submission + +############################# +# shell used by this Makefile +############################# + +SHELL= bash + + +####################### +# common tool locations +####################### + +include ../../var.mk + + +##################### +# C compiler settings +##################### + +# Common C compiler warnings to silence +# +# Example: CSILENCE= -Wno-poison-system-directories +# +CSILENCE= + +# Attempt to silence unknown warning options +# +CUNKNOWN= -Wno-unknown-warning-option + +# Common C compiler warning flags +# +# NOTE: The addition of -pedantic to CWARN is a challenge that +# You may wish to avoid if it proves too problematic. +# There is NO penalty for removing -pedantic from CWARN. +# +CWARN= -Wall -Wextra -pedantic ${CSILENCE} ${CUNKNOWN} + +# Compiler standard +# +CSTD= -std=gnu17 + +# Compiler bit architecture +# +# Example for 32-bitness: ARCH= -m32 +# Example for 64-bitness: ARCH= -m64 +# +# NOTE: Normally one should NOT specify a specific architecture. +# +ARCH= + +# Defines that are needed to compile +# +# Example: -Dfoo -Dbar=baz +# +CDEFINE= + +# Include files that are needed to compile +# +# Example: CINCLUDE= -include stdio.h +# +CINCLUDE= + +# Other flags to pass to the C compiler +# +# Example: COTHER= -fno-math-errno +# +COTHER= + +# Optimization +# +# NOTE: Feel free to change the level of compiler optimization. +# The "-O3" is just a friendly default you might wish to try. +# +# Example: OPT= -O0 -g +# +OPT= -O3 + +# Default flags for ANSI C compilation +# +CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${COTHER} ${OPT} + +# Libraries needed to build +# +# Example: LDFLAGS= -lncurses -lm +# +LDFLAGS= + +# C compiler to use +# +# NOTE: The IOCCC Judges recommend you leave CC as just "cc" +# and NOT set it to clang, or gcc, or something else +# unless you have a STRONG reason to do so. +# +# Setting CC to something other than "cc" makes your +# code less portable to those who do not have your +# particular C compiler. **hint** +# +# If you want to test your code with a particular C compiler, +# use the make command line. For example: +# +# make all CC=clang +# make all CC=gcc +# +CC= cc + +# Compiler add-ons or replacements for clang only +# +ifeq "$(findstring $(CLANG),${CC})" "$(CLANG)" +# +# NOTE: This code is only invoked when CC is "clang" +# such as when you use the make command line: +# +# make all CC=clang +# +CSILENCE+= +# +CWARN+= -Weverything +# +endif + +# Specific add-ons or replacements for gcc only +# +ifeq "$(findstring $(GCC),${CC})" "$(GCC)" +# +# NOTE: This code is only invoked when CC is "gcc" +# such as when you use the make command line: +# +# make all CC=gcc +# +CSILENCE+= +# +CWARN+= +# +endif + + +########################################### +# Special Makefile variables for this entry +########################################### + +ENTRY= XXX +PROG= prog +# +OBJ= ${PROG}.o +TARGET= ${PROG} + +# XXX - If there is a prog.alt.c: +# +# ALT_OBJ= ${PROG}.alt.o +# ALT_TARGET= ${PROG}.alt +# +ALT_OBJ= +ALT_TARGET= + +# list any data files supplied with your submission +# +# Example: DATA= curds whey +# +DATA= + + +################# +# build the entry +################# + +all: data ${TARGET} + @${TRUE} + +.PHONY: all alt data everything clean clobber + +${PROG}: ${PROG}.c + ${CC} ${CFLAGS} ${PROG}.c -o $@ ${LDFLAGS} + +# alternative executable +# +alt: data ${ALT_TARGET} + @${TRUE} + +${PROG}.alt: ${PROG}.alt.c + ${CC} ${CFLAGS} ${PROG}.alt.c -o $@ ${LDFLAGS} + +# data files +# +data: ${DATA} + @${TRUE} + +# both all and alt +# +everything: all alt + @${TRUE} + + +############### +# utility rules +############### +# +clean: + ${RM} -f ${OBJ} ${ALT_OBJ} + +clobber: clean + ${RM} -f ${TARGET} ${ALT_TARGET} + ${RM} -rf *.dSYM + + +###################################### +# optional include of 1337 hacker rulz +###################################### + +-include 1337.mk ../1337.mk ../../1337.mk