diff options
author | Claudius "keldu" Holeksa <mail@keldu.de> | 2024-03-15 11:40:02 +0100 |
---|---|---|
committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2024-03-15 11:40:02 +0100 |
commit | 2a84e80df881785f104a06c026e1810c3cc50516 (patch) | |
tree | bdba41696bc4582aff0590e1cddd3eb4ba849d13 /modules/io | |
parent | 68a6e9658047aa04f16870dbc48ba79a2963a650 (diff) |
io: Building examples
Diffstat (limited to 'modules/io')
-rw-r--r-- | modules/io/.nix/derivation.nix | 20 | ||||
-rw-r--r-- | modules/io/SConstruct | 12 | ||||
-rw-r--r-- | modules/io/c++/SConscript | 8 | ||||
-rw-r--r-- | modules/io/examples/SConscript | 12 | ||||
-rw-r--r-- | modules/io/examples/echo_server.cpp | 16 |
5 files changed, 51 insertions, 17 deletions
diff --git a/modules/io/.nix/derivation.nix b/modules/io/.nix/derivation.nix index a14bd34..b4a9c0c 100644 --- a/modules/io/.nix/derivation.nix +++ b/modules/io/.nix/derivation.nix @@ -4,11 +4,10 @@ , clang-tools , version , forstio +, build_examples ? "false" }: -let - -in stdenv.mkDerivation { +stdenv.mkDerivation { pname = "forstio-io"; inherit version; src = ./..; @@ -23,7 +22,18 @@ in stdenv.mkDerivation { buildInputs = [ forstio.core forstio.async - ]; + ]; + + outputs = [ + "out" + "dev" + ]; + + buildPhase = '' + scons build_examples=${build_examples} + ''; - outputs = ["out" "dev"]; + installPhase = '' + scons prefix=$out build_examples=${build_examples} install + ''; } diff --git a/modules/io/SConstruct b/modules/io/SConstruct index 035bdda..3eedb77 100644 --- a/modules/io/SConstruct +++ b/modules/io/SConstruct @@ -43,8 +43,17 @@ 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'], + CPPDEFINES=[ + 'SAW_UNIX' + ], CXXFLAGS=[ '-std=c++20', '-g', @@ -67,6 +76,7 @@ env.targets = []; Export('env') SConscript('c++/SConscript') +SConscript('examples/SConscript') env.Alias('cdb', env.cdb); env.Alias('all', [env.targets]); diff --git a/modules/io/c++/SConscript b/modules/io/c++/SConscript index cb10119..a941248 100644 --- a/modules/io/c++/SConscript +++ b/modules/io/c++/SConscript @@ -21,18 +21,18 @@ env.headers += io_env.headers; ## Shared lib objects_shared = [] io_env.add_source_files(objects_shared, io_env.sources, shared=True); -io_env.library_shared = io_env.SharedLibrary('#build/forstio-io', [objects_shared]); +env.library_shared = io_env.SharedLibrary('#build/forstio-io', [objects_shared]); ## Static lib objects_static = [] io_env.add_source_files(objects_static, io_env.sources, shared=False); -io_env.library_static = io_env.StaticLibrary('#build/forstio-io', [objects_static]); +env.library_static = io_env.StaticLibrary('#build/forstio-io', [objects_static]); # Set Alias -env.Alias('library_io', [io_env.library_shared, io_env.library_static]); +env.Alias('library_io', [env.library_shared, env.library_static]); env.targets += ['library_io']; # Install -env.Install('$prefix/lib/', [io_env.library_shared, io_env.library_static]); +env.Install('$prefix/lib/', [env.library_shared, env.library_static]); env.Install('$prefix/include/forstio/io/', [io_env.headers]); diff --git a/modules/io/examples/SConscript b/modules/io/examples/SConscript index 850edcd..a8fad79 100644 --- a/modules/io/examples/SConscript +++ b/modules/io/examples/SConscript @@ -19,10 +19,14 @@ env.sources += examples_env.sources; env.headers += examples_env.headers; objects_static = [] -examples_env.echo_client = examples_env.Program('#bin/echo_client', ['echo_client.cpp', env.sources]); -examples_env.echo_server = examples_env.Program('#bin/echo_server', ['echo_server.cpp', env.sources]); +examples_env.echo_client = examples_env.Program('#bin/echo_client', ['echo_client.cpp', env.library_static]); +examples_env.echo_server = examples_env.Program('#bin/echo_server', ['echo_server.cpp', env.library_static]); # Set Alias -env.Alias('examples', [examples_env.echo_client, examples_env.echo_server]); +env.examples = [examples_env.echo_client, examples_env.echo_server]; +env.Alias('examples', env.examples); -env.targets += ['examples']; +if env["build_examples"]: + env.targets += ['examples']; + env.Install('$prefix/bin/', env.examples); +#endif diff --git a/modules/io/examples/echo_server.cpp b/modules/io/examples/echo_server.cpp index 82513ff..24bdfa2 100644 --- a/modules/io/examples/echo_server.cpp +++ b/modules/io/examples/echo_server.cpp @@ -52,10 +52,12 @@ int main(){ message msg_state; + std::cout<<"Starting to resolve address"<<std::endl; /** * Try to resolve address. If resolved */ - network.resolve_address("127.0.0.1", 4321).then([&](auto net_addr){ + network.resolve_address("127.0.0.1", 4322).then([&](auto net_addr){ + std::cout<<"Resolved address"<<std::endl; addr = std::move(net_addr); srv = network.listen(*addr); if(srv){ @@ -74,11 +76,19 @@ int main(){ }else{ keep_running = false; } - }).detach(); + }).detach([&](auto err) { + std::cout<<"Failed to resolve address: "<<err.get_category()<<":"<<err.get_message()<<std::endl; + keep_running = false; + return err; + }); + + std::cout<<"Entering waiting loop"<<std::endl; while(keep_running){ - wait_scope.wait(); + wait_scope.wait(std::chrono::seconds{1}); } + std::cout<<"\n\nShutting down echo server"<<std::endl; + return 0; } |