summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudius 'keldu' Holeksa <mail@keldu.de>2024-10-17 19:04:59 +0200
committerClaudius 'keldu' Holeksa <mail@keldu.de>2024-10-17 19:04:59 +0200
commit0d6300c7aec4f7a3f665b5db76aad9bf20fd55cf (patch)
tree73fb1a76d6816dd4e0bc5414c7adfd8a59364449
parent17e22f10026068990595941eeb503fc2adb476a8 (diff)
Moved the tls example to modern variant
-rw-r--r--default.nix5
-rw-r--r--modules/io-tls/.nix/derivation.nix11
-rw-r--r--modules/io-tls/SConstruct12
-rw-r--r--modules/io-tls/c++/SConscript (renamed from modules/io-tls/SConscript)8
-rw-r--r--modules/io-tls/examples/SConscript35
-rw-r--r--modules/io-tls/examples/tls_client.cpp22
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;
+}