diff --git a/include/asm/fstack.hpp b/include/asm/fstack.hpp index 81aea529..f6613e25 100644 --- a/include/asm/fstack.hpp +++ b/include/asm/fstack.hpp @@ -58,6 +58,7 @@ void fstk_AddIncludePath(std::string const &path); void fstk_AddPreIncludeFile(std::string const &path); std::optional fstk_FindFile(std::string const &path); bool fstk_FileError(std::string const &path, char const *functionName); +bool fstk_FailedOnMissingInclude(); bool yywrap(); bool fstk_RunInclude(std::string const &path); diff --git a/include/asm/main.hpp b/include/asm/main.hpp index a2e2e089..8efb1892 100644 --- a/include/asm/main.hpp +++ b/include/asm/main.hpp @@ -41,7 +41,6 @@ struct Options { }; extern Options options; -extern bool failedOnMissingInclude; #define verbosePrint(...) \ do { \ diff --git a/src/asm/fstack.cpp b/src/asm/fstack.cpp index 3dc371de..60997bc0 100644 --- a/src/asm/fstack.cpp +++ b/src/asm/fstack.cpp @@ -46,6 +46,7 @@ static std::stack contextStack; // The first include path for `fstk_FindFile` to try is none at all static std::vector includePaths = {""}; // -I static std::deque preIncludeNames; // -P +static bool failedOnMissingInclude = false; std::string FileStackNode::reptChain() const { std::string chain; @@ -317,6 +318,10 @@ bool fstk_FileError(std::string const &path, char const *functionName) { return false; } +bool fstk_FailedOnMissingInclude() { + return failedOnMissingInclude; +} + bool fstk_RunInclude(std::string const &path) { if (std::optional fullPath = fstk_FindFile(path); fullPath) { newFileContext(*fullPath, false); diff --git a/src/asm/main.cpp b/src/asm/main.cpp index 72ecd3e2..1ca9ce96 100644 --- a/src/asm/main.cpp +++ b/src/asm/main.cpp @@ -26,8 +26,6 @@ Options options; -bool failedOnMissingInclude = false; - // Escapes Make-special chars from a string static std::string make_escape(std::string &str) { std::string escaped; @@ -424,7 +422,7 @@ int main(int argc, char *argv[]) { nbErrors = 1; } - if (!failedOnMissingInclude) { + if (!fstk_FailedOnMissingInclude()) { sect_CheckUnionClosed(); sect_CheckLoadClosed(); sect_CheckSizes(); @@ -440,7 +438,7 @@ int main(int argc, char *argv[]) { } // If parse aborted due to missing an include, and `-MG` was given, exit normally - if (failedOnMissingInclude) { + if (fstk_FailedOnMissingInclude()) { return 0; }