diff options
author | Bent Bisballe Nyeng <deva@aasimon.org> | 2021-08-28 18:59:29 +0200 |
---|---|---|
committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2021-08-28 18:59:29 +0200 |
commit | 5da56616cccf4e595ec6a556cf1aef40b37746e3 (patch) | |
tree | 8142e294a251ca2ab1697f7541fe67dfd31622e0 /rebuild.cc | |
parent | 0597cb9854d66d918762ff167148516b69c02e9a (diff) |
Move sources to ... well, src ;)
Diffstat (limited to 'rebuild.cc')
-rw-r--r-- | rebuild.cc | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/rebuild.cc b/rebuild.cc deleted file mode 100644 index 43c4c98..0000000 --- a/rebuild.cc +++ /dev/null @@ -1,141 +0,0 @@ -#include "rebuild.h" - -#include <iostream> -#include <filesystem> -#include <algorithm> - -#include "execute.h" -#include "configure.h" -#include "settings.h" -#include "libcppbuild.h" - -std::array<BuildConfigurationEntry, 1024> configFiles; -std::size_t numConfigFiles{0}; - -// TODO: Use c++20 when ready, somehing like this: -//int reg(const std::source_location location = std::source_location::current()) -int reg(const char* location, std::vector<BuildConfiguration> (*cb)()) -{ - // NOTE: std::cout cannot be used here - if(numConfigFiles >= configFiles.size()) - { - fprintf(stderr, "Max %d build configurations currently supported.\n", - (int)configFiles.size()); - exit(1); - } - - configFiles[numConfigFiles].file = location; - configFiles[numConfigFiles].cb = cb; - ++numConfigFiles; - - return 0; -} - -int unreg(const char* location) -{ - std::size_t found{0}; - for(std::size_t i = 0; i < numConfigFiles;) - { - if(std::string(location) == configFiles[i].file) - { - ++found; - for(std::size_t j = i; j < numConfigFiles; ++j) - { - configFiles[j] = configFiles[j + 1]; - } - --numConfigFiles; - } - else - { - ++i; - } - } - - return found; -} - -void recompileCheck(const Settings& settings, int argc, char* argv[], - bool force, bool relaunch_allowed) -{ - bool dirty{force}; - - std::vector<std::string> args; - args.push_back("-s"); - args.push_back("-O3"); - args.push_back("-std=c++17"); - args.push_back("-pthread"); - - std::filesystem::path binFile(argv[0]); - - if(std::filesystem::exists(configurationFile)) - { - args.push_back(configurationFile.string()); - - if(std::filesystem::last_write_time(binFile) <= - std::filesystem::last_write_time(configurationFile)) - { - dirty = true; - } - - const auto& c = configuration(); - if(&c == &default_configuration) - { - // configuration.cc exists, but currently compiled with the default one. - dirty = true; - } - } - - if(settings.verbose > 1) - { - std::cout << "Recompile check (" << numConfigFiles << "):\n"; - } - - for(std::size_t i = 0; i < numConfigFiles; ++i) - { - std::string location = configFiles[i].file; - if(settings.verbose > 1) - { - std::cout << " - " << location << "\n"; - } - std::filesystem::path configFile(location); - if(std::filesystem::last_write_time(binFile) <= - std::filesystem::last_write_time(configFile)) - { - dirty = true; - } - - // Support adding multiple config functions from the same file - if(std::find(args.begin(), args.end(), location) == std::end(args)) - { - args.push_back(location); - } - } - args.push_back("libcppbuild.a"); - args.push_back("-o"); - args.push_back(binFile.string()); - - if(dirty) - { - std::cout << "Rebuilding config\n"; - auto tool = getConfiguration(cfg::build_cxx, "/usr/bin/g++"); - auto ret = execute(tool, args, settings.verbose > 0); - if(ret != 0) - { - std::cerr << "Failed: ." << ret << "\n"; - exit(1); - } - else - { - if(relaunch_allowed) - { - std::cout << "Re-launch\n"; - std::vector<std::string> args; - for(int i = 1; i < argc; ++i) - { - args.push_back(argv[i]); - } - exit(execute(argv[0], args, settings.verbose > 0)); - } - } - } -} |