summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--default.nix4
-rw-r--r--modules/tools/.nix/derivation.nix13
-rw-r--r--modules/tools/SConstruct8
-rw-r--r--modules/tools/c++/cli_analyzer.hpp11
-rw-r--r--modules/tools/examples/SConscript31
-rw-r--r--modules/tools/examples/cli_mod.cpp6
6 files changed, 64 insertions, 9 deletions
diff --git a/default.nix b/default.nix
index 13042e3..f6a372b 100644
--- a/default.nix
+++ b/default.nix
@@ -47,7 +47,7 @@ in rec {
inherit stdenv;
inherit clang-tools;
- build_examples = "true";
+ build_examples = "true";
};
io-tls = pkgs.callPackage modules/io-tls/.nix/derivation.nix {
@@ -70,6 +70,8 @@ in rec {
inherit forstio;
inherit stdenv;
inherit clang-tools;
+
+ build_examples = "true";
};
};
diff --git a/modules/tools/.nix/derivation.nix b/modules/tools/.nix/derivation.nix
index 81052f3..1c1431a 100644
--- a/modules/tools/.nix/derivation.nix
+++ b/modules/tools/.nix/derivation.nix
@@ -3,6 +3,7 @@
, scons
, clang-tools
, version
+, build_examples ? false
, forstio
}:
@@ -22,8 +23,8 @@ in stdenv.mkDerivation {
buildInputs = [
forstio.core
- forstio.async
- forstio.io
+ forstio.async
+ forstio.io
forstio.codec
forstio.codec-json
];
@@ -33,6 +34,14 @@ in stdenv.mkDerivation {
scons test
./bin/tests
'';
+
+ buildPhase = ''
+ scons build_examples=${build_examples}
+ '';
+
+ installPhase = ''
+ scons prefix=$out build_examples=${build_examples} install
+ '';
outputs = ["out" "dev"];
}
diff --git a/modules/tools/SConstruct b/modules/tools/SConstruct
index 20af11b..ddfd768 100644
--- a/modules/tools/SConstruct
+++ b/modules/tools/SConstruct
@@ -43,6 +43,13 @@ env_vars.Add('prefix',
validator=isAbsolutePath
)
+env_vars.Add(
+ BoolVariable('build_examples',
+ help='Build examples',
+ default=False
+ )
+);
+
env=Environment(ENV=os.environ, variables=env_vars, CPPPATH=[],
CPPDEFINES=['SAW_UNIX'],
CXXFLAGS=['-std=c++20','-g','-Wall','-Wextra'],
@@ -65,6 +72,7 @@ env.targets = [];
Export('env')
SConscript('c++/SConscript')
SConscript('tests/SConscript')
+SConscript('examples/SConscript')
env.Alias('cdb', env.cdb);
env.Alias('all', [env.targets]);
diff --git a/modules/tools/c++/cli_analyzer.hpp b/modules/tools/c++/cli_analyzer.hpp
index 402f03c..a1dc731 100644
--- a/modules/tools/c++/cli_analyzer.hpp
+++ b/modules/tools/c++/cli_analyzer.hpp
@@ -22,10 +22,10 @@ struct cli_modifier {
codec<Schema, Encoding> encoded;
error_or<void> read(
- std::deque<std::string>& sch_path,
- data<Schema, Encoding>& enc_data,
- std::string& json_data_str
- ){
+ std::deque<std::string>& sch_path,
+ data<Schema, Encoding>& enc_data,
+ std::string& json_data_str
+ ){
data<Schema, encode::Native> native;
if constexpr ( std::is_same_v<Encoding, encode::Native> ){
auto eov = encoded.decode<encode::Native>(enc_data, native);
@@ -162,8 +162,7 @@ int modify_data_on_cli(bool read_mode, const std::string& file_path, std::deque<
* Read data from file
*/
-
- data<Schema, Encoding> data;
+ data<Schema, Encoding> data;
data<Schema, encode::Native> native_data;
if (read_mode) {
diff --git a/modules/tools/examples/SConscript b/modules/tools/examples/SConscript
new file mode 100644
index 0000000..99561e7
--- /dev/null
+++ b/modules/tools/examples/SConscript
@@ -0,0 +1,31 @@
+#!/bin/false
+
+import os
+import os.path
+import glob
+
+
+Import('env')
+
+dir_path = Dir('.').abspath
+
+# Environment for base library
+examples_env = env.Clone();
+
+examples_env.sources = sorted(glob.glob(dir_path + "/*.cpp"))
+examples_env.headers = sorted(glob.glob(dir_path + "/*.hpp"))
+
+env.sources += examples_env.sources;
+env.headers += examples_env.headers;
+
+objects_static = []
+examples_env.cli_mod = examples_env.Program('#bin/cli_mod_example', ['cli_mod.cpp', env.library_static]);
+
+# Set Alias
+env.examples = [examples_env.cli_mod];
+env.Alias('examples', env.examples);
+
+if env["build_examples"]:
+ env.targets += ['examples'];
+ env.Install('$prefix/bin/', env.examples);
+#endif
diff --git a/modules/tools/examples/cli_mod.cpp b/modules/tools/examples/cli_mod.cpp
new file mode 100644
index 0000000..84b3dc6
--- /dev/null
+++ b/modules/tools/examples/cli_mod.cpp
@@ -0,0 +1,6 @@
+
+
+int main(int argc, char** argv){
+
+ return 0;
+}