From 4c52feb57fda9e9ee29c1f5310ec19d8cd9e4ca8 Mon Sep 17 00:00:00 2001 From: Amlal Date: Thu, 11 Jul 2024 23:51:17 +0200 Subject: [IMP] libzpt-core shared library and ManifestBuilder class. Signed-off-by: Amlal --- src/manifest_builder.cxx | 71 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/manifest_builder.cxx (limited to 'src') diff --git a/src/manifest_builder.cxx b/src/manifest_builder.cxx new file mode 100644 index 0000000..ec60028 --- /dev/null +++ b/src/manifest_builder.cxx @@ -0,0 +1,71 @@ +// +// main.cpp +// buildme +// +// Created by Amlal on 6/20/24. +// + +#include +#include +#include + +#include + +#include + +using json = nlohmann::json; + +int ManifestBuilder::buildJson(int argc, const char * argv[]) +{ + std::cout << "buildme: "; + std::string path; + + if (argc == 1) + { + std::cout << "no files, defaulting to build.json\n"; + path = "./build.json"; + } + else + { + path = argv[1]; + } + + try + { + std::ifstream fJson(path); + json buildme = json::parse(fJson); + + std::string compiler = buildme["compiler_path"].get(); + std::cout << "choose toolchain: " << compiler << std::endl; + + json headerSearchPath = buildme["headers_path"]; + std::cout << "search path: " << headerSearchPath.dump() << std::endl; + + json sourceFiles = buildme["sources_path"]; + std::cout << "source files: " << sourceFiles.dump() << std::endl; + + std::string cmdLine = compiler + " "; + + for (auto sources : sourceFiles) + { + cmdLine += sources.get() + " "; + } + + for (auto sources : sourceFiles) + { + cmdLine += "-include=" + sources.get() + " "; + } + + cmdLine += "-std=" + buildme["compiler_std"].get() + " "; + + std::cout << "running: " << cmdLine << std::endl; + + std::system(cmdLine.c_str()); + } + catch (...) + { + return 1; + } + + return 0; +} -- cgit v1.2.3