diff --git a/.clang-format b/.clang-format index db481b97..24714372 100644 --- a/.clang-format +++ b/.clang-format @@ -42,6 +42,8 @@ EmptyLineBeforeAccessModifier: Leave FixNamespaceComments: false IncludeBlocks: Regroup IncludeCategories: + - Regex: '^"platform\.hpp"$' + Priority: -1 - Regex: '^ #include #include @@ -12,7 +14,6 @@ #include #include "helpers.hpp" // assume -#include "platform.hpp" class File { std::variant _file; diff --git a/include/platform.hpp b/include/platform.hpp index 89f19aaf..ab7d4fc6 100644 --- a/include/platform.hpp +++ b/include/platform.hpp @@ -3,6 +3,12 @@ #ifndef RGBDS_PLATFORM_HPP #define RGBDS_PLATFORM_HPP +// MingGW and Cygwin may need POSIX functions which are not standard C explicitly enabled +// Make sure to keep this before any system header! +#if (defined(__MINGW32__) || defined(__CYGWIN__)) && !defined(_POSIX_C_SOURCE) + #define _POSIX_C_SOURCE 200809L +#endif + // MSVC doesn't have str(n)casecmp, use a suitable replacement #ifdef _MSC_VER #include // IWYU pragma: export @@ -55,17 +61,6 @@ #define setmode(fd, mode) (0) #endif -// Windows has 32-bit `long`, which limits `fseek` and `ftell` to 2 GiB -#if defined(_MSC_VER) || defined(__MINGW32__) - #define fseek _fseeki64 - #define ftell _ftelli64 -#endif - -// MingGW and Cygwin may need POSIX functions which are not standard C explicitly enabled -#if (defined(__MINGW32__) || defined(__CYGWIN__)) && !defined(_POSIX_C_SOURCE) - #define _POSIX_C_SOURCE 200809L -#endif - // Apple has deprecated `sprintf` since Xcode 14 (for macOS 13), but we use it solely in // contexts where both the size of the buffer *and* max size of the printed string are // known statically, which GCC thus checks for. diff --git a/src/asm/fstack.cpp b/src/asm/fstack.cpp index 7d363bc8..e00cc695 100644 --- a/src/asm/fstack.cpp +++ b/src/asm/fstack.cpp @@ -1,5 +1,7 @@ // SPDX-License-Identifier: MIT +#include "platform.hpp" // strncasecmp + #include "asm/fstack.hpp" #include @@ -22,7 +24,6 @@ #include "helpers.hpp" #include "itertools.hpp" // reversed #include "linkdefs.hpp" -#include "platform.hpp" // strncasecmp #include "verbosity.hpp" #include "asm/intern.hpp" diff --git a/src/asm/lexer.cpp b/src/asm/lexer.cpp index cd8082c8..ed1866f1 100644 --- a/src/asm/lexer.cpp +++ b/src/asm/lexer.cpp @@ -1,5 +1,7 @@ // SPDX-License-Identifier: MIT +#include "platform.hpp" + #include "asm/lexer.hpp" #include @@ -27,7 +29,6 @@ #include #include "helpers.hpp" -#include "platform.hpp" #include "style.hpp" #include "util.hpp" #include "verbosity.hpp" diff --git a/src/asm/main.cpp b/src/asm/main.cpp index 712d81e7..a7896c0f 100644 --- a/src/asm/main.cpp +++ b/src/asm/main.cpp @@ -1,5 +1,7 @@ // SPDX-License-Identifier: MIT +#include "platform.hpp" + #include "asm/main.hpp" #include @@ -23,8 +25,7 @@ #include "diagnostics.hpp" #include "helpers.hpp" #include "parser.hpp" // Generated from parser.y -#include "platform.hpp" -#include "style.hpp" // style_Parse +#include "style.hpp" // style_Parse #include "usage.hpp" #include "util.hpp" // UpperMap #include "verbosity.hpp" diff --git a/src/asm/output.cpp b/src/asm/output.cpp index f635c9e5..405d7ae0 100644 --- a/src/asm/output.cpp +++ b/src/asm/output.cpp @@ -1,5 +1,7 @@ // SPDX-License-Identifier: MIT +#include "platform.hpp" + #include "asm/output.hpp" #include @@ -16,7 +18,6 @@ #include "helpers.hpp" // assume, Defer #include "linkdefs.hpp" -#include "platform.hpp" #include "util.hpp" // xfclose #include "asm/charmap.hpp" diff --git a/src/asm/section.cpp b/src/asm/section.cpp index 5d784466..4e0f081b 100644 --- a/src/asm/section.cpp +++ b/src/asm/section.cpp @@ -1,5 +1,7 @@ // SPDX-License-Identifier: MIT +#include "platform.hpp" // fseek + #include "asm/section.hpp" #include @@ -21,8 +23,7 @@ #include "helpers.hpp" #include "itertools.hpp" // InsertionOrderedMap #include "linkdefs.hpp" -#include "platform.hpp" // fseek -#include "util.hpp" // xfclose, seekSize +#include "util.hpp" // xfclose, seekSize #include "asm/fstack.hpp" #include "asm/lexer.hpp" diff --git a/src/backtrace.cpp b/src/backtrace.cpp index c113ca7c..245a2fc4 100644 --- a/src/backtrace.cpp +++ b/src/backtrace.cpp @@ -1,12 +1,13 @@ // SPDX-License-Identifier: MIT +#include "platform.hpp" // strcasecmp + #include "backtrace.hpp" #include #include -#include "platform.hpp" // strcasecmp -#include "util.hpp" // parseWholeNumber +#include "util.hpp" // parseWholeNumber Tracing tracing; diff --git a/src/fix/fix.cpp b/src/fix/fix.cpp index 05a2e58b..9cf7d613 100644 --- a/src/fix/fix.cpp +++ b/src/fix/fix.cpp @@ -1,5 +1,7 @@ // SPDX-License-Identifier: MIT +#include "platform.hpp" + #include "fix/fix.hpp" #include @@ -14,7 +16,6 @@ #include "diagnostics.hpp" #include "helpers.hpp" -#include "platform.hpp" #include "util.hpp" // xclose, xfclose #include "fix/main.hpp" diff --git a/src/fix/main.cpp b/src/fix/main.cpp index bfdcbd84..2d93b7ce 100644 --- a/src/fix/main.cpp +++ b/src/fix/main.cpp @@ -1,5 +1,7 @@ // SPDX-License-Identifier: MIT +#include "platform.hpp" + #include "fix/main.hpp" #include @@ -15,7 +17,6 @@ #include "cli.hpp" #include "diagnostics.hpp" #include "helpers.hpp" -#include "platform.hpp" #include "style.hpp" #include "usage.hpp" #include "util.hpp" diff --git a/src/fix/mbc.cpp b/src/fix/mbc.cpp index 5546b8c2..db8815cb 100644 --- a/src/fix/mbc.cpp +++ b/src/fix/mbc.cpp @@ -1,5 +1,7 @@ // SPDX-License-Identifier: MIT +#include "platform.hpp" // strcasecmp + #include "fix/mbc.hpp" #include @@ -10,8 +12,7 @@ #include #include -#include "helpers.hpp" // unreachable_ -#include "platform.hpp" // strcasecmp +#include "helpers.hpp" // unreachable_ #include "util.hpp" #include "fix/warning.hpp" diff --git a/src/gfx/main.cpp b/src/gfx/main.cpp index a2f8a82e..38dfc388 100644 --- a/src/gfx/main.cpp +++ b/src/gfx/main.cpp @@ -1,5 +1,7 @@ // SPDX-License-Identifier: MIT +#include "platform.hpp" + #include "gfx/main.hpp" #include @@ -19,7 +21,6 @@ #include "diagnostics.hpp" #include "file.hpp" #include "helpers.hpp" -#include "platform.hpp" #include "style.hpp" // style_Parse #include "usage.hpp" #include "util.hpp" diff --git a/src/gfx/pal_spec.cpp b/src/gfx/pal_spec.cpp index 40f4bf2e..f667b36a 100644 --- a/src/gfx/pal_spec.cpp +++ b/src/gfx/pal_spec.cpp @@ -1,5 +1,7 @@ // SPDX-License-Identifier: MIT +#include "platform.hpp" + #include "gfx/pal_spec.hpp" #include @@ -22,7 +24,6 @@ #include "diagnostics.hpp" #include "file.hpp" #include "helpers.hpp" -#include "platform.hpp" #include "util.hpp" // UpperMap, parseDigit #include "gfx/main.hpp" diff --git a/src/link/assign.cpp b/src/link/assign.cpp index e3c7c47b..0b985ece 100644 --- a/src/link/assign.cpp +++ b/src/link/assign.cpp @@ -1,5 +1,7 @@ // SPDX-License-Identifier: MIT +#include "platform.hpp" + #include "link/assign.hpp" #include @@ -16,7 +18,6 @@ #include "helpers.hpp" #include "itertools.hpp" #include "linkdefs.hpp" -#include "platform.hpp" #include "verbosity.hpp" #include "link/main.hpp" diff --git a/src/link/object.cpp b/src/link/object.cpp index 8dfd7387..0ddb97d8 100644 --- a/src/link/object.cpp +++ b/src/link/object.cpp @@ -1,5 +1,7 @@ // SPDX-License-Identifier: MIT +#include "platform.hpp" + #include "link/object.hpp" #include @@ -18,7 +20,6 @@ #include "helpers.hpp" #include "linkdefs.hpp" -#include "platform.hpp" #include "util.hpp" // xfclose #include "verbosity.hpp" #include "version.hpp" diff --git a/src/link/output.cpp b/src/link/output.cpp index 47106466..837e52b2 100644 --- a/src/link/output.cpp +++ b/src/link/output.cpp @@ -1,5 +1,7 @@ // SPDX-License-Identifier: MIT +#include "platform.hpp" + #include "link/output.hpp" #include @@ -19,7 +21,6 @@ #include "extern/utf8decoder.hpp" #include "helpers.hpp" #include "linkdefs.hpp" -#include "platform.hpp" #include "util.hpp" #include "link/main.hpp" diff --git a/src/link/sdas_obj.cpp b/src/link/sdas_obj.cpp index 26562bec..65fe12e7 100644 --- a/src/link/sdas_obj.cpp +++ b/src/link/sdas_obj.cpp @@ -1,5 +1,7 @@ // SPDX-License-Identifier: MIT +#include "platform.hpp" + #include "link/sdas_obj.hpp" #include @@ -14,7 +16,6 @@ #include "helpers.hpp" // assume, literal_strlen #include "linkdefs.hpp" -#include "platform.hpp" #include "util.hpp" // parseWholeNumber #include "link/fstack.hpp" diff --git a/src/style.cpp b/src/style.cpp index 55d15a98..83bd27dc 100644 --- a/src/style.cpp +++ b/src/style.cpp @@ -3,14 +3,14 @@ // This implementation was based on https://github.com/agauniyal/rang/ // and adapted for RGBDS. +#include "platform.hpp" // isatty, strcasecmp + #include "style.hpp" #include #include // getenv #include -#include "platform.hpp" // isatty, strcasecmp - #if !STYLE_ANSI // clang-format off: maintain `include` order #define WIN32_LEAN_AND_MEAN // Include less from `windows.h` diff --git a/src/usage.cpp b/src/usage.cpp index 4bc4849d..9dc95513 100644 --- a/src/usage.cpp +++ b/src/usage.cpp @@ -1,5 +1,7 @@ // SPDX-License-Identifier: MIT +#include "platform.hpp" + #include "usage.hpp" #include @@ -8,7 +10,6 @@ #include "diagnostics.hpp" // vfatalx #include "helpers.hpp" -#include "platform.hpp" #include "style.hpp" #include "util.hpp" // parseWholeNumber #include "version.hpp" diff --git a/src/util.cpp b/src/util.cpp index 48d73f8a..4a7e6cd5 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1,5 +1,7 @@ // SPDX-License-Identifier: MIT +#include "platform.hpp" + #include "util.hpp" #include @@ -9,7 +11,6 @@ #include // strspn #include "helpers.hpp" // assume -#include "platform.hpp" int xfclose(FILE *file) { if (file == stdin || file == stdout || file == stderr) {