aboutsummaryrefslogtreecommitdiff
path: root/src/GlobalLib.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2017-12-11 20:19:28 +0100
committerdec05eba <dec05eba@protonmail.com>2017-12-11 20:24:36 +0100
commitcfe578ec12198d09a9a89a2e0b40bccaa06aa8ae (patch)
tree51c1bf7890fff76811dd05ab2ed74f6f38932fbe /src/GlobalLib.cpp
parent43b37b2acc7e8876371741d4901cdc11ad7ecadd (diff)
Add package type to project.conf
Type can be either executable or library. Executable: project compiles to an executable binary. Library: project compiles to either a static or dynamic library, depending on what how the dependent project wants the dependency to compile. With having type in project.conf, you cant include wrong type of project (an executable including another executable, conflicting main functions).
Diffstat (limited to 'src/GlobalLib.cpp')
-rw-r--r--src/GlobalLib.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/GlobalLib.cpp b/src/GlobalLib.cpp
index cbd822e..7503a7a 100644
--- a/src/GlobalLib.cpp
+++ b/src/GlobalLib.cpp
@@ -111,6 +111,14 @@ namespace sibs
if(sibsConfig.getPackageName().empty())
return Result<string>::Err("project.conf is missing required field package.name");
+ if(sibsConfig.getPackageType() == PackageType::EXECUTABLE)
+ {
+ string errMsg = "The dependency ";
+ errMsg += name;
+ errMsg += " is an executable. Only libraries can be dependencies";
+ return Result<string>::Err(errMsg);
+ }
+
backend::Ninja ninja(backend::Ninja::LibraryType::STATIC);
walkDirFilesRecursive(packageDir.c_str(), [&ninja, &packageDir](tinydir_file *file)
{