diff options
-rw-r--r-- | default.nix | 4 | ||||
-rw-r--r-- | modules/tools/.nix/derivation.nix | 13 | ||||
-rw-r--r-- | modules/tools/SConstruct | 8 | ||||
-rw-r--r-- | modules/tools/c++/cli_analyzer.hpp | 11 | ||||
-rw-r--r-- | modules/tools/examples/SConscript | 31 | ||||
-rw-r--r-- | modules/tools/examples/cli_mod.cpp | 6 |
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; +} |