diff options
author | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-10-17 19:04:59 +0200 |
---|---|---|
committer | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-10-17 19:04:59 +0200 |
commit | 0d6300c7aec4f7a3f665b5db76aad9bf20fd55cf (patch) | |
tree | 73fb1a76d6816dd4e0bc5414c7adfd8a59364449 | |
parent | 17e22f10026068990595941eeb503fc2adb476a8 (diff) |
Moved the tls example to modern variant
-rw-r--r-- | default.nix | 5 | ||||
-rw-r--r-- | modules/io-tls/.nix/derivation.nix | 11 | ||||
-rw-r--r-- | modules/io-tls/SConstruct | 12 | ||||
-rw-r--r-- | modules/io-tls/c++/SConscript (renamed from modules/io-tls/SConscript) | 8 | ||||
-rw-r--r-- | modules/io-tls/examples/SConscript | 35 | ||||
-rw-r--r-- | modules/io-tls/examples/tls_client.cpp | 22 |
6 files changed, 84 insertions, 9 deletions
diff --git a/default.nix b/default.nix index b7d696f..9e30663 100644 --- a/default.nix +++ b/default.nix @@ -75,8 +75,9 @@ in rec { inherit version; inherit forstio; inherit stdenv; - inherit clang-tools; - + inherit clang-tools; + + build_examples = "true"; }; io_codec = pkgs.callPackage modules/io_codec/.nix/derivation.nix { diff --git a/modules/io-tls/.nix/derivation.nix b/modules/io-tls/.nix/derivation.nix index 23d8ba6..6131a98 100644 --- a/modules/io-tls/.nix/derivation.nix +++ b/modules/io-tls/.nix/derivation.nix @@ -5,6 +5,7 @@ , version , forstio , gnutls +, build_examples ? "false" }: let @@ -26,7 +27,15 @@ in stdenv.mkDerivation { forstio.async forstio.io gnutls - ]; + ]; + + buildPhase = '' + scons build_examples=${build_examples} + ''; + + installPhase = '' + scons prefix=$out build_examples=${build_examples} install + ''; outputs = ["out" "dev"]; } diff --git a/modules/io-tls/SConstruct b/modules/io-tls/SConstruct index 5101537..103ccec 100644 --- a/modules/io-tls/SConstruct +++ b/modules/io-tls/SConstruct @@ -37,11 +37,18 @@ env_vars = Variables( args=ARGUMENTS ) +env_vars.Add( + BoolVariable('build_examples', + help='Build examples', + default=False + ) +); + env_vars.Add('prefix', help='Installation target location of build results and headers', default='/usr/local/', validator=isAbsolutePath -) +); env=Environment(ENV=os.environ, variables=env_vars, CPPPATH=[], CXX=['c++'], @@ -58,7 +65,8 @@ env.headers = []; env.targets = []; Export('env') -SConscript('SConscript') +SConscript('c++/SConscript') +SConscript('examples/SConscript') env.Alias('cdb', env.cdb); env.Alias('all', [env.targets]); diff --git a/modules/io-tls/SConscript b/modules/io-tls/c++/SConscript index f823103..a6947ea 100644 --- a/modules/io-tls/SConscript +++ b/modules/io-tls/c++/SConscript @@ -21,18 +21,18 @@ env.headers += io_tls_env.headers; ## Shared lib objects_shared = [] io_tls_env.add_source_files(objects_shared, io_tls_env.sources, shared=True); -io_tls_env.library_shared = io_tls_env.SharedLibrary('#build/forstio-io-tls', [objects_shared]); +env.library_shared = io_tls_env.SharedLibrary('#build/forstio-io-tls', [objects_shared]); ## Static lib objects_static = [] io_tls_env.add_source_files(objects_static, io_tls_env.sources, shared=False); -io_tls_env.library_static = io_tls_env.StaticLibrary('#build/forstio-io-tls', [objects_static]); +env.library_static = io_tls_env.StaticLibrary('#build/forstio-io-tls', [objects_static]); # Set Alias -env.Alias('library_io_tls', [io_tls_env.library_shared, io_tls_env.library_static]); +env.Alias('library_io_tls', [env.library_shared, env.library_static]); env.targets += ['library_io_tls']; # Install -env.Install('$prefix/lib/', [io_tls_env.library_shared, io_tls_env.library_static]); +env.Install('$prefix/lib/', [env.library_shared, env.library_static]); env.Install('$prefix/include/forstio/io/tls/', [io_tls_env.headers]); diff --git a/modules/io-tls/examples/SConscript b/modules/io-tls/examples/SConscript new file mode 100644 index 0000000..34d05e8 --- /dev/null +++ b/modules/io-tls/examples/SConscript @@ -0,0 +1,35 @@ +#!/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.tls_client = examples_env.Program('#bin/tls_client', ['tls_client.cpp', env.library_static]); +#examples_env.tls_server = examples_env.Program('#bin/tls_server', ['tls_server.cpp', env.library_static]); + +# Set Alias +env.examples = [ + examples_env.tls_client +#, examples_env.tls_server +]; +env.Alias('examples', env.examples); + +if env["build_examples"]: + env.targets += ['examples']; + env.Install('$prefix/bin/', env.examples); +#endif diff --git a/modules/io-tls/examples/tls_client.cpp b/modules/io-tls/examples/tls_client.cpp new file mode 100644 index 0000000..798c626 --- /dev/null +++ b/modules/io-tls/examples/tls_client.cpp @@ -0,0 +1,22 @@ +#include "../c++/tls.hpp" + +saw::error_or<void> real_main(){ + using namespace saw; + auto eo_aio = setup_async_io(); + if(eo_aio.is_error()){ + return eo_aio.get_error(); + } + auto& aio = eo_aio.get_value(); + return make_void(); +} + +int main(){ + auto eov = real_main(); + if(eov.is_error()){ + auto& err = eov.get_error(); + std::cerr<<"[Error]: "<<err.get_category()<<" - "<<err.get_message()<<std::endl; + return err.get_id(); + } + + return 0; +} |