aboutsummaryrefslogtreecommitdiff
path: root/src/CmakeModule.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/CmakeModule.cpp')
-rw-r--r--src/CmakeModule.cpp53
1 files changed, 25 insertions, 28 deletions
diff --git a/src/CmakeModule.cpp b/src/CmakeModule.cpp
index 5bf9400..a706e64 100644
--- a/src/CmakeModule.cpp
+++ b/src/CmakeModule.cpp
@@ -131,10 +131,10 @@ namespace sibs
// CMakeLists.txt may contain: set(CMAKE_MODULE_PATH "PathToModules"). This needs to be replaced with list append,
// otherwise our added module path is replaced.
// It may work to do like vcpkg instead - to use -DCMAKE_TOOLCHAIN_FILE program argument to specify path to script (https://github.com/Microsoft/vcpkg/blob/master/docs/examples/using-sqlite.md)
- vector<PackageListDependency*> globalLibDependencies;
+ vector<PackageListDependency> globalLibDependencies;
#if OS_FAMILY == OS_FAMILY_POSIX
- vector<PackageListDependency*> pkgConfigDependencies;
- for(PackageListDependency *dependency : config.getPackageListDependencies())
+ vector<PackageListDependency> pkgConfigDependencies;
+ for(const PackageListDependency &dependency : config.getPackageListDependencies())
{
Result<bool> pkgConfigDependencyValidation = PkgConfig::validatePkgConfigPackageVersionExists(dependency);
if(pkgConfigDependencyValidation.isOk())
@@ -153,7 +153,7 @@ namespace sibs
{
printf("%s, using global lib...\n", pkgConfigLinkerFlagsResult.getErrMsg().c_str());
globalLibDependencies.reserve(globalLibDependencies.size() + pkgConfigDependencies.size());
- for (PackageListDependency *pkgConfigDependency : pkgConfigDependencies)
+ for (const PackageListDependency &pkgConfigDependency : pkgConfigDependencies)
{
globalLibDependencies.push_back(pkgConfigDependency);
}
@@ -165,7 +165,7 @@ namespace sibs
dynamicLinkerFlagCallbackFunc(pkgConfigLinkerFlagsResult.unwrap());
}
#else
- for (PackageListDependency *dependency : config.getPackageListDependencies())
+ for (const PackageListDependency &dependency : config.getPackageListDependencies())
{
globalLibDependencies.push_back(dependency);
}
@@ -194,8 +194,7 @@ namespace sibs
_putenv("CXXFLAGS=-fPIC");
#endif
#endif
- FileString cmd = cmakePath;
- cmd += TINYDIR_STRING(" ");
+ std::vector<FileString> cmd = { cmakePath };
FileString cflags = TINYDIR_STRING("-fPIC");
FileString cxxflags;
@@ -240,56 +239,57 @@ namespace sibs
}
cxxflags = cflags;
- cmd += TINYDIR_STRING(" \"-DCMAKE_C_FLAGS=") + cflags + TINYDIR_STRING("\"");
- cmd += TINYDIR_STRING(" \"-DCMAKE_CXX_FLAGS=") + cxxflags + TINYDIR_STRING("\" ");
+ cmd.push_back(TINYDIR_STRING("-DCMAKE_C_FLAGS=") + cflags);
+ cmd.push_back(TINYDIR_STRING("-DCMAKE_CXX_FLAGS=") + cxxflags);
switch(config.getPackageType())
{
case PackageType::EXECUTABLE:
{
- cmd += config.getCmakeArgs();
+ auto cmake_args = config.getCmakeArgs();
+ cmd.insert(cmd.end(), cmake_args.begin(), cmake_args.end());
break;
}
case PackageType::STATIC:
{
- cmd += config.getCmakeArgsStatic();
+ auto cmake_args = config.getCmakeArgsStatic();
+ cmd.insert(cmd.end(), cmake_args.begin(), cmake_args.end());
break;
}
case PackageType::DYNAMIC:
case PackageType::LIBRARY:
{
- cmd += config.getCmakeArgsDynamic();
+ auto cmake_args = config.getCmakeArgsDynamic();
+ cmd.insert(cmd.end(), cmake_args.begin(), cmake_args.end());
break;
}
}
- //cmd += TINYDIR_STRING(" -DCMAKE_SKIP_RPATH=\"1\"");
- cmd += TINYDIR_STRING(" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON");
- cmd += TINYDIR_STRING(" \"-B");
- cmd += buildPath;
- cmd += TINYDIR_STRING("\" \"-H");
+ //cmd.push_back(TINYDIR_STRING("-DCMAKE_SKIP_RPATH=1"));
+ cmd.push_back(TINYDIR_STRING("-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"));
+ cmd.push_back(TINYDIR_STRING("-B") + buildPath);
+ cmd.push_back(TINYDIR_STRING("-H"));
switch(config.getPackageType())
{
case PackageType::EXECUTABLE:
{
- cmd += config.getCmakeDir();
+ cmd.back() += config.getCmakeDir();
break;
}
case PackageType::STATIC:
{
- cmd += config.getCmakeDirStatic();
+ cmd.back() += config.getCmakeDirStatic();
break;
}
case PackageType::DYNAMIC:
case PackageType::LIBRARY:
{
- cmd += config.getCmakeDirDynamic();
+ cmd.back() += config.getCmakeDirDynamic();
break;
}
}
- cmd += TINYDIR_STRING("\"");
- nprintf("Compiling with cmake with arguments: %s\n", cmd.c_str());
+ //nprintf("Compiling with cmake with arguments: %s\n", cmd.c_str());
- Result<ExecResult> execResult = exec(cmd.c_str(), true);
+ Result<ExecResult> execResult = exec(cmd, true);
if(execResult.isOk())
{
if(execResult.unwrap().exitCode != 0)
@@ -298,11 +298,8 @@ namespace sibs
else
return Result<bool>::Err(execResult);
- FileString ninjaCommand = TINYDIR_STRING("ninja -C \"");
- ninjaCommand += buildPath;
- ninjaCommand += TINYDIR_STRING("\"");
- nprintf("Compiling cmake generated ninja file: %s\n", ninjaCommand.c_str());
- execResult = exec(ninjaCommand.c_str(), true);
+ //nprintf("Compiling cmake generated ninja file: %s\n", buildPath.c_str());
+ execResult = exec({ TINYDIR_STRING("ninja"), TINYDIR_STRING("-C"), buildPath }, true);
if(execResult.isOk())
{
if(execResult.unwrap().exitCode != 0)