mirror of
https://github.com/ganelson/inform.git
synced 2024-07-08 01:54:21 +03:00
e811fc28d2
On some systems, the libraries must come after the object files that they reference.
236 lines
6.2 KiB
Plaintext
236 lines
6.2 KiB
Plaintext
-set CCOMPILER 'set-me-to-some-c-compiler-please'
|
|
-set CLINKER 'set-me-to-some-c-linker-please'
|
|
-set EXESUFFIX ''
|
|
-set LINKFLAGS ''
|
|
-if MacOS -set CCOMPILER 'clang -g -std=c11 -ferror-limit=10000 -Wno-unused-value -c'
|
|
-if MacOS -set CLINKER 'clang -g -ferror-limit=10000'
|
|
-if Windows -set CCOMPILER 'x86_64-w64-mingw32-clang -g -std=c11 -ferror-limit=10000 -Wno-unused-value -c'
|
|
-if Windows -set CLINKER 'x86_64-w64-mingw32-clang -g -ferror-limit=10000'
|
|
-if Windows -set EXESUFFIX '.exe'
|
|
-if linux -set CCOMPILER 'gcc -g -std=c11 -fmax-errors=10000 -c'
|
|
-if linux -set CLINKER 'gcc -g'
|
|
-if linux -set LINKFLAGS '-lm -pthread'
|
|
|
|
-cases [Valid] 'inter/Tests/Valid'
|
|
-cases [Invalid] 'inter/Tests/Invalid'
|
|
-cases [General] 'inter/Tests/General'
|
|
-cases [Duplex] 'inter/Tests/Duplex'
|
|
-cases [PipelineErrors] 'inter/Tests/PipelineErrors'
|
|
-cases [Toy] 'inter/Tests/Toys'
|
|
-cases [Kit] 'inter/Tests/Kits'
|
|
|
|
-groups 'inter/Tests/Groups'
|
|
|
|
-recipe [Valid]
|
|
|
|
set: $O = $PATH/$CASE.intert
|
|
set: $A = $PATH/_Textual/$CASE.intert
|
|
set: $B = $PATH/_Binary/$CASE.interb
|
|
set: $T = $PATH/_Console/$CASE.txt
|
|
|
|
mkdir: $PATH/_Textual
|
|
mkdir: $PATH/_Binary
|
|
mkdir: $PATH/_Console
|
|
|
|
debugger: lldb -f inter/Tangled/inter -- $O -format=binary -o $B -crash
|
|
step: inter/Tangled/inter $O -format=binary -o $B >$T 2>&1
|
|
or: 'produced errors in inter' $T
|
|
|
|
step: inter/Tangled/inter $B -format=text -o $A >$T 2>&1
|
|
or: 'produced errors in inter' $T
|
|
|
|
show: $A
|
|
|
|
match text: $A $O
|
|
or: 'produced incorrect output'
|
|
|
|
-end
|
|
|
|
-recipe [Invalid]
|
|
|
|
set: $O = $PATH/$CASE.intert
|
|
set: $A = $PATH/_Results_Actual/$CASE.txt
|
|
set: $I = $PATH/_Results_Ideal/$CASE.txt
|
|
|
|
mkdir: $PATH/_Results_Actual
|
|
mkdir: $PATH/_Results_Ideal
|
|
|
|
fail step: inter/Tangled/inter $O >$A 2>&1
|
|
or: 'failed to produce error message' $A
|
|
show: $A
|
|
exists: $I
|
|
or: 'produced error(s), but no ideal transcript existed'
|
|
match platform text: $A $I
|
|
or: 'produced the wrong error message(s)'
|
|
|
|
-end
|
|
|
|
-recipe [General]
|
|
|
|
set: $O = $PATH/$CASE.intert
|
|
set: $P = $PATH/_Pipelines/$CASE.interpipeline
|
|
set: $A = $PATH/_Results_Actual/$CASE.txt
|
|
set: $I = $PATH/_Results_Ideal/$CASE.txt
|
|
set: $T = $PATH/_Console/$CASE.txt
|
|
|
|
mkdir: $PATH/_Results_Actual
|
|
mkdir: $PATH/_Results_Ideal
|
|
mkdir: $PATH/_Console
|
|
|
|
step: inter/Tangled/inter -architecture 16d -variable *in=$O -variable *out=$A -pipeline-file $P >$T 2>&1
|
|
or: 'failed to produce output' $T
|
|
|
|
show: $A
|
|
|
|
match text: $A $I
|
|
or: 'produced incorrect output'
|
|
|
|
-end
|
|
|
|
-recipe [Duplex]
|
|
|
|
set: $P = $PATH/$CASE.interpipeline
|
|
set: $OA = $PATH/_Pairs/$CASE+A.intert
|
|
set: $OB = $PATH/_Pairs/$CASE+B.intert
|
|
set: $BA = $PATH/_Binaries/$CASE+A.interb
|
|
set: $BB = $PATH/_Binaries/$CASE+B.interb
|
|
set: $AA = $PATH/_Results_Actual/$CASE+A.txt
|
|
set: $IA = $PATH/_Results_Ideal/$CASE+A.txt
|
|
set: $AB = $PATH/_Results_Actual/$CASE+B.txt
|
|
set: $IB = $PATH/_Results_Ideal/$CASE+B.txt
|
|
set: $T = $PATH/_Console/$CASE.txt
|
|
|
|
mkdir: $PATH/_Results_Actual
|
|
mkdir: $PATH/_Results_Ideal
|
|
mkdir: $PATH/_Console
|
|
mkdir: $PATH/_Binaries
|
|
|
|
step: inter/Tangled/inter -variable *inA=$OA -variable *inB=$OB -variable *binA=$BA -variable *binB=$BB -variable *outA=$AA -variable *outB=$AB -pipeline-file $P >$T 2>&1
|
|
or: 'failed to produce output' $T
|
|
|
|
show: $A
|
|
|
|
match text: $AA $IA
|
|
or: 'produced incorrect output on A'
|
|
|
|
match text: $AB $IB
|
|
or: 'produced incorrect output on B'
|
|
|
|
-end
|
|
|
|
-recipe [PipelineErrors]
|
|
|
|
set: $O = $PATH/$CASE.intert
|
|
set: $P = $PATH/$CASE.interpipeline
|
|
set: $A = $PATH/_Results_Actual/$CASE.txt
|
|
set: $I = $PATH/_Results_Ideal/$CASE.txt
|
|
|
|
mkdir: $PATH/_Results_Actual
|
|
mkdir: $PATH/_Results_Ideal
|
|
|
|
fail step: inter/Tangled/inter -variable *in=$O -pipeline-file $P >$A 2>&1
|
|
or: 'failed to produce errors' $A
|
|
|
|
show: $A
|
|
|
|
match platform text: $A $I
|
|
or: 'produced incorrect errors'
|
|
|
|
-end
|
|
|
|
-recipe [Kit]
|
|
|
|
set: $O = $PATH/$CASE.intert
|
|
set: $K = $PATH/_kits/$CASE
|
|
set: $A = $PATH/_Results_Actual/$CASE.txt
|
|
set: $I = $PATH/_Results_Ideal/$CASE.txt
|
|
|
|
mkdir: $PATH/_Results_Actual
|
|
mkdir: $PATH/_Results_Ideal
|
|
|
|
fail step: inter/Tangled/inter -architecture 16 -build-kit $K >$A 2>&1
|
|
or: 'failed to produce errors' $A
|
|
|
|
show: $A
|
|
|
|
match platform text: $A $I
|
|
or: 'produced incorrect errors'
|
|
|
|
-end
|
|
|
|
-recipe [Toy]
|
|
|
|
set: $I7CLIB = inform7/Internal/Miscellany
|
|
|
|
set: $O = $PATH/$CASE.intert
|
|
|
|
set: $P = $PATH/_Pipelines/toy_i6.interpipeline
|
|
set: $A = $PATH/_I6_Results_Actual/$CASE.txt
|
|
set: $T = $PATH/_I6_Console/$CASE.txt
|
|
set: $CT = $PATH/_I6_Console/compile-$CASE.txt
|
|
set: $X = $PATH/_I6_Object_Code/$CASE
|
|
set: $AO = $PATH/_I6_Output_Actual/$CASE.txt
|
|
set: $AI = $PATH/_I6_Output_Ideal/$CASE.txt
|
|
|
|
set: $PC = $PATH/_Pipelines/toy_c.interpipeline
|
|
set: $AC = $PATH/_C_Results_Actual/$CASE.c
|
|
set: $TC = $PATH/_C_Console/$CASE.txt
|
|
set: $OC = $PATH/_C_Object_Code/$CASE.o
|
|
set: $CTC = $PATH/_C_Console/compile-$CASE.txt
|
|
set: $LTC = $PATH/_C_Console/link-$CASE.txt
|
|
set: $XC = $PATH/_C_Object_Code/$CASE$$EXESUFFIX
|
|
set: $AOC = $PATH/_C_Output_Actual/$CASE.txt
|
|
set: $AIC = $PATH/_C_Output_Ideal/$CASE.txt
|
|
|
|
mkdir: $PATH/_I6_Results_Actual
|
|
mkdir: $PATH/_I6_Console
|
|
mkdir: $PATH/_I6_Object_Code
|
|
mkdir: $PATH/_I6_Output_Actual
|
|
mkdir: $PATH/_I6_Output_Ideal
|
|
mkdir: $PATH/_C_Results_Actual
|
|
mkdir: $PATH/_C_Console
|
|
mkdir: $PATH/_C_Object_Code
|
|
mkdir: $PATH/_C_Output_Actual
|
|
mkdir: $PATH/_C_Output_Ideal
|
|
|
|
step: inter/Tangled/inter -architecture 32d -variable *in=$O -variable *out=$A -pipeline-file $P >$T 2>&1
|
|
or: 'failed to produce output' $T
|
|
|
|
step: inter/Tangled/inter -architecture 32d -variable *in=$O -variable *out=$AC -pipeline-file $PC >$TC 2>&1
|
|
or: 'failed to produce output' $T
|
|
|
|
step: `$$CCOMPILER -o $OC $AC -I $I7CLIB >$CTC 2>&1
|
|
or: 'failed to compile C' $CTC
|
|
|
|
step: `$$CLINKER -o $XC $OC `$$LINKFLAGS >$LTC 2>&1
|
|
or: 'failed to link C' $LTC
|
|
|
|
step: $XC >$AOC 2>&1
|
|
or: 'failed to run C program' $AOC
|
|
|
|
match text: $AOC $AIC
|
|
or: 'C program misbehaved'
|
|
|
|
show: $AOC
|
|
|
|
set: $I6 = inform6/Tangled/inform6
|
|
set: $I6OPTIONS = -E2SDwGx
|
|
|
|
step: $I6 `$I6OPTIONS $A $X >$CT 2>&1
|
|
or: 'failed to pass through Inform 6' $CT
|
|
|
|
set: $INT = inform6/Tests/Assistants/dumb-glulx/glulxe/glulxe
|
|
set: $INTNAME = dumb-glulxe
|
|
set: $INTOPTIONS = -u -q
|
|
|
|
step: $INT `$INTOPTIONS $X >$AO 2>&1
|
|
or: 'unable to run $INTNAME (do you need to make interpreters?)'
|
|
|
|
match text: $AO $AI
|
|
or: 'I6 program misbehaved'
|
|
|
|
match text: $AO $AOC
|
|
or: 'I6 and C programs disagreed'
|
|
|
|
-end
|