diff options
| author | Bent Bisballe Nyeng <deva@aasimon.org> | 2021-11-21 21:09:42 +0100 | 
|---|---|---|
| committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2021-11-21 21:09:42 +0100 | 
| commit | 0855b2177b62fa719eff6643e3b433c41eecf142 (patch) | |
| tree | 4d2e2166bb206f9f232f828a23d743d601f20f3a /src | |
| parent | a7869c0bd65faacdd008284df9ab07de7df3d445 (diff) | |
Don't warn about missing external config cache values when bootstrapping.
Diffstat (limited to 'src')
| -rw-r--r-- | src/bootstrap.cc | 2 | ||||
| -rw-r--r-- | src/configure.cc | 2 | ||||
| -rw-r--r-- | src/tasks.cc | 55 | ||||
| -rw-r--r-- | src/tasks.h | 6 | 
4 files changed, 36 insertions, 29 deletions
diff --git a/src/bootstrap.cc b/src/bootstrap.cc index 0846907..08f7b1f 100644 --- a/src/bootstrap.cc +++ b/src/bootstrap.cc @@ -53,7 +53,7 @@ int main(int argc, char* argv[])  	settings.parallel_processes =  		std::max(1u, std::thread::hardware_concurrency() * 2 - 1);  	settings.verbose = 0; -	auto all_tasks = getTasks(settings); +	auto all_tasks = getTasks(settings, {}, false);  	for(auto task : all_tasks)  	{  		if(task->registerDepTasks(all_tasks)) diff --git a/src/configure.cc b/src/configure.cc index cc963f8..37bd3cf 100644 --- a/src/configure.cc +++ b/src/configure.cc @@ -265,7 +265,7 @@ int regenerateCache(const Settings& default_settings,  		host_arch = build_arch;  	} -	auto tasks = getTasks(settings); +	auto tasks = getTasks(settings, {}, false);  /*  	bool needs_cpp{false};  	bool needs_c{false}; diff --git a/src/tasks.cc b/src/tasks.cc index 3bfff8b..8ab296f 100644 --- a/src/tasks.cc +++ b/src/tasks.cc @@ -18,7 +18,8 @@  #include "rebuild.h"  #include "configure.h" -const std::deque<Target>& getTargets(const Settings& settings) +const std::deque<Target>& getTargets(const Settings& settings, +                                     bool resolve_externals)  {  	static bool initialised{false};  	static std::deque<Target> targets; @@ -36,31 +37,34 @@ const std::deque<Target>& getTargets(const Settings& settings)  			auto configs = configFiles[i].cb();  			for(auto& config : configs)  			{ -				// Resolv config externals -				for(const auto& external : config.externals) +				if(resolve_externals)  				{ -					if(externals.find(external) == externals.end()) +					// Resolv config externals +					for(const auto& external : config.externals)  					{ -						std::cout << "External '" << external << -							"' not found cache - run configure.\n"; -						continue; +						if(externals.find(external) == externals.end()) +						{ +							std::cout << "External '" << external << +								"' not found in cache - run configure.\n"; +							exit(1); +						} +						const auto& flags = externals.at(external); +						config.flags.cflags.insert(config.flags.cflags.end(), +						                           flags.cflags.begin(), +						                           flags.cflags.end()); +						config.flags.cxxflags.insert(config.flags.cxxflags.end(), +						                             flags.cxxflags.begin(), +						                             flags.cxxflags.end()); +						config.flags.ldflags.insert(config.flags.ldflags.end(), +						                            flags.ldflags.begin(), +						                            flags.ldflags.end()); +						config.flags.asmflags.insert(config.flags.asmflags.end(), +						                             flags.asmflags.begin(), +						                             flags.asmflags.end()); +						//config.libs.insert(config.libs.end(), +						//                   libs.begin(), +						//                   libs.end());  					} -					const auto& flags = externals.at(external); -					config.flags.cflags.insert(config.flags.cflags.end(), -					                           flags.cflags.begin(), -					                           flags.cflags.end()); -					config.flags.cxxflags.insert(config.flags.cxxflags.end(), -					                             flags.cxxflags.begin(), -					                             flags.cxxflags.end()); -					config.flags.ldflags.insert(config.flags.ldflags.end(), -					                            flags.ldflags.begin(), -					                            flags.ldflags.end()); -					config.flags.asmflags.insert(config.flags.asmflags.end(), -					                             flags.asmflags.begin(), -					                             flags.asmflags.end()); -					//config.libs.insert(config.libs.end(), -					//                   libs.begin(), -					//                   libs.end());  				}  				targets.push_back({config, path}); @@ -169,9 +173,10 @@ std::shared_ptr<Task> getNextTask(const std::list<std::shared_ptr<Task>>& allTas  }  std::list<std::shared_ptr<Task>> getTasks(const Settings& settings, -                                          const std::vector<std::string> names) +                                          const std::vector<std::string> names, +                                          bool resolve_externals)  { -	auto& targets = getTargets(settings); +	auto& targets = getTargets(settings, resolve_externals);  	std::list<std::shared_ptr<Task>> tasks;  	for(const auto& target : targets)  	{ diff --git a/src/tasks.h b/src/tasks.h index aaa3510..f2a77d4 100644 --- a/src/tasks.h +++ b/src/tasks.h @@ -20,7 +20,8 @@ struct Target  };  //! Get list of all registered targets -const std::deque<Target>& getTargets(const Settings& settings); +const std::deque<Target>& getTargets(const Settings& settings, +                                     bool resolve_externals = true);  //! Returns next dirty task from the dirtyTasks list that has all its dependencies  //! fulfilled. @@ -32,7 +33,8 @@ std::shared_ptr<Task> getNextTask(const std::list<std::shared_ptr<Task>>& allTas  //! Get list of tasks filtered by name including each of their direct  //! dependency tasks (ie. objects tasks from their sources).  std::list<std::shared_ptr<Task>> getTasks(const Settings& settings, -                                          const std::vector<std::string> names = {}); +                                          const std::vector<std::string> names = {}, +                                          bool resolve_externals = true);  //! Generate list of targets from a single configuration, including the final  //! link target and all its objects files (if any).  | 
