From 3b9cafa09f783ccadda14d11fc8b73dc496368c0 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Thu, 6 Apr 2023 07:07:30 +0100 Subject: [PATCH] Fall back to if doesn't work. This fixes a build failure introduced by commit 2e48ce132e011e8 yesterday. When I saw that commit I expected the most likely problem would be in the NestedVM build, which is currently the thing with the most most out-of-date C implementation. And indeed the NestedVM toolchain doesn't have - but much more surprisingly, our _Windows_ builds failed too, with a compile error inside itself! I haven't looked closely into the problem yet. Our Windows builds are done with clang, which comes with its own superseding the standard Windows one. So you'd _hope_ that clang could make sense of its own header! But perhaps the problem is that this is an unusual compile mode and hasn't been tested. My fix is to simply add a cmake check for - which doesn't just check the file's existence, it actually tries compiling a file that #includes it, so it will detect 'file exists but is mysteriously broken' just as easily as 'not there at all'. So this makes the builds start working again, precisely on Ben's theory of opportunistically using where possible and falling back to otherwise. It looks ugly, though! I'm half tempted to make a new header file whose job is to include a standard set of system headers, just so that that nasty #ifdef doesn't have to sit at the top of almost all the source files. But for the moment this at least gets the build working again. --- auxiliary/hat-test.c | 6 +++++- auxiliary/hatgen.c | 6 +++++- blackbox.c | 6 +++++- bridges.c | 6 +++++- cmake/setup.cmake | 4 ++++ cube.c | 6 +++++- dominosa.c | 6 +++++- drawing.c | 6 +++++- fifteen.c | 6 +++++- filling.c | 6 +++++- flip.c | 6 +++++- flood.c | 6 +++++- galaxies.c | 6 +++++- grid.c | 6 +++++- gtk.c | 6 +++++- guess.c | 6 +++++- hat.c | 6 +++++- inertia.c | 6 +++++- keen.c | 6 +++++- lightup.c | 6 +++++- loopgen.c | 6 +++++- loopy.c | 6 +++++- magnets.c | 6 +++++- map.c | 6 +++++- mines.c | 6 +++++- misc.c | 6 +++++- mosaic.c | 6 +++++- net.c | 6 +++++- netslide.c | 6 +++++- nullgame.c | 6 +++++- pattern.c | 6 +++++- pearl.c | 6 +++++- pegs.c | 6 +++++- penrose.c | 6 +++++- range.c | 6 +++++- rect.c | 6 +++++- samegame.c | 6 +++++- signpost.c | 6 +++++- singles.c | 6 +++++- sixteen.c | 6 +++++- slant.c | 6 +++++- solo.c | 6 +++++- tents.c | 6 +++++- towers.c | 6 +++++- tracks.c | 6 +++++- twiddle.c | 6 +++++- undead.c | 6 +++++- unequal.c | 6 +++++- unfinished/group.c | 6 +++++- unfinished/numgame.c | 6 +++++- unfinished/separate.c | 6 +++++- unfinished/slide.c | 6 +++++- unfinished/sokoban.c | 6 +++++- unruly.c | 6 +++++- untangle.c | 6 +++++- 55 files changed, 274 insertions(+), 54 deletions(-) diff --git a/auxiliary/hat-test.c b/auxiliary/hat-test.c index 4f8dc65..254d82c 100644 --- a/auxiliary/hat-test.c +++ b/auxiliary/hat-test.c @@ -5,7 +5,11 @@ */ #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include #include #include diff --git a/auxiliary/hatgen.c b/auxiliary/hatgen.c index 9574cb8..30242c9 100644 --- a/auxiliary/hatgen.c +++ b/auxiliary/hatgen.c @@ -16,7 +16,11 @@ */ #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include #include #include diff --git a/blackbox.c b/blackbox.c index 69ec12c..7c84a16 100644 --- a/blackbox.c +++ b/blackbox.c @@ -7,7 +7,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/bridges.c b/bridges.c index bd4b3ca..e96861e 100644 --- a/bridges.c +++ b/bridges.c @@ -73,7 +73,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/cmake/setup.cmake b/cmake/setup.cmake index 0a710b6..3c91285 100644 --- a/cmake/setup.cmake +++ b/cmake/setup.cmake @@ -47,6 +47,10 @@ check_include_file(stdint.h HAVE_STDINT_H) if(NOT HAVE_STDINT_H) add_compile_definitions(NO_STDINT_H) endif() +check_include_file(tgmath.h HAVE_TGMATH_H) +if(NOT HAVE_TGMATH_H) + add_compile_definitions(NO_TGMATH_H) +endif() # Try to normalise source file pathnames as seen in __FILE__ (e.g. # assertion failure messages). Partly to avoid bloating the binaries diff --git a/cube.c b/cube.c index 1261730..46bd745 100644 --- a/cube.c +++ b/cube.c @@ -7,7 +7,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/dominosa.c b/dominosa.c index 801c1f1..e529376 100644 --- a/dominosa.c +++ b/dominosa.c @@ -48,7 +48,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/drawing.c b/drawing.c index 90f54f3..2c8816c 100644 --- a/drawing.c +++ b/drawing.c @@ -27,7 +27,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/fifteen.c b/fifteen.c index 53b06aa..f453d59 100644 --- a/fifteen.c +++ b/fifteen.c @@ -8,7 +8,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/filling.c b/filling.c index 87b9d9e..0c2d292 100644 --- a/filling.c +++ b/filling.c @@ -58,7 +58,11 @@ #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include #include #include diff --git a/flip.c b/flip.c index 1112443..267e5a2 100644 --- a/flip.c +++ b/flip.c @@ -9,7 +9,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" #include "tree234.h" diff --git a/flood.c b/flood.c index da2317a..c5fc10c 100644 --- a/flood.c +++ b/flood.c @@ -32,7 +32,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/galaxies.c b/galaxies.c index e3cc76e..0b10b59 100644 --- a/galaxies.c +++ b/galaxies.c @@ -80,7 +80,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/grid.c b/grid.c index d2a3e13..1bfc1ef 100644 --- a/grid.c +++ b/grid.c @@ -13,7 +13,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" #include "tree234.h" diff --git a/gtk.c b/gtk.c index ce792d3..7f44baf 100644 --- a/gtk.c +++ b/gtk.c @@ -13,7 +13,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include #include diff --git a/guess.c b/guess.c index 55a30e8..1dbea4c 100644 --- a/guess.c +++ b/guess.c @@ -7,7 +7,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/hat.c b/hat.c index 99babcc..dbb8f41 100644 --- a/hat.c +++ b/hat.c @@ -12,7 +12,11 @@ */ #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include #include #include diff --git a/inertia.c b/inertia.c index 92747ed..42c2f5b 100644 --- a/inertia.c +++ b/inertia.c @@ -12,7 +12,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/keen.c b/keen.c index 5624865..baf8a43 100644 --- a/keen.c +++ b/keen.c @@ -8,7 +8,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" #include "latin.h" diff --git a/lightup.c b/lightup.c index 816dd70..35705a6 100644 --- a/lightup.c +++ b/lightup.c @@ -48,7 +48,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/loopgen.c b/loopgen.c index d8f5e27..53d2c4b 100644 --- a/loopgen.c +++ b/loopgen.c @@ -8,7 +8,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" #include "tree234.h" diff --git a/loopy.c b/loopy.c index b7d91de..bd37a5a 100644 --- a/loopy.c +++ b/loopy.c @@ -77,7 +77,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" #include "tree234.h" diff --git a/magnets.c b/magnets.c index 90157bb..82d6ccd 100644 --- a/magnets.c +++ b/magnets.c @@ -37,7 +37,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/map.c b/map.c index 76b0518..a9b2347 100644 --- a/map.c +++ b/map.c @@ -15,7 +15,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/mines.c b/mines.c index 09e3422..e9437cb 100644 --- a/mines.c +++ b/mines.c @@ -13,7 +13,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "tree234.h" #include "puzzles.h" diff --git a/misc.c b/misc.c index 2cefd36..d9695c8 100644 --- a/misc.c +++ b/misc.c @@ -3,7 +3,11 @@ */ #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include #include #include diff --git a/mosaic.c b/mosaic.c index 5fb223e..752caab 100644 --- a/mosaic.c +++ b/mosaic.c @@ -14,7 +14,11 @@ #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include #include #include diff --git a/net.c b/net.c index e3357ac..6f7d149 100644 --- a/net.c +++ b/net.c @@ -8,7 +8,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" #include "tree234.h" diff --git a/netslide.c b/netslide.c index a0b00b4..eab44a9 100644 --- a/netslide.c +++ b/netslide.c @@ -9,7 +9,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" #include "tree234.h" diff --git a/nullgame.c b/nullgame.c index c5ad0c9..9c5f868 100644 --- a/nullgame.c +++ b/nullgame.c @@ -16,7 +16,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/pattern.c b/pattern.c index d8f050b..fa6213e 100644 --- a/pattern.c +++ b/pattern.c @@ -8,7 +8,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/pearl.c b/pearl.c index 74ab471..a54ae15 100644 --- a/pearl.c +++ b/pearl.c @@ -36,7 +36,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" #include "grid.h" diff --git a/pegs.c b/pegs.c index 0639eb3..06a312d 100644 --- a/pegs.c +++ b/pegs.c @@ -8,7 +8,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" #include "tree234.h" diff --git a/penrose.c b/penrose.c index 6ae9756..4d2a740 100644 --- a/penrose.c +++ b/penrose.c @@ -9,7 +9,11 @@ #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include #include "puzzles.h" /* for malloc routines, and PI */ diff --git a/range.c b/range.c index 45ab10b..3e7b00c 100644 --- a/range.c +++ b/range.c @@ -58,7 +58,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/rect.c b/rect.c index 40bc846..bc7e179 100644 --- a/rect.c +++ b/rect.c @@ -26,7 +26,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/samegame.c b/samegame.c index 54e73d5..caa8141 100644 --- a/samegame.c +++ b/samegame.c @@ -68,7 +68,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/signpost.c b/signpost.c index aeb32ea..910de48 100644 --- a/signpost.c +++ b/signpost.c @@ -8,7 +8,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/singles.c b/singles.c index 3fc9d5a..485529a 100644 --- a/singles.c +++ b/singles.c @@ -58,7 +58,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" #include "latin.h" diff --git a/sixteen.c b/sixteen.c index 7dbb9c3..c540438 100644 --- a/sixteen.c +++ b/sixteen.c @@ -10,7 +10,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/slant.c b/slant.c index a174011..65f5329 100644 --- a/slant.c +++ b/slant.c @@ -28,7 +28,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/solo.c b/solo.c index ed1787b..208c705 100644 --- a/solo.c +++ b/solo.c @@ -87,7 +87,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #ifdef STANDALONE_SOLVER #include diff --git a/tents.c b/tents.c index 47a0d11..86b5245 100644 --- a/tents.c +++ b/tents.c @@ -33,7 +33,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" #include "matching.h" diff --git a/towers.c b/towers.c index b3b1478..04abed0 100644 --- a/towers.c +++ b/towers.c @@ -23,7 +23,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" #include "latin.h" diff --git a/tracks.c b/tracks.c index 151f7fb..ea48510 100644 --- a/tracks.c +++ b/tracks.c @@ -21,7 +21,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/twiddle.c b/twiddle.c index 2c15617..c3b4764 100644 --- a/twiddle.c +++ b/twiddle.c @@ -11,7 +11,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/undead.c b/undead.c index 4ef8fe4..a1bd9fd 100644 --- a/undead.c +++ b/undead.c @@ -35,7 +35,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/unequal.c b/unequal.c index f50197b..12cdd7c 100644 --- a/unequal.c +++ b/unequal.c @@ -21,7 +21,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" #include "latin.h" /* contains typedef for digit */ diff --git a/unfinished/group.c b/unfinished/group.c index 345deb5..bbac220 100644 --- a/unfinished/group.c +++ b/unfinished/group.c @@ -31,7 +31,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" #include "latin.h" diff --git a/unfinished/numgame.c b/unfinished/numgame.c index 5de69a2..cf91992 100644 --- a/unfinished/numgame.c +++ b/unfinished/numgame.c @@ -40,7 +40,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" #include "tree234.h" diff --git a/unfinished/separate.c b/unfinished/separate.c index fdeeb3d..d3423de 100644 --- a/unfinished/separate.c +++ b/unfinished/separate.c @@ -94,7 +94,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/unfinished/slide.c b/unfinished/slide.c index a4cf168..115230f 100644 --- a/unfinished/slide.c +++ b/unfinished/slide.c @@ -32,7 +32,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" #include "tree234.h" diff --git a/unfinished/sokoban.c b/unfinished/sokoban.c index a493bf4..bef7d72 100644 --- a/unfinished/sokoban.c +++ b/unfinished/sokoban.c @@ -58,7 +58,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/unruly.c b/unruly.c index c791baf..4b48f16 100644 --- a/unruly.c +++ b/unruly.c @@ -47,7 +47,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" diff --git a/untangle.c b/untangle.c index 558cce7..62d5897 100644 --- a/untangle.c +++ b/untangle.c @@ -32,7 +32,11 @@ #include #include #include -#include +#ifdef NO_TGMATH_H +# include +#else +# include +#endif #include "puzzles.h" #include "tree234.h"