From 10ac7f2d63edad6ec7ffff03883be61029ba24b1 Mon Sep 17 00:00:00 2001 From: Danial Ramzan Date: Thu, 22 Aug 2024 19:59:27 -0700 Subject: [PATCH 1/3] initial commit --- .idea/.gitignore | 8 + .../inspectionProfiles/profiles_settings.xml | 6 + .idea/misc.xml | 7 + .idea/modules.xml | 9 + .idea/software-start-here.iml | 8 + .idea/software-start-here2.iml | 2 + .idea/vcs.xml | 6 + install/.colcon_install_layout | 1 + install/COLCON_IGNORE | 0 install/_local_setup_util_ps1.py | 407 +++++++++ install/_local_setup_util_sh.py | 407 +++++++++ install/build/.built_by | 1 + install/build/COLCON_IGNORE | 0 install/challenge/lib/challenge/my_first_node | Bin 0 -> 82584 bytes install/challenge/lib/challenge/solution | Bin 0 -> 82576 bytes .../package_run_dependencies/challenge | 1 + .../resource_index/packages/challenge | 0 .../parent_prefix_path/challenge | 1 + .../cmake/challengeConfig-version.cmake | 14 + .../challenge/cmake/challengeConfig.cmake | 42 + .../environment/ament_prefix_path.dsv | 1 + .../environment/ament_prefix_path.sh | 4 + .../share/challenge/environment/path.dsv | 1 + .../share/challenge/environment/path.sh | 5 + .../challenge/hook/cmake_prefix_path.dsv | 1 + .../challenge/hook/cmake_prefix_path.ps1 | 3 + .../share/challenge/hook/cmake_prefix_path.sh | 3 + .../share/challenge/local_setup.bash | 46 + .../challenge/share/challenge/local_setup.dsv | 2 + .../challenge/share/challenge/local_setup.sh | 184 ++++ .../challenge/share/challenge/local_setup.zsh | 59 ++ .../challenge/share/challenge/package.bash | 39 + install/challenge/share/challenge/package.dsv | 8 + install/challenge/share/challenge/package.ps1 | 116 +++ install/challenge/share/challenge/package.sh | 87 ++ install/challenge/share/challenge/package.xml | 19 + install/challenge/share/challenge/package.zsh | 50 ++ .../share/colcon-core/packages/challenge | 1 + install/install/.colcon_install_layout | 1 + install/install/COLCON_IGNORE | 0 install/install/_local_setup_util_ps1.py | 407 +++++++++ install/install/_local_setup_util_sh.py | 407 +++++++++ install/install/local_setup.bash | 121 +++ install/install/local_setup.ps1 | 55 ++ install/install/local_setup.sh | 137 +++ install/install/local_setup.zsh | 134 +++ install/install/setup.bash | 37 + install/install/setup.ps1 | 31 + install/install/setup.sh | 53 ++ install/install/setup.zsh | 37 + install/local_setup.bash | 121 +++ install/local_setup.ps1 | 55 ++ install/local_setup.sh | 137 +++ install/local_setup.zsh | 134 +++ install/log/COLCON_IGNORE | 0 .../log/build_2024-08-22_19-53-15/events.log | 2 + .../build_2024-08-22_19-53-15/logger_all.log | 45 + install/log/latest | 1 + install/log/latest_build | 1 + install/setup.bash | 34 + install/setup.ps1 | 30 + install/setup.sh | 49 ++ install/setup.zsh | 34 + src/build/.built_by | 1 + src/build/COLCON_IGNORE | 0 src/build/challenge/CMakeCache.txt | 727 ++++++++++++++++ .../CMakeFiles/3.22.1/CMakeCCompiler.cmake | 72 ++ .../CMakeFiles/3.22.1/CMakeCXXCompiler.cmake | 83 ++ .../3.22.1/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 15968 bytes .../3.22.1/CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 15992 bytes .../CMakeFiles/3.22.1/CMakeSystem.cmake | 15 + .../3.22.1/CompilerIdC/CMakeCCompilerId.c | 803 ++++++++++++++++++ .../CMakeFiles/3.22.1/CompilerIdC/a.out | Bin 0 -> 16088 bytes .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 791 +++++++++++++++++ .../CMakeFiles/3.22.1/CompilerIdCXX/a.out | Bin 0 -> 16096 bytes .../CMakeDirectoryInformation.cmake | 16 + .../challenge/CMakeFiles/CMakeOutput.log | 501 +++++++++++ .../challenge/CMakeFiles/CMakeRuleHashes.txt | 2 + src/build/challenge/CMakeFiles/Makefile.cmake | 223 +++++ src/build/challenge/CMakeFiles/Makefile2 | 169 ++++ src/build/challenge/CMakeFiles/Progress/1 | 1 + src/build/challenge/CMakeFiles/Progress/2 | 1 + .../challenge/CMakeFiles/Progress/count.txt | 1 + .../CMakeFiles/TargetDirectories.txt | 10 + .../challenge_uninstall.dir/DependInfo.cmake | 18 + .../challenge_uninstall.dir/build.make | 90 ++ .../challenge_uninstall.dir/cmake_clean.cmake | 8 + .../compiler_depend.make | 2 + .../compiler_depend.ts | 2 + .../challenge_uninstall.dir/progress.make | 1 + .../challenge/CMakeFiles/cmake.check_cache | 1 + src/build/challenge/CMakeFiles/progress.marks | 1 + .../CMakeFiles/solution.dir/DependInfo.cmake | 19 + .../CMakeFiles/solution.dir/build.make | 113 +++ .../CMakeFiles/solution.dir/cmake_clean.cmake | 11 + .../solution.dir/compiler_depend.make | 2 + .../solution.dir/compiler_depend.ts | 2 + .../CMakeFiles/solution.dir/depend.make | 2 + .../CMakeFiles/solution.dir/flags.make | 10 + .../CMakeFiles/solution.dir/link.txt | 1 + .../CMakeFiles/solution.dir/progress.make | 3 + .../solution.dir/src/solution.cpp.o | Bin 0 -> 139192 bytes .../solution.dir/src/solution.cpp.o.d | 601 +++++++++++++ .../solution_node.dir/DependInfo.cmake | 19 + .../CMakeFiles/solution_node.dir/build.make | 167 ++++ .../solution_node.dir/cmake_clean.cmake | 11 + .../solution_node.dir/compiler_depend.make | 2 + .../solution_node.dir/compiler_depend.ts | 2 + .../CMakeFiles/solution_node.dir/depend.make | 2 + .../CMakeFiles/solution_node.dir/flags.make | 10 + .../CMakeFiles/solution_node.dir/link.txt | 1 + .../solution_node.dir/progress.make | 3 + .../CMakeFiles/uninstall.dir/DependInfo.cmake | 18 + .../CMakeFiles/uninstall.dir/build.make | 86 ++ .../uninstall.dir/cmake_clean.cmake | 5 + .../uninstall.dir/compiler_depend.make | 2 + .../uninstall.dir/compiler_depend.ts | 2 + .../CMakeFiles/uninstall.dir/progress.make | 1 + src/build/challenge/CTestConfiguration.ini | 105 +++ src/build/challenge/CTestCustom.cmake | 2 + src/build/challenge/CTestTestfile.cmake | 14 + src/build/challenge/Makefile | 272 ++++++ .../challengeConfig-version.cmake | 14 + .../ament_cmake_core/challengeConfig.cmake | 42 + .../challenge/ament_cmake_core/package.cmake | 14 + .../stamps/ament_prefix_path.sh.stamp | 4 + .../stamps/nameConfig-version.cmake.in.stamp | 14 + .../stamps/nameConfig.cmake.in.stamp | 42 + .../ament_cmake_core/stamps/package.xml.stamp | 19 + .../stamps/package_xml_2_cmake.py.stamp | 150 ++++ .../ament_cmake_core/stamps/path.sh.stamp | 5 + .../stamps/templates_2_cmake.py.stamp | 112 +++ .../ament_prefix_path.dsv | 1 + .../local_setup.bash | 46 + .../local_setup.dsv | 2 + .../local_setup.sh | 184 ++++ .../local_setup.zsh | 59 ++ .../ament_cmake_environment_hooks/package.dsv | 4 + .../ament_cmake_environment_hooks/path.dsv | 1 + .../package_run_dependencies/challenge | 1 + .../resource_index/packages/challenge | 0 .../parent_prefix_path/challenge | 1 + .../templates.cmake | 14 + .../ament_cmake_uninstall_target.cmake | 57 ++ src/build/challenge/cmake_args.last | 1 + src/build/challenge/cmake_install.cmake | 129 +++ src/build/challenge/colcon_build.rc | 1 + .../challenge/colcon_command_prefix_build.sh | 1 + .../colcon_command_prefix_build.sh.env | 77 ++ src/challenge/CMakeLists.txt | 25 + src/challenge/package.xml | 19 + src/challenge/src/solution.cpp | 19 + src/install/.colcon_install_layout | 1 + src/install/COLCON_IGNORE | 0 src/install/_local_setup_util_ps1.py | 407 +++++++++ src/install/_local_setup_util_sh.py | 407 +++++++++ .../challenge/share/challenge/package.bash | 39 + .../challenge/share/challenge/package.dsv | 5 + .../challenge/share/challenge/package.ps1 | 115 +++ .../challenge/share/challenge/package.sh | 86 ++ .../challenge/share/challenge/package.zsh | 50 ++ .../share/colcon-core/packages/challenge | 1 + src/install/local_setup.bash | 121 +++ src/install/local_setup.ps1 | 55 ++ src/install/local_setup.sh | 137 +++ src/install/local_setup.zsh | 134 +++ src/install/setup.bash | 31 + src/install/setup.ps1 | 29 + src/install/setup.sh | 45 + src/install/setup.zsh | 31 + 170 files changed, 11391 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/software-start-here.iml create mode 100644 .idea/software-start-here2.iml create mode 100644 .idea/vcs.xml create mode 100644 install/.colcon_install_layout create mode 100644 install/COLCON_IGNORE create mode 100644 install/_local_setup_util_ps1.py create mode 100644 install/_local_setup_util_sh.py create mode 100644 install/build/.built_by create mode 100644 install/build/COLCON_IGNORE create mode 100755 install/challenge/lib/challenge/my_first_node create mode 100755 install/challenge/lib/challenge/solution create mode 100644 install/challenge/share/ament_index/resource_index/package_run_dependencies/challenge create mode 100644 install/challenge/share/ament_index/resource_index/packages/challenge create mode 100644 install/challenge/share/ament_index/resource_index/parent_prefix_path/challenge create mode 100644 install/challenge/share/challenge/cmake/challengeConfig-version.cmake create mode 100644 install/challenge/share/challenge/cmake/challengeConfig.cmake create mode 100644 install/challenge/share/challenge/environment/ament_prefix_path.dsv create mode 100644 install/challenge/share/challenge/environment/ament_prefix_path.sh create mode 100644 install/challenge/share/challenge/environment/path.dsv create mode 100644 install/challenge/share/challenge/environment/path.sh create mode 100644 install/challenge/share/challenge/hook/cmake_prefix_path.dsv create mode 100644 install/challenge/share/challenge/hook/cmake_prefix_path.ps1 create mode 100644 install/challenge/share/challenge/hook/cmake_prefix_path.sh create mode 100644 install/challenge/share/challenge/local_setup.bash create mode 100644 install/challenge/share/challenge/local_setup.dsv create mode 100644 install/challenge/share/challenge/local_setup.sh create mode 100644 install/challenge/share/challenge/local_setup.zsh create mode 100644 install/challenge/share/challenge/package.bash create mode 100644 install/challenge/share/challenge/package.dsv create mode 100644 install/challenge/share/challenge/package.ps1 create mode 100644 install/challenge/share/challenge/package.sh create mode 100644 install/challenge/share/challenge/package.xml create mode 100644 install/challenge/share/challenge/package.zsh create mode 100644 install/challenge/share/colcon-core/packages/challenge create mode 100644 install/install/.colcon_install_layout create mode 100644 install/install/COLCON_IGNORE create mode 100644 install/install/_local_setup_util_ps1.py create mode 100644 install/install/_local_setup_util_sh.py create mode 100644 install/install/local_setup.bash create mode 100644 install/install/local_setup.ps1 create mode 100644 install/install/local_setup.sh create mode 100644 install/install/local_setup.zsh create mode 100644 install/install/setup.bash create mode 100644 install/install/setup.ps1 create mode 100644 install/install/setup.sh create mode 100644 install/install/setup.zsh create mode 100644 install/local_setup.bash create mode 100644 install/local_setup.ps1 create mode 100644 install/local_setup.sh create mode 100644 install/local_setup.zsh create mode 100644 install/log/COLCON_IGNORE create mode 100644 install/log/build_2024-08-22_19-53-15/events.log create mode 100644 install/log/build_2024-08-22_19-53-15/logger_all.log create mode 120000 install/log/latest create mode 120000 install/log/latest_build create mode 100644 install/setup.bash create mode 100644 install/setup.ps1 create mode 100644 install/setup.sh create mode 100644 install/setup.zsh create mode 100644 src/build/.built_by create mode 100644 src/build/COLCON_IGNORE create mode 100644 src/build/challenge/CMakeCache.txt create mode 100644 src/build/challenge/CMakeFiles/3.22.1/CMakeCCompiler.cmake create mode 100644 src/build/challenge/CMakeFiles/3.22.1/CMakeCXXCompiler.cmake create mode 100755 src/build/challenge/CMakeFiles/3.22.1/CMakeDetermineCompilerABI_C.bin create mode 100755 src/build/challenge/CMakeFiles/3.22.1/CMakeDetermineCompilerABI_CXX.bin create mode 100644 src/build/challenge/CMakeFiles/3.22.1/CMakeSystem.cmake create mode 100644 src/build/challenge/CMakeFiles/3.22.1/CompilerIdC/CMakeCCompilerId.c create mode 100755 src/build/challenge/CMakeFiles/3.22.1/CompilerIdC/a.out create mode 100644 src/build/challenge/CMakeFiles/3.22.1/CompilerIdCXX/CMakeCXXCompilerId.cpp create mode 100755 src/build/challenge/CMakeFiles/3.22.1/CompilerIdCXX/a.out create mode 100644 src/build/challenge/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 src/build/challenge/CMakeFiles/CMakeOutput.log create mode 100644 src/build/challenge/CMakeFiles/CMakeRuleHashes.txt create mode 100644 src/build/challenge/CMakeFiles/Makefile.cmake create mode 100644 src/build/challenge/CMakeFiles/Makefile2 create mode 100644 src/build/challenge/CMakeFiles/Progress/1 create mode 100644 src/build/challenge/CMakeFiles/Progress/2 create mode 100644 src/build/challenge/CMakeFiles/Progress/count.txt create mode 100644 src/build/challenge/CMakeFiles/TargetDirectories.txt create mode 100644 src/build/challenge/CMakeFiles/challenge_uninstall.dir/DependInfo.cmake create mode 100644 src/build/challenge/CMakeFiles/challenge_uninstall.dir/build.make create mode 100644 src/build/challenge/CMakeFiles/challenge_uninstall.dir/cmake_clean.cmake create mode 100644 src/build/challenge/CMakeFiles/challenge_uninstall.dir/compiler_depend.make create mode 100644 src/build/challenge/CMakeFiles/challenge_uninstall.dir/compiler_depend.ts create mode 100644 src/build/challenge/CMakeFiles/challenge_uninstall.dir/progress.make create mode 100644 src/build/challenge/CMakeFiles/cmake.check_cache create mode 100644 src/build/challenge/CMakeFiles/progress.marks create mode 100644 src/build/challenge/CMakeFiles/solution.dir/DependInfo.cmake create mode 100644 src/build/challenge/CMakeFiles/solution.dir/build.make create mode 100644 src/build/challenge/CMakeFiles/solution.dir/cmake_clean.cmake create mode 100644 src/build/challenge/CMakeFiles/solution.dir/compiler_depend.make create mode 100644 src/build/challenge/CMakeFiles/solution.dir/compiler_depend.ts create mode 100644 src/build/challenge/CMakeFiles/solution.dir/depend.make create mode 100644 src/build/challenge/CMakeFiles/solution.dir/flags.make create mode 100644 src/build/challenge/CMakeFiles/solution.dir/link.txt create mode 100644 src/build/challenge/CMakeFiles/solution.dir/progress.make create mode 100644 src/build/challenge/CMakeFiles/solution.dir/src/solution.cpp.o create mode 100644 src/build/challenge/CMakeFiles/solution.dir/src/solution.cpp.o.d create mode 100644 src/build/challenge/CMakeFiles/solution_node.dir/DependInfo.cmake create mode 100644 src/build/challenge/CMakeFiles/solution_node.dir/build.make create mode 100644 src/build/challenge/CMakeFiles/solution_node.dir/cmake_clean.cmake create mode 100644 src/build/challenge/CMakeFiles/solution_node.dir/compiler_depend.make create mode 100644 src/build/challenge/CMakeFiles/solution_node.dir/compiler_depend.ts create mode 100644 src/build/challenge/CMakeFiles/solution_node.dir/depend.make create mode 100644 src/build/challenge/CMakeFiles/solution_node.dir/flags.make create mode 100644 src/build/challenge/CMakeFiles/solution_node.dir/link.txt create mode 100644 src/build/challenge/CMakeFiles/solution_node.dir/progress.make create mode 100644 src/build/challenge/CMakeFiles/uninstall.dir/DependInfo.cmake create mode 100644 src/build/challenge/CMakeFiles/uninstall.dir/build.make create mode 100644 src/build/challenge/CMakeFiles/uninstall.dir/cmake_clean.cmake create mode 100644 src/build/challenge/CMakeFiles/uninstall.dir/compiler_depend.make create mode 100644 src/build/challenge/CMakeFiles/uninstall.dir/compiler_depend.ts create mode 100644 src/build/challenge/CMakeFiles/uninstall.dir/progress.make create mode 100644 src/build/challenge/CTestConfiguration.ini create mode 100644 src/build/challenge/CTestCustom.cmake create mode 100644 src/build/challenge/CTestTestfile.cmake create mode 100644 src/build/challenge/Makefile create mode 100644 src/build/challenge/ament_cmake_core/challengeConfig-version.cmake create mode 100644 src/build/challenge/ament_cmake_core/challengeConfig.cmake create mode 100644 src/build/challenge/ament_cmake_core/package.cmake create mode 100644 src/build/challenge/ament_cmake_core/stamps/ament_prefix_path.sh.stamp create mode 100644 src/build/challenge/ament_cmake_core/stamps/nameConfig-version.cmake.in.stamp create mode 100644 src/build/challenge/ament_cmake_core/stamps/nameConfig.cmake.in.stamp create mode 100644 src/build/challenge/ament_cmake_core/stamps/package.xml.stamp create mode 100644 src/build/challenge/ament_cmake_core/stamps/package_xml_2_cmake.py.stamp create mode 100644 src/build/challenge/ament_cmake_core/stamps/path.sh.stamp create mode 100644 src/build/challenge/ament_cmake_core/stamps/templates_2_cmake.py.stamp create mode 100644 src/build/challenge/ament_cmake_environment_hooks/ament_prefix_path.dsv create mode 100644 src/build/challenge/ament_cmake_environment_hooks/local_setup.bash create mode 100644 src/build/challenge/ament_cmake_environment_hooks/local_setup.dsv create mode 100644 src/build/challenge/ament_cmake_environment_hooks/local_setup.sh create mode 100644 src/build/challenge/ament_cmake_environment_hooks/local_setup.zsh create mode 100644 src/build/challenge/ament_cmake_environment_hooks/package.dsv create mode 100644 src/build/challenge/ament_cmake_environment_hooks/path.dsv create mode 100644 src/build/challenge/ament_cmake_index/share/ament_index/resource_index/package_run_dependencies/challenge create mode 100644 src/build/challenge/ament_cmake_index/share/ament_index/resource_index/packages/challenge create mode 100644 src/build/challenge/ament_cmake_index/share/ament_index/resource_index/parent_prefix_path/challenge create mode 100644 src/build/challenge/ament_cmake_package_templates/templates.cmake create mode 100644 src/build/challenge/ament_cmake_uninstall_target/ament_cmake_uninstall_target.cmake create mode 100644 src/build/challenge/cmake_args.last create mode 100644 src/build/challenge/cmake_install.cmake create mode 100644 src/build/challenge/colcon_build.rc create mode 100644 src/build/challenge/colcon_command_prefix_build.sh create mode 100644 src/build/challenge/colcon_command_prefix_build.sh.env create mode 100644 src/challenge/CMakeLists.txt create mode 100644 src/challenge/package.xml create mode 100644 src/challenge/src/solution.cpp create mode 100644 src/install/.colcon_install_layout create mode 100644 src/install/COLCON_IGNORE create mode 100644 src/install/_local_setup_util_ps1.py create mode 100644 src/install/_local_setup_util_sh.py create mode 100644 src/install/challenge/share/challenge/package.bash create mode 100644 src/install/challenge/share/challenge/package.dsv create mode 100644 src/install/challenge/share/challenge/package.ps1 create mode 100644 src/install/challenge/share/challenge/package.sh create mode 100644 src/install/challenge/share/challenge/package.zsh create mode 100644 src/install/challenge/share/colcon-core/packages/challenge create mode 100644 src/install/local_setup.bash create mode 100644 src/install/local_setup.ps1 create mode 100644 src/install/local_setup.sh create mode 100644 src/install/local_setup.zsh create mode 100644 src/install/setup.bash create mode 100644 src/install/setup.ps1 create mode 100644 src/install/setup.sh create mode 100644 src/install/setup.zsh diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..13566b81 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 00000000..105ce2da --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..2224be5a --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..2babf0eb --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/software-start-here.iml b/.idea/software-start-here.iml new file mode 100644 index 00000000..d0876a78 --- /dev/null +++ b/.idea/software-start-here.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/software-start-here2.iml b/.idea/software-start-here2.iml new file mode 100644 index 00000000..4c942354 --- /dev/null +++ b/.idea/software-start-here2.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..35eb1ddf --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/install/.colcon_install_layout b/install/.colcon_install_layout new file mode 100644 index 00000000..3aad5336 --- /dev/null +++ b/install/.colcon_install_layout @@ -0,0 +1 @@ +isolated diff --git a/install/COLCON_IGNORE b/install/COLCON_IGNORE new file mode 100644 index 00000000..e69de29b diff --git a/install/_local_setup_util_ps1.py b/install/_local_setup_util_ps1.py new file mode 100644 index 00000000..3c6d9e87 --- /dev/null +++ b/install/_local_setup_util_ps1.py @@ -0,0 +1,407 @@ +# Copyright 2016-2019 Dirk Thomas +# Licensed under the Apache License, Version 2.0 + +import argparse +from collections import OrderedDict +import os +from pathlib import Path +import sys + + +FORMAT_STR_COMMENT_LINE = '# {comment}' +FORMAT_STR_SET_ENV_VAR = 'Set-Item -Path "Env:{name}" -Value "{value}"' +FORMAT_STR_USE_ENV_VAR = '$env:{name}' +FORMAT_STR_INVOKE_SCRIPT = '_colcon_prefix_powershell_source_script "{script_path}"' # noqa: E501 +FORMAT_STR_REMOVE_LEADING_SEPARATOR = '' # noqa: E501 +FORMAT_STR_REMOVE_TRAILING_SEPARATOR = '' # noqa: E501 + +DSV_TYPE_APPEND_NON_DUPLICATE = 'append-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE = 'prepend-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS = 'prepend-non-duplicate-if-exists' +DSV_TYPE_SET = 'set' +DSV_TYPE_SET_IF_UNSET = 'set-if-unset' +DSV_TYPE_SOURCE = 'source' + + +def main(argv=sys.argv[1:]): # noqa: D103 + parser = argparse.ArgumentParser( + description='Output shell commands for the packages in topological ' + 'order') + parser.add_argument( + 'primary_extension', + help='The file extension of the primary shell') + parser.add_argument( + 'additional_extension', nargs='?', + help='The additional file extension to be considered') + parser.add_argument( + '--merged-install', action='store_true', + help='All install prefixes are merged into a single location') + args = parser.parse_args(argv) + + packages = get_packages(Path(__file__).parent, args.merged_install) + + ordered_packages = order_packages(packages) + for pkg_name in ordered_packages: + if _include_comments(): + print( + FORMAT_STR_COMMENT_LINE.format_map( + {'comment': 'Package: ' + pkg_name})) + prefix = os.path.abspath(os.path.dirname(__file__)) + if not args.merged_install: + prefix = os.path.join(prefix, pkg_name) + for line in get_commands( + pkg_name, prefix, args.primary_extension, + args.additional_extension + ): + print(line) + + for line in _remove_ending_separators(): + print(line) + + +def get_packages(prefix_path, merged_install): + """ + Find packages based on colcon-specific files created during installation. + + :param Path prefix_path: The install prefix path of all packages + :param bool merged_install: The flag if the packages are all installed + directly in the prefix or if each package is installed in a subdirectory + named after the package + :returns: A mapping from the package name to the set of runtime + dependencies + :rtype: dict + """ + packages = {} + # since importing colcon_core isn't feasible here the following constant + # must match colcon_core.location.get_relative_package_index_path() + subdirectory = 'share/colcon-core/packages' + if merged_install: + # return if workspace is empty + if not (prefix_path / subdirectory).is_dir(): + return packages + # find all files in the subdirectory + for p in (prefix_path / subdirectory).iterdir(): + if not p.is_file(): + continue + if p.name.startswith('.'): + continue + add_package_runtime_dependencies(p, packages) + else: + # for each subdirectory look for the package specific file + for p in prefix_path.iterdir(): + if not p.is_dir(): + continue + if p.name.startswith('.'): + continue + p = p / subdirectory / p.name + if p.is_file(): + add_package_runtime_dependencies(p, packages) + + # remove unknown dependencies + pkg_names = set(packages.keys()) + for k in packages.keys(): + packages[k] = {d for d in packages[k] if d in pkg_names} + + return packages + + +def add_package_runtime_dependencies(path, packages): + """ + Check the path and if it exists extract the packages runtime dependencies. + + :param Path path: The resource file containing the runtime dependencies + :param dict packages: A mapping from package names to the sets of runtime + dependencies to add to + """ + content = path.read_text() + dependencies = set(content.split(os.pathsep) if content else []) + packages[path.name] = dependencies + + +def order_packages(packages): + """ + Order packages topologically. + + :param dict packages: A mapping from package name to the set of runtime + dependencies + :returns: The package names + :rtype: list + """ + # select packages with no dependencies in alphabetical order + to_be_ordered = list(packages.keys()) + ordered = [] + while to_be_ordered: + pkg_names_without_deps = [ + name for name in to_be_ordered if not packages[name]] + if not pkg_names_without_deps: + reduce_cycle_set(packages) + raise RuntimeError( + 'Circular dependency between: ' + ', '.join(sorted(packages))) + pkg_names_without_deps.sort() + pkg_name = pkg_names_without_deps[0] + to_be_ordered.remove(pkg_name) + ordered.append(pkg_name) + # remove item from dependency lists + for k in list(packages.keys()): + if pkg_name in packages[k]: + packages[k].remove(pkg_name) + return ordered + + +def reduce_cycle_set(packages): + """ + Reduce the set of packages to the ones part of the circular dependency. + + :param dict packages: A mapping from package name to the set of runtime + dependencies which is modified in place + """ + last_depended = None + while len(packages) > 0: + # get all remaining dependencies + depended = set() + for pkg_name, dependencies in packages.items(): + depended = depended.union(dependencies) + # remove all packages which are not dependent on + for name in list(packages.keys()): + if name not in depended: + del packages[name] + if last_depended: + # if remaining packages haven't changed return them + if last_depended == depended: + return packages.keys() + # otherwise reduce again + last_depended = depended + + +def _include_comments(): + # skipping comment lines when COLCON_TRACE is not set speeds up the + # processing especially on Windows + return bool(os.environ.get('COLCON_TRACE')) + + +def get_commands(pkg_name, prefix, primary_extension, additional_extension): + commands = [] + package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv') + if os.path.exists(package_dsv_path): + commands += process_dsv_file( + package_dsv_path, prefix, primary_extension, additional_extension) + return commands + + +def process_dsv_file( + dsv_path, prefix, primary_extension=None, additional_extension=None +): + commands = [] + if _include_comments(): + commands.append(FORMAT_STR_COMMENT_LINE.format_map({'comment': dsv_path})) + with open(dsv_path, 'r') as h: + content = h.read() + lines = content.splitlines() + + basenames = OrderedDict() + for i, line in enumerate(lines): + # skip over empty or whitespace-only lines + if not line.strip(): + continue + # skip over comments + if line.startswith('#'): + continue + try: + type_, remainder = line.split(';', 1) + except ValueError: + raise RuntimeError( + "Line %d in '%s' doesn't contain a semicolon separating the " + 'type from the arguments' % (i + 1, dsv_path)) + if type_ != DSV_TYPE_SOURCE: + # handle non-source lines + try: + commands += handle_dsv_types_except_source( + type_, remainder, prefix) + except RuntimeError as e: + raise RuntimeError( + "Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e + else: + # group remaining source lines by basename + path_without_ext, ext = os.path.splitext(remainder) + if path_without_ext not in basenames: + basenames[path_without_ext] = set() + assert ext.startswith('.') + ext = ext[1:] + if ext in (primary_extension, additional_extension): + basenames[path_without_ext].add(ext) + + # add the dsv extension to each basename if the file exists + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if os.path.exists(basename + '.dsv'): + extensions.add('dsv') + + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if 'dsv' in extensions: + # process dsv files recursively + commands += process_dsv_file( + basename + '.dsv', prefix, primary_extension=primary_extension, + additional_extension=additional_extension) + elif primary_extension in extensions and len(extensions) == 1: + # source primary-only files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + primary_extension})] + elif additional_extension in extensions: + # source non-primary files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + additional_extension})] + + return commands + + +def handle_dsv_types_except_source(type_, remainder, prefix): + commands = [] + if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET): + try: + env_name, value = remainder.split(';', 1) + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the value') + try_prefixed_value = os.path.join(prefix, value) if value else prefix + if os.path.exists(try_prefixed_value): + value = try_prefixed_value + if type_ == DSV_TYPE_SET: + commands += _set(env_name, value) + elif type_ == DSV_TYPE_SET_IF_UNSET: + commands += _set_if_unset(env_name, value) + else: + assert False + elif type_ in ( + DSV_TYPE_APPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS + ): + try: + env_name_and_values = remainder.split(';') + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the values') + env_name = env_name_and_values[0] + values = env_name_and_values[1:] + for value in values: + if not value: + value = prefix + elif not os.path.isabs(value): + value = os.path.join(prefix, value) + if ( + type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and + not os.path.exists(value) + ): + comment = f'skip extending {env_name} with not existing ' \ + f'path: {value}' + if _include_comments(): + commands.append( + FORMAT_STR_COMMENT_LINE.format_map({'comment': comment})) + elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE: + commands += _append_unique_value(env_name, value) + else: + commands += _prepend_unique_value(env_name, value) + else: + raise RuntimeError( + 'contains an unknown environment hook type: ' + type_) + return commands + + +env_state = {} + + +def _append_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # append even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional leading separator + extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': extend + value}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +def _prepend_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # prepend even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional trailing separator + extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value + extend}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +# generate commands for removing prepended underscores +def _remove_ending_separators(): + # do nothing if the shell extension does not implement the logic + if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None: + return [] + + global env_state + commands = [] + for name in env_state: + # skip variables that already had values before this script started prepending + if name in os.environ: + continue + commands += [ + FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}), + FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})] + return commands + + +def _set(name, value): + global env_state + env_state[name] = value + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + return [line] + + +def _set_if_unset(name, value): + global env_state + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + if env_state.get(name, os.environ.get(name)): + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +if __name__ == '__main__': # pragma: no cover + try: + rc = main() + except RuntimeError as e: + print(str(e), file=sys.stderr) + rc = 1 + sys.exit(rc) diff --git a/install/_local_setup_util_sh.py b/install/_local_setup_util_sh.py new file mode 100644 index 00000000..f67eaa98 --- /dev/null +++ b/install/_local_setup_util_sh.py @@ -0,0 +1,407 @@ +# Copyright 2016-2019 Dirk Thomas +# Licensed under the Apache License, Version 2.0 + +import argparse +from collections import OrderedDict +import os +from pathlib import Path +import sys + + +FORMAT_STR_COMMENT_LINE = '# {comment}' +FORMAT_STR_SET_ENV_VAR = 'export {name}="{value}"' +FORMAT_STR_USE_ENV_VAR = '${name}' +FORMAT_STR_INVOKE_SCRIPT = 'COLCON_CURRENT_PREFIX="{prefix}" _colcon_prefix_sh_source_script "{script_path}"' # noqa: E501 +FORMAT_STR_REMOVE_LEADING_SEPARATOR = 'if [ "$(echo -n ${name} | head -c 1)" = ":" ]; then export {name}=${{{name}#?}} ; fi' # noqa: E501 +FORMAT_STR_REMOVE_TRAILING_SEPARATOR = 'if [ "$(echo -n ${name} | tail -c 1)" = ":" ]; then export {name}=${{{name}%?}} ; fi' # noqa: E501 + +DSV_TYPE_APPEND_NON_DUPLICATE = 'append-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE = 'prepend-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS = 'prepend-non-duplicate-if-exists' +DSV_TYPE_SET = 'set' +DSV_TYPE_SET_IF_UNSET = 'set-if-unset' +DSV_TYPE_SOURCE = 'source' + + +def main(argv=sys.argv[1:]): # noqa: D103 + parser = argparse.ArgumentParser( + description='Output shell commands for the packages in topological ' + 'order') + parser.add_argument( + 'primary_extension', + help='The file extension of the primary shell') + parser.add_argument( + 'additional_extension', nargs='?', + help='The additional file extension to be considered') + parser.add_argument( + '--merged-install', action='store_true', + help='All install prefixes are merged into a single location') + args = parser.parse_args(argv) + + packages = get_packages(Path(__file__).parent, args.merged_install) + + ordered_packages = order_packages(packages) + for pkg_name in ordered_packages: + if _include_comments(): + print( + FORMAT_STR_COMMENT_LINE.format_map( + {'comment': 'Package: ' + pkg_name})) + prefix = os.path.abspath(os.path.dirname(__file__)) + if not args.merged_install: + prefix = os.path.join(prefix, pkg_name) + for line in get_commands( + pkg_name, prefix, args.primary_extension, + args.additional_extension + ): + print(line) + + for line in _remove_ending_separators(): + print(line) + + +def get_packages(prefix_path, merged_install): + """ + Find packages based on colcon-specific files created during installation. + + :param Path prefix_path: The install prefix path of all packages + :param bool merged_install: The flag if the packages are all installed + directly in the prefix or if each package is installed in a subdirectory + named after the package + :returns: A mapping from the package name to the set of runtime + dependencies + :rtype: dict + """ + packages = {} + # since importing colcon_core isn't feasible here the following constant + # must match colcon_core.location.get_relative_package_index_path() + subdirectory = 'share/colcon-core/packages' + if merged_install: + # return if workspace is empty + if not (prefix_path / subdirectory).is_dir(): + return packages + # find all files in the subdirectory + for p in (prefix_path / subdirectory).iterdir(): + if not p.is_file(): + continue + if p.name.startswith('.'): + continue + add_package_runtime_dependencies(p, packages) + else: + # for each subdirectory look for the package specific file + for p in prefix_path.iterdir(): + if not p.is_dir(): + continue + if p.name.startswith('.'): + continue + p = p / subdirectory / p.name + if p.is_file(): + add_package_runtime_dependencies(p, packages) + + # remove unknown dependencies + pkg_names = set(packages.keys()) + for k in packages.keys(): + packages[k] = {d for d in packages[k] if d in pkg_names} + + return packages + + +def add_package_runtime_dependencies(path, packages): + """ + Check the path and if it exists extract the packages runtime dependencies. + + :param Path path: The resource file containing the runtime dependencies + :param dict packages: A mapping from package names to the sets of runtime + dependencies to add to + """ + content = path.read_text() + dependencies = set(content.split(os.pathsep) if content else []) + packages[path.name] = dependencies + + +def order_packages(packages): + """ + Order packages topologically. + + :param dict packages: A mapping from package name to the set of runtime + dependencies + :returns: The package names + :rtype: list + """ + # select packages with no dependencies in alphabetical order + to_be_ordered = list(packages.keys()) + ordered = [] + while to_be_ordered: + pkg_names_without_deps = [ + name for name in to_be_ordered if not packages[name]] + if not pkg_names_without_deps: + reduce_cycle_set(packages) + raise RuntimeError( + 'Circular dependency between: ' + ', '.join(sorted(packages))) + pkg_names_without_deps.sort() + pkg_name = pkg_names_without_deps[0] + to_be_ordered.remove(pkg_name) + ordered.append(pkg_name) + # remove item from dependency lists + for k in list(packages.keys()): + if pkg_name in packages[k]: + packages[k].remove(pkg_name) + return ordered + + +def reduce_cycle_set(packages): + """ + Reduce the set of packages to the ones part of the circular dependency. + + :param dict packages: A mapping from package name to the set of runtime + dependencies which is modified in place + """ + last_depended = None + while len(packages) > 0: + # get all remaining dependencies + depended = set() + for pkg_name, dependencies in packages.items(): + depended = depended.union(dependencies) + # remove all packages which are not dependent on + for name in list(packages.keys()): + if name not in depended: + del packages[name] + if last_depended: + # if remaining packages haven't changed return them + if last_depended == depended: + return packages.keys() + # otherwise reduce again + last_depended = depended + + +def _include_comments(): + # skipping comment lines when COLCON_TRACE is not set speeds up the + # processing especially on Windows + return bool(os.environ.get('COLCON_TRACE')) + + +def get_commands(pkg_name, prefix, primary_extension, additional_extension): + commands = [] + package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv') + if os.path.exists(package_dsv_path): + commands += process_dsv_file( + package_dsv_path, prefix, primary_extension, additional_extension) + return commands + + +def process_dsv_file( + dsv_path, prefix, primary_extension=None, additional_extension=None +): + commands = [] + if _include_comments(): + commands.append(FORMAT_STR_COMMENT_LINE.format_map({'comment': dsv_path})) + with open(dsv_path, 'r') as h: + content = h.read() + lines = content.splitlines() + + basenames = OrderedDict() + for i, line in enumerate(lines): + # skip over empty or whitespace-only lines + if not line.strip(): + continue + # skip over comments + if line.startswith('#'): + continue + try: + type_, remainder = line.split(';', 1) + except ValueError: + raise RuntimeError( + "Line %d in '%s' doesn't contain a semicolon separating the " + 'type from the arguments' % (i + 1, dsv_path)) + if type_ != DSV_TYPE_SOURCE: + # handle non-source lines + try: + commands += handle_dsv_types_except_source( + type_, remainder, prefix) + except RuntimeError as e: + raise RuntimeError( + "Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e + else: + # group remaining source lines by basename + path_without_ext, ext = os.path.splitext(remainder) + if path_without_ext not in basenames: + basenames[path_without_ext] = set() + assert ext.startswith('.') + ext = ext[1:] + if ext in (primary_extension, additional_extension): + basenames[path_without_ext].add(ext) + + # add the dsv extension to each basename if the file exists + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if os.path.exists(basename + '.dsv'): + extensions.add('dsv') + + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if 'dsv' in extensions: + # process dsv files recursively + commands += process_dsv_file( + basename + '.dsv', prefix, primary_extension=primary_extension, + additional_extension=additional_extension) + elif primary_extension in extensions and len(extensions) == 1: + # source primary-only files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + primary_extension})] + elif additional_extension in extensions: + # source non-primary files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + additional_extension})] + + return commands + + +def handle_dsv_types_except_source(type_, remainder, prefix): + commands = [] + if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET): + try: + env_name, value = remainder.split(';', 1) + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the value') + try_prefixed_value = os.path.join(prefix, value) if value else prefix + if os.path.exists(try_prefixed_value): + value = try_prefixed_value + if type_ == DSV_TYPE_SET: + commands += _set(env_name, value) + elif type_ == DSV_TYPE_SET_IF_UNSET: + commands += _set_if_unset(env_name, value) + else: + assert False + elif type_ in ( + DSV_TYPE_APPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS + ): + try: + env_name_and_values = remainder.split(';') + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the values') + env_name = env_name_and_values[0] + values = env_name_and_values[1:] + for value in values: + if not value: + value = prefix + elif not os.path.isabs(value): + value = os.path.join(prefix, value) + if ( + type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and + not os.path.exists(value) + ): + comment = f'skip extending {env_name} with not existing ' \ + f'path: {value}' + if _include_comments(): + commands.append( + FORMAT_STR_COMMENT_LINE.format_map({'comment': comment})) + elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE: + commands += _append_unique_value(env_name, value) + else: + commands += _prepend_unique_value(env_name, value) + else: + raise RuntimeError( + 'contains an unknown environment hook type: ' + type_) + return commands + + +env_state = {} + + +def _append_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # append even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional leading separator + extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': extend + value}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +def _prepend_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # prepend even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional trailing separator + extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value + extend}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +# generate commands for removing prepended underscores +def _remove_ending_separators(): + # do nothing if the shell extension does not implement the logic + if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None: + return [] + + global env_state + commands = [] + for name in env_state: + # skip variables that already had values before this script started prepending + if name in os.environ: + continue + commands += [ + FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}), + FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})] + return commands + + +def _set(name, value): + global env_state + env_state[name] = value + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + return [line] + + +def _set_if_unset(name, value): + global env_state + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + if env_state.get(name, os.environ.get(name)): + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +if __name__ == '__main__': # pragma: no cover + try: + rc = main() + except RuntimeError as e: + print(str(e), file=sys.stderr) + rc = 1 + sys.exit(rc) diff --git a/install/build/.built_by b/install/build/.built_by new file mode 100644 index 00000000..06e74acb --- /dev/null +++ b/install/build/.built_by @@ -0,0 +1 @@ +colcon diff --git a/install/build/COLCON_IGNORE b/install/build/COLCON_IGNORE new file mode 100644 index 00000000..e69de29b diff --git a/install/challenge/lib/challenge/my_first_node b/install/challenge/lib/challenge/my_first_node new file mode 100755 index 0000000000000000000000000000000000000000..5120700dcf1aa2756d097f7e123d0517fe435432 GIT binary patch literal 82584 zcmeHw4}4U`wf{{Z8ZAmxRH~>^(WWXfn*<1m8idsi1c)TjsOV*r-H?_1b9WQKrxiu} zh>@1I+EO2{#nxJCtx_LaN~y*_HPosvt+u5~ZQ6%+Db%LaXH!ef?|Wv>+&eqjyZIx$ z&*%5~a5bDe=ggd$IdkUBnKSq9y~AIAWoAak7>lnl)@4=(?z^T+L@DEIW)fCjrB;b` zoKI~a?K{3#Q79dwG*UrURO!3q$p_R$TXG9 zqT2$QHsS3h60e|MPSn@RrqMHwLKZuh{jmf28OB}iHpijd`#w_ zxFZ>svOE=3@}xG>UkS_8gl4zRat&P0gmY!}mV#6VU6t>|L!+s$g3A@OOFkyN=xB*o zP}O%e%8^`#d*yJ(#ay4)IOMVX6;yh5abu)*TJgn=p(%}#=C+knR+dbgGOaj2){%e3N0vYJw>_fWxkYno2(TK?$nOReQk zQyywJm7zRz5kDSskv;+cPG=m6YW0LttMWh3KPMwEqp;Vq<^Uz=tj?6QW{Q6;>k`0O ze19q6W%#=se^=m-3eLsfRrs6w#Y^wr^gktQf4ewm&y=4{|ND#sos-VKXW_=4XTw5twMqO$ z39J)Ey`0d%7H)qpw^QZ6S>R8!dYR9uT&4qhOZ+YN3od5--Q2Hnyok}7MOVTDU(Nju zbct+YEv37AQ13(FpTqSkdG6qPS2Mm?7PG8ncC@Z79%+o(jV;TTMVgn{k>*G|5^Rjz z8V*_BG>5b-9Jj;KXiLQLH_M}v`gtgOyo8N@$+QOfrDh{vMVc%-E{=GS;95$5>( zz8Om3jwtMymS41GZlS*&xT>`Sp-(%7K__SK9H2zuiC8=5Y~YHjT!t zuB8pl4cQoqa9R1n85sEHHZeYhc6m$Pa=W#qF;ch6U+5RYp|SSa3);}bVHQ!%EsnKD zQprmUhhXmHq{-utRLrlKUq=dqq1WW#2coc`GP0~W*cb>lhZ@6CO)13ajjVy9$S7o? znw!+Rbow`6pA5bNnzV9Si-8@*#PAhiVC!01SJ^aeV*ZLcNUU-?rYot!NT=C!8`dBg z4}#6;7?5Jvb-~tPT_nEB-vlP1#)@`=3&lic4IV|)e1*gr^FAJJtBaSRmwtbHm0ek4 zSH=qqUEfQ)4g|v*W8; z!!X?SEu`tta}eSU(Uuk95Rzt9n2hA&g7dYaADp7q4=Z}0SrwXGgibFspN&SdMgRAW3@Cv&z z+`KH_Fxn~{Z4nIQ_)44Fyh0ASA$`@Ik@sc>4SqBnjEDV;o4{MhF&Y+QBcwHARsR^8 zScJyVaw?@Kw0txQT>v(rNUXIb7N%hmT?#jcl&Xwo{=yn8fI+DXHp*#C10xm$)?(Ni zEVjbSzyund;4l$qlYe11MBq4JNGo8WD~n)ps+(6t(Ei2YSX)z=J5(Pbt-h6#h>(y@ zk~h&5j5J%A$#qSwoDUvwnRQ65hZ2mu4$=ab zJ!B-kB}9%akq|y5ry!QP3ooRg(ljD2tAji#<)c)c#9uXMj$M>rU|m&ScEudKFu$nK zxh;0?irm}6{HfNQnwr^Hl-a)gqWl>$PfZP&6z3NjNuQQg�W>k-|*)+Zl*gjX^9j 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 EA2O;;A^-pY literal 0 HcmV?d00001 diff --git a/install/challenge/lib/challenge/solution b/install/challenge/lib/challenge/solution new file mode 100755 index 0000000000000000000000000000000000000000..b56bd01ae4ac01f834125e34528cc9a562d35064 GIT binary patch literal 82576 zcmeHw4R}?>wf0URii!{sHC5E$U*iukCkYS`H3$b!AV4IEriyM(k^?!KKhHS{fvYVQ zZHWW@3TMWFI|wHmNv%XYm9Z3m4^GS=@L=Q__EoAl~=J< zWSwjkTT`uU>o}ms;;&ee2Eo1QlAz!?&PNqexh$^Pgi|=5f~t0cRL<)v%9a!btxTDw zav5}+C(|apvq<6<)XRzbnz@_-pSV=w71Ya-Z1z4P>3er2!Ya`i%i7FPl_POcxva-z z{;b`Ju$bkkppqxGk^YKUo+dQAZI-L!aweQFtG5)SI_N5YJ61cI`pURmUaRC|!pn}A zcm-8`*P$HAWw=)+XI#ehd5uF3%U?mIXP4K9t7jBmUSB({KHS*SHm$8_#|Ul%0n0N;~^L6Q}FLh#*wJjO)j>|zj@JlX*p^6y_Pi(C_!g+rld7n{A*cP z0M6n2D*>;<-_`iL27gp=KK`!7-}EnEdH2@;F52+>WtneH`>&ZF&N|dFW$Hakww%0X z`NHpgnEUsh(5nsaET|ki2VgS^fUUkG=fyn&Rxb|9IvzdXvG? zy#_FdliZ|p_b@u041X?iB*Xs#f=`B@?7{yg5B#+!Bk8a^CHe0>zJony#A~8>@aAA@BgvLrrZYW zTWAmQ=~^W5TP3iT0Dp=##ahuN5g2Z9rJpGC-@j0%eOxaA%3s_i@r<_q3pZ0?A-Y;5 zK1%{?lBkyx8raV5@8x!?{I?4HB&(PCoWW( z-$0khCe~8Ay9f0?2>zK|uaf6(u6G^d3uQ6OT4hIST4Le)s9oQ*YE`&#l^t#j$HKw- z@Y+zV}V{4@(w}qBN&R<;iw&I3|7~NYVDOx5hoWFuMMpXw$#V$ zV10d4O)#cWBcZ5b@00*P%Py%{jAD_{s&F(Gic~C~SKrhasv!23ZLex*YD8;-k(h1E ztjROpSW!|Q^Ubo$o9%|+Z6P~a7mT2Ju^=kAamkEGO?^#sbK#Pv+R(gw|FT6(%40Ka zyQZzp=kw)P2czK{?s7>D*!XHt+Kxqn;aIe!#$O)9KYmfl_W6j%(&kvWsWIx;cqb6% z`TV|FO5lzt?5LJsv}Jz2zZJNOl7to#+lum`yHgacYl+o1t#0%qZyxu!ITk5dQf|+j z*VGsbwZ&w!N8VYjr9NK?)QG!0-zQsKu3DVXZ)*9CkZsa|m~NNbv9Q0@Ki%eW5o0!k z#;m5P1Wb_AlO)2ABt#7Ax3Xx4HQL2 zAq&;qgx00fzeW0F@a55@mD5@b>?kINuK)vE)6~4irfC!Pm(@UGAgjijqX*D?1O0z0VMq=@Nu!@G0aKIc2+SRbFjgU#KrVb{RFwHHI zklh-N#9D&&WM$jh?B-A;+5~Ne)a=$gM_f=Ps&C1nkq_l`VN^wN2&gEbACX9Kjolbp zZP$kySHDPMTj6D30*y{^n22-9zp(4Va2znCWw6lY1+X}kjjO|G|FTfDr6I%}S{Wv-UQ0rbusYS$ z-Da;0hB1}I>Q`tlXlbk=7eP#Wcbt7AHSoUakml-8@HRUVst;jtR7Too)*-bXN-**| zNDEx{kdgG35IM3$Lim)Nf>>%Uy_AAVGl;mV2J)nok5V-ff9Kt{EfvOrPC18JRYeu@s|dg#HLx}1TJ0VJwfEp;4)(bOtVfxc`7OYBYwnL)z9rE|H@mF@ynv*Q>YzK}mYSHJIUWW7!zVtQh1W&ZS#JI`f@X3~S zg0+RyI|ThW>${w8IWvqMM~3wuNYh2_sb(6b*Zlkm)Hlw0nsICTzmA>A@z%?nzFnlp zTEFG=FQ2##JHjzmoYS$3zl<$gy7f1t=~8iIwU666L*jcmzO3-4&64=IfnUM-`wje7 z-ltg%6`$4`$!DB_-@*7y1OFD|vkd%2wUSS^f#1paJQL69A_E_*mVAm0{6mZ{Gw?l} zt}^hy;QT8L`~q%&vw`pBbfD!)o+8u*=2nJ>%0cQJkgw};{e`7*2cce4k6tA;-h zIn};=rw3likNE5P_h|Vk&aSQ=4Np@@@$dJ*EBO(BJ%7)$k|T_Rh?&b2=A(w6ppbyQ z8vYUuAJ_0I#zEvh4PT(;@7M4=bp|YIv$!U7IyL$y!}oH9WOR zUE4Ig(p{o$*YGgV&b3p+!!SEnmxdqjU@dEphQ~tSTs<0oqJxD#Xn3V-MDEq_dfYs& z;q~}?pN2nGj}x`bPYdF!>d>ukux>Cip>!|OT&MP5PW58_%js}Fh|3m zrQ!25{1gpeq~Xuj@WmSb91S1P@aJmyG7X=t;j1+KR1LpE!=JC=>ooiY8opV>U#Q{R zH2g&xew~K@w1(fH;V;(kof`g94Zm5#U#8)=YWQgyew&8R)$rRje4d8iso{MZzDvV9 zF;LL=X!z+`{$sbtBydau$0Tq}0>>n9OajLwa7+TnBydau$0Tq}0>>n9OalM^NZ@Z1 z&-o~@{@}PkN5*ge)v^Njbj8vKdIIZT9QT6g#K82~_gmJXfeWtyn0T&5`Rj;sX#XDu z1_nAsngWD}_W#^TQ(*AW{^y)D1q2W6{|_fkfxtuiA9T_b06et+OHP^se~0#e-bqtX z>(Kt&oiqjd4($&*X$tTi+JBvsroio?{d1i(1^N!{_c>__@EzJe)k#xe@6i5Job&{d zPIJ-};5)ScuOF-aQeY4LchVHlL;syL1@h2;Crtr7^xsKSfExXG(iF%;|D7}i@X&uJ zO@TY~-$_%z4*hr16sSZ0oiqjL(0?aQfjRWwNmD=${ddw7h(rIKGzH)e?N4*k=Zf@S z|Ec<)Ez*B*(iCVz|D7}i=FxvAO#wIb-$_%T4gGi06ktRDoiqj3(0?aQ0X6jBNmIZZ z{ddw7SVRAvGzHwze3`mv*q{F~(tk11ZyV{~8|hye>7N6?vorIB82r2R(vN+UhpNKZ4;7aHlajr3_o z`eZ%r`%6jt&u9m_s)~TP$?_Uif-BhAndEoO0_kczF({q3gv_F{#P#fqNdm&kcK)XNg z>k4eVr&$oY<8v_S0~`HYX^k6b=^SX;FwnAY;K??S2cA@!KBP?RU(5?^tlS#t5F9)1 zA@)B4ORK#*{slBqaKZf};{Kj8u3#yQePH8PMRMakD+Kn}0pxpL5E#=P|D`M@GjzwZ zPoiS?EM+b~5zYLnNK$Jzo_sz|?*i?w5~ob8SIA36#pw^>9v9rv+=MzG7i^q5>7i=X z?DhYkE;to#LUVphy#r2lC2%4-yEo8L8LtgoI$6kb;@z8&XFrBsSjs^A3yR;ji63&K zE&bp{!y~9p}B>*KVu>89VW> z<+c-jnSX_4X)RfQFdMbT!7Yv{(J%7f-4&Z45#8}LNc6zTDs{u(6T0oRSvD<`EW4D9%SMvi;QhT8@l5;=&g`qMkiy&!wv|{`mQ#T z?GBQy9K|w9(;FU~E~4~hZaRz7FMp7F4Bk)GE|k9p^?SA(^u{6RT|>|hlAG+UshEdS z6Gb0!|Iz=X$PfDSL)3RY%$R3=C_iHe`su0Y>${2*+Pl6>w7(O2uG&v4b*lRB9-{qU zgDLYYzrIW80L@(12~qz;;Hm20^?r)-j@Et4;SgU(Jvxq7MyYkpl>PxN2AVB-*BHgQ z7365FAZ>1cdh>^aU5t)z5;m~$p6vv{@fTo%7L&sNnP^3V`(z#G}UShiA z?_sTbhBn~T+Kz1|25GeQmuX)4b|kCHI=yUr7rvnc)NU5{za(bz`29* z1%!7TE;abw@eI_<3@-u0&Hx+-IDyisj%CEZD(VmQ-86T3f|ntE8*LuVzyNv9ZZtRL zn#?QJA&6!~JjlP|Hgs5l%~}gJ&uijSh zweO{{XXp-`uZf~}xJUNiA~*)&D95)PwkCka?}0no6=<*Asds|5LLE2nL1~b?T-g;!>w&9DGY&pvFZzzZ#o$QX#Kxo& z=JCKeO3S#G$z*w@ZoWyp4NY1kaOAru_w7*seDVO$KpN7H0J+P6z=%3$5s@&+_=Hpx zB@5wsa%N$(635upRTRwz8&`^s$ICu_phGyU?6*?o#wZM+=h`T!nl;T+em^&L4(jvN z>5ej4UB|dUdr#ovJ=k1lI0BIUmz_UO>wLu!e$iyg>m|h#G)BKPq-eDKydh@vL9s@9 zjMg8B$RfB=o806(=8 z?=rw0C7(1l4Ox1yJnil9Z*TYSKx%J?)s6*@ZZbRkJFrsYwjH-S4@}|Ay(07Oj>_FY z^!81BF0;L-bA5jr+yZiQAEp(LYKGlk-v!f5)_EHwKJW{1v%YIQYK(XLsoB(^fmmXL z;vn~7F>Uw1hys1opgrOSt$0y1sE-=7M>L2s_lwN0bX2~AZ2d-qVrPh2MPst`#u)Rg z7!spu_Mp++z`fkSTaq_$Z@Yh=XcrpTD{j!LeQpDL^#&sITOE~eAzRW0qGpm7H*k-T zRx+)iQQs(+@4awkh@GZOzXVG23}^-v(F}lhgHf*BGswH4!S9Z@p%|3m6maVaT;bn? zfDXAW94G^2B0TiJewwCXcl_VqAq}r2QK7I<;p-tM3i^(vOnj8meC{g_ z6p|evHk(0JET^Dwd?x;p#24Z>i8@4e%|tsOnv^(q**{M3PO>4^ei6fLuZ)Wk5c5?u zXB7@)lZ~Co(H)O~>{=;J>&D4xv5#brX%WBOofcE6cXC?n)0C}ODcgZhaRy8UWN3ZoydLAl+=GW&A!XPdr>wI3lL8m_h_f0P8A0tR%LeQZJl8uW@FA9t@#zv>2@whh z`w>x=2CF;XBdc_6_o$`cKNP1?b3Sry+&NSmhplVBJ7Sz(NWzK6Z`fM5Lo#r*R`

M_QLoHk{7X4&aBOrOh6giS5 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 + else + AMENT_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" + fi +fi + +# function to append values to environment variables +# using colons as separators and avoiding leading separators +ament_append_value() { + # arguments + _listname="$1" + _value="$2" + #echo "listname $_listname" + #eval echo "list value \$$_listname" + #echo "value $_value" + + # avoid leading separator + eval _values=\"\$$_listname\" + if [ -z "$_values" ]; then + eval export $_listname=\"$_value\" + #eval echo "set list \$$_listname" + else + # field separator must not be a colon + _ament_append_value_IFS=$IFS + unset IFS + eval export $_listname=\"\$$_listname:$_value\" + #eval echo "append list \$$_listname" + IFS=$_ament_append_value_IFS + unset _ament_append_value_IFS + fi + unset _values + + unset _value + unset _listname +} + +# function to append non-duplicate values to environment variables +# using colons as separators and avoiding leading separators +ament_append_unique_value() { + # arguments + _listname=$1 + _value=$2 + #echo "listname $_listname" + #eval echo "list value \$$_listname" + #echo "value $_value" + + # check if the list contains the value + eval _values=\$$_listname + _duplicate= + _ament_append_unique_value_IFS=$IFS + IFS=":" + if [ "$AMENT_SHELL" = "zsh" ]; then + ament_zsh_to_array _values + fi + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + if [ $_item = $_value ]; then + _duplicate=1 + fi + done + unset _item + + # append only non-duplicates + if [ -z "$_duplicate" ]; then + # avoid leading separator + if [ -z "$_values" ]; then + eval $_listname=\"$_value\" + #eval echo "set list \$$_listname" + else + # field separator must not be a colon + unset IFS + eval $_listname=\"\$$_listname:$_value\" + #eval echo "append list \$$_listname" + fi + fi + IFS=$_ament_append_unique_value_IFS + unset _ament_append_unique_value_IFS + unset _duplicate + unset _values + + unset _value + unset _listname +} + +# function to prepend non-duplicate values to environment variables +# using colons as separators and avoiding trailing separators +ament_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + #echo "listname $_listname" + #eval echo "list value \$$_listname" + #echo "value $_value" + + # check if the list contains the value + eval _values=\"\$$_listname\" + _duplicate= + _ament_prepend_unique_value_IFS=$IFS + IFS=":" + if [ "$AMENT_SHELL" = "zsh" ]; then + ament_zsh_to_array _values + fi + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + if [ "$_item" = "$_value" ]; then + _duplicate=1 + fi + done + unset _item + + # prepend only non-duplicates + if [ -z "$_duplicate" ]; then + # avoid trailing separator + if [ -z "$_values" ]; then + eval export $_listname=\"$_value\" + #eval echo "set list \$$_listname" + else + # field separator must not be a colon + unset IFS + eval export $_listname=\"$_value:\$$_listname\" + #eval echo "prepend list \$$_listname" + fi + fi + IFS=$_ament_prepend_unique_value_IFS + unset _ament_prepend_unique_value_IFS + unset _duplicate + unset _values + + unset _value + unset _listname +} + +# unset AMENT_ENVIRONMENT_HOOKS +# if not appending to them for return +if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then + unset AMENT_ENVIRONMENT_HOOKS +fi + +# list all environment hooks of this package +ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/challenge/environment/ament_prefix_path.sh" +ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/challenge/environment/path.sh" + +# source all shell-specific environment hooks of this package +# if not returning them +if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then + _package_local_setup_IFS=$IFS + IFS=":" + if [ "$AMENT_SHELL" = "zsh" ]; then + ament_zsh_to_array AMENT_ENVIRONMENT_HOOKS + fi + for _hook in $AMENT_ENVIRONMENT_HOOKS; do + if [ -f "$_hook" ]; then + # restore IFS before sourcing other files + IFS=$_package_local_setup_IFS + # trace output + if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then + echo "# . \"$_hook\"" + fi + . "$_hook" + fi + done + unset _hook + IFS=$_package_local_setup_IFS + unset _package_local_setup_IFS + unset AMENT_ENVIRONMENT_HOOKS +fi + +# reset AMENT_CURRENT_PREFIX after each package +# allowing to source multiple package-level setup files +unset AMENT_CURRENT_PREFIX diff --git a/install/challenge/share/challenge/local_setup.zsh b/install/challenge/share/challenge/local_setup.zsh new file mode 100644 index 00000000..fe161be5 --- /dev/null +++ b/install/challenge/share/challenge/local_setup.zsh @@ -0,0 +1,59 @@ +# generated from ament_package/template/package_level/local_setup.zsh.in + +AMENT_SHELL=zsh + +# source local_setup.sh from same directory as this file +_this_path=$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd) +# provide AMENT_CURRENT_PREFIX to shell script +AMENT_CURRENT_PREFIX=$(builtin cd -q "`dirname "${(%):-%N}"`/../.." > /dev/null && pwd) +# store AMENT_CURRENT_PREFIX to restore it before each environment hook +_package_local_setup_AMENT_CURRENT_PREFIX=$AMENT_CURRENT_PREFIX + +# function to convert array-like strings into arrays +# to wordaround SH_WORD_SPLIT not being set +ament_zsh_to_array() { + local _listname=$1 + local _dollar="$" + local _split="{=" + local _to_array="(\"$_dollar$_split$_listname}\")" + eval $_listname=$_to_array +} + +# trace output +if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then + echo "# . \"$_this_path/local_setup.sh\"" +fi +# the package-level local_setup file unsets AMENT_CURRENT_PREFIX +. "$_this_path/local_setup.sh" +unset _this_path + +# unset AMENT_ENVIRONMENT_HOOKS +# if not appending to them for return +if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then + unset AMENT_ENVIRONMENT_HOOKS +fi + +# restore AMENT_CURRENT_PREFIX before evaluating the environment hooks +AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX +# list all environment hooks of this package + +# source all shell-specific environment hooks of this package +# if not returning them +if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then + _package_local_setup_IFS=$IFS + IFS=":" + for _hook in $AMENT_ENVIRONMENT_HOOKS; do + # restore AMENT_CURRENT_PREFIX for each environment hook + AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX + # restore IFS before sourcing other files + IFS=$_package_local_setup_IFS + . "$_hook" + done + unset _hook + IFS=$_package_local_setup_IFS + unset _package_local_setup_IFS + unset AMENT_ENVIRONMENT_HOOKS +fi + +unset _package_local_setup_AMENT_CURRENT_PREFIX +unset AMENT_CURRENT_PREFIX diff --git a/install/challenge/share/challenge/package.bash b/install/challenge/share/challenge/package.bash new file mode 100644 index 00000000..a2552899 --- /dev/null +++ b/install/challenge/share/challenge/package.bash @@ -0,0 +1,39 @@ +# generated from colcon_bash/shell/template/package.bash.em + +# This script extends the environment for this package. + +# a bash script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + # the prefix is two levels up from the package specific share directory + _colcon_package_bash_COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." > /dev/null && pwd)" +else + _colcon_package_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +_colcon_package_bash_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$@" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source sh script of this package +_colcon_package_bash_source_script "$_colcon_package_bash_COLCON_CURRENT_PREFIX/share/challenge/package.sh" + +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced scripts +COLCON_CURRENT_PREFIX="$_colcon_package_bash_COLCON_CURRENT_PREFIX" + +# source bash hooks +_colcon_package_bash_source_script "$COLCON_CURRENT_PREFIX/share/challenge/local_setup.bash" + +unset COLCON_CURRENT_PREFIX + +unset _colcon_package_bash_source_script +unset _colcon_package_bash_COLCON_CURRENT_PREFIX diff --git a/install/challenge/share/challenge/package.dsv b/install/challenge/share/challenge/package.dsv new file mode 100644 index 00000000..e54d1991 --- /dev/null +++ b/install/challenge/share/challenge/package.dsv @@ -0,0 +1,8 @@ +source;share/challenge/hook/cmake_prefix_path.ps1 +source;share/challenge/hook/cmake_prefix_path.dsv +source;share/challenge/hook/cmake_prefix_path.sh +source;share/challenge/local_setup.bash +source;share/challenge/local_setup.dsv +source;share/challenge/local_setup.ps1 +source;share/challenge/local_setup.sh +source;share/challenge/local_setup.zsh diff --git a/install/challenge/share/challenge/package.ps1 b/install/challenge/share/challenge/package.ps1 new file mode 100644 index 00000000..231b641d --- /dev/null +++ b/install/challenge/share/challenge/package.ps1 @@ -0,0 +1,116 @@ +# generated from colcon_powershell/shell/template/package.ps1.em + +# function to append a value to a variable +# which uses colons as separators +# duplicates as well as leading separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +function colcon_append_unique_value { + param ( + $_listname, + $_value + ) + + # get values from variable + if (Test-Path Env:$_listname) { + $_values=(Get-Item env:$_listname).Value + } else { + $_values="" + } + $_duplicate="" + # start with no values + $_all_values="" + # iterate over existing values in the variable + if ($_values) { + $_values.Split(";") | ForEach { + # not an empty string + if ($_) { + # not a duplicate of _value + if ($_ -eq $_value) { + $_duplicate="1" + } + if ($_all_values) { + $_all_values="${_all_values};$_" + } else { + $_all_values="$_" + } + } + } + } + # append only non-duplicates + if (!$_duplicate) { + # avoid leading separator + if ($_all_values) { + $_all_values="${_all_values};${_value}" + } else { + $_all_values="${_value}" + } + } + + # export the updated variable + Set-Item env:\$_listname -Value "$_all_values" +} + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +function colcon_prepend_unique_value { + param ( + $_listname, + $_value + ) + + # get values from variable + if (Test-Path Env:$_listname) { + $_values=(Get-Item env:$_listname).Value + } else { + $_values="" + } + # start with the new value + $_all_values="$_value" + # iterate over existing values in the variable + if ($_values) { + $_values.Split(";") | ForEach { + # not an empty string + if ($_) { + # not a duplicate of _value + if ($_ -ne $_value) { + # keep non-duplicate values + $_all_values="${_all_values};$_" + } + } + } + } + # export the updated variable + Set-Item env:\$_listname -Value "$_all_values" +} + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +function colcon_package_source_powershell_script { + param ( + $_colcon_package_source_powershell_script + ) + # source script with conditional trace output + if (Test-Path $_colcon_package_source_powershell_script) { + if ($env:COLCON_TRACE) { + echo ". '$_colcon_package_source_powershell_script'" + } + . "$_colcon_package_source_powershell_script" + } else { + Write-Error "not found: '$_colcon_package_source_powershell_script'" + } +} + + +# a powershell script is able to determine its own path +# the prefix is two levels up from the package specific share directory +$env:COLCON_CURRENT_PREFIX=(Get-Item $PSCommandPath).Directory.Parent.Parent.FullName + +colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/challenge/hook/cmake_prefix_path.ps1" +colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/challenge/local_setup.ps1" + +Remove-Item Env:\COLCON_CURRENT_PREFIX diff --git a/install/challenge/share/challenge/package.sh b/install/challenge/share/challenge/package.sh new file mode 100644 index 00000000..5ded2f8b --- /dev/null +++ b/install/challenge/share/challenge/package.sh @@ -0,0 +1,87 @@ +# generated from colcon_core/shell/template/package.sh.em + +# This script extends the environment for this package. + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prepend_unique_value_IFS=$IFS + IFS=":" + # start with the new value + _all_values="$_value" + # workaround SH_WORD_SPLIT not being set in zsh + if [ "$(command -v colcon_zsh_convert_to_array)" ]; then + colcon_zsh_convert_to_array _values + fi + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + # restore the field separator + IFS=$_colcon_prepend_unique_value_IFS + unset _colcon_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# since a plain shell script can't determine its own path when being sourced +# either use the provided COLCON_CURRENT_PREFIX +# or fall back to the build time prefix (if it exists) +_colcon_package_sh_COLCON_CURRENT_PREFIX="/home/danialramzan/PycharmProjects/new/software-start-here/install/challenge" +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + if [ ! -d "$_colcon_package_sh_COLCON_CURRENT_PREFIX" ]; then + echo "The build time path \"$_colcon_package_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 + unset _colcon_package_sh_COLCON_CURRENT_PREFIX + return 1 + fi + COLCON_CURRENT_PREFIX="$_colcon_package_sh_COLCON_CURRENT_PREFIX" +fi +unset _colcon_package_sh_COLCON_CURRENT_PREFIX + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +_colcon_package_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$@" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source sh hooks +_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/challenge/hook/cmake_prefix_path.sh" +_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/challenge/local_setup.sh" + +unset _colcon_package_sh_source_script +unset COLCON_CURRENT_PREFIX + +# do not unset _colcon_prepend_unique_value since it might be used by non-primary shell hooks diff --git a/install/challenge/share/challenge/package.xml b/install/challenge/share/challenge/package.xml new file mode 100644 index 00000000..a823e8af --- /dev/null +++ b/install/challenge/share/challenge/package.xml @@ -0,0 +1,19 @@ + + + + challenge + 0.0.0 + subbots software team challenge + danialramzan + Apache License 2.0 + + ament_cmake + rclcpp + + ament_lint_auto + ament_lint_common + + + ament_cmake + + diff --git a/install/challenge/share/challenge/package.zsh b/install/challenge/share/challenge/package.zsh new file mode 100644 index 00000000..fa8dae35 --- /dev/null +++ b/install/challenge/share/challenge/package.zsh @@ -0,0 +1,50 @@ +# generated from colcon_zsh/shell/template/package.zsh.em + +# This script extends the environment for this package. + +# a zsh script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + # the prefix is two levels up from the package specific share directory + _colcon_package_zsh_COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`/../.." > /dev/null && pwd)" +else + _colcon_package_zsh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +_colcon_package_zsh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$@" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# function to convert array-like strings into arrays +# to workaround SH_WORD_SPLIT not being set +colcon_zsh_convert_to_array() { + local _listname=$1 + local _dollar="$" + local _split="{=" + local _to_array="(\"$_dollar$_split$_listname}\")" + eval $_listname=$_to_array +} + +# source sh script of this package +_colcon_package_zsh_source_script "$_colcon_package_zsh_COLCON_CURRENT_PREFIX/share/challenge/package.sh" +unset convert_zsh_to_array + +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced scripts +COLCON_CURRENT_PREFIX="$_colcon_package_zsh_COLCON_CURRENT_PREFIX" + +# source zsh hooks +_colcon_package_zsh_source_script "$COLCON_CURRENT_PREFIX/share/challenge/local_setup.zsh" + +unset COLCON_CURRENT_PREFIX + +unset _colcon_package_zsh_source_script +unset _colcon_package_zsh_COLCON_CURRENT_PREFIX diff --git a/install/challenge/share/colcon-core/packages/challenge b/install/challenge/share/colcon-core/packages/challenge new file mode 100644 index 00000000..080a9503 --- /dev/null +++ b/install/challenge/share/colcon-core/packages/challenge @@ -0,0 +1 @@ +rclcpp \ No newline at end of file diff --git a/install/install/.colcon_install_layout b/install/install/.colcon_install_layout new file mode 100644 index 00000000..3aad5336 --- /dev/null +++ b/install/install/.colcon_install_layout @@ -0,0 +1 @@ +isolated diff --git a/install/install/COLCON_IGNORE b/install/install/COLCON_IGNORE new file mode 100644 index 00000000..e69de29b diff --git a/install/install/_local_setup_util_ps1.py b/install/install/_local_setup_util_ps1.py new file mode 100644 index 00000000..3c6d9e87 --- /dev/null +++ b/install/install/_local_setup_util_ps1.py @@ -0,0 +1,407 @@ +# Copyright 2016-2019 Dirk Thomas +# Licensed under the Apache License, Version 2.0 + +import argparse +from collections import OrderedDict +import os +from pathlib import Path +import sys + + +FORMAT_STR_COMMENT_LINE = '# {comment}' +FORMAT_STR_SET_ENV_VAR = 'Set-Item -Path "Env:{name}" -Value "{value}"' +FORMAT_STR_USE_ENV_VAR = '$env:{name}' +FORMAT_STR_INVOKE_SCRIPT = '_colcon_prefix_powershell_source_script "{script_path}"' # noqa: E501 +FORMAT_STR_REMOVE_LEADING_SEPARATOR = '' # noqa: E501 +FORMAT_STR_REMOVE_TRAILING_SEPARATOR = '' # noqa: E501 + +DSV_TYPE_APPEND_NON_DUPLICATE = 'append-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE = 'prepend-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS = 'prepend-non-duplicate-if-exists' +DSV_TYPE_SET = 'set' +DSV_TYPE_SET_IF_UNSET = 'set-if-unset' +DSV_TYPE_SOURCE = 'source' + + +def main(argv=sys.argv[1:]): # noqa: D103 + parser = argparse.ArgumentParser( + description='Output shell commands for the packages in topological ' + 'order') + parser.add_argument( + 'primary_extension', + help='The file extension of the primary shell') + parser.add_argument( + 'additional_extension', nargs='?', + help='The additional file extension to be considered') + parser.add_argument( + '--merged-install', action='store_true', + help='All install prefixes are merged into a single location') + args = parser.parse_args(argv) + + packages = get_packages(Path(__file__).parent, args.merged_install) + + ordered_packages = order_packages(packages) + for pkg_name in ordered_packages: + if _include_comments(): + print( + FORMAT_STR_COMMENT_LINE.format_map( + {'comment': 'Package: ' + pkg_name})) + prefix = os.path.abspath(os.path.dirname(__file__)) + if not args.merged_install: + prefix = os.path.join(prefix, pkg_name) + for line in get_commands( + pkg_name, prefix, args.primary_extension, + args.additional_extension + ): + print(line) + + for line in _remove_ending_separators(): + print(line) + + +def get_packages(prefix_path, merged_install): + """ + Find packages based on colcon-specific files created during installation. + + :param Path prefix_path: The install prefix path of all packages + :param bool merged_install: The flag if the packages are all installed + directly in the prefix or if each package is installed in a subdirectory + named after the package + :returns: A mapping from the package name to the set of runtime + dependencies + :rtype: dict + """ + packages = {} + # since importing colcon_core isn't feasible here the following constant + # must match colcon_core.location.get_relative_package_index_path() + subdirectory = 'share/colcon-core/packages' + if merged_install: + # return if workspace is empty + if not (prefix_path / subdirectory).is_dir(): + return packages + # find all files in the subdirectory + for p in (prefix_path / subdirectory).iterdir(): + if not p.is_file(): + continue + if p.name.startswith('.'): + continue + add_package_runtime_dependencies(p, packages) + else: + # for each subdirectory look for the package specific file + for p in prefix_path.iterdir(): + if not p.is_dir(): + continue + if p.name.startswith('.'): + continue + p = p / subdirectory / p.name + if p.is_file(): + add_package_runtime_dependencies(p, packages) + + # remove unknown dependencies + pkg_names = set(packages.keys()) + for k in packages.keys(): + packages[k] = {d for d in packages[k] if d in pkg_names} + + return packages + + +def add_package_runtime_dependencies(path, packages): + """ + Check the path and if it exists extract the packages runtime dependencies. + + :param Path path: The resource file containing the runtime dependencies + :param dict packages: A mapping from package names to the sets of runtime + dependencies to add to + """ + content = path.read_text() + dependencies = set(content.split(os.pathsep) if content else []) + packages[path.name] = dependencies + + +def order_packages(packages): + """ + Order packages topologically. + + :param dict packages: A mapping from package name to the set of runtime + dependencies + :returns: The package names + :rtype: list + """ + # select packages with no dependencies in alphabetical order + to_be_ordered = list(packages.keys()) + ordered = [] + while to_be_ordered: + pkg_names_without_deps = [ + name for name in to_be_ordered if not packages[name]] + if not pkg_names_without_deps: + reduce_cycle_set(packages) + raise RuntimeError( + 'Circular dependency between: ' + ', '.join(sorted(packages))) + pkg_names_without_deps.sort() + pkg_name = pkg_names_without_deps[0] + to_be_ordered.remove(pkg_name) + ordered.append(pkg_name) + # remove item from dependency lists + for k in list(packages.keys()): + if pkg_name in packages[k]: + packages[k].remove(pkg_name) + return ordered + + +def reduce_cycle_set(packages): + """ + Reduce the set of packages to the ones part of the circular dependency. + + :param dict packages: A mapping from package name to the set of runtime + dependencies which is modified in place + """ + last_depended = None + while len(packages) > 0: + # get all remaining dependencies + depended = set() + for pkg_name, dependencies in packages.items(): + depended = depended.union(dependencies) + # remove all packages which are not dependent on + for name in list(packages.keys()): + if name not in depended: + del packages[name] + if last_depended: + # if remaining packages haven't changed return them + if last_depended == depended: + return packages.keys() + # otherwise reduce again + last_depended = depended + + +def _include_comments(): + # skipping comment lines when COLCON_TRACE is not set speeds up the + # processing especially on Windows + return bool(os.environ.get('COLCON_TRACE')) + + +def get_commands(pkg_name, prefix, primary_extension, additional_extension): + commands = [] + package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv') + if os.path.exists(package_dsv_path): + commands += process_dsv_file( + package_dsv_path, prefix, primary_extension, additional_extension) + return commands + + +def process_dsv_file( + dsv_path, prefix, primary_extension=None, additional_extension=None +): + commands = [] + if _include_comments(): + commands.append(FORMAT_STR_COMMENT_LINE.format_map({'comment': dsv_path})) + with open(dsv_path, 'r') as h: + content = h.read() + lines = content.splitlines() + + basenames = OrderedDict() + for i, line in enumerate(lines): + # skip over empty or whitespace-only lines + if not line.strip(): + continue + # skip over comments + if line.startswith('#'): + continue + try: + type_, remainder = line.split(';', 1) + except ValueError: + raise RuntimeError( + "Line %d in '%s' doesn't contain a semicolon separating the " + 'type from the arguments' % (i + 1, dsv_path)) + if type_ != DSV_TYPE_SOURCE: + # handle non-source lines + try: + commands += handle_dsv_types_except_source( + type_, remainder, prefix) + except RuntimeError as e: + raise RuntimeError( + "Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e + else: + # group remaining source lines by basename + path_without_ext, ext = os.path.splitext(remainder) + if path_without_ext not in basenames: + basenames[path_without_ext] = set() + assert ext.startswith('.') + ext = ext[1:] + if ext in (primary_extension, additional_extension): + basenames[path_without_ext].add(ext) + + # add the dsv extension to each basename if the file exists + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if os.path.exists(basename + '.dsv'): + extensions.add('dsv') + + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if 'dsv' in extensions: + # process dsv files recursively + commands += process_dsv_file( + basename + '.dsv', prefix, primary_extension=primary_extension, + additional_extension=additional_extension) + elif primary_extension in extensions and len(extensions) == 1: + # source primary-only files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + primary_extension})] + elif additional_extension in extensions: + # source non-primary files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + additional_extension})] + + return commands + + +def handle_dsv_types_except_source(type_, remainder, prefix): + commands = [] + if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET): + try: + env_name, value = remainder.split(';', 1) + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the value') + try_prefixed_value = os.path.join(prefix, value) if value else prefix + if os.path.exists(try_prefixed_value): + value = try_prefixed_value + if type_ == DSV_TYPE_SET: + commands += _set(env_name, value) + elif type_ == DSV_TYPE_SET_IF_UNSET: + commands += _set_if_unset(env_name, value) + else: + assert False + elif type_ in ( + DSV_TYPE_APPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS + ): + try: + env_name_and_values = remainder.split(';') + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the values') + env_name = env_name_and_values[0] + values = env_name_and_values[1:] + for value in values: + if not value: + value = prefix + elif not os.path.isabs(value): + value = os.path.join(prefix, value) + if ( + type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and + not os.path.exists(value) + ): + comment = f'skip extending {env_name} with not existing ' \ + f'path: {value}' + if _include_comments(): + commands.append( + FORMAT_STR_COMMENT_LINE.format_map({'comment': comment})) + elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE: + commands += _append_unique_value(env_name, value) + else: + commands += _prepend_unique_value(env_name, value) + else: + raise RuntimeError( + 'contains an unknown environment hook type: ' + type_) + return commands + + +env_state = {} + + +def _append_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # append even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional leading separator + extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': extend + value}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +def _prepend_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # prepend even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional trailing separator + extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value + extend}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +# generate commands for removing prepended underscores +def _remove_ending_separators(): + # do nothing if the shell extension does not implement the logic + if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None: + return [] + + global env_state + commands = [] + for name in env_state: + # skip variables that already had values before this script started prepending + if name in os.environ: + continue + commands += [ + FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}), + FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})] + return commands + + +def _set(name, value): + global env_state + env_state[name] = value + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + return [line] + + +def _set_if_unset(name, value): + global env_state + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + if env_state.get(name, os.environ.get(name)): + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +if __name__ == '__main__': # pragma: no cover + try: + rc = main() + except RuntimeError as e: + print(str(e), file=sys.stderr) + rc = 1 + sys.exit(rc) diff --git a/install/install/_local_setup_util_sh.py b/install/install/_local_setup_util_sh.py new file mode 100644 index 00000000..f67eaa98 --- /dev/null +++ b/install/install/_local_setup_util_sh.py @@ -0,0 +1,407 @@ +# Copyright 2016-2019 Dirk Thomas +# Licensed under the Apache License, Version 2.0 + +import argparse +from collections import OrderedDict +import os +from pathlib import Path +import sys + + +FORMAT_STR_COMMENT_LINE = '# {comment}' +FORMAT_STR_SET_ENV_VAR = 'export {name}="{value}"' +FORMAT_STR_USE_ENV_VAR = '${name}' +FORMAT_STR_INVOKE_SCRIPT = 'COLCON_CURRENT_PREFIX="{prefix}" _colcon_prefix_sh_source_script "{script_path}"' # noqa: E501 +FORMAT_STR_REMOVE_LEADING_SEPARATOR = 'if [ "$(echo -n ${name} | head -c 1)" = ":" ]; then export {name}=${{{name}#?}} ; fi' # noqa: E501 +FORMAT_STR_REMOVE_TRAILING_SEPARATOR = 'if [ "$(echo -n ${name} | tail -c 1)" = ":" ]; then export {name}=${{{name}%?}} ; fi' # noqa: E501 + +DSV_TYPE_APPEND_NON_DUPLICATE = 'append-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE = 'prepend-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS = 'prepend-non-duplicate-if-exists' +DSV_TYPE_SET = 'set' +DSV_TYPE_SET_IF_UNSET = 'set-if-unset' +DSV_TYPE_SOURCE = 'source' + + +def main(argv=sys.argv[1:]): # noqa: D103 + parser = argparse.ArgumentParser( + description='Output shell commands for the packages in topological ' + 'order') + parser.add_argument( + 'primary_extension', + help='The file extension of the primary shell') + parser.add_argument( + 'additional_extension', nargs='?', + help='The additional file extension to be considered') + parser.add_argument( + '--merged-install', action='store_true', + help='All install prefixes are merged into a single location') + args = parser.parse_args(argv) + + packages = get_packages(Path(__file__).parent, args.merged_install) + + ordered_packages = order_packages(packages) + for pkg_name in ordered_packages: + if _include_comments(): + print( + FORMAT_STR_COMMENT_LINE.format_map( + {'comment': 'Package: ' + pkg_name})) + prefix = os.path.abspath(os.path.dirname(__file__)) + if not args.merged_install: + prefix = os.path.join(prefix, pkg_name) + for line in get_commands( + pkg_name, prefix, args.primary_extension, + args.additional_extension + ): + print(line) + + for line in _remove_ending_separators(): + print(line) + + +def get_packages(prefix_path, merged_install): + """ + Find packages based on colcon-specific files created during installation. + + :param Path prefix_path: The install prefix path of all packages + :param bool merged_install: The flag if the packages are all installed + directly in the prefix or if each package is installed in a subdirectory + named after the package + :returns: A mapping from the package name to the set of runtime + dependencies + :rtype: dict + """ + packages = {} + # since importing colcon_core isn't feasible here the following constant + # must match colcon_core.location.get_relative_package_index_path() + subdirectory = 'share/colcon-core/packages' + if merged_install: + # return if workspace is empty + if not (prefix_path / subdirectory).is_dir(): + return packages + # find all files in the subdirectory + for p in (prefix_path / subdirectory).iterdir(): + if not p.is_file(): + continue + if p.name.startswith('.'): + continue + add_package_runtime_dependencies(p, packages) + else: + # for each subdirectory look for the package specific file + for p in prefix_path.iterdir(): + if not p.is_dir(): + continue + if p.name.startswith('.'): + continue + p = p / subdirectory / p.name + if p.is_file(): + add_package_runtime_dependencies(p, packages) + + # remove unknown dependencies + pkg_names = set(packages.keys()) + for k in packages.keys(): + packages[k] = {d for d in packages[k] if d in pkg_names} + + return packages + + +def add_package_runtime_dependencies(path, packages): + """ + Check the path and if it exists extract the packages runtime dependencies. + + :param Path path: The resource file containing the runtime dependencies + :param dict packages: A mapping from package names to the sets of runtime + dependencies to add to + """ + content = path.read_text() + dependencies = set(content.split(os.pathsep) if content else []) + packages[path.name] = dependencies + + +def order_packages(packages): + """ + Order packages topologically. + + :param dict packages: A mapping from package name to the set of runtime + dependencies + :returns: The package names + :rtype: list + """ + # select packages with no dependencies in alphabetical order + to_be_ordered = list(packages.keys()) + ordered = [] + while to_be_ordered: + pkg_names_without_deps = [ + name for name in to_be_ordered if not packages[name]] + if not pkg_names_without_deps: + reduce_cycle_set(packages) + raise RuntimeError( + 'Circular dependency between: ' + ', '.join(sorted(packages))) + pkg_names_without_deps.sort() + pkg_name = pkg_names_without_deps[0] + to_be_ordered.remove(pkg_name) + ordered.append(pkg_name) + # remove item from dependency lists + for k in list(packages.keys()): + if pkg_name in packages[k]: + packages[k].remove(pkg_name) + return ordered + + +def reduce_cycle_set(packages): + """ + Reduce the set of packages to the ones part of the circular dependency. + + :param dict packages: A mapping from package name to the set of runtime + dependencies which is modified in place + """ + last_depended = None + while len(packages) > 0: + # get all remaining dependencies + depended = set() + for pkg_name, dependencies in packages.items(): + depended = depended.union(dependencies) + # remove all packages which are not dependent on + for name in list(packages.keys()): + if name not in depended: + del packages[name] + if last_depended: + # if remaining packages haven't changed return them + if last_depended == depended: + return packages.keys() + # otherwise reduce again + last_depended = depended + + +def _include_comments(): + # skipping comment lines when COLCON_TRACE is not set speeds up the + # processing especially on Windows + return bool(os.environ.get('COLCON_TRACE')) + + +def get_commands(pkg_name, prefix, primary_extension, additional_extension): + commands = [] + package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv') + if os.path.exists(package_dsv_path): + commands += process_dsv_file( + package_dsv_path, prefix, primary_extension, additional_extension) + return commands + + +def process_dsv_file( + dsv_path, prefix, primary_extension=None, additional_extension=None +): + commands = [] + if _include_comments(): + commands.append(FORMAT_STR_COMMENT_LINE.format_map({'comment': dsv_path})) + with open(dsv_path, 'r') as h: + content = h.read() + lines = content.splitlines() + + basenames = OrderedDict() + for i, line in enumerate(lines): + # skip over empty or whitespace-only lines + if not line.strip(): + continue + # skip over comments + if line.startswith('#'): + continue + try: + type_, remainder = line.split(';', 1) + except ValueError: + raise RuntimeError( + "Line %d in '%s' doesn't contain a semicolon separating the " + 'type from the arguments' % (i + 1, dsv_path)) + if type_ != DSV_TYPE_SOURCE: + # handle non-source lines + try: + commands += handle_dsv_types_except_source( + type_, remainder, prefix) + except RuntimeError as e: + raise RuntimeError( + "Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e + else: + # group remaining source lines by basename + path_without_ext, ext = os.path.splitext(remainder) + if path_without_ext not in basenames: + basenames[path_without_ext] = set() + assert ext.startswith('.') + ext = ext[1:] + if ext in (primary_extension, additional_extension): + basenames[path_without_ext].add(ext) + + # add the dsv extension to each basename if the file exists + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if os.path.exists(basename + '.dsv'): + extensions.add('dsv') + + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if 'dsv' in extensions: + # process dsv files recursively + commands += process_dsv_file( + basename + '.dsv', prefix, primary_extension=primary_extension, + additional_extension=additional_extension) + elif primary_extension in extensions and len(extensions) == 1: + # source primary-only files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + primary_extension})] + elif additional_extension in extensions: + # source non-primary files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + additional_extension})] + + return commands + + +def handle_dsv_types_except_source(type_, remainder, prefix): + commands = [] + if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET): + try: + env_name, value = remainder.split(';', 1) + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the value') + try_prefixed_value = os.path.join(prefix, value) if value else prefix + if os.path.exists(try_prefixed_value): + value = try_prefixed_value + if type_ == DSV_TYPE_SET: + commands += _set(env_name, value) + elif type_ == DSV_TYPE_SET_IF_UNSET: + commands += _set_if_unset(env_name, value) + else: + assert False + elif type_ in ( + DSV_TYPE_APPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS + ): + try: + env_name_and_values = remainder.split(';') + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the values') + env_name = env_name_and_values[0] + values = env_name_and_values[1:] + for value in values: + if not value: + value = prefix + elif not os.path.isabs(value): + value = os.path.join(prefix, value) + if ( + type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and + not os.path.exists(value) + ): + comment = f'skip extending {env_name} with not existing ' \ + f'path: {value}' + if _include_comments(): + commands.append( + FORMAT_STR_COMMENT_LINE.format_map({'comment': comment})) + elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE: + commands += _append_unique_value(env_name, value) + else: + commands += _prepend_unique_value(env_name, value) + else: + raise RuntimeError( + 'contains an unknown environment hook type: ' + type_) + return commands + + +env_state = {} + + +def _append_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # append even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional leading separator + extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': extend + value}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +def _prepend_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # prepend even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional trailing separator + extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value + extend}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +# generate commands for removing prepended underscores +def _remove_ending_separators(): + # do nothing if the shell extension does not implement the logic + if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None: + return [] + + global env_state + commands = [] + for name in env_state: + # skip variables that already had values before this script started prepending + if name in os.environ: + continue + commands += [ + FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}), + FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})] + return commands + + +def _set(name, value): + global env_state + env_state[name] = value + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + return [line] + + +def _set_if_unset(name, value): + global env_state + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + if env_state.get(name, os.environ.get(name)): + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +if __name__ == '__main__': # pragma: no cover + try: + rc = main() + except RuntimeError as e: + print(str(e), file=sys.stderr) + rc = 1 + sys.exit(rc) diff --git a/install/install/local_setup.bash b/install/install/local_setup.bash new file mode 100644 index 00000000..03f00256 --- /dev/null +++ b/install/install/local_setup.bash @@ -0,0 +1,121 @@ +# generated from colcon_bash/shell/template/prefix.bash.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# a bash script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + _colcon_prefix_bash_COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" > /dev/null && pwd)" +else + _colcon_prefix_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prefix_bash_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prefix_bash_prepend_unique_value_IFS="$IFS" + IFS=":" + # start with the new value + _all_values="$_value" + _contained_value="" + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + _contained_value=1 + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + if [ -z "$_contained_value" ]; then + if [ -n "$COLCON_TRACE" ]; then + if [ "$_all_values" = "$_value" ]; then + echo "export $_listname=$_value" + else + echo "export $_listname=$_value:\$$_listname" + fi + fi + fi + unset _contained_value + # restore the field separator + IFS="$_colcon_prefix_bash_prepend_unique_value_IFS" + unset _colcon_prefix_bash_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# add this prefix to the COLCON_PREFIX_PATH +_colcon_prefix_bash_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_bash_COLCON_CURRENT_PREFIX" +unset _colcon_prefix_bash_prepend_unique_value + +# check environment variable for custom Python executable +if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then + if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then + echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" + return 1 + fi + _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" +else + # try the Python executable known at configure time + _colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if [ ! -f "$_colcon_python_executable" ]; then + if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then + echo "error: unable to find python3 executable" + return 1 + fi + _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` + fi +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# get all commands in topological order +_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_bash_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh bash)" +unset _colcon_python_executable +if [ -n "$COLCON_TRACE" ]; then + echo "$(declare -f _colcon_prefix_sh_source_script)" + echo "# Execute generated script:" + echo "# <<<" + echo "${_colcon_ordered_commands}" + echo "# >>>" + echo "unset _colcon_prefix_sh_source_script" +fi +eval "${_colcon_ordered_commands}" +unset _colcon_ordered_commands + +unset _colcon_prefix_sh_source_script + +unset _colcon_prefix_bash_COLCON_CURRENT_PREFIX diff --git a/install/install/local_setup.ps1 b/install/install/local_setup.ps1 new file mode 100644 index 00000000..6f68c8de --- /dev/null +++ b/install/install/local_setup.ps1 @@ -0,0 +1,55 @@ +# generated from colcon_powershell/shell/template/prefix.ps1.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# check environment variable for custom Python executable +if ($env:COLCON_PYTHON_EXECUTABLE) { + if (!(Test-Path "$env:COLCON_PYTHON_EXECUTABLE" -PathType Leaf)) { + echo "error: COLCON_PYTHON_EXECUTABLE '$env:COLCON_PYTHON_EXECUTABLE' doesn't exist" + exit 1 + } + $_colcon_python_executable="$env:COLCON_PYTHON_EXECUTABLE" +} else { + # use the Python executable known at configure time + $_colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if (!(Test-Path "$_colcon_python_executable" -PathType Leaf)) { + if (!(Get-Command "python3" -ErrorAction SilentlyContinue)) { + echo "error: unable to find python3 executable" + exit 1 + } + $_colcon_python_executable="python3" + } +} + +# function to source another script with conditional trace output +# first argument: the path of the script +function _colcon_prefix_powershell_source_script { + param ( + $_colcon_prefix_powershell_source_script_param + ) + # source script with conditional trace output + if (Test-Path $_colcon_prefix_powershell_source_script_param) { + if ($env:COLCON_TRACE) { + echo ". '$_colcon_prefix_powershell_source_script_param'" + } + . "$_colcon_prefix_powershell_source_script_param" + } else { + Write-Error "not found: '$_colcon_prefix_powershell_source_script_param'" + } +} + +# get all commands in topological order +$_colcon_ordered_commands = & "$_colcon_python_executable" "$(Split-Path $PSCommandPath -Parent)/_local_setup_util_ps1.py" ps1 + +# execute all commands in topological order +if ($env:COLCON_TRACE) { + echo "Execute generated script:" + echo "<<<" + $_colcon_ordered_commands.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries) | Write-Output + echo ">>>" +} +if ($_colcon_ordered_commands) { + $_colcon_ordered_commands.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries) | Invoke-Expression +} diff --git a/install/install/local_setup.sh b/install/install/local_setup.sh new file mode 100644 index 00000000..f1c9958f --- /dev/null +++ b/install/install/local_setup.sh @@ -0,0 +1,137 @@ +# generated from colcon_core/shell/template/prefix.sh.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# since a plain shell script can't determine its own path when being sourced +# either use the provided COLCON_CURRENT_PREFIX +# or fall back to the build time prefix (if it exists) +_colcon_prefix_sh_COLCON_CURRENT_PREFIX="/home/danialramzan/PycharmProjects/new/software-start-here/install/install" +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + if [ ! -d "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX" ]; then + echo "The build time path \"$_colcon_prefix_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 + unset _colcon_prefix_sh_COLCON_CURRENT_PREFIX + return 1 + fi +else + _colcon_prefix_sh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prefix_sh_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prefix_sh_prepend_unique_value_IFS="$IFS" + IFS=":" + # start with the new value + _all_values="$_value" + _contained_value="" + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + _contained_value=1 + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + if [ -z "$_contained_value" ]; then + if [ -n "$COLCON_TRACE" ]; then + if [ "$_all_values" = "$_value" ]; then + echo "export $_listname=$_value" + else + echo "export $_listname=$_value:\$$_listname" + fi + fi + fi + unset _contained_value + # restore the field separator + IFS="$_colcon_prefix_sh_prepend_unique_value_IFS" + unset _colcon_prefix_sh_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# add this prefix to the COLCON_PREFIX_PATH +_colcon_prefix_sh_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX" +unset _colcon_prefix_sh_prepend_unique_value + +# check environment variable for custom Python executable +if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then + if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then + echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" + return 1 + fi + _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" +else + # try the Python executable known at configure time + _colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if [ ! -f "$_colcon_python_executable" ]; then + if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then + echo "error: unable to find python3 executable" + return 1 + fi + _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` + fi +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# get all commands in topological order +_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh)" +unset _colcon_python_executable +if [ -n "$COLCON_TRACE" ]; then + echo "_colcon_prefix_sh_source_script() { + if [ -f \"\$1\" ]; then + if [ -n \"\$COLCON_TRACE\" ]; then + echo \"# . \\\"\$1\\\"\" + fi + . \"\$1\" + else + echo \"not found: \\\"\$1\\\"\" 1>&2 + fi + }" + echo "# Execute generated script:" + echo "# <<<" + echo "${_colcon_ordered_commands}" + echo "# >>>" + echo "unset _colcon_prefix_sh_source_script" +fi +eval "${_colcon_ordered_commands}" +unset _colcon_ordered_commands + +unset _colcon_prefix_sh_source_script + +unset _colcon_prefix_sh_COLCON_CURRENT_PREFIX diff --git a/install/install/local_setup.zsh b/install/install/local_setup.zsh new file mode 100644 index 00000000..b6487102 --- /dev/null +++ b/install/install/local_setup.zsh @@ -0,0 +1,134 @@ +# generated from colcon_zsh/shell/template/prefix.zsh.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# a zsh script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + _colcon_prefix_zsh_COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd)" +else + _colcon_prefix_zsh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to convert array-like strings into arrays +# to workaround SH_WORD_SPLIT not being set +_colcon_prefix_zsh_convert_to_array() { + local _listname=$1 + local _dollar="$" + local _split="{=" + local _to_array="(\"$_dollar$_split$_listname}\")" + eval $_listname=$_to_array +} + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prefix_zsh_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prefix_zsh_prepend_unique_value_IFS="$IFS" + IFS=":" + # start with the new value + _all_values="$_value" + _contained_value="" + # workaround SH_WORD_SPLIT not being set + _colcon_prefix_zsh_convert_to_array _values + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + _contained_value=1 + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + if [ -z "$_contained_value" ]; then + if [ -n "$COLCON_TRACE" ]; then + if [ "$_all_values" = "$_value" ]; then + echo "export $_listname=$_value" + else + echo "export $_listname=$_value:\$$_listname" + fi + fi + fi + unset _contained_value + # restore the field separator + IFS="$_colcon_prefix_zsh_prepend_unique_value_IFS" + unset _colcon_prefix_zsh_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# add this prefix to the COLCON_PREFIX_PATH +_colcon_prefix_zsh_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_zsh_COLCON_CURRENT_PREFIX" +unset _colcon_prefix_zsh_prepend_unique_value +unset _colcon_prefix_zsh_convert_to_array + +# check environment variable for custom Python executable +if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then + if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then + echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" + return 1 + fi + _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" +else + # try the Python executable known at configure time + _colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if [ ! -f "$_colcon_python_executable" ]; then + if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then + echo "error: unable to find python3 executable" + return 1 + fi + _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` + fi +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# get all commands in topological order +_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_zsh_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh zsh)" +unset _colcon_python_executable +if [ -n "$COLCON_TRACE" ]; then + echo "$(declare -f _colcon_prefix_sh_source_script)" + echo "# Execute generated script:" + echo "# <<<" + echo "${_colcon_ordered_commands}" + echo "# >>>" + echo "unset _colcon_prefix_sh_source_script" +fi +eval "${_colcon_ordered_commands}" +unset _colcon_ordered_commands + +unset _colcon_prefix_sh_source_script + +unset _colcon_prefix_zsh_COLCON_CURRENT_PREFIX diff --git a/install/install/setup.bash b/install/install/setup.bash new file mode 100644 index 00000000..d8a9298a --- /dev/null +++ b/install/install/setup.bash @@ -0,0 +1,37 @@ +# generated from colcon_bash/shell/template/prefix_chain.bash.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_chain_bash_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source chained prefixes +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/opt/ros/humble" +_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash" +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/home/danialramzan/triton/install" +_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash" +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/home/danialramzan/PycharmProjects/new/software-start-here/install" +_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash" + +# source this prefix +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" > /dev/null && pwd)" +_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash" + +unset COLCON_CURRENT_PREFIX +unset _colcon_prefix_chain_bash_source_script diff --git a/install/install/setup.ps1 b/install/install/setup.ps1 new file mode 100644 index 00000000..235e7be8 --- /dev/null +++ b/install/install/setup.ps1 @@ -0,0 +1,31 @@ +# generated from colcon_powershell/shell/template/prefix_chain.ps1.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# function to source another script with conditional trace output +# first argument: the path of the script +function _colcon_prefix_chain_powershell_source_script { + param ( + $_colcon_prefix_chain_powershell_source_script_param + ) + # source script with conditional trace output + if (Test-Path $_colcon_prefix_chain_powershell_source_script_param) { + if ($env:COLCON_TRACE) { + echo ". '$_colcon_prefix_chain_powershell_source_script_param'" + } + . "$_colcon_prefix_chain_powershell_source_script_param" + } else { + Write-Error "not found: '$_colcon_prefix_chain_powershell_source_script_param'" + } +} + +# source chained prefixes +_colcon_prefix_chain_powershell_source_script "/opt/ros/humble\local_setup.ps1" +_colcon_prefix_chain_powershell_source_script "/home/danialramzan/triton/install\local_setup.ps1" +_colcon_prefix_chain_powershell_source_script "/home/danialramzan/PycharmProjects/new/software-start-here/install\local_setup.ps1" + +# source this prefix +$env:COLCON_CURRENT_PREFIX=(Split-Path $PSCommandPath -Parent) +_colcon_prefix_chain_powershell_source_script "$env:COLCON_CURRENT_PREFIX\local_setup.ps1" diff --git a/install/install/setup.sh b/install/install/setup.sh new file mode 100644 index 00000000..8e4260ad --- /dev/null +++ b/install/install/setup.sh @@ -0,0 +1,53 @@ +# generated from colcon_core/shell/template/prefix_chain.sh.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# since a plain shell script can't determine its own path when being sourced +# either use the provided COLCON_CURRENT_PREFIX +# or fall back to the build time prefix (if it exists) +_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX=/home/danialramzan/PycharmProjects/new/software-start-here/install/install +if [ ! -z "$COLCON_CURRENT_PREFIX" ]; then + _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +elif [ ! -d "$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX" ]; then + echo "The build time path \"$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 + unset _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX + return 1 +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_chain_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source chained prefixes +# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script +COLCON_CURRENT_PREFIX="/opt/ros/humble" +_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh" + +# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script +COLCON_CURRENT_PREFIX="/home/danialramzan/triton/install" +_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh" + +# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script +COLCON_CURRENT_PREFIX="/home/danialramzan/PycharmProjects/new/software-start-here/install" +_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh" + + +# source this prefix +# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script +COLCON_CURRENT_PREFIX="$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX" +_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh" + +unset _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX +unset _colcon_prefix_chain_sh_source_script +unset COLCON_CURRENT_PREFIX diff --git a/install/install/setup.zsh b/install/install/setup.zsh new file mode 100644 index 00000000..862bc538 --- /dev/null +++ b/install/install/setup.zsh @@ -0,0 +1,37 @@ +# generated from colcon_zsh/shell/template/prefix_chain.zsh.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_chain_zsh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source chained prefixes +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/opt/ros/humble" +_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh" +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/home/danialramzan/triton/install" +_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh" +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/home/danialramzan/PycharmProjects/new/software-start-here/install" +_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh" + +# source this prefix +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd)" +_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh" + +unset COLCON_CURRENT_PREFIX +unset _colcon_prefix_chain_zsh_source_script diff --git a/install/local_setup.bash b/install/local_setup.bash new file mode 100644 index 00000000..03f00256 --- /dev/null +++ b/install/local_setup.bash @@ -0,0 +1,121 @@ +# generated from colcon_bash/shell/template/prefix.bash.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# a bash script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + _colcon_prefix_bash_COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" > /dev/null && pwd)" +else + _colcon_prefix_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prefix_bash_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prefix_bash_prepend_unique_value_IFS="$IFS" + IFS=":" + # start with the new value + _all_values="$_value" + _contained_value="" + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + _contained_value=1 + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + if [ -z "$_contained_value" ]; then + if [ -n "$COLCON_TRACE" ]; then + if [ "$_all_values" = "$_value" ]; then + echo "export $_listname=$_value" + else + echo "export $_listname=$_value:\$$_listname" + fi + fi + fi + unset _contained_value + # restore the field separator + IFS="$_colcon_prefix_bash_prepend_unique_value_IFS" + unset _colcon_prefix_bash_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# add this prefix to the COLCON_PREFIX_PATH +_colcon_prefix_bash_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_bash_COLCON_CURRENT_PREFIX" +unset _colcon_prefix_bash_prepend_unique_value + +# check environment variable for custom Python executable +if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then + if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then + echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" + return 1 + fi + _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" +else + # try the Python executable known at configure time + _colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if [ ! -f "$_colcon_python_executable" ]; then + if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then + echo "error: unable to find python3 executable" + return 1 + fi + _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` + fi +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# get all commands in topological order +_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_bash_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh bash)" +unset _colcon_python_executable +if [ -n "$COLCON_TRACE" ]; then + echo "$(declare -f _colcon_prefix_sh_source_script)" + echo "# Execute generated script:" + echo "# <<<" + echo "${_colcon_ordered_commands}" + echo "# >>>" + echo "unset _colcon_prefix_sh_source_script" +fi +eval "${_colcon_ordered_commands}" +unset _colcon_ordered_commands + +unset _colcon_prefix_sh_source_script + +unset _colcon_prefix_bash_COLCON_CURRENT_PREFIX diff --git a/install/local_setup.ps1 b/install/local_setup.ps1 new file mode 100644 index 00000000..6f68c8de --- /dev/null +++ b/install/local_setup.ps1 @@ -0,0 +1,55 @@ +# generated from colcon_powershell/shell/template/prefix.ps1.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# check environment variable for custom Python executable +if ($env:COLCON_PYTHON_EXECUTABLE) { + if (!(Test-Path "$env:COLCON_PYTHON_EXECUTABLE" -PathType Leaf)) { + echo "error: COLCON_PYTHON_EXECUTABLE '$env:COLCON_PYTHON_EXECUTABLE' doesn't exist" + exit 1 + } + $_colcon_python_executable="$env:COLCON_PYTHON_EXECUTABLE" +} else { + # use the Python executable known at configure time + $_colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if (!(Test-Path "$_colcon_python_executable" -PathType Leaf)) { + if (!(Get-Command "python3" -ErrorAction SilentlyContinue)) { + echo "error: unable to find python3 executable" + exit 1 + } + $_colcon_python_executable="python3" + } +} + +# function to source another script with conditional trace output +# first argument: the path of the script +function _colcon_prefix_powershell_source_script { + param ( + $_colcon_prefix_powershell_source_script_param + ) + # source script with conditional trace output + if (Test-Path $_colcon_prefix_powershell_source_script_param) { + if ($env:COLCON_TRACE) { + echo ". '$_colcon_prefix_powershell_source_script_param'" + } + . "$_colcon_prefix_powershell_source_script_param" + } else { + Write-Error "not found: '$_colcon_prefix_powershell_source_script_param'" + } +} + +# get all commands in topological order +$_colcon_ordered_commands = & "$_colcon_python_executable" "$(Split-Path $PSCommandPath -Parent)/_local_setup_util_ps1.py" ps1 + +# execute all commands in topological order +if ($env:COLCON_TRACE) { + echo "Execute generated script:" + echo "<<<" + $_colcon_ordered_commands.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries) | Write-Output + echo ">>>" +} +if ($_colcon_ordered_commands) { + $_colcon_ordered_commands.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries) | Invoke-Expression +} diff --git a/install/local_setup.sh b/install/local_setup.sh new file mode 100644 index 00000000..a6bcf3a3 --- /dev/null +++ b/install/local_setup.sh @@ -0,0 +1,137 @@ +# generated from colcon_core/shell/template/prefix.sh.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# since a plain shell script can't determine its own path when being sourced +# either use the provided COLCON_CURRENT_PREFIX +# or fall back to the build time prefix (if it exists) +_colcon_prefix_sh_COLCON_CURRENT_PREFIX="/home/danialramzan/PycharmProjects/new/software-start-here/install" +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + if [ ! -d "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX" ]; then + echo "The build time path \"$_colcon_prefix_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 + unset _colcon_prefix_sh_COLCON_CURRENT_PREFIX + return 1 + fi +else + _colcon_prefix_sh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prefix_sh_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prefix_sh_prepend_unique_value_IFS="$IFS" + IFS=":" + # start with the new value + _all_values="$_value" + _contained_value="" + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + _contained_value=1 + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + if [ -z "$_contained_value" ]; then + if [ -n "$COLCON_TRACE" ]; then + if [ "$_all_values" = "$_value" ]; then + echo "export $_listname=$_value" + else + echo "export $_listname=$_value:\$$_listname" + fi + fi + fi + unset _contained_value + # restore the field separator + IFS="$_colcon_prefix_sh_prepend_unique_value_IFS" + unset _colcon_prefix_sh_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# add this prefix to the COLCON_PREFIX_PATH +_colcon_prefix_sh_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX" +unset _colcon_prefix_sh_prepend_unique_value + +# check environment variable for custom Python executable +if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then + if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then + echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" + return 1 + fi + _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" +else + # try the Python executable known at configure time + _colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if [ ! -f "$_colcon_python_executable" ]; then + if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then + echo "error: unable to find python3 executable" + return 1 + fi + _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` + fi +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# get all commands in topological order +_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh)" +unset _colcon_python_executable +if [ -n "$COLCON_TRACE" ]; then + echo "_colcon_prefix_sh_source_script() { + if [ -f \"\$1\" ]; then + if [ -n \"\$COLCON_TRACE\" ]; then + echo \"# . \\\"\$1\\\"\" + fi + . \"\$1\" + else + echo \"not found: \\\"\$1\\\"\" 1>&2 + fi + }" + echo "# Execute generated script:" + echo "# <<<" + echo "${_colcon_ordered_commands}" + echo "# >>>" + echo "unset _colcon_prefix_sh_source_script" +fi +eval "${_colcon_ordered_commands}" +unset _colcon_ordered_commands + +unset _colcon_prefix_sh_source_script + +unset _colcon_prefix_sh_COLCON_CURRENT_PREFIX diff --git a/install/local_setup.zsh b/install/local_setup.zsh new file mode 100644 index 00000000..b6487102 --- /dev/null +++ b/install/local_setup.zsh @@ -0,0 +1,134 @@ +# generated from colcon_zsh/shell/template/prefix.zsh.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# a zsh script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + _colcon_prefix_zsh_COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd)" +else + _colcon_prefix_zsh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to convert array-like strings into arrays +# to workaround SH_WORD_SPLIT not being set +_colcon_prefix_zsh_convert_to_array() { + local _listname=$1 + local _dollar="$" + local _split="{=" + local _to_array="(\"$_dollar$_split$_listname}\")" + eval $_listname=$_to_array +} + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prefix_zsh_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prefix_zsh_prepend_unique_value_IFS="$IFS" + IFS=":" + # start with the new value + _all_values="$_value" + _contained_value="" + # workaround SH_WORD_SPLIT not being set + _colcon_prefix_zsh_convert_to_array _values + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + _contained_value=1 + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + if [ -z "$_contained_value" ]; then + if [ -n "$COLCON_TRACE" ]; then + if [ "$_all_values" = "$_value" ]; then + echo "export $_listname=$_value" + else + echo "export $_listname=$_value:\$$_listname" + fi + fi + fi + unset _contained_value + # restore the field separator + IFS="$_colcon_prefix_zsh_prepend_unique_value_IFS" + unset _colcon_prefix_zsh_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# add this prefix to the COLCON_PREFIX_PATH +_colcon_prefix_zsh_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_zsh_COLCON_CURRENT_PREFIX" +unset _colcon_prefix_zsh_prepend_unique_value +unset _colcon_prefix_zsh_convert_to_array + +# check environment variable for custom Python executable +if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then + if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then + echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" + return 1 + fi + _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" +else + # try the Python executable known at configure time + _colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if [ ! -f "$_colcon_python_executable" ]; then + if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then + echo "error: unable to find python3 executable" + return 1 + fi + _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` + fi +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# get all commands in topological order +_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_zsh_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh zsh)" +unset _colcon_python_executable +if [ -n "$COLCON_TRACE" ]; then + echo "$(declare -f _colcon_prefix_sh_source_script)" + echo "# Execute generated script:" + echo "# <<<" + echo "${_colcon_ordered_commands}" + echo "# >>>" + echo "unset _colcon_prefix_sh_source_script" +fi +eval "${_colcon_ordered_commands}" +unset _colcon_ordered_commands + +unset _colcon_prefix_sh_source_script + +unset _colcon_prefix_zsh_COLCON_CURRENT_PREFIX diff --git a/install/log/COLCON_IGNORE b/install/log/COLCON_IGNORE new file mode 100644 index 00000000..e69de29b diff --git a/install/log/build_2024-08-22_19-53-15/events.log b/install/log/build_2024-08-22_19-53-15/events.log new file mode 100644 index 00000000..c2ad97ea --- /dev/null +++ b/install/log/build_2024-08-22_19-53-15/events.log @@ -0,0 +1,2 @@ +[0.000000] (-) TimerEvent: {} +[0.000342] (-) EventReactorShutdown: {} diff --git a/install/log/build_2024-08-22_19-53-15/logger_all.log b/install/log/build_2024-08-22_19-53-15/logger_all.log new file mode 100644 index 00000000..14ca0c57 --- /dev/null +++ b/install/log/build_2024-08-22_19-53-15/logger_all.log @@ -0,0 +1,45 @@ +[0.058s] DEBUG:colcon:Command line arguments: ['/usr/bin/colcon', 'build', '--packages-select', 'challenge'] +[0.058s] DEBUG:colcon:Parsed command line arguments: Namespace(log_base=None, log_level=None, verb_name='build', build_base='build', install_base='install', merge_install=False, symlink_install=False, test_result_base=None, continue_on_error=False, executor='parallel', parallel_workers=20, event_handlers=None, ignore_user_meta=False, metas=['./colcon.meta'], base_paths=['.'], packages_ignore=None, packages_ignore_regex=None, paths=None, packages_up_to=None, packages_up_to_regex=None, packages_above=None, packages_above_and_dependencies=None, packages_above_depth=None, packages_select_by_dep=None, packages_skip_by_dep=None, packages_skip_up_to=None, packages_select_build_failed=False, packages_skip_build_finished=False, packages_select_test_failures=False, packages_skip_test_passed=False, packages_select=['challenge'], packages_skip=None, packages_select_regex=None, packages_skip_regex=None, packages_start=None, packages_end=None, allow_overriding=[], cmake_args=None, cmake_target=None, cmake_target_skip_unavailable=False, cmake_clean_cache=False, cmake_clean_first=False, cmake_force_configure=False, ament_cmake_args=None, catkin_cmake_args=None, catkin_skip_building_tests=False, verb_parser=, verb_extension=, main=>) +[0.150s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) check parameters +[0.150s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) check parameters +[0.150s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) check parameters +[0.150s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) check parameters +[0.150s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) discover +[0.150s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) discover +[0.150s] INFO:colcon.colcon_core.package_discovery:Crawling recursively for packages in '/home/danialramzan/PycharmProjects/new/software-start-here/install' +[0.150s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ignore', 'ignore_ament_install'] +[0.151s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore' +[0.151s] Level 1:colcon.colcon_core.package_identification:_identify(.) ignored +[0.151s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) using defaults +[0.151s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) discover +[0.151s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) using defaults +[0.151s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) discover +[0.151s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) using defaults +[0.151s] WARNING:colcon.colcon_core.package_selection:ignoring unknown package 'challenge' in --packages-select +[0.165s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) check parameters +[0.165s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) discover +[0.166s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 1 installed packages in /home/danialramzan/PycharmProjects/new/software-start-here/install +[0.166s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 12 installed packages in /home/danialramzan/triton/install +[0.167s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 310 installed packages in /opt/ros/humble +[0.168s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) using defaults +[0.204s] INFO:colcon.colcon_core.executor:Executing jobs using 'parallel' executor +[0.204s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete +[0.205s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:closing loop +[0.205s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:loop closed +[0.205s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete finished with '0' +[0.205s] DEBUG:colcon.colcon_core.event_reactor:joining thread +[0.209s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.terminal_notifier': Not used on non-Darwin systems +[0.209s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.win32': Not used on non-Windows systems +[0.209s] INFO:colcon.colcon_notification.desktop_notification:Sending desktop notification using 'notify2' +[0.219s] DEBUG:colcon.colcon_core.event_reactor:joined thread +[0.220s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_core.shell.bat': Not used on non-Windows systems +[0.221s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/danialramzan/PycharmProjects/new/software-start-here/install/install/local_setup.ps1' +[0.222s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/danialramzan/PycharmProjects/new/software-start-here/install/install/_local_setup_util_ps1.py' +[0.223s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/danialramzan/PycharmProjects/new/software-start-here/install/install/setup.ps1' +[0.224s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/danialramzan/PycharmProjects/new/software-start-here/install/install/local_setup.sh' +[0.225s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/danialramzan/PycharmProjects/new/software-start-here/install/install/_local_setup_util_sh.py' +[0.225s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/danialramzan/PycharmProjects/new/software-start-here/install/install/setup.sh' +[0.226s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/danialramzan/PycharmProjects/new/software-start-here/install/install/local_setup.bash' +[0.227s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/danialramzan/PycharmProjects/new/software-start-here/install/install/setup.bash' +[0.228s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/danialramzan/PycharmProjects/new/software-start-here/install/install/local_setup.zsh' +[0.228s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/danialramzan/PycharmProjects/new/software-start-here/install/install/setup.zsh' diff --git a/install/log/latest b/install/log/latest new file mode 120000 index 00000000..b57d247c --- /dev/null +++ b/install/log/latest @@ -0,0 +1 @@ +latest_build \ No newline at end of file diff --git a/install/log/latest_build b/install/log/latest_build new file mode 120000 index 00000000..4174cb55 --- /dev/null +++ b/install/log/latest_build @@ -0,0 +1 @@ +build_2024-08-22_19-53-15 \ No newline at end of file diff --git a/install/setup.bash b/install/setup.bash new file mode 100644 index 00000000..adad9d73 --- /dev/null +++ b/install/setup.bash @@ -0,0 +1,34 @@ +# generated from colcon_bash/shell/template/prefix_chain.bash.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_chain_bash_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source chained prefixes +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/opt/ros/humble" +_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash" +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/home/danialramzan/triton/install" +_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash" + +# source this prefix +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" > /dev/null && pwd)" +_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash" + +unset COLCON_CURRENT_PREFIX +unset _colcon_prefix_chain_bash_source_script diff --git a/install/setup.ps1 b/install/setup.ps1 new file mode 100644 index 00000000..0af9f347 --- /dev/null +++ b/install/setup.ps1 @@ -0,0 +1,30 @@ +# generated from colcon_powershell/shell/template/prefix_chain.ps1.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# function to source another script with conditional trace output +# first argument: the path of the script +function _colcon_prefix_chain_powershell_source_script { + param ( + $_colcon_prefix_chain_powershell_source_script_param + ) + # source script with conditional trace output + if (Test-Path $_colcon_prefix_chain_powershell_source_script_param) { + if ($env:COLCON_TRACE) { + echo ". '$_colcon_prefix_chain_powershell_source_script_param'" + } + . "$_colcon_prefix_chain_powershell_source_script_param" + } else { + Write-Error "not found: '$_colcon_prefix_chain_powershell_source_script_param'" + } +} + +# source chained prefixes +_colcon_prefix_chain_powershell_source_script "/opt/ros/humble\local_setup.ps1" +_colcon_prefix_chain_powershell_source_script "/home/danialramzan/triton/install\local_setup.ps1" + +# source this prefix +$env:COLCON_CURRENT_PREFIX=(Split-Path $PSCommandPath -Parent) +_colcon_prefix_chain_powershell_source_script "$env:COLCON_CURRENT_PREFIX\local_setup.ps1" diff --git a/install/setup.sh b/install/setup.sh new file mode 100644 index 00000000..1e03573d --- /dev/null +++ b/install/setup.sh @@ -0,0 +1,49 @@ +# generated from colcon_core/shell/template/prefix_chain.sh.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# since a plain shell script can't determine its own path when being sourced +# either use the provided COLCON_CURRENT_PREFIX +# or fall back to the build time prefix (if it exists) +_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX=/home/danialramzan/PycharmProjects/new/software-start-here/install +if [ ! -z "$COLCON_CURRENT_PREFIX" ]; then + _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +elif [ ! -d "$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX" ]; then + echo "The build time path \"$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 + unset _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX + return 1 +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_chain_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source chained prefixes +# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script +COLCON_CURRENT_PREFIX="/opt/ros/humble" +_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh" + +# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script +COLCON_CURRENT_PREFIX="/home/danialramzan/triton/install" +_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh" + + +# source this prefix +# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script +COLCON_CURRENT_PREFIX="$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX" +_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh" + +unset _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX +unset _colcon_prefix_chain_sh_source_script +unset COLCON_CURRENT_PREFIX diff --git a/install/setup.zsh b/install/setup.zsh new file mode 100644 index 00000000..e6007110 --- /dev/null +++ b/install/setup.zsh @@ -0,0 +1,34 @@ +# generated from colcon_zsh/shell/template/prefix_chain.zsh.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_chain_zsh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source chained prefixes +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/opt/ros/humble" +_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh" +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/home/danialramzan/triton/install" +_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh" + +# source this prefix +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd)" +_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh" + +unset COLCON_CURRENT_PREFIX +unset _colcon_prefix_chain_zsh_source_script diff --git a/src/build/.built_by b/src/build/.built_by new file mode 100644 index 00000000..06e74acb --- /dev/null +++ b/src/build/.built_by @@ -0,0 +1 @@ +colcon diff --git a/src/build/COLCON_IGNORE b/src/build/COLCON_IGNORE new file mode 100644 index 00000000..e69de29b diff --git a/src/build/challenge/CMakeCache.txt b/src/build/challenge/CMakeCache.txt new file mode 100644 index 00000000..1711761f --- /dev/null +++ b/src/build/challenge/CMakeCache.txt @@ -0,0 +1,727 @@ +# This is the CMakeCache file. +# For build in directory: /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge +# It was generated by CMake: /usr/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Generate environment files in the CMAKE_INSTALL_PREFIX +AMENT_CMAKE_ENVIRONMENT_GENERATION:BOOL=OFF + +//Generate environment files in the package share folder +AMENT_CMAKE_ENVIRONMENT_PACKAGE_GENERATION:BOOL=ON + +//Generate marker file containing the parent prefix path +AMENT_CMAKE_ENVIRONMENT_PARENT_PREFIX_PATH_GENERATION:BOOL=ON + +//Replace the CMake install command with a custom implementation +// using symlinks instead of copying resources +AMENT_CMAKE_SYMLINK_INSTALL:BOOL=OFF + +//Generate an uninstall target to revert the effects of the install +// step +AMENT_CMAKE_UNINSTALL_TARGET:BOOL=ON + +//The path where test results are generated +AMENT_TEST_RESULTS_DIR:PATH=/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/test_results + +//Build the testing tree. +BUILD_TESTING:BOOL=ON + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//CXX compiler +CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++ + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-11 + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-11 + +//Flags used by the CXX compiler during all build types. +CMAKE_CXX_FLAGS:STRING= + +//Flags used by the CXX compiler during DEBUG builds. +CMAKE_CXX_FLAGS_DEBUG:STRING=-g + +//Flags used by the CXX compiler during MINSIZEREL builds. +CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the CXX compiler during RELEASE builds. +CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the CXX compiler during RELWITHDEBINFO builds. +CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//C compiler +CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-11 + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-11 + +//Flags used by the C compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the C compiler during DEBUG builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the C compiler during RELEASE builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/home/danialramzan/PycharmProjects/new/software-start-here/src/install/challenge + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/gmake + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=challenge + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/usr/bin/readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=ON + +//Path to a library. +FastCDR_LIBRARY_DEBUG:FILEPATH=FastCDR_LIBRARY_DEBUG-NOTFOUND + +//Path to a library. +FastCDR_LIBRARY_RELEASE:FILEPATH=/opt/ros/humble/lib/libfastcdr.so + +//Path to a file. +FastRTPS_INCLUDE_DIR:PATH=/opt/ros/humble/include + +//Path to a library. +FastRTPS_LIBRARY_DEBUG:FILEPATH=FastRTPS_LIBRARY_DEBUG-NOTFOUND + +//Path to a library. +FastRTPS_LIBRARY_RELEASE:FILEPATH=/opt/ros/humble/lib/libfastrtps.so + +//Path to a library. +OPENSSL_CRYPTO_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libcrypto.so + +//Path to a file. +OPENSSL_INCLUDE_DIR:PATH=/usr/include + +//Path to a library. +OPENSSL_SSL_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libssl.so + +//Arguments to supply to pkg-config +PKG_CONFIG_ARGN:STRING= + +//pkg-config executable +PKG_CONFIG_EXECUTABLE:FILEPATH=/usr/bin/pkg-config + +//Path to a program. +Python3_EXECUTABLE:FILEPATH=/home/linuxbrew/.linuxbrew/bin/python3 + +//Name of the computer/site where compile is being run +SITE:STRING=danialramzan-Zenbook-UP6502ZA-Linux + +//The directory containing a CMake configuration file for TinyXML2. +TinyXML2_DIR:PATH=TinyXML2_DIR-NOTFOUND + +//Path to a library. +_lib:FILEPATH=/opt/ros/humble/lib/librosgraph_msgs__rosidl_typesupport_fastrtps_cpp.so + +//The directory containing a CMake configuration file for ament_cmake. +ament_cmake_DIR:PATH=/opt/ros/humble/share/ament_cmake/cmake + +//The directory containing a CMake configuration file for ament_cmake_core. +ament_cmake_core_DIR:PATH=/opt/ros/humble/share/ament_cmake_core/cmake + +//The directory containing a CMake configuration file for ament_cmake_cppcheck. +ament_cmake_cppcheck_DIR:PATH=/opt/ros/humble/share/ament_cmake_cppcheck/cmake + +//The directory containing a CMake configuration file for ament_cmake_export_definitions. +ament_cmake_export_definitions_DIR:PATH=/opt/ros/humble/share/ament_cmake_export_definitions/cmake + +//The directory containing a CMake configuration file for ament_cmake_export_dependencies. +ament_cmake_export_dependencies_DIR:PATH=/opt/ros/humble/share/ament_cmake_export_dependencies/cmake + +//The directory containing a CMake configuration file for ament_cmake_export_include_directories. +ament_cmake_export_include_directories_DIR:PATH=/opt/ros/humble/share/ament_cmake_export_include_directories/cmake + +//The directory containing a CMake configuration file for ament_cmake_export_interfaces. +ament_cmake_export_interfaces_DIR:PATH=/opt/ros/humble/share/ament_cmake_export_interfaces/cmake + +//The directory containing a CMake configuration file for ament_cmake_export_libraries. +ament_cmake_export_libraries_DIR:PATH=/opt/ros/humble/share/ament_cmake_export_libraries/cmake + +//The directory containing a CMake configuration file for ament_cmake_export_link_flags. +ament_cmake_export_link_flags_DIR:PATH=/opt/ros/humble/share/ament_cmake_export_link_flags/cmake + +//The directory containing a CMake configuration file for ament_cmake_export_targets. +ament_cmake_export_targets_DIR:PATH=/opt/ros/humble/share/ament_cmake_export_targets/cmake + +//The directory containing a CMake configuration file for ament_cmake_flake8. +ament_cmake_flake8_DIR:PATH=/opt/ros/humble/share/ament_cmake_flake8/cmake + +//The directory containing a CMake configuration file for ament_cmake_gen_version_h. +ament_cmake_gen_version_h_DIR:PATH=/opt/ros/humble/share/ament_cmake_gen_version_h/cmake + +//The directory containing a CMake configuration file for ament_cmake_include_directories. +ament_cmake_include_directories_DIR:PATH=/opt/ros/humble/share/ament_cmake_include_directories/cmake + +//The directory containing a CMake configuration file for ament_cmake_libraries. +ament_cmake_libraries_DIR:PATH=/opt/ros/humble/share/ament_cmake_libraries/cmake + +//The directory containing a CMake configuration file for ament_cmake_lint_cmake. +ament_cmake_lint_cmake_DIR:PATH=/opt/ros/humble/share/ament_cmake_lint_cmake/cmake + +//The directory containing a CMake configuration file for ament_cmake_pep257. +ament_cmake_pep257_DIR:PATH=/opt/ros/humble/share/ament_cmake_pep257/cmake + +//The directory containing a CMake configuration file for ament_cmake_python. +ament_cmake_python_DIR:PATH=/opt/ros/humble/share/ament_cmake_python/cmake + +//The directory containing a CMake configuration file for ament_cmake_target_dependencies. +ament_cmake_target_dependencies_DIR:PATH=/opt/ros/humble/share/ament_cmake_target_dependencies/cmake + +//The directory containing a CMake configuration file for ament_cmake_test. +ament_cmake_test_DIR:PATH=/opt/ros/humble/share/ament_cmake_test/cmake + +//The directory containing a CMake configuration file for ament_cmake_uncrustify. +ament_cmake_uncrustify_DIR:PATH=/opt/ros/humble/share/ament_cmake_uncrustify/cmake + +//The directory containing a CMake configuration file for ament_cmake_version. +ament_cmake_version_DIR:PATH=/opt/ros/humble/share/ament_cmake_version/cmake + +//The directory containing a CMake configuration file for ament_cmake_xmllint. +ament_cmake_xmllint_DIR:PATH=/opt/ros/humble/share/ament_cmake_xmllint/cmake + +//Path to a program. +ament_cppcheck_BIN:FILEPATH=/opt/ros/humble/bin/ament_cppcheck + +//The directory containing a CMake configuration file for ament_index_cpp. +ament_index_cpp_DIR:PATH=/opt/ros/humble/share/ament_index_cpp/cmake + +//The directory containing a CMake configuration file for ament_lint_auto. +ament_lint_auto_DIR:PATH=/opt/ros/humble/share/ament_lint_auto/cmake + +//Path to a program. +ament_lint_cmake_BIN:FILEPATH=/opt/ros/humble/bin/ament_lint_cmake + +//The directory containing a CMake configuration file for ament_lint_common. +ament_lint_common_DIR:PATH=/opt/ros/humble/share/ament_lint_common/cmake + +//Path to a program. +ament_uncrustify_BIN:FILEPATH=/opt/ros/humble/bin/ament_uncrustify + +//Path to a program. +ament_xmllint_BIN:FILEPATH=/opt/ros/humble/bin/ament_xmllint + +//The directory containing a CMake configuration file for builtin_interfaces. +builtin_interfaces_DIR:PATH=/opt/ros/humble/share/builtin_interfaces/cmake + +//Value Computed by CMake +challenge_BINARY_DIR:STATIC=/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge + +//Value Computed by CMake +challenge_IS_TOP_LEVEL:STATIC=ON + +//Value Computed by CMake +challenge_SOURCE_DIR:STATIC=/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge + +//The directory containing a CMake configuration file for fastcdr. +fastcdr_DIR:PATH=/opt/ros/humble/lib/cmake/fastcdr + +//The directory containing a CMake configuration file for fastrtps. +fastrtps_DIR:PATH=/opt/ros/humble/share/fastrtps/cmake + +//The directory containing a CMake configuration file for fastrtps_cmake_module. +fastrtps_cmake_module_DIR:PATH=/opt/ros/humble/share/fastrtps_cmake_module/cmake + +//The directory containing a CMake configuration file for fmt. +fmt_DIR:PATH=/home/linuxbrew/.linuxbrew/lib/cmake/fmt + +//The directory containing a CMake configuration file for foonathan_memory. +foonathan_memory_DIR:PATH=/opt/ros/humble/lib/foonathan_memory/cmake + +//The directory containing a CMake configuration file for libstatistics_collector. +libstatistics_collector_DIR:PATH=/opt/ros/humble/share/libstatistics_collector/cmake + +//The directory containing a CMake configuration file for libyaml_vendor. +libyaml_vendor_DIR:PATH=/opt/ros/humble/share/libyaml_vendor/cmake + +//Path to a library. +pkgcfg_lib__OPENSSL_crypto:FILEPATH=/usr/lib/x86_64-linux-gnu/libcrypto.so + +//Path to a library. +pkgcfg_lib__OPENSSL_ssl:FILEPATH=/usr/lib/x86_64-linux-gnu/libssl.so + +//The directory containing a CMake configuration file for rcl. +rcl_DIR:PATH=/opt/ros/humble/share/rcl/cmake + +//The directory containing a CMake configuration file for rcl_interfaces. +rcl_interfaces_DIR:PATH=/opt/ros/humble/share/rcl_interfaces/cmake + +//The directory containing a CMake configuration file for rcl_logging_interface. +rcl_logging_interface_DIR:PATH=/opt/ros/humble/share/rcl_logging_interface/cmake + +//The directory containing a CMake configuration file for rcl_logging_spdlog. +rcl_logging_spdlog_DIR:PATH=/opt/ros/humble/share/rcl_logging_spdlog/cmake + +//The directory containing a CMake configuration file for rcl_yaml_param_parser. +rcl_yaml_param_parser_DIR:PATH=/opt/ros/humble/share/rcl_yaml_param_parser/cmake + +//The directory containing a CMake configuration file for rclcpp. +rclcpp_DIR:PATH=/opt/ros/humble/share/rclcpp/cmake + +//The directory containing a CMake configuration file for rcpputils. +rcpputils_DIR:PATH=/opt/ros/humble/share/rcpputils/cmake + +//The directory containing a CMake configuration file for rcutils. +rcutils_DIR:PATH=/opt/ros/humble/share/rcutils/cmake + +//The directory containing a CMake configuration file for rmw. +rmw_DIR:PATH=/opt/ros/humble/share/rmw/cmake + +//The directory containing a CMake configuration file for rmw_dds_common. +rmw_dds_common_DIR:PATH=/opt/ros/humble/share/rmw_dds_common/cmake + +//The directory containing a CMake configuration file for rmw_fastrtps_cpp. +rmw_fastrtps_cpp_DIR:PATH=/opt/ros/humble/share/rmw_fastrtps_cpp/cmake + +//The directory containing a CMake configuration file for rmw_fastrtps_shared_cpp. +rmw_fastrtps_shared_cpp_DIR:PATH=/opt/ros/humble/share/rmw_fastrtps_shared_cpp/cmake + +//The directory containing a CMake configuration file for rmw_implementation. +rmw_implementation_DIR:PATH=/opt/ros/humble/share/rmw_implementation/cmake + +//The directory containing a CMake configuration file for rmw_implementation_cmake. +rmw_implementation_cmake_DIR:PATH=/opt/ros/humble/share/rmw_implementation_cmake/cmake + +//The directory containing a CMake configuration file for rosgraph_msgs. +rosgraph_msgs_DIR:PATH=/opt/ros/humble/share/rosgraph_msgs/cmake + +//The directory containing a CMake configuration file for rosidl_adapter. +rosidl_adapter_DIR:PATH=/opt/ros/humble/share/rosidl_adapter/cmake + +//The directory containing a CMake configuration file for rosidl_cmake. +rosidl_cmake_DIR:PATH=/opt/ros/humble/share/rosidl_cmake/cmake + +//The directory containing a CMake configuration file for rosidl_default_runtime. +rosidl_default_runtime_DIR:PATH=/opt/ros/humble/share/rosidl_default_runtime/cmake + +//The directory containing a CMake configuration file for rosidl_generator_c. +rosidl_generator_c_DIR:PATH=/opt/ros/humble/share/rosidl_generator_c/cmake + +//The directory containing a CMake configuration file for rosidl_generator_cpp. +rosidl_generator_cpp_DIR:PATH=/opt/ros/humble/share/rosidl_generator_cpp/cmake + +//The directory containing a CMake configuration file for rosidl_runtime_c. +rosidl_runtime_c_DIR:PATH=/opt/ros/humble/share/rosidl_runtime_c/cmake + +//The directory containing a CMake configuration file for rosidl_runtime_cpp. +rosidl_runtime_cpp_DIR:PATH=/opt/ros/humble/share/rosidl_runtime_cpp/cmake + +//The directory containing a CMake configuration file for rosidl_typesupport_c. +rosidl_typesupport_c_DIR:PATH=/opt/ros/humble/share/rosidl_typesupport_c/cmake + +//The directory containing a CMake configuration file for rosidl_typesupport_cpp. +rosidl_typesupport_cpp_DIR:PATH=/opt/ros/humble/share/rosidl_typesupport_cpp/cmake + +//The directory containing a CMake configuration file for rosidl_typesupport_fastrtps_c. +rosidl_typesupport_fastrtps_c_DIR:PATH=/opt/ros/humble/share/rosidl_typesupport_fastrtps_c/cmake + +//The directory containing a CMake configuration file for rosidl_typesupport_fastrtps_cpp. +rosidl_typesupport_fastrtps_cpp_DIR:PATH=/opt/ros/humble/share/rosidl_typesupport_fastrtps_cpp/cmake + +//The directory containing a CMake configuration file for rosidl_typesupport_interface. +rosidl_typesupport_interface_DIR:PATH=/opt/ros/humble/share/rosidl_typesupport_interface/cmake + +//The directory containing a CMake configuration file for rosidl_typesupport_introspection_c. +rosidl_typesupport_introspection_c_DIR:PATH=/opt/ros/humble/share/rosidl_typesupport_introspection_c/cmake + +//The directory containing a CMake configuration file for rosidl_typesupport_introspection_cpp. +rosidl_typesupport_introspection_cpp_DIR:PATH=/opt/ros/humble/share/rosidl_typesupport_introspection_cpp/cmake + +//The directory containing a CMake configuration file for spdlog. +spdlog_DIR:PATH=/usr/lib/x86_64-linux-gnu/cmake/spdlog + +//The directory containing a CMake configuration file for spdlog_vendor. +spdlog_vendor_DIR:PATH=/opt/ros/humble/share/spdlog_vendor/cmake + +//The directory containing a CMake configuration file for statistics_msgs. +statistics_msgs_DIR:PATH=/opt/ros/humble/share/statistics_msgs/cmake + +//The directory containing a CMake configuration file for std_msgs. +std_msgs_DIR:PATH=/opt/ros/humble/share/std_msgs/cmake + +//The directory containing a CMake configuration file for tracetools. +tracetools_DIR:PATH=/opt/ros/humble/share/tracetools/cmake + +//Path to a program. +xmllint_BIN:FILEPATH=/home/linuxbrew/.linuxbrew/bin/xmllint + +//The directory containing a CMake configuration file for yaml. +yaml_DIR:PATH=/opt/ros/humble/cmake + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=22 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=1 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest +//ADVANCED property for variable: CMAKE_CXX_COMPILER +CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR +CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB +CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS +CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG +CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL +CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE +CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO +CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Test CMAKE_HAVE_LIBC_PTHREAD +CMAKE_HAVE_LIBC_PTHREAD:INTERNAL=1 +//Have include pthread.h +CMAKE_HAVE_PTHREAD_H:INTERNAL=1 +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/share/cmake-3.22 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//Details about finding FastRTPS +FIND_PACKAGE_MESSAGE_DETAILS_FastRTPS:INTERNAL=[/opt/ros/humble/include][/opt/ros/humble/lib/libfastrtps.so;/opt/ros/humble/lib/libfastcdr.so][v()] +//Details about finding OpenSSL +FIND_PACKAGE_MESSAGE_DETAILS_OpenSSL:INTERNAL=[/usr/lib/x86_64-linux-gnu/libcrypto.so][/usr/include][c ][v3.0.2()] +//Details about finding Python3 +FIND_PACKAGE_MESSAGE_DETAILS_Python3:INTERNAL=[/home/linuxbrew/.linuxbrew/bin/python3][cfound components: Interpreter ][v3.11.6()] +//Details about finding Threads +FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()] +//ADVANCED property for variable: OPENSSL_CRYPTO_LIBRARY +OPENSSL_CRYPTO_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: OPENSSL_INCLUDE_DIR +OPENSSL_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: OPENSSL_SSL_LIBRARY +OPENSSL_SSL_LIBRARY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: PKG_CONFIG_ARGN +PKG_CONFIG_ARGN-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: PKG_CONFIG_EXECUTABLE +PKG_CONFIG_EXECUTABLE-ADVANCED:INTERNAL=1 +_OPENSSL_CFLAGS:INTERNAL= +_OPENSSL_CFLAGS_I:INTERNAL= +_OPENSSL_CFLAGS_OTHER:INTERNAL= +_OPENSSL_FOUND:INTERNAL=1 +_OPENSSL_INCLUDEDIR:INTERNAL=/usr/include +_OPENSSL_INCLUDE_DIRS:INTERNAL= +_OPENSSL_LDFLAGS:INTERNAL=-L/usr/lib/x86_64-linux-gnu;-lssl;-lcrypto +_OPENSSL_LDFLAGS_OTHER:INTERNAL= +_OPENSSL_LIBDIR:INTERNAL=/usr/lib/x86_64-linux-gnu +_OPENSSL_LIBRARIES:INTERNAL=ssl;crypto +_OPENSSL_LIBRARY_DIRS:INTERNAL=/usr/lib/x86_64-linux-gnu +_OPENSSL_LIBS:INTERNAL= +_OPENSSL_LIBS_L:INTERNAL= +_OPENSSL_LIBS_OTHER:INTERNAL= +_OPENSSL_LIBS_PATHS:INTERNAL= +_OPENSSL_MODULE_NAME:INTERNAL=openssl +_OPENSSL_PREFIX:INTERNAL=/usr +_OPENSSL_STATIC_CFLAGS:INTERNAL= +_OPENSSL_STATIC_CFLAGS_I:INTERNAL= +_OPENSSL_STATIC_CFLAGS_OTHER:INTERNAL= +_OPENSSL_STATIC_INCLUDE_DIRS:INTERNAL= +_OPENSSL_STATIC_LDFLAGS:INTERNAL=-L/usr/lib/x86_64-linux-gnu;-lssl;-lcrypto;-ldl;-pthread +_OPENSSL_STATIC_LDFLAGS_OTHER:INTERNAL=-pthread +_OPENSSL_STATIC_LIBDIR:INTERNAL= +_OPENSSL_STATIC_LIBRARIES:INTERNAL=ssl;crypto;dl +_OPENSSL_STATIC_LIBRARY_DIRS:INTERNAL=/usr/lib/x86_64-linux-gnu +_OPENSSL_STATIC_LIBS:INTERNAL= +_OPENSSL_STATIC_LIBS_L:INTERNAL= +_OPENSSL_STATIC_LIBS_OTHER:INTERNAL= +_OPENSSL_STATIC_LIBS_PATHS:INTERNAL= +_OPENSSL_VERSION:INTERNAL=3.0.2 +_OPENSSL_openssl_INCLUDEDIR:INTERNAL= +_OPENSSL_openssl_LIBDIR:INTERNAL= +_OPENSSL_openssl_PREFIX:INTERNAL= +_OPENSSL_openssl_VERSION:INTERNAL= +_Python3_EXECUTABLE:INTERNAL=/home/linuxbrew/.linuxbrew/bin/python3 +//Python3 Properties +_Python3_INTERPRETER_PROPERTIES:INTERNAL=Python;3;11;6;64;;cpython-311-x86_64-linux-gnu;/home/linuxbrew/.linuxbrew/Cellar/python@3.11/3.11.6_1/lib/python3.11;/home/linuxbrew/.linuxbrew/Cellar/python@3.11/3.11.6_1/lib/python3.11;/home/linuxbrew/.linuxbrew/Cellar/python@3.11/3.11.6_1/lib/python3.11/site-packages;/home/linuxbrew/.linuxbrew/Cellar/python@3.11/3.11.6_1/lib/python3.11/site-packages +_Python3_INTERPRETER_SIGNATURE:INTERNAL=e1a3cfbf01f3fdd6a8ff8aba8006db7b +__pkg_config_arguments__OPENSSL:INTERNAL=QUIET;openssl +__pkg_config_checked__OPENSSL:INTERNAL=1 +//ADVANCED property for variable: pkgcfg_lib__OPENSSL_crypto +pkgcfg_lib__OPENSSL_crypto-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: pkgcfg_lib__OPENSSL_ssl +pkgcfg_lib__OPENSSL_ssl-ADVANCED:INTERNAL=1 +prefix_result:INTERNAL=/usr/lib/x86_64-linux-gnu + diff --git a/src/build/challenge/CMakeFiles/3.22.1/CMakeCCompiler.cmake b/src/build/challenge/CMakeFiles/3.22.1/CMakeCCompiler.cmake new file mode 100644 index 00000000..488ad375 --- /dev/null +++ b/src/build/challenge/CMakeFiles/3.22.1/CMakeCCompiler.cmake @@ -0,0 +1,72 @@ +set(CMAKE_C_COMPILER "/usr/bin/cc") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "GNU") +set(CMAKE_C_COMPILER_VERSION "11.4.0") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") +set(CMAKE_C17_COMPILE_FEATURES "c_std_17") +set(CMAKE_C23_COMPILE_FEATURES "c_std_23") + +set(CMAKE_C_PLATFORM_ID "Linux") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_C_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_C_COMPILER_AR "/usr/bin/gcc-ar-11") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_C_COMPILER_RANLIB "/usr/bin/gcc-ranlib-11") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCC 1) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_C_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/11/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "gcc;gcc_s;c;gcc;gcc_s") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/11;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/src/build/challenge/CMakeFiles/3.22.1/CMakeCXXCompiler.cmake b/src/build/challenge/CMakeFiles/3.22.1/CMakeCXXCompiler.cmake new file mode 100644 index 00000000..345e9307 --- /dev/null +++ b/src/build/challenge/CMakeFiles/3.22.1/CMakeCXXCompiler.cmake @@ -0,0 +1,83 @@ +set(CMAKE_CXX_COMPILER "/usr/bin/c++") +set(CMAKE_CXX_COMPILER_ARG1 "") +set(CMAKE_CXX_COMPILER_ID "GNU") +set(CMAKE_CXX_COMPILER_VERSION "11.4.0") +set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "") +set(CMAKE_CXX_COMPILER_WRAPPER "") +set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23") +set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters") +set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates") +set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates") +set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17") +set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20") +set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23") + +set(CMAKE_CXX_PLATFORM_ID "Linux") +set(CMAKE_CXX_SIMULATE_ID "") +set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_CXX_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_CXX_COMPILER_AR "/usr/bin/gcc-ar-11") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/gcc-ranlib-11") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCXX 1) +set(CMAKE_CXX_COMPILER_LOADED 1) +set(CMAKE_CXX_COMPILER_WORKS TRUE) +set(CMAKE_CXX_ABI_COMPILED TRUE) + +set(CMAKE_CXX_COMPILER_ENV_VAR "CXX") + +set(CMAKE_CXX_COMPILER_ID_RUN 1) +set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm) +set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC) + +foreach (lang C OBJC OBJCXX) + if (CMAKE_${lang}_COMPILER_ID_RUN) + foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS) + list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension}) + endforeach() + endif() +endforeach() + +set(CMAKE_CXX_LINKER_PREFERENCE 30) +set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1) + +# Save compiler ABI information. +set(CMAKE_CXX_SIZEOF_DATA_PTR "8") +set(CMAKE_CXX_COMPILER_ABI "ELF") +set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") + +if(CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_CXX_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}") +endif() + +if(CMAKE_CXX_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") +endif() + +set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/11;/usr/include/x86_64-linux-gnu/c++/11;/usr/include/c++/11/backward;/usr/lib/gcc/x86_64-linux-gnu/11/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include") +set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc") +set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/11;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib") +set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/src/build/challenge/CMakeFiles/3.22.1/CMakeDetermineCompilerABI_C.bin b/src/build/challenge/CMakeFiles/3.22.1/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000000000000000000000000000000000000..a4691337f66c7201fb0c354daa924d93cb69ee7e GIT binary patch literal 15968 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 literal 0 HcmV?d00001 diff --git a/src/build/challenge/CMakeFiles/3.22.1/CMakeSystem.cmake b/src/build/challenge/CMakeFiles/3.22.1/CMakeSystem.cmake new file mode 100644 index 00000000..cd2bad98 --- /dev/null +++ b/src/build/challenge/CMakeFiles/3.22.1/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-6.5.0-45-generic") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "6.5.0-45-generic") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Linux-6.5.0-45-generic") +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_VERSION "6.5.0-45-generic") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/src/build/challenge/CMakeFiles/3.22.1/CompilerIdC/CMakeCCompilerId.c b/src/build/challenge/CMakeFiles/3.22.1/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 00000000..41b99d77 --- /dev/null +++ b/src/build/challenge/CMakeFiles/3.22.1/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,803 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if !defined(__STDC__) && !defined(__clang__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) +# define C_VERSION "90" +# else +# define C_VERSION +# endif +#elif __STDC_VERSION__ > 201710L +# define C_VERSION "23" +#elif __STDC_VERSION__ >= 201710L +# define C_VERSION "17" +#elif __STDC_VERSION__ >= 201000L +# define C_VERSION "11" +#elif __STDC_VERSION__ >= 199901L +# define C_VERSION "99" +#else +# define C_VERSION "90" +#endif +const char* info_language_standard_default = + "INFO" ":" "standard_default[" C_VERSION "]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +/* !defined(_MSC_VER) to exclude Clang's MSVC compatibility mode. */ +#if (defined(__clang__) || defined(__GNUC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) && !defined(_MSC_VER) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/src/build/challenge/CMakeFiles/3.22.1/CompilerIdC/a.out b/src/build/challenge/CMakeFiles/3.22.1/CompilerIdC/a.out new file mode 100755 index 0000000000000000000000000000000000000000..c786756abbd10a6ac500dd20933efa409d328d0c GIT binary patch literal 16088 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 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_CC) +# define COMPILER_ID "SunPro" +# if __SUNPRO_CC >= 0x5100 + /* __SUNPRO_CC = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF) +# endif + +#elif defined(__HP_aCC) +# define COMPILER_ID "HP" + /* __HP_aCC = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100) + +#elif defined(__DECCXX) +# define COMPILER_ID "Compaq" + /* __DECCXX_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000) + +#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800 +# define COMPILER_ID "XL" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMCPP__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) || defined(__GNUG__) +# define COMPILER_ID "GNU" +# if defined(__GNUC__) +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# else +# define COMPILER_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L +# if defined(__INTEL_CXX11_MODE__) +# if defined(__cpp_aggregate_nsdmi) +# define CXX_STD 201402L +# else +# define CXX_STD 201103L +# endif +# else +# define CXX_STD 199711L +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#else +# define CXX_STD __cplusplus +#endif + +const char* info_language_standard_default = "INFO" ":" "standard_default[" +#if CXX_STD > 202002L + "23" +#elif CXX_STD > 201703L + "20" +#elif CXX_STD >= 201703L + "17" +#elif CXX_STD >= 201402L + "14" +#elif CXX_STD >= 201103L + "11" +#else + "98" +#endif +"]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +/* !defined(_MSC_VER) to exclude Clang's MSVC compatibility mode. */ +#if (defined(__clang__) || defined(__GNUC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) && !defined(_MSC_VER) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +int main(int argc, char* argv[]) +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} diff --git a/src/build/challenge/CMakeFiles/3.22.1/CompilerIdCXX/a.out b/src/build/challenge/CMakeFiles/3.22.1/CompilerIdCXX/a.out new file mode 100755 index 0000000000000000000000000000000000000000..9944be481759fba2110a3ba6af6d9c647c7ea1a9 GIT binary patch literal 16096 zcmeHOYit}>6~4Pk8izc*NgEQ9(k!K|5?W7e$4O0)$vXBrV`Rr^;*>yYMq}^VyJ8<^ zcb3`_v_XMllLR#a0Y8FNwGv1mBoL^m6)jE+MX3r(evwKDg-6vOrLB3J5@k8(-t(=; z({&KgAN-hOdCooGdE7ha-kH5KbMM2+zMg0#qCiX32Ng?+m_ZVvcWxzsPG~kpstHS4Y=HSiBDIEP@vn!MR4MzaMs zmpzsykrF)Ols&iPIe9l*P%LwPcd31Sy?eWyR;$(8Su5{oQ%>(-zmrOr(qq}Omo5$V zcjbzO^q@PO<8Wj7VnM<=#>XE37wOix8f=JsN|R5oQ-aMpSJG4_KqU!gQd>5gXz z*Dc;A8@r7Gyd-!$fPY@_tpWT?f;R{7?+AWrkJ7|r zhx-b2*@yEO16}dq7~8Cy_2E2jL32J_-*2G^d6Zh5VD z`r^mz>EGHXem{F)FxfKGa^61O@gfDNt}m12Uq-FQEuYo#2tP-NeR|o`%-%oet*5H* z=Q35jqI$V;%W*b*UO3sG(e^vPz--%fdwSMB_xc|D+}sj7@`8Qwx_1i&xKjc&R4>D*I%|O(a~|R;^aAr0DR14igz7-v$1Ec#xDF z=rH+BfBLFDUAg?Tq-uP2CX&2H_|x@pV|aS~PuEa3 zpIjQNS)Z+EO;JwO!%rr!4N>>h`mWYn+@z4g41^g7GZ1DV%s`ldFau!*!VH8N2s037 zAk4s9Gr-@!ZbZHNdj@uo6!YWRT)K3WzDf=)v|gZhKAA3+v&F*EW=$CyjF6!#1R$u+S@qFt+RicV3@41^SBAk09RfiMGM2Eq)483;2FW+2Q!n1Q!9 z16Z$!^@&&ms2^Uas#T~?)-SFW`A4$O@m(Tg9pq+_@d&d?WUPne=N=~L|9ZVzWcjmr-Q9p8F*xKi*caeC0FC;X*PZ)&T$Hc3#BlL8Sajii* ze2V_LUR+ner>GE7H!EBxz`sd_dhLH!+s9NQZY*03qX_lwFAyG~mE2SB5knuV7ysAV zp01X_czIR(t*x!YN0>LY{X1*d5%3r#WE}(_Zz4SIlTkdP@eN8PfEeCOcuZ}mD%@{?-!JyTI3qeftmb)%@U_tm3ga4@hZ(1uRoozQnW`^pe1i(EzdkE?a6R=i zgvV%{Boc^h_ydHmqw$cC@uuG)k?J{#6BB#f4=zX?j5kF4mBiU5_g($Yh?KwKICNe? z``0A?)-aJ}p!d@c1?JYnq6esyT117v0QQ3%{eKrSSmYiWkT^g#$4Jy4s z7QA;L>$s(oJL#kgUTIQ|mfU>WNmcUsNpkT?4q18&OuPEskEgqi9O;rbnY}4%WPDsX zAMI;t%@#(Bcymc{dJcB>C!OT}Zin^}bbn-jXMb-O!Sw3WN!p^dyALX7U*Evq&OT?L zr{_>|&>8I9+m|Gd;J$_gb~F6D9SrG|>$yswB}HMuY-b>0;ob%(RW3RidOgbf9(o7J zDwQobm2x_z^r_(8s*!STVXWegrJc9FH&v8J@xdEjs%*GimWuVZ49B637LpDfz7{a} ziuMM(E*5V7sHKEAc<8<|P38B$N?GN}yyp%R_ezFmP|6l)-^aMJ3Pmq%jTI`^c&Rv^ zE_staXt~N z!1(vr?~nNacpQepgZ>{T{BJY|L;ErB1V{atch>G}63->hb58hUUJCxG*l`;F8CDb{1nXpCrHV2O!#A736A+X+7CPMhsdAjtdKEp1#gzhgY8F~PE&z% z3V+O_!7-0U{lWA9D*5s`L0|h_k>3|QKah#0VE=ucP``g%{J=#N@A;oC;ExCVn?(T* zI|P6X{_TK&LKNV~0v!fF#QR>rAM+Y;JYT^+c>X^Wf8<}q#Zvfr5y1q8sD4Z(ZX*0& z5(DsiYL=!DtpDc(`~By{AN9sQv|#u27)> literal 0 HcmV?d00001 diff --git a/src/build/challenge/CMakeFiles/CMakeDirectoryInformation.cmake b/src/build/challenge/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 00000000..54471d0c --- /dev/null +++ b/src/build/challenge/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.22 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/src/build/challenge/CMakeFiles/CMakeOutput.log b/src/build/challenge/CMakeFiles/CMakeOutput.log new file mode 100644 index 00000000..8cfdf37b --- /dev/null +++ b/src/build/challenge/CMakeFiles/CMakeOutput.log @@ -0,0 +1,501 @@ +The system is: Linux - 6.5.0-45-generic - x86_64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: /usr/bin/cc +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" + +The C compiler identification is GNU, found in "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/3.22.1/CompilerIdC/a.out" + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: /usr/bin/c++ +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out" + +The CXX compiler identification is GNU, found in "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/3.22.1/CompilerIdCXX/a.out" + +Detecting C compiler ABI info compiled with the following output: +Change Dir: /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_4ab34/fast && /usr/bin/gmake -f CMakeFiles/cmTC_4ab34.dir/build.make CMakeFiles/cmTC_4ab34.dir/build +gmake[1]: Entering directory '/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_4ab34.dir/CMakeCCompilerABI.c.o +/usr/bin/cc -v -o CMakeFiles/cmTC_4ab34.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c +Using built-in specs. +COLLECT_GCC=/usr/bin/cc +OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2 +Thread model: posix +Supported LTO compression algorithms: zlib zstd +gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_4ab34.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_4ab34.dir/' + /usr/lib/gcc/x86_64-linux-gnu/11/cc1 -quiet -v -imultiarch x86_64-linux-gnu /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_4ab34.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccgw8Mbo.s +GNU C17 (Ubuntu 11.4.0-1ubuntu1~22.04) version 11.4.0 (x86_64-linux-gnu) + compiled by GNU C version 11.4.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/11/include-fixed" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include" +#include "..." search starts here: +#include <...> search starts here: + /usr/lib/gcc/x86_64-linux-gnu/11/include + /usr/local/include + /usr/include/x86_64-linux-gnu + /usr/include +End of search list. +GNU C17 (Ubuntu 11.4.0-1ubuntu1~22.04) version 11.4.0 (x86_64-linux-gnu) + compiled by GNU C version 11.4.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: 50eaa2331df977b8016186198deb2d18 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_4ab34.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_4ab34.dir/' + as -v --64 -o CMakeFiles/cmTC_4ab34.dir/CMakeCCompilerABI.c.o /tmp/ccgw8Mbo.s +GNU assembler version 2.38 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.38 +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_4ab34.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_4ab34.dir/CMakeCCompilerABI.c.' +Linking C executable cmTC_4ab34 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_4ab34.dir/link.txt --verbose=1 +/usr/bin/cc -v CMakeFiles/cmTC_4ab34.dir/CMakeCCompilerABI.c.o -o cmTC_4ab34 +Using built-in specs. +COLLECT_GCC=/usr/bin/cc +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2 +Thread model: posix +Supported LTO compression algorithms: zlib zstd +gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_4ab34' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_4ab34.' + /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/ccCHcgAR.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_4ab34 /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_4ab34.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_4ab34' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_4ab34.' +gmake[1]: Leaving directory '/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp' + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/lib/gcc/x86_64-linux-gnu/11/include] + add: [/usr/local/include] + add: [/usr/include/x86_64-linux-gnu] + add: [/usr/include] + end of search list found + collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/11/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/11/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/lib/gcc/x86_64-linux-gnu/11/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_4ab34/fast && /usr/bin/gmake -f CMakeFiles/cmTC_4ab34.dir/build.make CMakeFiles/cmTC_4ab34.dir/build] + ignore line: [gmake[1]: Entering directory '/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp'] + ignore line: [Building C object CMakeFiles/cmTC_4ab34.dir/CMakeCCompilerABI.c.o] + ignore line: [/usr/bin/cc -v -o CMakeFiles/cmTC_4ab34.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/cc] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-nvptx/usr amdgcn-amdhsa=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_4ab34.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_4ab34.dir/'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/11/cc1 -quiet -v -imultiarch x86_64-linux-gnu /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_4ab34.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccgw8Mbo.s] + ignore line: [GNU C17 (Ubuntu 11.4.0-1ubuntu1~22.04) version 11.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 11.4.0 GMP version 6.2.1 MPFR version 4.1.0 MPC version 1.2.1 isl version isl-0.24-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/11/include-fixed"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/11/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/include/x86_64-linux-gnu] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C17 (Ubuntu 11.4.0-1ubuntu1~22.04) version 11.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 11.4.0 GMP version 6.2.1 MPFR version 4.1.0 MPC version 1.2.1 isl version isl-0.24-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: 50eaa2331df977b8016186198deb2d18] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_4ab34.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_4ab34.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_4ab34.dir/CMakeCCompilerABI.c.o /tmp/ccgw8Mbo.s] + ignore line: [GNU assembler version 2.38 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.38] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_4ab34.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_4ab34.dir/CMakeCCompilerABI.c.'] + ignore line: [Linking C executable cmTC_4ab34] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_4ab34.dir/link.txt --verbose=1] + ignore line: [/usr/bin/cc -v CMakeFiles/cmTC_4ab34.dir/CMakeCCompilerABI.c.o -o cmTC_4ab34 ] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/cc] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-nvptx/usr amdgcn-amdhsa=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_4ab34' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_4ab34.'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/ccCHcgAR.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_4ab34 /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_4ab34.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/11/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccCHcgAR.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--as-needed] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-o] ==> ignore + arg [cmTC_4ab34] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/11] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/11] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib] + arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/11/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/11/../../..] + arg [CMakeFiles/cmTC_4ab34.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lgcc] ==> lib [gcc] + arg [--push-state] ==> ignore + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--pop-state] ==> ignore + arg [-lc] ==> lib [c] + arg [-lgcc] ==> lib [gcc] + arg [--push-state] ==> ignore + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--pop-state] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o] + collapse obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o] ==> [/usr/lib/x86_64-linux-gnu/Scrt1.o] + collapse obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o] ==> [/usr/lib/x86_64-linux-gnu/crti.o] + collapse obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o] ==> [/usr/lib/x86_64-linux-gnu/crtn.o] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/11] ==> [/usr/lib/gcc/x86_64-linux-gnu/11] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/11/../../..] ==> [/usr/lib] + implicit libs: [gcc;gcc_s;c;gcc;gcc_s] + implicit objs: [/usr/lib/x86_64-linux-gnu/Scrt1.o;/usr/lib/x86_64-linux-gnu/crti.o;/usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o;/usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o;/usr/lib/x86_64-linux-gnu/crtn.o] + implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/11;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] + implicit fwks: [] + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_c0c3d/fast && /usr/bin/gmake -f CMakeFiles/cmTC_c0c3d.dir/build.make CMakeFiles/cmTC_c0c3d.dir/build +gmake[1]: Entering directory '/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp' +Building CXX object CMakeFiles/cmTC_c0c3d.dir/CMakeCXXCompilerABI.cpp.o +/usr/bin/c++ -v -o CMakeFiles/cmTC_c0c3d.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2 +Thread model: posix +Supported LTO compression algorithms: zlib zstd +gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_c0c3d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_c0c3d.dir/' + /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_c0c3d.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccrjepfk.s +GNU C++17 (Ubuntu 11.4.0-1ubuntu1~22.04) version 11.4.0 (x86_64-linux-gnu) + compiled by GNU C version 11.4.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/11" +ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/11/include-fixed" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include" +#include "..." search starts here: +#include <...> search starts here: + /usr/include/c++/11 + /usr/include/x86_64-linux-gnu/c++/11 + /usr/include/c++/11/backward + /usr/lib/gcc/x86_64-linux-gnu/11/include + /usr/local/include + /usr/include/x86_64-linux-gnu + /usr/include +End of search list. +GNU C++17 (Ubuntu 11.4.0-1ubuntu1~22.04) version 11.4.0 (x86_64-linux-gnu) + compiled by GNU C version 11.4.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: d591828bb4d392ae8b7b160e5bb0b95f +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_c0c3d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_c0c3d.dir/' + as -v --64 -o CMakeFiles/cmTC_c0c3d.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccrjepfk.s +GNU assembler version 2.38 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.38 +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_c0c3d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_c0c3d.dir/CMakeCXXCompilerABI.cpp.' +Linking CXX executable cmTC_c0c3d +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_c0c3d.dir/link.txt --verbose=1 +/usr/bin/c++ -v CMakeFiles/cmTC_c0c3d.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_c0c3d +Using built-in specs. +COLLECT_GCC=/usr/bin/c++ +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2 +Thread model: posix +Supported LTO compression algorithms: zlib zstd +gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_c0c3d' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_c0c3d.' + /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/cc3lZusH.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_c0c3d /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_c0c3d.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_c0c3d' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_c0c3d.' +gmake[1]: Leaving directory '/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp' + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/include/c++/11] + add: [/usr/include/x86_64-linux-gnu/c++/11] + add: [/usr/include/c++/11/backward] + add: [/usr/lib/gcc/x86_64-linux-gnu/11/include] + add: [/usr/local/include] + add: [/usr/include/x86_64-linux-gnu] + add: [/usr/include] + end of search list found + collapse include dir [/usr/include/c++/11] ==> [/usr/include/c++/11] + collapse include dir [/usr/include/x86_64-linux-gnu/c++/11] ==> [/usr/include/x86_64-linux-gnu/c++/11] + collapse include dir [/usr/include/c++/11/backward] ==> [/usr/include/c++/11/backward] + collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/11/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/11/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/include/c++/11;/usr/include/x86_64-linux-gnu/c++/11;/usr/include/c++/11/backward;/usr/lib/gcc/x86_64-linux-gnu/11/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_c0c3d/fast && /usr/bin/gmake -f CMakeFiles/cmTC_c0c3d.dir/build.make CMakeFiles/cmTC_c0c3d.dir/build] + ignore line: [gmake[1]: Entering directory '/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp'] + ignore line: [Building CXX object CMakeFiles/cmTC_c0c3d.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_c0c3d.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-nvptx/usr amdgcn-amdhsa=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_c0c3d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_c0c3d.dir/'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_c0c3d.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccrjepfk.s] + ignore line: [GNU C++17 (Ubuntu 11.4.0-1ubuntu1~22.04) version 11.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 11.4.0 GMP version 6.2.1 MPFR version 4.1.0 MPC version 1.2.1 isl version isl-0.24-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/11"] + ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/11/include-fixed"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/include/c++/11] + ignore line: [ /usr/include/x86_64-linux-gnu/c++/11] + ignore line: [ /usr/include/c++/11/backward] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/11/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/include/x86_64-linux-gnu] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C++17 (Ubuntu 11.4.0-1ubuntu1~22.04) version 11.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 11.4.0 GMP version 6.2.1 MPFR version 4.1.0 MPC version 1.2.1 isl version isl-0.24-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: d591828bb4d392ae8b7b160e5bb0b95f] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_c0c3d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_c0c3d.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_c0c3d.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccrjepfk.s] + ignore line: [GNU assembler version 2.38 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.38] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_c0c3d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_c0c3d.dir/CMakeCXXCompilerABI.cpp.'] + ignore line: [Linking CXX executable cmTC_c0c3d] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_c0c3d.dir/link.txt --verbose=1] + ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_c0c3d.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_c0c3d ] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/c++] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-nvptx/usr amdgcn-amdhsa=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2] + ignore line: [Thread model: posix] + ignore line: [Supported LTO compression algorithms: zlib zstd] + ignore line: [gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_c0c3d' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_c0c3d.'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/cc3lZusH.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_c0c3d /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_c0c3d.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/11/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/cc3lZusH.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--as-needed] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-o] ==> ignore + arg [cmTC_c0c3d] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/11] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/11] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib] + arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/11/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/11/../../..] + arg [CMakeFiles/cmTC_c0c3d.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lstdc++] ==> lib [stdc++] + arg [-lm] ==> lib [m] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [-lc] ==> lib [c] + arg [-lgcc_s] ==> lib [gcc_s] + arg [-lgcc] ==> lib [gcc] + arg [/usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o] + collapse obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o] ==> [/usr/lib/x86_64-linux-gnu/Scrt1.o] + collapse obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o] ==> [/usr/lib/x86_64-linux-gnu/crti.o] + collapse obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o] ==> [/usr/lib/x86_64-linux-gnu/crtn.o] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/11] ==> [/usr/lib/gcc/x86_64-linux-gnu/11] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/11/../../..] ==> [/usr/lib] + implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc] + implicit objs: [/usr/lib/x86_64-linux-gnu/Scrt1.o;/usr/lib/x86_64-linux-gnu/crti.o;/usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o;/usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o;/usr/lib/x86_64-linux-gnu/crtn.o] + implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/11;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] + implicit fwks: [] + + +Determining if the include file pthread.h exists passed with the following output: +Change Dir: /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_0ec45/fast && gmake[1]: Entering directory '/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp' +/usr/bin/gmake -f CMakeFiles/cmTC_0ec45.dir/build.make CMakeFiles/cmTC_0ec45.dir/build +gmake[2]: Entering directory '/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_0ec45.dir/CheckIncludeFile.c.o +/usr/bin/cc -o CMakeFiles/cmTC_0ec45.dir/CheckIncludeFile.c.o -c /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp/CheckIncludeFile.c +Linking C executable cmTC_0ec45 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_0ec45.dir/link.txt --verbose=1 +/usr/bin/cc CMakeFiles/cmTC_0ec45.dir/CheckIncludeFile.c.o -o cmTC_0ec45 +gmake[2]: Leaving directory '/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp' +gmake[1]: Leaving directory '/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp' + + + +Performing C SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD succeeded with the following output: +Change Dir: /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_c4938/fast && gmake[1]: Entering directory '/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp' +/usr/bin/gmake -f CMakeFiles/cmTC_c4938.dir/build.make CMakeFiles/cmTC_c4938.dir/build +gmake[2]: Entering directory '/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_c4938.dir/src.c.o +/usr/bin/cc -DCMAKE_HAVE_LIBC_PTHREAD -o CMakeFiles/cmTC_c4938.dir/src.c.o -c /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp/src.c +Linking C executable cmTC_c4938 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_c4938.dir/link.txt --verbose=1 +/usr/bin/cc CMakeFiles/cmTC_c4938.dir/src.c.o -o cmTC_c4938 +gmake[2]: Leaving directory '/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp' +gmake[1]: Leaving directory '/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/CMakeTmp' + + +Source file was: +#include + +static void* test_func(void* data) +{ + return data; +} + +int main(void) +{ + pthread_t thread; + pthread_create(&thread, NULL, test_func, NULL); + pthread_detach(thread); + pthread_cancel(thread); + pthread_join(thread, NULL); + pthread_atfork(NULL, NULL, NULL); + pthread_exit(NULL); + + return 0; +} + diff --git a/src/build/challenge/CMakeFiles/CMakeRuleHashes.txt b/src/build/challenge/CMakeFiles/CMakeRuleHashes.txt new file mode 100644 index 00000000..b27889db --- /dev/null +++ b/src/build/challenge/CMakeFiles/CMakeRuleHashes.txt @@ -0,0 +1,2 @@ +# Hashes of file build rules. +4d908f5f03d3ffb5dab59c2e81d12369 CMakeFiles/challenge_uninstall diff --git a/src/build/challenge/CMakeFiles/Makefile.cmake b/src/build/challenge/CMakeFiles/Makefile.cmake new file mode 100644 index 00000000..50649c0e --- /dev/null +++ b/src/build/challenge/CMakeFiles/Makefile.cmake @@ -0,0 +1,223 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.22 + +# The generator used is: +set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +set(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "CMakeFiles/3.22.1/CMakeCCompiler.cmake" + "CMakeFiles/3.22.1/CMakeCXXCompiler.cmake" + "CMakeFiles/3.22.1/CMakeSystem.cmake" + "ament_cmake_core/package.cmake" + "ament_cmake_package_templates/templates.cmake" + "/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/CMakeLists.txt" + "/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/package.xml" + "/opt/ros/humble/lib/python3.10/site-packages/ament_package/template/package_level/local_setup.bash.in" + "/opt/ros/humble/lib/python3.10/site-packages/ament_package/template/package_level/local_setup.sh.in" + "/opt/ros/humble/lib/python3.10/site-packages/ament_package/template/package_level/local_setup.zsh.in" + "/opt/ros/humble/share/ament_cmake/cmake/ament_cmakeConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake/cmake/ament_cmakeConfig.cmake" + "/opt/ros/humble/share/ament_cmake/cmake/ament_cmake_export_dependencies-extras.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/ament_cmake_core-extras.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/ament_cmake_coreConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/ament_cmake_coreConfig.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/ament_cmake_environment-extras.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/ament_cmake_environment_hooks-extras.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/ament_cmake_index-extras.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/ament_cmake_package_templates-extras.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/ament_cmake_symlink_install-extras.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/ament_cmake_uninstall_target-extras.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/core/all.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/core/ament_execute_extensions.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/core/ament_package.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/core/ament_package_xml.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/core/ament_register_extension.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/core/assert_file_exists.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/core/get_executable_path.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/core/list_append_unique.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/core/normalize_path.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/core/package_xml_2_cmake.py" + "/opt/ros/humble/share/ament_cmake_core/cmake/core/python.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/core/stamp.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/core/string_ends_with.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/core/templates/nameConfig-version.cmake.in" + "/opt/ros/humble/share/ament_cmake_core/cmake/core/templates/nameConfig.cmake.in" + "/opt/ros/humble/share/ament_cmake_core/cmake/environment/ament_cmake_environment_package_hook.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/environment/ament_generate_environment.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/environment_hooks/ament_cmake_environment_hooks_package_hook.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/environment_hooks/ament_environment_hooks.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/environment_hooks/ament_generate_package_environment.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/environment_hooks/environment/ament_prefix_path.sh" + "/opt/ros/humble/share/ament_cmake_core/cmake/environment_hooks/environment/path.sh" + "/opt/ros/humble/share/ament_cmake_core/cmake/index/ament_cmake_index_package_hook.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/index/ament_index_get_prefix_path.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/index/ament_index_get_resource.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/index/ament_index_get_resources.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/index/ament_index_has_resource.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/index/ament_index_register_package.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/index/ament_index_register_resource.cmake" + "/opt/ros/humble/share/ament_cmake_core/cmake/package_templates/templates_2_cmake.py" + "/opt/ros/humble/share/ament_cmake_core/cmake/uninstall_target/ament_cmake_uninstall_target.cmake.in" + "/opt/ros/humble/share/ament_cmake_core/cmake/uninstall_target/ament_cmake_uninstall_target_append_uninstall_code.cmake" + "/opt/ros/humble/share/ament_cmake_cppcheck/cmake/ament_cmake_cppcheck-extras.cmake" + "/opt/ros/humble/share/ament_cmake_cppcheck/cmake/ament_cmake_cppcheckConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake_cppcheck/cmake/ament_cmake_cppcheckConfig.cmake" + "/opt/ros/humble/share/ament_cmake_cppcheck/cmake/ament_cmake_cppcheck_lint_hook.cmake" + "/opt/ros/humble/share/ament_cmake_cppcheck/cmake/ament_cppcheck.cmake" + "/opt/ros/humble/share/ament_cmake_export_definitions/cmake/ament_cmake_export_definitions-extras.cmake" + "/opt/ros/humble/share/ament_cmake_export_definitions/cmake/ament_cmake_export_definitionsConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake_export_definitions/cmake/ament_cmake_export_definitionsConfig.cmake" + "/opt/ros/humble/share/ament_cmake_export_definitions/cmake/ament_export_definitions.cmake" + "/opt/ros/humble/share/ament_cmake_export_dependencies/cmake/ament_cmake_export_dependencies-extras.cmake" + "/opt/ros/humble/share/ament_cmake_export_dependencies/cmake/ament_cmake_export_dependenciesConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake_export_dependencies/cmake/ament_cmake_export_dependenciesConfig.cmake" + "/opt/ros/humble/share/ament_cmake_export_dependencies/cmake/ament_export_dependencies.cmake" + "/opt/ros/humble/share/ament_cmake_export_include_directories/cmake/ament_cmake_export_include_directories-extras.cmake" + "/opt/ros/humble/share/ament_cmake_export_include_directories/cmake/ament_cmake_export_include_directoriesConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake_export_include_directories/cmake/ament_cmake_export_include_directoriesConfig.cmake" + "/opt/ros/humble/share/ament_cmake_export_include_directories/cmake/ament_export_include_directories.cmake" + "/opt/ros/humble/share/ament_cmake_export_interfaces/cmake/ament_cmake_export_interfaces-extras.cmake" + "/opt/ros/humble/share/ament_cmake_export_interfaces/cmake/ament_cmake_export_interfacesConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake_export_interfaces/cmake/ament_cmake_export_interfacesConfig.cmake" + "/opt/ros/humble/share/ament_cmake_export_interfaces/cmake/ament_export_interfaces.cmake" + "/opt/ros/humble/share/ament_cmake_export_libraries/cmake/ament_cmake_export_libraries-extras.cmake" + "/opt/ros/humble/share/ament_cmake_export_libraries/cmake/ament_cmake_export_librariesConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake_export_libraries/cmake/ament_cmake_export_librariesConfig.cmake" + "/opt/ros/humble/share/ament_cmake_export_libraries/cmake/ament_export_libraries.cmake" + "/opt/ros/humble/share/ament_cmake_export_libraries/cmake/ament_export_library_names.cmake" + "/opt/ros/humble/share/ament_cmake_export_link_flags/cmake/ament_cmake_export_link_flags-extras.cmake" + "/opt/ros/humble/share/ament_cmake_export_link_flags/cmake/ament_cmake_export_link_flagsConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake_export_link_flags/cmake/ament_cmake_export_link_flagsConfig.cmake" + "/opt/ros/humble/share/ament_cmake_export_link_flags/cmake/ament_export_link_flags.cmake" + "/opt/ros/humble/share/ament_cmake_export_targets/cmake/ament_cmake_export_targets-extras.cmake" + "/opt/ros/humble/share/ament_cmake_export_targets/cmake/ament_cmake_export_targetsConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake_export_targets/cmake/ament_cmake_export_targetsConfig.cmake" + "/opt/ros/humble/share/ament_cmake_export_targets/cmake/ament_export_targets.cmake" + "/opt/ros/humble/share/ament_cmake_flake8/cmake/ament_cmake_flake8-extras.cmake" + "/opt/ros/humble/share/ament_cmake_flake8/cmake/ament_cmake_flake8Config-version.cmake" + "/opt/ros/humble/share/ament_cmake_flake8/cmake/ament_cmake_flake8Config.cmake" + "/opt/ros/humble/share/ament_cmake_flake8/cmake/ament_cmake_flake8_lint_hook.cmake" + "/opt/ros/humble/share/ament_cmake_flake8/cmake/ament_flake8.cmake" + "/opt/ros/humble/share/ament_cmake_gen_version_h/cmake/ament_cmake_gen_version_h-extras.cmake" + "/opt/ros/humble/share/ament_cmake_gen_version_h/cmake/ament_cmake_gen_version_h.cmake" + "/opt/ros/humble/share/ament_cmake_gen_version_h/cmake/ament_cmake_gen_version_hConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake_gen_version_h/cmake/ament_cmake_gen_version_hConfig.cmake" + "/opt/ros/humble/share/ament_cmake_gen_version_h/cmake/ament_generate_version_header.cmake" + "/opt/ros/humble/share/ament_cmake_include_directories/cmake/ament_cmake_include_directories-extras.cmake" + "/opt/ros/humble/share/ament_cmake_include_directories/cmake/ament_cmake_include_directoriesConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake_include_directories/cmake/ament_cmake_include_directoriesConfig.cmake" + "/opt/ros/humble/share/ament_cmake_include_directories/cmake/ament_include_directories_order.cmake" + "/opt/ros/humble/share/ament_cmake_libraries/cmake/ament_cmake_libraries-extras.cmake" + "/opt/ros/humble/share/ament_cmake_libraries/cmake/ament_cmake_librariesConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake_libraries/cmake/ament_cmake_librariesConfig.cmake" + "/opt/ros/humble/share/ament_cmake_libraries/cmake/ament_libraries_deduplicate.cmake" + "/opt/ros/humble/share/ament_cmake_libraries/cmake/ament_libraries_pack_build_configuration.cmake" + "/opt/ros/humble/share/ament_cmake_libraries/cmake/ament_libraries_unpack_build_configuration.cmake" + "/opt/ros/humble/share/ament_cmake_lint_cmake/cmake/ament_cmake_lint_cmake-extras.cmake" + "/opt/ros/humble/share/ament_cmake_lint_cmake/cmake/ament_cmake_lint_cmakeConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake_lint_cmake/cmake/ament_cmake_lint_cmakeConfig.cmake" + "/opt/ros/humble/share/ament_cmake_lint_cmake/cmake/ament_cmake_lint_cmake_lint_hook.cmake" + "/opt/ros/humble/share/ament_cmake_lint_cmake/cmake/ament_lint_cmake.cmake" + "/opt/ros/humble/share/ament_cmake_pep257/cmake/ament_cmake_pep257-extras.cmake" + "/opt/ros/humble/share/ament_cmake_pep257/cmake/ament_cmake_pep257Config-version.cmake" + "/opt/ros/humble/share/ament_cmake_pep257/cmake/ament_cmake_pep257Config.cmake" + "/opt/ros/humble/share/ament_cmake_pep257/cmake/ament_cmake_pep257_lint_hook.cmake" + "/opt/ros/humble/share/ament_cmake_pep257/cmake/ament_pep257.cmake" + "/opt/ros/humble/share/ament_cmake_python/cmake/ament_cmake_python-extras.cmake" + "/opt/ros/humble/share/ament_cmake_python/cmake/ament_cmake_pythonConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake_python/cmake/ament_cmake_pythonConfig.cmake" + "/opt/ros/humble/share/ament_cmake_python/cmake/ament_get_python_install_dir.cmake" + "/opt/ros/humble/share/ament_cmake_python/cmake/ament_python_install_module.cmake" + "/opt/ros/humble/share/ament_cmake_python/cmake/ament_python_install_package.cmake" + "/opt/ros/humble/share/ament_cmake_target_dependencies/cmake/ament_cmake_target_dependencies-extras.cmake" + "/opt/ros/humble/share/ament_cmake_target_dependencies/cmake/ament_cmake_target_dependenciesConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake_target_dependencies/cmake/ament_cmake_target_dependenciesConfig.cmake" + "/opt/ros/humble/share/ament_cmake_target_dependencies/cmake/ament_get_recursive_properties.cmake" + "/opt/ros/humble/share/ament_cmake_target_dependencies/cmake/ament_target_dependencies.cmake" + "/opt/ros/humble/share/ament_cmake_test/cmake/ament_add_test.cmake" + "/opt/ros/humble/share/ament_cmake_test/cmake/ament_add_test_label.cmake" + "/opt/ros/humble/share/ament_cmake_test/cmake/ament_cmake_test-extras.cmake" + "/opt/ros/humble/share/ament_cmake_test/cmake/ament_cmake_testConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake_test/cmake/ament_cmake_testConfig.cmake" + "/opt/ros/humble/share/ament_cmake_uncrustify/cmake/ament_cmake_uncrustify-extras.cmake" + "/opt/ros/humble/share/ament_cmake_uncrustify/cmake/ament_cmake_uncrustifyConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake_uncrustify/cmake/ament_cmake_uncrustifyConfig.cmake" + "/opt/ros/humble/share/ament_cmake_uncrustify/cmake/ament_cmake_uncrustify_lint_hook.cmake" + "/opt/ros/humble/share/ament_cmake_uncrustify/cmake/ament_uncrustify.cmake" + "/opt/ros/humble/share/ament_cmake_version/cmake/ament_cmake_version-extras.cmake" + "/opt/ros/humble/share/ament_cmake_version/cmake/ament_cmake_versionConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake_version/cmake/ament_cmake_versionConfig.cmake" + "/opt/ros/humble/share/ament_cmake_version/cmake/ament_export_development_version_if_higher_than_manifest.cmake" + "/opt/ros/humble/share/ament_cmake_xmllint/cmake/ament_cmake_xmllint-extras.cmake" + "/opt/ros/humble/share/ament_cmake_xmllint/cmake/ament_cmake_xmllintConfig-version.cmake" + "/opt/ros/humble/share/ament_cmake_xmllint/cmake/ament_cmake_xmllintConfig.cmake" + "/opt/ros/humble/share/ament_cmake_xmllint/cmake/ament_cmake_xmllint_lint_hook.cmake" + "/opt/ros/humble/share/ament_cmake_xmllint/cmake/ament_xmllint.cmake" + "/opt/ros/humble/share/ament_lint_auto/cmake/ament_lint_auto-extras.cmake" + "/opt/ros/humble/share/ament_lint_auto/cmake/ament_lint_autoConfig-version.cmake" + "/opt/ros/humble/share/ament_lint_auto/cmake/ament_lint_autoConfig.cmake" + "/opt/ros/humble/share/ament_lint_auto/cmake/ament_lint_auto_find_test_dependencies.cmake" + "/opt/ros/humble/share/ament_lint_auto/cmake/ament_lint_auto_package_hook.cmake" + "/opt/ros/humble/share/ament_lint_common/cmake/ament_cmake_export_dependencies-extras.cmake" + "/opt/ros/humble/share/ament_lint_common/cmake/ament_lint_commonConfig-version.cmake" + "/opt/ros/humble/share/ament_lint_common/cmake/ament_lint_commonConfig.cmake" + "/usr/share/cmake-3.22/Modules/CMakeCInformation.cmake" + "/usr/share/cmake-3.22/Modules/CMakeCXXInformation.cmake" + "/usr/share/cmake-3.22/Modules/CMakeCommonLanguageInclude.cmake" + "/usr/share/cmake-3.22/Modules/CMakeGenericSystem.cmake" + "/usr/share/cmake-3.22/Modules/CMakeInitializeConfigs.cmake" + "/usr/share/cmake-3.22/Modules/CMakeLanguageInformation.cmake" + "/usr/share/cmake-3.22/Modules/CMakeSystemSpecificInformation.cmake" + "/usr/share/cmake-3.22/Modules/CMakeSystemSpecificInitialize.cmake" + "/usr/share/cmake-3.22/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + "/usr/share/cmake-3.22/Modules/Compiler/GNU-C.cmake" + "/usr/share/cmake-3.22/Modules/Compiler/GNU-CXX.cmake" + "/usr/share/cmake-3.22/Modules/Compiler/GNU.cmake" + "/usr/share/cmake-3.22/Modules/DartConfiguration.tcl.in" + "/usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake" + "/usr/share/cmake-3.22/Modules/FindPackageMessage.cmake" + "/usr/share/cmake-3.22/Modules/FindPython/Support.cmake" + "/usr/share/cmake-3.22/Modules/FindPython3.cmake" + "/usr/share/cmake-3.22/Modules/Platform/Linux-GNU-C.cmake" + "/usr/share/cmake-3.22/Modules/Platform/Linux-GNU-CXX.cmake" + "/usr/share/cmake-3.22/Modules/Platform/Linux-GNU.cmake" + "/usr/share/cmake-3.22/Modules/Platform/Linux.cmake" + "/usr/share/cmake-3.22/Modules/Platform/UnixPaths.cmake" + ) + +# The corresponding makefile is: +set(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +set(CMAKE_MAKEFILE_PRODUCTS + "ament_cmake_core/stamps/templates_2_cmake.py.stamp" + "ament_cmake_uninstall_target/ament_cmake_uninstall_target.cmake" + "CTestConfiguration.ini" + "ament_cmake_core/stamps/package.xml.stamp" + "ament_cmake_core/stamps/package_xml_2_cmake.py.stamp" + "ament_cmake_core/stamps/ament_prefix_path.sh.stamp" + "ament_cmake_core/stamps/path.sh.stamp" + "ament_cmake_environment_hooks/local_setup.bash" + "ament_cmake_environment_hooks/local_setup.sh" + "ament_cmake_environment_hooks/local_setup.zsh" + "ament_cmake_core/stamps/nameConfig.cmake.in.stamp" + "ament_cmake_core/challengeConfig.cmake" + "ament_cmake_core/stamps/nameConfig-version.cmake.in.stamp" + "ament_cmake_core/challengeConfig-version.cmake" + "ament_cmake_index/share/ament_index/resource_index/package_run_dependencies/challenge" + "ament_cmake_index/share/ament_index/resource_index/parent_prefix_path/challenge" + "ament_cmake_index/share/ament_index/resource_index/packages/challenge" + "CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +set(CMAKE_DEPEND_INFO_FILES + "CMakeFiles/uninstall.dir/DependInfo.cmake" + "CMakeFiles/challenge_uninstall.dir/DependInfo.cmake" + "CMakeFiles/solution.dir/DependInfo.cmake" + ) diff --git a/src/build/challenge/CMakeFiles/Makefile2 b/src/build/challenge/CMakeFiles/Makefile2 new file mode 100644 index 00000000..e85dc2ff --- /dev/null +++ b/src/build/challenge/CMakeFiles/Makefile2 @@ -0,0 +1,169 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.22 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Produce verbose output by default. +VERBOSE = 1 + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge + +#============================================================================= +# Directory level rules for the build root directory + +# The main recursive "all" target. +all: CMakeFiles/solution.dir/all +.PHONY : all + +# The main recursive "preinstall" target. +preinstall: +.PHONY : preinstall + +# The main recursive "clean" target. +clean: CMakeFiles/uninstall.dir/clean +clean: CMakeFiles/challenge_uninstall.dir/clean +clean: CMakeFiles/solution.dir/clean +.PHONY : clean + +#============================================================================= +# Target rules for target CMakeFiles/uninstall.dir + +# All Build rule for target. +CMakeFiles/uninstall.dir/all: CMakeFiles/challenge_uninstall.dir/all + $(MAKE) $(MAKESILENT) -f CMakeFiles/uninstall.dir/build.make CMakeFiles/uninstall.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/uninstall.dir/build.make CMakeFiles/uninstall.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles --progress-num= "Built target uninstall" +.PHONY : CMakeFiles/uninstall.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/uninstall.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/uninstall.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles 0 +.PHONY : CMakeFiles/uninstall.dir/rule + +# Convenience name for target. +uninstall: CMakeFiles/uninstall.dir/rule +.PHONY : uninstall + +# clean rule for target. +CMakeFiles/uninstall.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/uninstall.dir/build.make CMakeFiles/uninstall.dir/clean +.PHONY : CMakeFiles/uninstall.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/challenge_uninstall.dir + +# All Build rule for target. +CMakeFiles/challenge_uninstall.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/challenge_uninstall.dir/build.make CMakeFiles/challenge_uninstall.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/challenge_uninstall.dir/build.make CMakeFiles/challenge_uninstall.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles --progress-num= "Built target challenge_uninstall" +.PHONY : CMakeFiles/challenge_uninstall.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/challenge_uninstall.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles 0 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/challenge_uninstall.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles 0 +.PHONY : CMakeFiles/challenge_uninstall.dir/rule + +# Convenience name for target. +challenge_uninstall: CMakeFiles/challenge_uninstall.dir/rule +.PHONY : challenge_uninstall + +# clean rule for target. +CMakeFiles/challenge_uninstall.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/challenge_uninstall.dir/build.make CMakeFiles/challenge_uninstall.dir/clean +.PHONY : CMakeFiles/challenge_uninstall.dir/clean + +#============================================================================= +# Target rules for target CMakeFiles/solution.dir + +# All Build rule for target. +CMakeFiles/solution.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/solution.dir/build.make CMakeFiles/solution.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/solution.dir/build.make CMakeFiles/solution.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles --progress-num=1,2 "Built target solution" +.PHONY : CMakeFiles/solution.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/solution.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles 2 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/solution.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles 0 +.PHONY : CMakeFiles/solution.dir/rule + +# Convenience name for target. +solution: CMakeFiles/solution.dir/rule +.PHONY : solution + +# clean rule for target. +CMakeFiles/solution.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/solution.dir/build.make CMakeFiles/solution.dir/clean +.PHONY : CMakeFiles/solution.dir/clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/src/build/challenge/CMakeFiles/Progress/1 b/src/build/challenge/CMakeFiles/Progress/1 new file mode 100644 index 00000000..7b4d68d7 --- /dev/null +++ b/src/build/challenge/CMakeFiles/Progress/1 @@ -0,0 +1 @@ +empty \ No newline at end of file diff --git a/src/build/challenge/CMakeFiles/Progress/2 b/src/build/challenge/CMakeFiles/Progress/2 new file mode 100644 index 00000000..7b4d68d7 --- /dev/null +++ b/src/build/challenge/CMakeFiles/Progress/2 @@ -0,0 +1 @@ +empty \ No newline at end of file diff --git a/src/build/challenge/CMakeFiles/Progress/count.txt b/src/build/challenge/CMakeFiles/Progress/count.txt new file mode 100644 index 00000000..0cfbf088 --- /dev/null +++ b/src/build/challenge/CMakeFiles/Progress/count.txt @@ -0,0 +1 @@ +2 diff --git a/src/build/challenge/CMakeFiles/TargetDirectories.txt b/src/build/challenge/CMakeFiles/TargetDirectories.txt new file mode 100644 index 00000000..05d0c8a0 --- /dev/null +++ b/src/build/challenge/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,10 @@ +/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/uninstall.dir +/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/challenge_uninstall.dir +/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/solution.dir +/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/test.dir +/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/edit_cache.dir +/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/rebuild_cache.dir +/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/list_install_components.dir +/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/install.dir +/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/install/local.dir +/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/install/strip.dir diff --git a/src/build/challenge/CMakeFiles/challenge_uninstall.dir/DependInfo.cmake b/src/build/challenge/CMakeFiles/challenge_uninstall.dir/DependInfo.cmake new file mode 100644 index 00000000..dc55e44b --- /dev/null +++ b/src/build/challenge/CMakeFiles/challenge_uninstall.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/src/build/challenge/CMakeFiles/challenge_uninstall.dir/build.make b/src/build/challenge/CMakeFiles/challenge_uninstall.dir/build.make new file mode 100644 index 00000000..50daee7c --- /dev/null +++ b/src/build/challenge/CMakeFiles/challenge_uninstall.dir/build.make @@ -0,0 +1,90 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.22 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Produce verbose output by default. +VERBOSE = 1 + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge + +# Utility rule file for challenge_uninstall. + +# Include any custom commands dependencies for this target. +include CMakeFiles/challenge_uninstall.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/challenge_uninstall.dir/progress.make + +CMakeFiles/challenge_uninstall: + /usr/bin/cmake -P /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/ament_cmake_uninstall_target/ament_cmake_uninstall_target.cmake + +challenge_uninstall: CMakeFiles/challenge_uninstall +challenge_uninstall: CMakeFiles/challenge_uninstall.dir/build.make +.PHONY : challenge_uninstall + +# Rule to build all files generated by this target. +CMakeFiles/challenge_uninstall.dir/build: challenge_uninstall +.PHONY : CMakeFiles/challenge_uninstall.dir/build + +CMakeFiles/challenge_uninstall.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/challenge_uninstall.dir/cmake_clean.cmake +.PHONY : CMakeFiles/challenge_uninstall.dir/clean + +CMakeFiles/challenge_uninstall.dir/depend: + cd /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/challenge_uninstall.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/challenge_uninstall.dir/depend + diff --git a/src/build/challenge/CMakeFiles/challenge_uninstall.dir/cmake_clean.cmake b/src/build/challenge/CMakeFiles/challenge_uninstall.dir/cmake_clean.cmake new file mode 100644 index 00000000..5f46983c --- /dev/null +++ b/src/build/challenge/CMakeFiles/challenge_uninstall.dir/cmake_clean.cmake @@ -0,0 +1,8 @@ +file(REMOVE_RECURSE + "CMakeFiles/challenge_uninstall" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/challenge_uninstall.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/src/build/challenge/CMakeFiles/challenge_uninstall.dir/compiler_depend.make b/src/build/challenge/CMakeFiles/challenge_uninstall.dir/compiler_depend.make new file mode 100644 index 00000000..e6f1bd65 --- /dev/null +++ b/src/build/challenge/CMakeFiles/challenge_uninstall.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for challenge_uninstall. +# This may be replaced when dependencies are built. diff --git a/src/build/challenge/CMakeFiles/challenge_uninstall.dir/compiler_depend.ts b/src/build/challenge/CMakeFiles/challenge_uninstall.dir/compiler_depend.ts new file mode 100644 index 00000000..a5482148 --- /dev/null +++ b/src/build/challenge/CMakeFiles/challenge_uninstall.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for challenge_uninstall. diff --git a/src/build/challenge/CMakeFiles/challenge_uninstall.dir/progress.make b/src/build/challenge/CMakeFiles/challenge_uninstall.dir/progress.make new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/src/build/challenge/CMakeFiles/challenge_uninstall.dir/progress.make @@ -0,0 +1 @@ + diff --git a/src/build/challenge/CMakeFiles/cmake.check_cache b/src/build/challenge/CMakeFiles/cmake.check_cache new file mode 100644 index 00000000..3dccd731 --- /dev/null +++ b/src/build/challenge/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/src/build/challenge/CMakeFiles/progress.marks b/src/build/challenge/CMakeFiles/progress.marks new file mode 100644 index 00000000..0cfbf088 --- /dev/null +++ b/src/build/challenge/CMakeFiles/progress.marks @@ -0,0 +1 @@ +2 diff --git a/src/build/challenge/CMakeFiles/solution.dir/DependInfo.cmake b/src/build/challenge/CMakeFiles/solution.dir/DependInfo.cmake new file mode 100644 index 00000000..d9ccd557 --- /dev/null +++ b/src/build/challenge/CMakeFiles/solution.dir/DependInfo.cmake @@ -0,0 +1,19 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/src/solution.cpp" "CMakeFiles/solution.dir/src/solution.cpp.o" "gcc" "CMakeFiles/solution.dir/src/solution.cpp.o.d" + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/src/build/challenge/CMakeFiles/solution.dir/build.make b/src/build/challenge/CMakeFiles/solution.dir/build.make new file mode 100644 index 00000000..48bd3c55 --- /dev/null +++ b/src/build/challenge/CMakeFiles/solution.dir/build.make @@ -0,0 +1,113 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.22 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Produce verbose output by default. +VERBOSE = 1 + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge + +# Include any dependencies generated for this target. +include CMakeFiles/solution.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include CMakeFiles/solution.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/solution.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/solution.dir/flags.make + +CMakeFiles/solution.dir/src/solution.cpp.o: CMakeFiles/solution.dir/flags.make +CMakeFiles/solution.dir/src/solution.cpp.o: /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/src/solution.cpp +CMakeFiles/solution.dir/src/solution.cpp.o: CMakeFiles/solution.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object CMakeFiles/solution.dir/src/solution.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/solution.dir/src/solution.cpp.o -MF CMakeFiles/solution.dir/src/solution.cpp.o.d -o CMakeFiles/solution.dir/src/solution.cpp.o -c /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/src/solution.cpp + +CMakeFiles/solution.dir/src/solution.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/solution.dir/src/solution.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/src/solution.cpp > CMakeFiles/solution.dir/src/solution.cpp.i + +CMakeFiles/solution.dir/src/solution.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/solution.dir/src/solution.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/src/solution.cpp -o CMakeFiles/solution.dir/src/solution.cpp.s + +# Object files for target solution +solution_OBJECTS = \ +"CMakeFiles/solution.dir/src/solution.cpp.o" + +# External object files for target solution +solution_EXTERNAL_OBJECTS = + +solution: CMakeFiles/solution.dir/src/solution.cpp.o +solution: CMakeFiles/solution.dir/build.make +solution: CMakeFiles/solution.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking CXX executable solution" + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/solution.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/solution.dir/build: solution +.PHONY : CMakeFiles/solution.dir/build + +CMakeFiles/solution.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/solution.dir/cmake_clean.cmake +.PHONY : CMakeFiles/solution.dir/clean + +CMakeFiles/solution.dir/depend: + cd /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/solution.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/solution.dir/depend + diff --git a/src/build/challenge/CMakeFiles/solution.dir/cmake_clean.cmake b/src/build/challenge/CMakeFiles/solution.dir/cmake_clean.cmake new file mode 100644 index 00000000..af9c1ede --- /dev/null +++ b/src/build/challenge/CMakeFiles/solution.dir/cmake_clean.cmake @@ -0,0 +1,11 @@ +file(REMOVE_RECURSE + "CMakeFiles/solution.dir/src/solution.cpp.o" + "CMakeFiles/solution.dir/src/solution.cpp.o.d" + "solution" + "solution.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang CXX) + include(CMakeFiles/solution.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/src/build/challenge/CMakeFiles/solution.dir/compiler_depend.make b/src/build/challenge/CMakeFiles/solution.dir/compiler_depend.make new file mode 100644 index 00000000..8e90b901 --- /dev/null +++ b/src/build/challenge/CMakeFiles/solution.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for solution. +# This may be replaced when dependencies are built. diff --git a/src/build/challenge/CMakeFiles/solution.dir/compiler_depend.ts b/src/build/challenge/CMakeFiles/solution.dir/compiler_depend.ts new file mode 100644 index 00000000..d72ebb1c --- /dev/null +++ b/src/build/challenge/CMakeFiles/solution.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for solution. diff --git a/src/build/challenge/CMakeFiles/solution.dir/depend.make b/src/build/challenge/CMakeFiles/solution.dir/depend.make new file mode 100644 index 00000000..dd962acf --- /dev/null +++ b/src/build/challenge/CMakeFiles/solution.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for solution. +# This may be replaced when dependencies are built. diff --git a/src/build/challenge/CMakeFiles/solution.dir/flags.make b/src/build/challenge/CMakeFiles/solution.dir/flags.make new file mode 100644 index 00000000..aa5135bc --- /dev/null +++ b/src/build/challenge/CMakeFiles/solution.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.22 + +# compile CXX with /usr/bin/c++ +CXX_DEFINES = + +CXX_INCLUDES = -I/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/include -isystem /opt/ros/humble/include/builtin_interfaces -isystem /opt/ros/humble/include/actionlib_msgs -isystem /opt/ros/humble/include/action_msgs -isystem /opt/ros/humble/include/action_tutorials_interfaces -isystem /opt/ros/humble/include/ament_index_cpp -isystem /opt/ros/humble/include/angles -isystem /opt/ros/humble/include/backward_ros -isystem /opt/ros/humble/include/camera_calibration_parsers -isystem /opt/ros/humble/include/camera_info_manager -isystem /opt/ros/humble/include/class_loader -isystem /opt/ros/humble/include/composition_interfaces -isystem /opt/ros/humble/include/controller_interface -isystem /opt/ros/humble/include/controller_manager -isystem /opt/ros/humble/include/controller_manager_msgs -isystem /opt/ros/humble/include/control_msgs -isystem /opt/ros/humble/include/cv_bridge -isystem /opt/ros/humble/include/depthimage_to_laserscan -isystem /opt/ros/humble/include/diagnostic_msgs -isystem /opt/ros/humble/include/diagnostic_updater -isystem /opt/ros/humble/include/example_interfaces -isystem /opt/ros/humble/include/fake_components -isystem /opt/ros/humble/include/fastcdr -isystem /opt/ros/humble/include/fastrtps -isystem /opt/ros/humble/include/foonathan_memory -isystem /opt/ros/humble/include/gazebo_msgs -isystem /opt/ros/humble/include/gazebo_plugins -isystem /opt/ros/humble/include/gazebo_ros -isystem /opt/ros/humble/include/geographic_msgs -isystem /opt/ros/humble/include/geometry_msgs -isystem /opt/ros/humble/include/hardware_interface -isystem /opt/ros/humble/include/image_geometry -isystem /opt/ros/humble/include/image_tools -isystem /opt/ros/humble/include/image_transport -isystem /opt/ros/humble/include/imu_filter_madgwick -isystem /opt/ros/humble/include/interactive_markers -isystem /opt/ros/humble/include/intra_process_demo -isystem /opt/ros/humble/include/joy -isystem /opt/ros/humble/include/kdl_parser -isystem /opt/ros/humble/include/laser_geometry -isystem /opt/ros/humble/include/librealsense2 -isystem /opt/ros/humble/include/libstatistics_collector -isystem /opt/ros/humble/include/libyaml_vendor -isystem /opt/ros/humble/include/lifecycle_msgs -isystem /opt/ros/humble/include/logging_demo -isystem /opt/ros/humble/include/map_msgs -isystem /opt/ros/humble/include/message_filters -isystem /opt/ros/humble/include/mocap4r2_control -isystem /opt/ros/humble/include/mocap4r2_control_msgs -isystem /opt/ros/humble/include/mock_components -isystem /opt/ros/humble/include/moodycamel -isystem /opt/ros/humble/include/nav_msgs -isystem /opt/ros/humble/include/pcl_conversions -isystem /opt/ros/humble/include/pcl_msgs -isystem /opt/ros/humble/include/pendulum_msgs -isystem /opt/ros/humble/include/phidgets_api -isystem /opt/ros/humble/include/phidgets_spatial -isystem /opt/ros/humble/include/pluginlib -isystem /opt/ros/humble/include/rcl -isystem /opt/ros/humble/include/rcl_action -isystem /opt/ros/humble/include/rclcpp -isystem /opt/ros/humble/include/rclcpp_action -isystem /opt/ros/humble/include/rclcpp_components -isystem /opt/ros/humble/include/rclcpp_lifecycle -isystem /opt/ros/humble/include/rcl_interfaces -isystem /opt/ros/humble/include/rcl_lifecycle -isystem /opt/ros/humble/include/rcl_logging_interface -isystem /opt/ros/humble/include/rcl_yaml_param_parser -isystem /opt/ros/humble/include/rcpputils -isystem /opt/ros/humble/include/rcutils -isystem /opt/ros/humble/include/realtime_tools -isystem /opt/ros/humble/include/resource_retriever -isystem /opt/ros/humble/include/rmw -isystem /opt/ros/humble/include/rmw_dds_common -isystem /opt/ros/humble/include/rmw_fastrtps_cpp -isystem /opt/ros/humble/include/rmw_fastrtps_shared_cpp -isystem /opt/ros/humble/include/ros2_control_test_assets -isystem /opt/ros/humble/include/rosbag2_compression -isystem /opt/ros/humble/include/rosbag2_compression_zstd -isystem /opt/ros/humble/include/rosbag2_cpp -isystem /opt/ros/humble/include/rosbag2_interfaces -isystem /opt/ros/humble/include/rosbag2_storage -isystem /opt/ros/humble/include/rosbag2_storage_default_plugins -isystem /opt/ros/humble/include/rosbag2_transport -isystem /opt/ros/humble/include/rosgraph_msgs -isystem /opt/ros/humble/include/rosidl_runtime_c -isystem /opt/ros/humble/include/rosidl_runtime_cpp -isystem /opt/ros/humble/include/rosidl_typesupport_c -isystem /opt/ros/humble/include/rosidl_typesupport_cpp -isystem /opt/ros/humble/include/rosidl_typesupport_fastrtps_c -isystem /opt/ros/humble/include/rosidl_typesupport_fastrtps_cpp -isystem /opt/ros/humble/include/rosidl_typesupport_interface -isystem /opt/ros/humble/include/rqt_gui_cpp -isystem /opt/ros/humble/include/rqt_image_overlay_layer -isystem /opt/ros/humble/include/rqt_image_view -isystem /opt/ros/humble/include/rqt_mocap4r2_control -isystem /opt/ros/humble/include/rttest -isystem /opt/ros/humble/include/rviz_common -isystem /opt/ros/humble/include/rviz_default_plugins -isystem /opt/ros/humble/include/rviz_rendering -isystem /opt/ros/humble/include/semantic_components -isystem /opt/ros/humble/include/sensor_msgs -isystem /opt/ros/humble/include/shape_msgs -isystem /opt/ros/humble/include/statistics_msgs -isystem /opt/ros/humble/include/std_msgs -isystem /opt/ros/humble/include/std_srvs -isystem /opt/ros/humble/include/stereo_msgs -isystem /opt/ros/humble/include/teleop_twist_joy -isystem /opt/ros/humble/include/tf2 -isystem /opt/ros/humble/include/tf2_bullet -isystem /opt/ros/humble/include/tf2_eigen -isystem /opt/ros/humble/include/tf2_eigen_kdl -isystem /opt/ros/humble/include/tf2_geometry_msgs -isystem /opt/ros/humble/include/tf2_kdl -isystem /opt/ros/humble/include/tf2_msgs -isystem /opt/ros/humble/include/tf2_ros -isystem /opt/ros/humble/include/tf2_sensor_msgs -isystem /opt/ros/humble/include/tlsf -isystem /opt/ros/humble/include/tlsf_cpp -isystem /opt/ros/humble/include/tracetools -isystem /opt/ros/humble/include/trajectory_msgs -isystem /opt/ros/humble/include/turtlesim -isystem /opt/ros/humble/include/unique_identifier_msgs -isystem /opt/ros/humble/include/urdf -isystem /opt/ros/humble/include/urdfdom -isystem /opt/ros/humble/include/urdfdom_headers -isystem /opt/ros/humble/include/urdf_parser_plugin -isystem /opt/ros/humble/include/visualization_msgs + +CXX_FLAGS = -Wall -Wextra -Wpedantic + diff --git a/src/build/challenge/CMakeFiles/solution.dir/link.txt b/src/build/challenge/CMakeFiles/solution.dir/link.txt new file mode 100644 index 00000000..e89e7b98 --- /dev/null +++ b/src/build/challenge/CMakeFiles/solution.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/c++ CMakeFiles/solution.dir/src/solution.cpp.o -o solution diff --git a/src/build/challenge/CMakeFiles/solution.dir/progress.make b/src/build/challenge/CMakeFiles/solution.dir/progress.make new file mode 100644 index 00000000..abadeb0c --- /dev/null +++ b/src/build/challenge/CMakeFiles/solution.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 1 +CMAKE_PROGRESS_2 = 2 + diff --git a/src/build/challenge/CMakeFiles/solution.dir/src/solution.cpp.o b/src/build/challenge/CMakeFiles/solution.dir/src/solution.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..2161a1679f8554732005b415c921a9952b1d303e GIT binary patch literal 139192 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

#QR9~AfiWsfY! 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 V$gF=G9sNiWYc}nQ$I(Zt{~yW%Rd4_R literal 0 HcmV?d00001 diff --git a/src/build/challenge/CMakeFiles/solution.dir/src/solution.cpp.o.d b/src/build/challenge/CMakeFiles/solution.dir/src/solution.cpp.o.d new file mode 100644 index 00000000..81eb42ae --- /dev/null +++ b/src/build/challenge/CMakeFiles/solution.dir/src/solution.cpp.o.d @@ -0,0 +1,601 @@ +CMakeFiles/solution.dir/src/solution.cpp.o: \ + /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/src/solution.cpp \ + /usr/include/stdc-predef.h \ + /opt/ros/humble/include/rclcpp/rclcpp/rclcpp.hpp \ + /usr/include/c++/11/csignal \ + /usr/include/x86_64-linux-gnu/c++/11/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/11/bits/os_defines.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/11/bits/cpu_defines.h \ + /usr/include/c++/11/pstl/pstl_config.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/signum-arch.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts-arch.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/lib/gcc/x86_64-linux-gnu/11/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/sigstksz.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ + /usr/include/linux/close_range.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/x86_64-linux-gnu/bits/signal_ext.h \ + /usr/include/c++/11/memory /usr/include/c++/11/bits/stl_algobase.h \ + /usr/include/c++/11/bits/functexcept.h \ + /usr/include/c++/11/bits/exception_defines.h \ + /usr/include/c++/11/bits/cpp_type_traits.h \ + /usr/include/c++/11/ext/type_traits.h \ + /usr/include/c++/11/ext/numeric_traits.h \ + /usr/include/c++/11/bits/stl_pair.h /usr/include/c++/11/bits/move.h \ + /usr/include/c++/11/type_traits \ + /usr/include/c++/11/bits/stl_iterator_base_types.h \ + /usr/include/c++/11/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/11/bits/concept_check.h \ + /usr/include/c++/11/debug/assertions.h \ + /usr/include/c++/11/bits/stl_iterator.h \ + /usr/include/c++/11/bits/ptr_traits.h /usr/include/c++/11/debug/debug.h \ + /usr/include/c++/11/bits/predefined_ops.h \ + /usr/include/c++/11/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/11/bits/c++allocator.h \ + /usr/include/c++/11/ext/new_allocator.h /usr/include/c++/11/new \ + /usr/include/c++/11/bits/exception.h \ + /usr/include/c++/11/bits/memoryfwd.h \ + /usr/include/c++/11/bits/stl_construct.h \ + /usr/include/c++/11/bits/stl_uninitialized.h \ + /usr/include/c++/11/ext/alloc_traits.h \ + /usr/include/c++/11/bits/alloc_traits.h \ + /usr/include/c++/11/bits/stl_tempbuf.h \ + /usr/include/c++/11/bits/stl_raw_storage_iter.h \ + /usr/include/c++/11/bits/align.h /usr/include/c++/11/bit \ + /usr/lib/gcc/x86_64-linux-gnu/11/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/c++/11/bits/uses_allocator.h \ + /usr/include/c++/11/bits/unique_ptr.h /usr/include/c++/11/utility \ + /usr/include/c++/11/bits/stl_relops.h \ + /usr/include/c++/11/initializer_list /usr/include/c++/11/tuple \ + /usr/include/c++/11/array /usr/include/c++/11/bits/range_access.h \ + /usr/include/c++/11/bits/invoke.h \ + /usr/include/c++/11/bits/stl_function.h \ + /usr/include/c++/11/backward/binders.h \ + /usr/include/c++/11/bits/functional_hash.h \ + /usr/include/c++/11/bits/hash_bytes.h \ + /usr/include/c++/11/bits/shared_ptr.h /usr/include/c++/11/iosfwd \ + /usr/include/c++/11/bits/stringfwd.h /usr/include/c++/11/bits/postypes.h \ + /usr/include/c++/11/cwchar /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/11/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/c++/11/bits/shared_ptr_base.h /usr/include/c++/11/typeinfo \ + /usr/include/c++/11/bits/allocated_ptr.h \ + /usr/include/c++/11/bits/refwrap.h \ + /usr/include/c++/11/ext/aligned_buffer.h \ + /usr/include/c++/11/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/11/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/11/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/c++/11/bits/atomic_word.h \ + /usr/include/x86_64-linux-gnu/sys/single_threaded.h \ + /usr/include/c++/11/ext/concurrence.h /usr/include/c++/11/exception \ + /usr/include/c++/11/bits/exception_ptr.h \ + /usr/include/c++/11/bits/cxxabi_init_exception.h \ + /usr/include/c++/11/bits/nested_exception.h \ + /usr/include/c++/11/bits/shared_ptr_atomic.h \ + /usr/include/c++/11/bits/atomic_base.h \ + /usr/include/c++/11/bits/atomic_lockfree_defines.h \ + /usr/include/c++/11/backward/auto_ptr.h \ + /usr/include/c++/11/pstl/glue_memory_defs.h \ + /usr/include/c++/11/pstl/execution_defs.h \ + /opt/ros/humble/include/rclcpp/rclcpp/executors.hpp \ + /usr/include/c++/11/future /usr/include/c++/11/mutex \ + /usr/include/c++/11/chrono /usr/include/c++/11/ratio \ + /usr/include/c++/11/cstdint /usr/include/c++/11/limits \ + /usr/include/c++/11/ctime /usr/include/c++/11/bits/parse_numbers.h \ + /usr/include/c++/11/system_error \ + /usr/include/x86_64-linux-gnu/c++/11/bits/error_constants.h \ + /usr/include/c++/11/cerrno /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/11/stdexcept /usr/include/c++/11/string \ + /usr/include/c++/11/bits/char_traits.h \ + /usr/include/c++/11/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/11/bits/c++locale.h \ + /usr/include/c++/11/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/11/cctype \ + /usr/include/ctype.h /usr/include/c++/11/bits/ostream_insert.h \ + /usr/include/c++/11/bits/cxxabi_forced.h \ + /usr/include/c++/11/bits/basic_string.h /usr/include/c++/11/string_view \ + /usr/include/c++/11/bits/string_view.tcc \ + /usr/include/c++/11/ext/string_conversions.h /usr/include/c++/11/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/c++/11/bits/std_abs.h /usr/include/c++/11/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/c++/11/bits/charconv.h \ + /usr/include/c++/11/bits/basic_string.tcc \ + /usr/include/c++/11/bits/std_mutex.h \ + /usr/include/c++/11/bits/unique_lock.h \ + /usr/include/c++/11/condition_variable /usr/include/c++/11/atomic \ + /usr/include/c++/11/bits/atomic_futex.h \ + /usr/include/c++/11/bits/std_function.h \ + /usr/include/c++/11/bits/std_thread.h \ + /opt/ros/humble/include/rclcpp/rclcpp/executors/multi_threaded_executor.hpp \ + /usr/include/c++/11/set /usr/include/c++/11/bits/stl_tree.h \ + /usr/include/c++/11/bits/node_handle.h \ + /usr/include/c++/11/bits/stl_set.h \ + /usr/include/c++/11/bits/stl_multiset.h \ + /usr/include/c++/11/bits/erase_if.h /usr/include/c++/11/thread \ + /usr/include/c++/11/bits/this_thread_sleep.h \ + /usr/include/c++/11/unordered_map /usr/include/c++/11/bits/hashtable.h \ + /usr/include/c++/11/bits/hashtable_policy.h \ + /usr/include/c++/11/bits/enable_special_members.h \ + /usr/include/c++/11/bits/unordered_map.h \ + /opt/ros/humble/include/rclcpp/rclcpp/executor.hpp \ + /usr/include/c++/11/algorithm /usr/include/c++/11/bits/stl_algo.h \ + /usr/include/c++/11/bits/algorithmfwd.h \ + /usr/include/c++/11/bits/stl_heap.h \ + /usr/include/c++/11/bits/uniform_int_dist.h \ + /usr/include/c++/11/pstl/glue_algorithm_defs.h \ + /usr/include/c++/11/functional /usr/include/c++/11/vector \ + /usr/include/c++/11/bits/stl_vector.h \ + /usr/include/c++/11/bits/stl_bvector.h \ + /usr/include/c++/11/bits/vector.tcc /usr/include/c++/11/cassert \ + /usr/include/assert.h /usr/include/c++/11/iostream \ + /usr/include/c++/11/ostream /usr/include/c++/11/ios \ + /usr/include/c++/11/bits/ios_base.h \ + /usr/include/c++/11/bits/locale_classes.h \ + /usr/include/c++/11/bits/locale_classes.tcc \ + /usr/include/c++/11/streambuf /usr/include/c++/11/bits/streambuf.tcc \ + /usr/include/c++/11/bits/basic_ios.h \ + /usr/include/c++/11/bits/locale_facets.h /usr/include/c++/11/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/11/bits/ctype_base.h \ + /usr/include/c++/11/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/11/bits/ctype_inline.h \ + /usr/include/c++/11/bits/locale_facets.tcc \ + /usr/include/c++/11/bits/basic_ios.tcc \ + /usr/include/c++/11/bits/ostream.tcc /usr/include/c++/11/istream \ + /usr/include/c++/11/bits/istream.tcc /usr/include/c++/11/list \ + /usr/include/c++/11/bits/stl_list.h /usr/include/c++/11/bits/list.tcc \ + /usr/include/c++/11/map /usr/include/c++/11/bits/stl_map.h \ + /usr/include/c++/11/bits/stl_multimap.h \ + /opt/ros/humble/include/rcl/rcl/guard_condition.h \ + /opt/ros/humble/include/rcl/rcl/allocator.h \ + /opt/ros/humble/include/rcutils/rcutils/allocator.h \ + /usr/lib/gcc/x86_64-linux-gnu/11/include/stdbool.h \ + /opt/ros/humble/include/rcutils/rcutils/macros.h \ + /opt/ros/humble/include/rcutils/rcutils/types/rcutils_ret.h \ + /opt/ros/humble/include/rcutils/rcutils/visibility_control.h \ + /opt/ros/humble/include/rcutils/rcutils/visibility_control_macros.h \ + /opt/ros/humble/include/rcl/rcl/context.h \ + /opt/ros/humble/include/rmw/rmw/init.h \ + /opt/ros/humble/include/rmw/rmw/init_options.h \ + /opt/ros/humble/include/rmw/rmw/domain_id.h \ + /opt/ros/humble/include/rmw/rmw/localhost.h \ + /opt/ros/humble/include/rmw/rmw/visibility_control.h \ + /opt/ros/humble/include/rmw/rmw/macros.h \ + /opt/ros/humble/include/rmw/rmw/ret_types.h \ + /opt/ros/humble/include/rmw/rmw/security_options.h \ + /opt/ros/humble/include/rcl/rcl/arguments.h \ + /opt/ros/humble/include/rcl/rcl/log_level.h \ + /opt/ros/humble/include/rcl/rcl/macros.h \ + /opt/ros/humble/include/rcl/rcl/types.h \ + /opt/ros/humble/include/rmw/rmw/types.h \ + /opt/ros/humble/include/rcutils/rcutils/logging.h \ + /opt/ros/humble/include/rcutils/rcutils/error_handling.h \ + /usr/include/c++/11/stdlib.h /usr/include/string.h \ + /usr/include/strings.h \ + /opt/ros/humble/include/rcutils/rcutils/snprintf.h \ + /opt/ros/humble/include/rcutils/rcutils/testing/fault_injection.h \ + /opt/ros/humble/include/rcutils/rcutils/time.h \ + /opt/ros/humble/include/rcutils/rcutils/types.h \ + /opt/ros/humble/include/rcutils/rcutils/types/array_list.h \ + /opt/ros/humble/include/rcutils/rcutils/types/char_array.h \ + /opt/ros/humble/include/rcutils/rcutils/types/hash_map.h \ + /opt/ros/humble/include/rcutils/rcutils/types/string_array.h \ + /opt/ros/humble/include/rcutils/rcutils/qsort.h \ + /opt/ros/humble/include/rcutils/rcutils/types/string_map.h \ + /opt/ros/humble/include/rcutils/rcutils/types/uint8_array.h \ + /opt/ros/humble/include/rmw/rmw/events_statuses/events_statuses.h \ + /opt/ros/humble/include/rmw/rmw/events_statuses/incompatible_qos.h \ + /opt/ros/humble/include/rmw/rmw/qos_policy_kind.h \ + /opt/ros/humble/include/rmw/rmw/events_statuses/liveliness_changed.h \ + /opt/ros/humble/include/rmw/rmw/events_statuses/liveliness_lost.h \ + /opt/ros/humble/include/rmw/rmw/events_statuses/message_lost.h \ + /opt/ros/humble/include/rmw/rmw/events_statuses/offered_deadline_missed.h \ + /opt/ros/humble/include/rmw/rmw/events_statuses/requested_deadline_missed.h \ + /opt/ros/humble/include/rmw/rmw/serialized_message.h \ + /opt/ros/humble/include/rmw/rmw/subscription_content_filter_options.h \ + /opt/ros/humble/include/rmw/rmw/time.h \ + /opt/ros/humble/include/rcl/rcl/visibility_control.h \ + /opt/ros/humble/include/rcl_yaml_param_parser/rcl_yaml_param_parser/types.h \ + /opt/ros/humble/include/rcl/rcl/init_options.h \ + /usr/lib/gcc/x86_64-linux-gnu/11/include/stdalign.h \ + /opt/ros/humble/include/rcl/rcl/wait.h \ + /opt/ros/humble/include/rcl/rcl/client.h \ + /opt/ros/humble/include/rosidl_runtime_c/rosidl_runtime_c/service_type_support_struct.h \ + /opt/ros/humble/include/rosidl_runtime_c/rosidl_runtime_c/visibility_control.h \ + /opt/ros/humble/include/rosidl_typesupport_interface/rosidl_typesupport_interface/macros.h \ + /opt/ros/humble/include/rcl/rcl/event_callback.h \ + /opt/ros/humble/include/rmw/rmw/event_callback_type.h \ + /opt/ros/humble/include/rcl/rcl/node.h \ + /opt/ros/humble/include/rcl/rcl/node_options.h \ + /opt/ros/humble/include/rcl/rcl/domain_id.h \ + /opt/ros/humble/include/rcl/rcl/service.h \ + /opt/ros/humble/include/rcl/rcl/subscription.h \ + /opt/ros/humble/include/rosidl_runtime_c/rosidl_runtime_c/message_type_support_struct.h \ + /opt/ros/humble/include/rmw/rmw/message_sequence.h \ + /opt/ros/humble/include/rcl/rcl/timer.h \ + /opt/ros/humble/include/rcl/rcl/time.h \ + /opt/ros/humble/include/rmw/rmw/rmw.h \ + /opt/ros/humble/include/rosidl_runtime_c/rosidl_runtime_c/sequence_bound.h \ + /opt/ros/humble/include/rmw/rmw/event.h \ + /opt/ros/humble/include/rmw/rmw/publisher_options.h \ + /opt/ros/humble/include/rmw/rmw/qos_profiles.h \ + /opt/ros/humble/include/rmw/rmw/subscription_options.h \ + /opt/ros/humble/include/rcl/rcl/event.h \ + /opt/ros/humble/include/rcl/rcl/publisher.h \ + /opt/ros/humble/include/rcpputils/rcpputils/scope_exit.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/context.hpp \ + /usr/include/c++/11/typeindex /usr/include/c++/11/unordered_set \ + /usr/include/c++/11/bits/unordered_set.h \ + /opt/ros/humble/include/rclcpp/rclcpp/init_options.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/visibility_control.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/macros.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/contexts/default_context.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/guard_condition.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/executor_options.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/memory_strategies.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/memory_strategy.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/any_executable.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/callback_group.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/client.hpp \ + /usr/include/c++/11/optional /usr/include/c++/11/sstream \ + /usr/include/c++/11/bits/sstream.tcc /usr/include/c++/11/variant \ + /opt/ros/humble/include/rcl/rcl/error_handling.h \ + /opt/ros/humble/include/rclcpp/rclcpp/detail/cpp_callback_trampoline.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/exceptions.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/exceptions/exceptions.hpp \ + /opt/ros/humble/include/rcpputils/rcpputils/join.hpp \ + /usr/include/c++/11/iterator /usr/include/c++/11/bits/stream_iterator.h \ + /opt/ros/humble/include/rclcpp/rclcpp/expand_topic_or_service_name.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/function_traits.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/logging.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/logger.hpp \ + /opt/ros/humble/include/rcpputils/rcpputils/filesystem_helper.hpp \ + /opt/ros/humble/include/rcpputils/rcpputils/visibility_control.hpp \ + /opt/ros/humble/include/rcutils/rcutils/logging_macros.h \ + /opt/ros/humble/include/rclcpp/rclcpp/utilities.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/node_interfaces/node_graph_interface.hpp \ + /opt/ros/humble/include/rcl/rcl/graph.h \ + /opt/ros/humble/include/rmw/rmw/names_and_types.h \ + /opt/ros/humble/include/rmw/rmw/get_topic_names_and_types.h \ + /opt/ros/humble/include/rmw/rmw/topic_endpoint_info_array.h \ + /opt/ros/humble/include/rmw/rmw/topic_endpoint_info.h \ + /opt/ros/humble/include/rclcpp/rclcpp/event.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/qos.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp \ + /opt/ros/humble/include/builtin_interfaces/builtin_interfaces/msg/duration.hpp \ + /opt/ros/humble/include/builtin_interfaces/builtin_interfaces/msg/detail/duration__struct.hpp \ + /opt/ros/humble/include/rosidl_runtime_cpp/rosidl_runtime_cpp/bounded_vector.hpp \ + /opt/ros/humble/include/rosidl_runtime_cpp/rosidl_runtime_cpp/message_initialization.hpp \ + /opt/ros/humble/include/rosidl_runtime_c/rosidl_runtime_c/message_initialization.h \ + /opt/ros/humble/include/builtin_interfaces/builtin_interfaces/msg/detail/duration__builder.hpp \ + /opt/ros/humble/include/builtin_interfaces/builtin_interfaces/msg/detail/duration__traits.hpp \ + /opt/ros/humble/include/rosidl_runtime_cpp/rosidl_runtime_cpp/traits.hpp \ + /usr/include/c++/11/codecvt /usr/include/c++/11/bits/codecvt.h \ + /usr/include/c++/11/iomanip /usr/include/c++/11/locale \ + /usr/include/c++/11/bits/locale_facets_nonio.h \ + /usr/include/x86_64-linux-gnu/c++/11/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/11/bits/locale_facets_nonio.tcc \ + /usr/include/c++/11/bits/locale_conv.h \ + /usr/include/c++/11/bits/quoted_string.h \ + /opt/ros/humble/include/rcl/rcl/logging_rosout.h \ + /opt/ros/humble/include/rmw/rmw/incompatible_qos_events_statuses.h \ + /opt/ros/humble/include/rclcpp/rclcpp/type_support_decl.hpp \ + /opt/ros/humble/include/rosidl_runtime_cpp/rosidl_runtime_cpp/message_type_support_decl.hpp \ + /opt/ros/humble/include/rosidl_runtime_cpp/rosidl_runtime_cpp/service_type_support_decl.hpp \ + /opt/ros/humble/include/rosidl_runtime_cpp/rosidl_typesupport_cpp/message_type_support.hpp \ + /opt/ros/humble/include/rosidl_runtime_cpp/rosidl_typesupport_cpp/service_type_support.hpp \ + /opt/ros/humble/include/rmw/rmw/error_handling.h \ + /opt/ros/humble/include/rmw/rmw/impl/cpp/demangle.hpp \ + /usr/include/c++/11/cxxabi.h \ + /usr/include/x86_64-linux-gnu/c++/11/bits/cxxabi_tweaks.h \ + /opt/ros/humble/include/rmw/rmw/impl/config.h \ + /opt/ros/humble/include/rclcpp/rclcpp/publisher_base.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/network_flow_endpoint.hpp \ + /opt/ros/humble/include/rcl/rcl/network_flow_endpoints.h \ + /opt/ros/humble/include/rmw/rmw/network_flow_endpoint.h \ + /opt/ros/humble/include/rmw/rmw/network_flow_endpoint_array.h \ + /opt/ros/humble/include/rclcpp/rclcpp/qos_event.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/waitable.hpp \ + /opt/ros/humble/include/rcpputils/rcpputils/time.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/service.hpp \ + /opt/ros/humble/include/tracetools/tracetools/tracetools.h \ + /opt/ros/humble/include/tracetools/tracetools/config.h \ + /opt/ros/humble/include/tracetools/tracetools/visibility_control.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/any_service_callback.hpp \ + /opt/ros/humble/include/tracetools/tracetools/utils.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/subscription_base.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/any_subscription_callback.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/allocator/allocator_common.hpp \ + /usr/include/c++/11/cstring \ + /opt/ros/humble/include/rclcpp/rclcpp/allocator/allocator_deleter.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/detail/subscription_callback_type_helper.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/message_info.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/serialized_message.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/type_adapter.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/experimental/intra_process_manager.hpp \ + /usr/include/c++/11/shared_mutex \ + /opt/ros/humble/include/rclcpp/rclcpp/experimental/ros_message_intra_process_buffer.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/experimental/subscription_intra_process_base.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/experimental/subscription_intra_process.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/experimental/buffers/intra_process_buffer.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/experimental/buffers/buffer_implementation_base.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/experimental/subscription_intra_process_buffer.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/experimental/create_intra_process_buffer.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/experimental/buffers/ring_buffer_implementation.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/intra_process_buffer_type.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/subscription_content_filter_options.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/timer.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/clock.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/time.hpp \ + /opt/ros/humble/include/builtin_interfaces/builtin_interfaces/msg/time.hpp \ + /opt/ros/humble/include/builtin_interfaces/builtin_interfaces/msg/detail/time__struct.hpp \ + /opt/ros/humble/include/builtin_interfaces/builtin_interfaces/msg/detail/time__builder.hpp \ + /opt/ros/humble/include/builtin_interfaces/builtin_interfaces/msg/detail/time__traits.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/rate.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/node_interfaces/node_base_interface.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/subscription.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/detail/resolve_use_intra_process.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/intra_process_setting.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/detail/resolve_intra_process_buffer_type.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/message_memory_strategy.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/subscription_options.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/detail/rmw_implementation_specific_subscription_payload.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/detail/rmw_implementation_specific_payload.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/qos_overriding_options.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/set_parameters_result.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/set_parameters_result__struct.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/set_parameters_result__builder.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/set_parameters_result__traits.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/topic_statistics_state.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/subscription_traits.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/topic_statistics/subscription_topic_statistics.hpp \ + /opt/ros/humble/include/libstatistics_collector/libstatistics_collector/collector/generate_statistics_message.hpp \ + /opt/ros/humble/include/statistics_msgs/statistics_msgs/msg/metrics_message.hpp \ + /opt/ros/humble/include/statistics_msgs/statistics_msgs/msg/detail/metrics_message__struct.hpp \ + /opt/ros/humble/include/statistics_msgs/statistics_msgs/msg/detail/statistic_data_point__struct.hpp \ + /opt/ros/humble/include/statistics_msgs/statistics_msgs/msg/detail/metrics_message__builder.hpp \ + /opt/ros/humble/include/statistics_msgs/statistics_msgs/msg/detail/metrics_message__traits.hpp \ + /opt/ros/humble/include/statistics_msgs/statistics_msgs/msg/detail/statistic_data_point__traits.hpp \ + /opt/ros/humble/include/libstatistics_collector/libstatistics_collector/visibility_control.hpp \ + /opt/ros/humble/include/libstatistics_collector/libstatistics_collector/moving_average_statistics/types.hpp \ + /usr/include/c++/11/cmath /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ + /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ + /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls-narrow.h \ + /usr/include/x86_64-linux-gnu/bits/iscanonical.h \ + /usr/include/c++/11/bits/specfun.h /usr/include/c++/11/tr1/gamma.tcc \ + /usr/include/c++/11/tr1/special_function_util.h \ + /usr/include/c++/11/tr1/bessel_function.tcc \ + /usr/include/c++/11/tr1/beta_function.tcc \ + /usr/include/c++/11/tr1/ell_integral.tcc \ + /usr/include/c++/11/tr1/exp_integral.tcc \ + /usr/include/c++/11/tr1/hypergeometric.tcc \ + /usr/include/c++/11/tr1/legendre_function.tcc \ + /usr/include/c++/11/tr1/modified_bessel_func.tcc \ + /usr/include/c++/11/tr1/poly_hermite.tcc \ + /usr/include/c++/11/tr1/poly_laguerre.tcc \ + /usr/include/c++/11/tr1/riemann_zeta.tcc \ + /opt/ros/humble/include/libstatistics_collector/libstatistics_collector/topic_statistics_collector/constants.hpp \ + /opt/ros/humble/include/libstatistics_collector/libstatistics_collector/topic_statistics_collector/received_message_age.hpp \ + /opt/ros/humble/include/libstatistics_collector/libstatistics_collector/topic_statistics_collector/constants.hpp \ + /opt/ros/humble/include/libstatistics_collector/libstatistics_collector/topic_statistics_collector/topic_statistics_collector.hpp \ + /opt/ros/humble/include/libstatistics_collector/libstatistics_collector/collector/collector.hpp \ + /opt/ros/humble/include/libstatistics_collector/libstatistics_collector/moving_average_statistics/moving_average.hpp \ + /usr/include/c++/11/numeric /usr/include/c++/11/bits/stl_numeric.h \ + /usr/include/c++/11/pstl/glue_numeric_defs.h \ + /opt/ros/humble/include/libstatistics_collector/libstatistics_collector/moving_average_statistics/types.hpp \ + /opt/ros/humble/include/rcpputils/rcpputils/thread_safety_annotations.hpp \ + /opt/ros/humble/include/libstatistics_collector/libstatistics_collector/collector/metric_details_interface.hpp \ + /opt/ros/humble/include/libstatistics_collector/libstatistics_collector/topic_statistics_collector/received_message_period.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/publisher.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/get_message_type_support_handle.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/is_ros_compatible_type.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/loaned_message.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/publisher_options.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/detail/rmw_implementation_specific_publisher_payload.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/future_return_code.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/executors/single_threaded_executor.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/node.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/list_parameters_result.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/list_parameters_result__struct.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/list_parameters_result__builder.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/list_parameters_result__traits.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/parameter_descriptor.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/parameter_descriptor__struct.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/floating_point_range__struct.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/integer_range__struct.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/parameter_descriptor__builder.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/parameter_descriptor__traits.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/floating_point_range__traits.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/integer_range__traits.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/parameter_event.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/parameter_event__struct.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/parameter__struct.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/parameter_value__struct.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/parameter_event__builder.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/parameter_event__traits.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/parameter__traits.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/parameter_value__traits.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/generic_publisher.hpp \ + /opt/ros/humble/include/rcpputils/rcpputils/shared_library.hpp \ + /opt/ros/humble/include/rcutils/rcutils/shared_library.h \ + /opt/ros/humble/include/rclcpp/rclcpp/node_interfaces/node_topics_interface.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/node_interfaces/node_timers_interface.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/publisher_factory.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/subscription_factory.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/typesupport_helpers.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/generic_subscription.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/node_interfaces/node_clock_interface.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/node_interfaces/node_logging_interface.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/node_interfaces/node_parameters_interface.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/parameter.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/parameter.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/parameter__builder.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/parameter_value.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/parameter_type.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/parameter_type__struct.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/parameter_type__builder.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/parameter_type__traits.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/parameter_value.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/msg/detail/parameter_value__builder.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/node_interfaces/node_services_interface.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/node_interfaces/node_time_source_interface.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/node_interfaces/node_waitables_interface.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/node_options.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/node_impl.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/create_client.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/create_generic_publisher.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/create_generic_subscription.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/create_publisher.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/node_interfaces/get_node_topics_interface.hpp \ + /opt/ros/humble/include/rcpputils/rcpputils/pointer_traits.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/node_interfaces/node_topics_interface_traits.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/detail/qos_parameters.hpp \ + /opt/ros/humble/include/rmw/rmw/qos_string_conversions.h \ + /opt/ros/humble/include/rclcpp/rclcpp/node_interfaces/get_node_parameters_interface.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/node_interfaces/node_parameters_interface_traits.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/create_service.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/create_subscription.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/detail/resolve_enable_topic_statistics.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/node_interfaces/get_node_timers_interface.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/node_interfaces/node_timers_interface_traits.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/create_timer.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/node_interfaces/get_node_base_interface.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/node_interfaces/node_base_interface_traits.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/executors/static_single_threaded_executor.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/executors/static_executor_entities_collector.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/experimental/executable_list.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/parameter_client.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/describe_parameters.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/detail/describe_parameters__struct.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/detail/describe_parameters__builder.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/detail/describe_parameters__traits.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/get_parameter_types.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/detail/get_parameter_types__struct.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/detail/get_parameter_types__builder.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/detail/get_parameter_types__traits.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/get_parameters.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/detail/get_parameters__struct.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/detail/get_parameters__builder.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/detail/get_parameters__traits.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/list_parameters.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/detail/list_parameters__struct.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/detail/list_parameters__builder.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/detail/list_parameters__traits.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/set_parameters.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/detail/set_parameters__struct.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/detail/set_parameters__builder.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/detail/set_parameters__traits.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/set_parameters_atomically.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/detail/set_parameters_atomically__struct.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/detail/set_parameters_atomically__builder.hpp \ + /opt/ros/humble/include/rcl_interfaces/rcl_interfaces/srv/detail/set_parameters_atomically__traits.hpp \ + /opt/ros/humble/include/rcl_yaml_param_parser/rcl_yaml_param_parser/parser.h \ + /opt/ros/humble/include/rcl_yaml_param_parser/rcl_yaml_param_parser/visibility_control.h \ + /opt/ros/humble/include/rclcpp/rclcpp/parameter_map.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/parameter_event_handler.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/parameter_service.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/wait_set.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/wait_set_policies/dynamic_storage.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/subscription_wait_set_mask.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/wait_set_policies/detail/storage_policy_common.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/wait_set_policies/sequential_synchronization.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/wait_result.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/wait_result_kind.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/wait_set_policies/detail/synchronization_policy_common.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/wait_set_policies/static_storage.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/wait_set_policies/thread_safe_synchronization.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/wait_set_policies/detail/write_preferring_read_write_lock.hpp \ + /opt/ros/humble/include/rclcpp/rclcpp/wait_set_template.hpp diff --git a/src/build/challenge/CMakeFiles/solution_node.dir/DependInfo.cmake b/src/build/challenge/CMakeFiles/solution_node.dir/DependInfo.cmake new file mode 100644 index 00000000..ff96f9c9 --- /dev/null +++ b/src/build/challenge/CMakeFiles/solution_node.dir/DependInfo.cmake @@ -0,0 +1,19 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + "/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/src/solution.cpp" "CMakeFiles/solution_node.dir/src/solution.cpp.o" "gcc" "CMakeFiles/solution_node.dir/src/solution.cpp.o.d" + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/src/build/challenge/CMakeFiles/solution_node.dir/build.make b/src/build/challenge/CMakeFiles/solution_node.dir/build.make new file mode 100644 index 00000000..ae872c90 --- /dev/null +++ b/src/build/challenge/CMakeFiles/solution_node.dir/build.make @@ -0,0 +1,167 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.22 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Produce verbose output by default. +VERBOSE = 1 + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge + +# Include any dependencies generated for this target. +include CMakeFiles/solution_node.dir/depend.make +# Include any dependencies generated by the compiler for this target. +include CMakeFiles/solution_node.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/solution_node.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/solution_node.dir/flags.make + +CMakeFiles/solution_node.dir/src/solution.cpp.o: CMakeFiles/solution_node.dir/flags.make +CMakeFiles/solution_node.dir/src/solution.cpp.o: /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/src/solution.cpp +CMakeFiles/solution_node.dir/src/solution.cpp.o: CMakeFiles/solution_node.dir/compiler_depend.ts + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object CMakeFiles/solution_node.dir/src/solution.cpp.o" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/solution_node.dir/src/solution.cpp.o -MF CMakeFiles/solution_node.dir/src/solution.cpp.o.d -o CMakeFiles/solution_node.dir/src/solution.cpp.o -c /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/src/solution.cpp + +CMakeFiles/solution_node.dir/src/solution.cpp.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/solution_node.dir/src/solution.cpp.i" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/src/solution.cpp > CMakeFiles/solution_node.dir/src/solution.cpp.i + +CMakeFiles/solution_node.dir/src/solution.cpp.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/solution_node.dir/src/solution.cpp.s" + /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/src/solution.cpp -o CMakeFiles/solution_node.dir/src/solution.cpp.s + +# Object files for target solution_node +solution_node_OBJECTS = \ +"CMakeFiles/solution_node.dir/src/solution.cpp.o" + +# External object files for target solution_node +solution_node_EXTERNAL_OBJECTS = + +solution_node: CMakeFiles/solution_node.dir/src/solution.cpp.o +solution_node: CMakeFiles/solution_node.dir/build.make +solution_node: /opt/ros/humble/lib/librclcpp.so +solution_node: /opt/ros/humble/lib/liblibstatistics_collector.so +solution_node: /opt/ros/humble/lib/librcl.so +solution_node: /opt/ros/humble/lib/librmw_implementation.so +solution_node: /opt/ros/humble/lib/libament_index_cpp.so +solution_node: /opt/ros/humble/lib/librcl_logging_spdlog.so +solution_node: /opt/ros/humble/lib/librcl_logging_interface.so +solution_node: /opt/ros/humble/lib/librcl_interfaces__rosidl_typesupport_fastrtps_c.so +solution_node: /opt/ros/humble/lib/librcl_interfaces__rosidl_typesupport_introspection_c.so +solution_node: /opt/ros/humble/lib/librcl_interfaces__rosidl_typesupport_fastrtps_cpp.so +solution_node: /opt/ros/humble/lib/librcl_interfaces__rosidl_typesupport_introspection_cpp.so +solution_node: /opt/ros/humble/lib/librcl_interfaces__rosidl_typesupport_cpp.so +solution_node: /opt/ros/humble/lib/librcl_interfaces__rosidl_generator_py.so +solution_node: /opt/ros/humble/lib/librcl_interfaces__rosidl_typesupport_c.so +solution_node: /opt/ros/humble/lib/librcl_interfaces__rosidl_generator_c.so +solution_node: /opt/ros/humble/lib/librcl_yaml_param_parser.so +solution_node: /opt/ros/humble/lib/libyaml.so +solution_node: /opt/ros/humble/lib/librosgraph_msgs__rosidl_typesupport_fastrtps_c.so +solution_node: /opt/ros/humble/lib/librosgraph_msgs__rosidl_typesupport_fastrtps_cpp.so +solution_node: /opt/ros/humble/lib/librosgraph_msgs__rosidl_typesupport_introspection_c.so +solution_node: /opt/ros/humble/lib/librosgraph_msgs__rosidl_typesupport_introspection_cpp.so +solution_node: /opt/ros/humble/lib/librosgraph_msgs__rosidl_typesupport_cpp.so +solution_node: /opt/ros/humble/lib/librosgraph_msgs__rosidl_generator_py.so +solution_node: /opt/ros/humble/lib/librosgraph_msgs__rosidl_typesupport_c.so +solution_node: /opt/ros/humble/lib/librosgraph_msgs__rosidl_generator_c.so +solution_node: /opt/ros/humble/lib/libstatistics_msgs__rosidl_typesupport_fastrtps_c.so +solution_node: /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_typesupport_fastrtps_c.so +solution_node: /opt/ros/humble/lib/librosidl_typesupport_fastrtps_c.so +solution_node: /opt/ros/humble/lib/libstatistics_msgs__rosidl_typesupport_fastrtps_cpp.so +solution_node: /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_typesupport_fastrtps_cpp.so +solution_node: /opt/ros/humble/lib/librosidl_typesupport_fastrtps_cpp.so +solution_node: /opt/ros/humble/lib/librmw.so +solution_node: /opt/ros/humble/lib/libfastcdr.so.1.0.24 +solution_node: /opt/ros/humble/lib/libstatistics_msgs__rosidl_typesupport_introspection_c.so +solution_node: /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_typesupport_introspection_c.so +solution_node: /opt/ros/humble/lib/libstatistics_msgs__rosidl_typesupport_introspection_cpp.so +solution_node: /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_typesupport_introspection_cpp.so +solution_node: /opt/ros/humble/lib/librosidl_typesupport_introspection_cpp.so +solution_node: /opt/ros/humble/lib/librosidl_typesupport_introspection_c.so +solution_node: /opt/ros/humble/lib/libstatistics_msgs__rosidl_typesupport_cpp.so +solution_node: /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_typesupport_cpp.so +solution_node: /opt/ros/humble/lib/librosidl_typesupport_cpp.so +solution_node: /opt/ros/humble/lib/libstatistics_msgs__rosidl_generator_py.so +solution_node: /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_generator_py.so +solution_node: /opt/ros/humble/lib/libstatistics_msgs__rosidl_typesupport_c.so +solution_node: /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_typesupport_c.so +solution_node: /opt/ros/humble/lib/libstatistics_msgs__rosidl_generator_c.so +solution_node: /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_generator_c.so +solution_node: /opt/ros/humble/lib/librosidl_typesupport_c.so +solution_node: /opt/ros/humble/lib/librcpputils.so +solution_node: /opt/ros/humble/lib/librosidl_runtime_c.so +solution_node: /opt/ros/humble/lib/librcutils.so +solution_node: /usr/lib/x86_64-linux-gnu/libpython3.10.so +solution_node: /opt/ros/humble/lib/libtracetools.so +solution_node: CMakeFiles/solution_node.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking CXX executable solution_node" + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/solution_node.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/solution_node.dir/build: solution_node +.PHONY : CMakeFiles/solution_node.dir/build + +CMakeFiles/solution_node.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/solution_node.dir/cmake_clean.cmake +.PHONY : CMakeFiles/solution_node.dir/clean + +CMakeFiles/solution_node.dir/depend: + cd /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/solution_node.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/solution_node.dir/depend + diff --git a/src/build/challenge/CMakeFiles/solution_node.dir/cmake_clean.cmake b/src/build/challenge/CMakeFiles/solution_node.dir/cmake_clean.cmake new file mode 100644 index 00000000..c95aca14 --- /dev/null +++ b/src/build/challenge/CMakeFiles/solution_node.dir/cmake_clean.cmake @@ -0,0 +1,11 @@ +file(REMOVE_RECURSE + "CMakeFiles/solution_node.dir/src/solution.cpp.o" + "CMakeFiles/solution_node.dir/src/solution.cpp.o.d" + "solution_node" + "solution_node.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang CXX) + include(CMakeFiles/solution_node.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/src/build/challenge/CMakeFiles/solution_node.dir/compiler_depend.make b/src/build/challenge/CMakeFiles/solution_node.dir/compiler_depend.make new file mode 100644 index 00000000..d1ab31cc --- /dev/null +++ b/src/build/challenge/CMakeFiles/solution_node.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty compiler generated dependencies file for solution_node. +# This may be replaced when dependencies are built. diff --git a/src/build/challenge/CMakeFiles/solution_node.dir/compiler_depend.ts b/src/build/challenge/CMakeFiles/solution_node.dir/compiler_depend.ts new file mode 100644 index 00000000..49939567 --- /dev/null +++ b/src/build/challenge/CMakeFiles/solution_node.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for compiler generated dependencies management for solution_node. diff --git a/src/build/challenge/CMakeFiles/solution_node.dir/depend.make b/src/build/challenge/CMakeFiles/solution_node.dir/depend.make new file mode 100644 index 00000000..41322863 --- /dev/null +++ b/src/build/challenge/CMakeFiles/solution_node.dir/depend.make @@ -0,0 +1,2 @@ +# Empty dependencies file for solution_node. +# This may be replaced when dependencies are built. diff --git a/src/build/challenge/CMakeFiles/solution_node.dir/flags.make b/src/build/challenge/CMakeFiles/solution_node.dir/flags.make new file mode 100644 index 00000000..f0a08639 --- /dev/null +++ b/src/build/challenge/CMakeFiles/solution_node.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.22 + +# compile CXX with /usr/bin/c++ +CXX_DEFINES = -DDEFAULT_RMW_IMPLEMENTATION=rmw_fastrtps_cpp -DRCUTILS_ENABLE_FAULT_INJECTION + +CXX_INCLUDES = -isystem /opt/ros/humble/include/rclcpp -isystem /opt/ros/humble/include/ament_index_cpp -isystem /opt/ros/humble/include/libstatistics_collector -isystem /opt/ros/humble/include/builtin_interfaces -isystem /opt/ros/humble/include/rosidl_runtime_c -isystem /opt/ros/humble/include/rcutils -isystem /opt/ros/humble/include/rosidl_typesupport_interface -isystem /opt/ros/humble/include/fastcdr -isystem /opt/ros/humble/include/rosidl_runtime_cpp -isystem /opt/ros/humble/include/rosidl_typesupport_fastrtps_cpp -isystem /opt/ros/humble/include/rmw -isystem /opt/ros/humble/include/rosidl_typesupport_fastrtps_c -isystem /opt/ros/humble/include/rosidl_typesupport_introspection_c -isystem /opt/ros/humble/include/rosidl_typesupport_introspection_cpp -isystem /opt/ros/humble/include/rcl -isystem /opt/ros/humble/include/rcl_interfaces -isystem /opt/ros/humble/include/rcl_logging_interface -isystem /opt/ros/humble/include/rcl_yaml_param_parser -isystem /opt/ros/humble/include/libyaml_vendor -isystem /opt/ros/humble/include/tracetools -isystem /opt/ros/humble/include/rcpputils -isystem /opt/ros/humble/include/statistics_msgs -isystem /opt/ros/humble/include/rosgraph_msgs -isystem /opt/ros/humble/include/rosidl_typesupport_cpp -isystem /opt/ros/humble/include/rosidl_typesupport_c + +CXX_FLAGS = -Wall -Wextra -Wpedantic + diff --git a/src/build/challenge/CMakeFiles/solution_node.dir/link.txt b/src/build/challenge/CMakeFiles/solution_node.dir/link.txt new file mode 100644 index 00000000..99ce2be3 --- /dev/null +++ b/src/build/challenge/CMakeFiles/solution_node.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/c++ CMakeFiles/solution_node.dir/src/solution.cpp.o -o solution_node -Wl,-rpath,/opt/ros/humble/lib:/home/linuxbrew/.linuxbrew/lib: /opt/ros/humble/lib/librclcpp.so /opt/ros/humble/lib/liblibstatistics_collector.so /opt/ros/humble/lib/librcl.so /opt/ros/humble/lib/librmw_implementation.so /opt/ros/humble/lib/libament_index_cpp.so /opt/ros/humble/lib/librcl_logging_spdlog.so /opt/ros/humble/lib/librcl_logging_interface.so /opt/ros/humble/lib/librcl_interfaces__rosidl_typesupport_fastrtps_c.so /opt/ros/humble/lib/librcl_interfaces__rosidl_typesupport_introspection_c.so /opt/ros/humble/lib/librcl_interfaces__rosidl_typesupport_fastrtps_cpp.so /opt/ros/humble/lib/librcl_interfaces__rosidl_typesupport_introspection_cpp.so /opt/ros/humble/lib/librcl_interfaces__rosidl_typesupport_cpp.so /opt/ros/humble/lib/librcl_interfaces__rosidl_generator_py.so /opt/ros/humble/lib/librcl_interfaces__rosidl_typesupport_c.so /opt/ros/humble/lib/librcl_interfaces__rosidl_generator_c.so /opt/ros/humble/lib/librcl_yaml_param_parser.so /opt/ros/humble/lib/libyaml.so /opt/ros/humble/lib/librosgraph_msgs__rosidl_typesupport_fastrtps_c.so /opt/ros/humble/lib/librosgraph_msgs__rosidl_typesupport_fastrtps_cpp.so /opt/ros/humble/lib/librosgraph_msgs__rosidl_typesupport_introspection_c.so /opt/ros/humble/lib/librosgraph_msgs__rosidl_typesupport_introspection_cpp.so /opt/ros/humble/lib/librosgraph_msgs__rosidl_typesupport_cpp.so /opt/ros/humble/lib/librosgraph_msgs__rosidl_generator_py.so /opt/ros/humble/lib/librosgraph_msgs__rosidl_typesupport_c.so /opt/ros/humble/lib/librosgraph_msgs__rosidl_generator_c.so /opt/ros/humble/lib/libstatistics_msgs__rosidl_typesupport_fastrtps_c.so /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_typesupport_fastrtps_c.so /opt/ros/humble/lib/librosidl_typesupport_fastrtps_c.so /opt/ros/humble/lib/libstatistics_msgs__rosidl_typesupport_fastrtps_cpp.so /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_typesupport_fastrtps_cpp.so /opt/ros/humble/lib/librosidl_typesupport_fastrtps_cpp.so /opt/ros/humble/lib/librmw.so /opt/ros/humble/lib/libfastcdr.so.1.0.24 /opt/ros/humble/lib/libstatistics_msgs__rosidl_typesupport_introspection_c.so /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_typesupport_introspection_c.so /opt/ros/humble/lib/libstatistics_msgs__rosidl_typesupport_introspection_cpp.so /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_typesupport_introspection_cpp.so /opt/ros/humble/lib/librosidl_typesupport_introspection_cpp.so /opt/ros/humble/lib/librosidl_typesupport_introspection_c.so /opt/ros/humble/lib/libstatistics_msgs__rosidl_typesupport_cpp.so /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_typesupport_cpp.so /opt/ros/humble/lib/librosidl_typesupport_cpp.so /opt/ros/humble/lib/libstatistics_msgs__rosidl_generator_py.so /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_generator_py.so /opt/ros/humble/lib/libstatistics_msgs__rosidl_typesupport_c.so /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_typesupport_c.so /opt/ros/humble/lib/libstatistics_msgs__rosidl_generator_c.so /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_generator_c.so /opt/ros/humble/lib/librosidl_typesupport_c.so /opt/ros/humble/lib/librcpputils.so /opt/ros/humble/lib/librosidl_runtime_c.so /opt/ros/humble/lib/librcutils.so -ldl /usr/lib/x86_64-linux-gnu/libpython3.10.so /opt/ros/humble/lib/libtracetools.so -Wl,-rpath-link,/home/linuxbrew/.linuxbrew/lib diff --git a/src/build/challenge/CMakeFiles/solution_node.dir/progress.make b/src/build/challenge/CMakeFiles/solution_node.dir/progress.make new file mode 100644 index 00000000..8c8fb6fb --- /dev/null +++ b/src/build/challenge/CMakeFiles/solution_node.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 3 +CMAKE_PROGRESS_2 = 4 + diff --git a/src/build/challenge/CMakeFiles/uninstall.dir/DependInfo.cmake b/src/build/challenge/CMakeFiles/uninstall.dir/DependInfo.cmake new file mode 100644 index 00000000..dc55e44b --- /dev/null +++ b/src/build/challenge/CMakeFiles/uninstall.dir/DependInfo.cmake @@ -0,0 +1,18 @@ + +# Consider dependencies only in project. +set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF) + +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + ) + +# The set of dependency files which are needed: +set(CMAKE_DEPENDS_DEPENDENCY_FILES + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/src/build/challenge/CMakeFiles/uninstall.dir/build.make b/src/build/challenge/CMakeFiles/uninstall.dir/build.make new file mode 100644 index 00000000..fe19a19e --- /dev/null +++ b/src/build/challenge/CMakeFiles/uninstall.dir/build.make @@ -0,0 +1,86 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.22 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Produce verbose output by default. +VERBOSE = 1 + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge + +# Utility rule file for uninstall. + +# Include any custom commands dependencies for this target. +include CMakeFiles/uninstall.dir/compiler_depend.make + +# Include the progress variables for this target. +include CMakeFiles/uninstall.dir/progress.make + +uninstall: CMakeFiles/uninstall.dir/build.make +.PHONY : uninstall + +# Rule to build all files generated by this target. +CMakeFiles/uninstall.dir/build: uninstall +.PHONY : CMakeFiles/uninstall.dir/build + +CMakeFiles/uninstall.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/uninstall.dir/cmake_clean.cmake +.PHONY : CMakeFiles/uninstall.dir/clean + +CMakeFiles/uninstall.dir/depend: + cd /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles/uninstall.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/uninstall.dir/depend + diff --git a/src/build/challenge/CMakeFiles/uninstall.dir/cmake_clean.cmake b/src/build/challenge/CMakeFiles/uninstall.dir/cmake_clean.cmake new file mode 100644 index 00000000..9960e984 --- /dev/null +++ b/src/build/challenge/CMakeFiles/uninstall.dir/cmake_clean.cmake @@ -0,0 +1,5 @@ + +# Per-language clean rules from dependency scanning. +foreach(lang ) + include(CMakeFiles/uninstall.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/src/build/challenge/CMakeFiles/uninstall.dir/compiler_depend.make b/src/build/challenge/CMakeFiles/uninstall.dir/compiler_depend.make new file mode 100644 index 00000000..2d744479 --- /dev/null +++ b/src/build/challenge/CMakeFiles/uninstall.dir/compiler_depend.make @@ -0,0 +1,2 @@ +# Empty custom commands generated dependencies file for uninstall. +# This may be replaced when dependencies are built. diff --git a/src/build/challenge/CMakeFiles/uninstall.dir/compiler_depend.ts b/src/build/challenge/CMakeFiles/uninstall.dir/compiler_depend.ts new file mode 100644 index 00000000..ef27dccf --- /dev/null +++ b/src/build/challenge/CMakeFiles/uninstall.dir/compiler_depend.ts @@ -0,0 +1,2 @@ +# CMAKE generated file: DO NOT EDIT! +# Timestamp file for custom commands dependencies management for uninstall. diff --git a/src/build/challenge/CMakeFiles/uninstall.dir/progress.make b/src/build/challenge/CMakeFiles/uninstall.dir/progress.make new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/src/build/challenge/CMakeFiles/uninstall.dir/progress.make @@ -0,0 +1 @@ + diff --git a/src/build/challenge/CTestConfiguration.ini b/src/build/challenge/CTestConfiguration.ini new file mode 100644 index 00000000..ec292c08 --- /dev/null +++ b/src/build/challenge/CTestConfiguration.ini @@ -0,0 +1,105 @@ +# This file is configured by CMake automatically as DartConfiguration.tcl +# If you choose not to use CMake, this file may be hand configured, by +# filling in the required variables. + + +# Configuration directories and files +SourceDirectory: /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge +BuildDirectory: /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge + +# Where to place the cost data store +CostDataFile: + +# Site is something like machine.domain, i.e. pragmatic.crd +Site: danialramzan-Zenbook-UP6502ZA-Linux + +# Build name is osname-revision-compiler, i.e. Linux-2.4.2-2smp-c++ +BuildName: + +# Subprojects +LabelsForSubprojects: + +# Submission information +SubmitURL: + +# Dashboard start time +NightlyStartTime: + +# Commands for the build/test/submit cycle +ConfigureCommand: "/usr/bin/cmake" "/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge" +MakeCommand: +DefaultCTestConfigurationType: + +# version control +UpdateVersionOnly: + +# CVS options +# Default is "-d -P -A" +CVSCommand: +CVSUpdateOptions: + +# Subversion options +SVNCommand: +SVNOptions: +SVNUpdateOptions: + +# Git options +GITCommand: +GITInitSubmodules: +GITUpdateOptions: +GITUpdateCustom: + +# Perforce options +P4Command: +P4Client: +P4Options: +P4UpdateOptions: +P4UpdateCustom: + +# Generic update command +UpdateCommand: +UpdateOptions: +UpdateType: + +# Compiler info +Compiler: /usr/bin/c++ +CompilerVersion: 11.4.0 + +# Dynamic analysis (MemCheck) +PurifyCommand: +ValgrindCommand: +ValgrindCommandOptions: +DrMemoryCommand: +DrMemoryCommandOptions: +CudaSanitizerCommand: +CudaSanitizerCommandOptions: +MemoryCheckType: +MemoryCheckSanitizerOptions: +MemoryCheckCommand: +MemoryCheckCommandOptions: +MemoryCheckSuppressionFile: + +# Coverage +CoverageCommand: +CoverageExtraFlags: + +# Testing options +# TimeOut is the amount of time in seconds to wait for processes +# to complete during testing. After TimeOut seconds, the +# process will be summarily terminated. +# Currently set to 25 minutes +TimeOut: + +# During parallel testing CTest will not start a new test if doing +# so would cause the system load to exceed this value. +TestLoad: + +UseLaunchers: +CurlOptions: +# warning, if you add new options here that have to do with submit, +# you have to update cmCTestSubmitCommand.cxx + +# For CTest submissions that timeout, these options +# specify behavior for retrying the submission +CTestSubmitRetryDelay: +CTestSubmitRetryCount: diff --git a/src/build/challenge/CTestCustom.cmake b/src/build/challenge/CTestCustom.cmake new file mode 100644 index 00000000..14956f31 --- /dev/null +++ b/src/build/challenge/CTestCustom.cmake @@ -0,0 +1,2 @@ +set(CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE 0) +set(CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE 0) diff --git a/src/build/challenge/CTestTestfile.cmake b/src/build/challenge/CTestTestfile.cmake new file mode 100644 index 00000000..e0dd6f52 --- /dev/null +++ b/src/build/challenge/CTestTestfile.cmake @@ -0,0 +1,14 @@ +# CMake generated Testfile for +# Source directory: /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge +# Build directory: /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge +# +# This file includes the relevant testing commands required for +# testing this directory and lists subdirectories to be tested as well. +add_test(cppcheck "/home/linuxbrew/.linuxbrew/bin/python3" "-u" "/opt/ros/humble/share/ament_cmake_test/cmake/run_test.py" "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/test_results/challenge/cppcheck.xunit.xml" "--package-name" "challenge" "--output-file" "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/ament_cppcheck/cppcheck.txt" "--command" "/opt/ros/humble/bin/ament_cppcheck" "--xunit-file" "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/test_results/challenge/cppcheck.xunit.xml" "--include_dirs" "/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/include") +set_tests_properties(cppcheck PROPERTIES LABELS "cppcheck;linter" TIMEOUT "300" WORKING_DIRECTORY "/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge" _BACKTRACE_TRIPLES "/opt/ros/humble/share/ament_cmake_test/cmake/ament_add_test.cmake;125;add_test;/opt/ros/humble/share/ament_cmake_cppcheck/cmake/ament_cppcheck.cmake;66;ament_add_test;/opt/ros/humble/share/ament_cmake_cppcheck/cmake/ament_cmake_cppcheck_lint_hook.cmake;87;ament_cppcheck;/opt/ros/humble/share/ament_cmake_cppcheck/cmake/ament_cmake_cppcheck_lint_hook.cmake;0;;/opt/ros/humble/share/ament_cmake_core/cmake/core/ament_execute_extensions.cmake;48;include;/opt/ros/humble/share/ament_lint_auto/cmake/ament_lint_auto_package_hook.cmake;21;ament_execute_extensions;/opt/ros/humble/share/ament_lint_auto/cmake/ament_lint_auto_package_hook.cmake;0;;/opt/ros/humble/share/ament_cmake_core/cmake/core/ament_execute_extensions.cmake;48;include;/opt/ros/humble/share/ament_cmake_core/cmake/core/ament_package.cmake;66;ament_execute_extensions;/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/CMakeLists.txt;190;ament_package;/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/CMakeLists.txt;0;") +add_test(lint_cmake "/home/linuxbrew/.linuxbrew/bin/python3" "-u" "/opt/ros/humble/share/ament_cmake_test/cmake/run_test.py" "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/test_results/challenge/lint_cmake.xunit.xml" "--package-name" "challenge" "--output-file" "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/ament_lint_cmake/lint_cmake.txt" "--command" "/opt/ros/humble/bin/ament_lint_cmake" "--xunit-file" "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/test_results/challenge/lint_cmake.xunit.xml") +set_tests_properties(lint_cmake PROPERTIES LABELS "lint_cmake;linter" TIMEOUT "60" WORKING_DIRECTORY "/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge" _BACKTRACE_TRIPLES "/opt/ros/humble/share/ament_cmake_test/cmake/ament_add_test.cmake;125;add_test;/opt/ros/humble/share/ament_cmake_lint_cmake/cmake/ament_lint_cmake.cmake;47;ament_add_test;/opt/ros/humble/share/ament_cmake_lint_cmake/cmake/ament_cmake_lint_cmake_lint_hook.cmake;21;ament_lint_cmake;/opt/ros/humble/share/ament_cmake_lint_cmake/cmake/ament_cmake_lint_cmake_lint_hook.cmake;0;;/opt/ros/humble/share/ament_cmake_core/cmake/core/ament_execute_extensions.cmake;48;include;/opt/ros/humble/share/ament_lint_auto/cmake/ament_lint_auto_package_hook.cmake;21;ament_execute_extensions;/opt/ros/humble/share/ament_lint_auto/cmake/ament_lint_auto_package_hook.cmake;0;;/opt/ros/humble/share/ament_cmake_core/cmake/core/ament_execute_extensions.cmake;48;include;/opt/ros/humble/share/ament_cmake_core/cmake/core/ament_package.cmake;66;ament_execute_extensions;/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/CMakeLists.txt;190;ament_package;/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/CMakeLists.txt;0;") +add_test(uncrustify "/home/linuxbrew/.linuxbrew/bin/python3" "-u" "/opt/ros/humble/share/ament_cmake_test/cmake/run_test.py" "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/test_results/challenge/uncrustify.xunit.xml" "--package-name" "challenge" "--output-file" "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/ament_uncrustify/uncrustify.txt" "--command" "/opt/ros/humble/bin/ament_uncrustify" "--xunit-file" "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/test_results/challenge/uncrustify.xunit.xml") +set_tests_properties(uncrustify PROPERTIES LABELS "uncrustify;linter" TIMEOUT "60" WORKING_DIRECTORY "/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge" _BACKTRACE_TRIPLES "/opt/ros/humble/share/ament_cmake_test/cmake/ament_add_test.cmake;125;add_test;/opt/ros/humble/share/ament_cmake_uncrustify/cmake/ament_uncrustify.cmake;70;ament_add_test;/opt/ros/humble/share/ament_cmake_uncrustify/cmake/ament_cmake_uncrustify_lint_hook.cmake;43;ament_uncrustify;/opt/ros/humble/share/ament_cmake_uncrustify/cmake/ament_cmake_uncrustify_lint_hook.cmake;0;;/opt/ros/humble/share/ament_cmake_core/cmake/core/ament_execute_extensions.cmake;48;include;/opt/ros/humble/share/ament_lint_auto/cmake/ament_lint_auto_package_hook.cmake;21;ament_execute_extensions;/opt/ros/humble/share/ament_lint_auto/cmake/ament_lint_auto_package_hook.cmake;0;;/opt/ros/humble/share/ament_cmake_core/cmake/core/ament_execute_extensions.cmake;48;include;/opt/ros/humble/share/ament_cmake_core/cmake/core/ament_package.cmake;66;ament_execute_extensions;/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/CMakeLists.txt;190;ament_package;/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/CMakeLists.txt;0;") +add_test(xmllint "/home/linuxbrew/.linuxbrew/bin/python3" "-u" "/opt/ros/humble/share/ament_cmake_test/cmake/run_test.py" "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/test_results/challenge/xmllint.xunit.xml" "--package-name" "challenge" "--output-file" "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/ament_xmllint/xmllint.txt" "--command" "/opt/ros/humble/bin/ament_xmllint" "--xunit-file" "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/test_results/challenge/xmllint.xunit.xml") +set_tests_properties(xmllint PROPERTIES LABELS "xmllint;linter" TIMEOUT "60" WORKING_DIRECTORY "/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge" _BACKTRACE_TRIPLES "/opt/ros/humble/share/ament_cmake_test/cmake/ament_add_test.cmake;125;add_test;/opt/ros/humble/share/ament_cmake_xmllint/cmake/ament_xmllint.cmake;50;ament_add_test;/opt/ros/humble/share/ament_cmake_xmllint/cmake/ament_cmake_xmllint_lint_hook.cmake;18;ament_xmllint;/opt/ros/humble/share/ament_cmake_xmllint/cmake/ament_cmake_xmllint_lint_hook.cmake;0;;/opt/ros/humble/share/ament_cmake_core/cmake/core/ament_execute_extensions.cmake;48;include;/opt/ros/humble/share/ament_lint_auto/cmake/ament_lint_auto_package_hook.cmake;21;ament_execute_extensions;/opt/ros/humble/share/ament_lint_auto/cmake/ament_lint_auto_package_hook.cmake;0;;/opt/ros/humble/share/ament_cmake_core/cmake/core/ament_execute_extensions.cmake;48;include;/opt/ros/humble/share/ament_cmake_core/cmake/core/ament_package.cmake;66;ament_execute_extensions;/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/CMakeLists.txt;190;ament_package;/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/CMakeLists.txt;0;") diff --git a/src/build/challenge/Makefile b/src/build/challenge/Makefile new file mode 100644 index 00000000..149ef611 --- /dev/null +++ b/src/build/challenge/Makefile @@ -0,0 +1,272 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.22 + +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + +# Disable VCS-based implicit rules. +% : %,v + +# Disable VCS-based implicit rules. +% : RCS/% + +# Disable VCS-based implicit rules. +% : RCS/%,v + +# Disable VCS-based implicit rules. +% : SCCS/s.% + +# Disable VCS-based implicit rules. +% : s.% + +.SUFFIXES: .hpux_make_needs_suffix_list + +# Produce verbose output by default. +VERBOSE = 1 + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target test +test: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running tests..." + /usr/bin/ctest --force-new-ctest-process $(ARGS) +.PHONY : test + +# Special rule for the target test +test/fast: test +.PHONY : test/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..." + /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# The main all target +all: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge//CMakeFiles/progress.marks + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all + $(CMAKE_COMMAND) -E cmake_progress_start /home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +#============================================================================= +# Target rules for targets named uninstall + +# Build rule for target. +uninstall: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 uninstall +.PHONY : uninstall + +# fast build rule for target. +uninstall/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/uninstall.dir/build.make CMakeFiles/uninstall.dir/build +.PHONY : uninstall/fast + +#============================================================================= +# Target rules for targets named challenge_uninstall + +# Build rule for target. +challenge_uninstall: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 challenge_uninstall +.PHONY : challenge_uninstall + +# fast build rule for target. +challenge_uninstall/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/challenge_uninstall.dir/build.make CMakeFiles/challenge_uninstall.dir/build +.PHONY : challenge_uninstall/fast + +#============================================================================= +# Target rules for targets named solution + +# Build rule for target. +solution: cmake_check_build_system + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 solution +.PHONY : solution + +# fast build rule for target. +solution/fast: + $(MAKE) $(MAKESILENT) -f CMakeFiles/solution.dir/build.make CMakeFiles/solution.dir/build +.PHONY : solution/fast + +src/solution.o: src/solution.cpp.o +.PHONY : src/solution.o + +# target to build an object file +src/solution.cpp.o: + $(MAKE) $(MAKESILENT) -f CMakeFiles/solution.dir/build.make CMakeFiles/solution.dir/src/solution.cpp.o +.PHONY : src/solution.cpp.o + +src/solution.i: src/solution.cpp.i +.PHONY : src/solution.i + +# target to preprocess a source file +src/solution.cpp.i: + $(MAKE) $(MAKESILENT) -f CMakeFiles/solution.dir/build.make CMakeFiles/solution.dir/src/solution.cpp.i +.PHONY : src/solution.cpp.i + +src/solution.s: src/solution.cpp.s +.PHONY : src/solution.s + +# target to generate assembly for a file +src/solution.cpp.s: + $(MAKE) $(MAKESILENT) -f CMakeFiles/solution.dir/build.make CMakeFiles/solution.dir/src/solution.cpp.s +.PHONY : src/solution.cpp.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... install" + @echo "... install/local" + @echo "... install/strip" + @echo "... list_install_components" + @echo "... rebuild_cache" + @echo "... test" + @echo "... challenge_uninstall" + @echo "... uninstall" + @echo "... solution" + @echo "... src/solution.o" + @echo "... src/solution.i" + @echo "... src/solution.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/src/build/challenge/ament_cmake_core/challengeConfig-version.cmake b/src/build/challenge/ament_cmake_core/challengeConfig-version.cmake new file mode 100644 index 00000000..7beb7328 --- /dev/null +++ b/src/build/challenge/ament_cmake_core/challengeConfig-version.cmake @@ -0,0 +1,14 @@ +# generated from ament/cmake/core/templates/nameConfig-version.cmake.in +set(PACKAGE_VERSION "0.0.0") + +set(PACKAGE_VERSION_EXACT False) +set(PACKAGE_VERSION_COMPATIBLE False) + +if("${PACKAGE_FIND_VERSION}" VERSION_EQUAL "${PACKAGE_VERSION}") + set(PACKAGE_VERSION_EXACT True) + set(PACKAGE_VERSION_COMPATIBLE True) +endif() + +if("${PACKAGE_FIND_VERSION}" VERSION_LESS "${PACKAGE_VERSION}") + set(PACKAGE_VERSION_COMPATIBLE True) +endif() diff --git a/src/build/challenge/ament_cmake_core/challengeConfig.cmake b/src/build/challenge/ament_cmake_core/challengeConfig.cmake new file mode 100644 index 00000000..664a87fd --- /dev/null +++ b/src/build/challenge/ament_cmake_core/challengeConfig.cmake @@ -0,0 +1,42 @@ +# generated from ament/cmake/core/templates/nameConfig.cmake.in + +# prevent multiple inclusion +if(_challenge_CONFIG_INCLUDED) + # ensure to keep the found flag the same + if(NOT DEFINED challenge_FOUND) + # explicitly set it to FALSE, otherwise CMake will set it to TRUE + set(challenge_FOUND FALSE) + elseif(NOT challenge_FOUND) + # use separate condition to avoid uninitialized variable warning + set(challenge_FOUND FALSE) + endif() + return() +endif() +set(_challenge_CONFIG_INCLUDED TRUE) + +# output package information +if(NOT challenge_FIND_QUIETLY) + message(STATUS "Found challenge: 0.0.0 (${challenge_DIR})") +endif() + +# warn when using a deprecated package +if(NOT "" STREQUAL "") + set(_msg "Package 'challenge' is deprecated") + # append custom deprecation text if available + if(NOT "" STREQUAL "TRUE") + set(_msg "${_msg} ()") + endif() + # optionally quiet the deprecation message + if(NOT ${challenge_DEPRECATED_QUIET}) + message(DEPRECATION "${_msg}") + endif() +endif() + +# flag package as ament-based to distinguish it after being find_package()-ed +set(challenge_FOUND_AMENT_PACKAGE TRUE) + +# include all config extra files +set(_extras "") +foreach(_extra ${_extras}) + include("${challenge_DIR}/${_extra}") +endforeach() diff --git a/src/build/challenge/ament_cmake_core/package.cmake b/src/build/challenge/ament_cmake_core/package.cmake new file mode 100644 index 00000000..516026f4 --- /dev/null +++ b/src/build/challenge/ament_cmake_core/package.cmake @@ -0,0 +1,14 @@ +set(_AMENT_PACKAGE_NAME "challenge") +set(challenge_VERSION "0.0.0") +set(challenge_MAINTAINER "danialramzan ") +set(challenge_BUILD_DEPENDS "rclcpp") +set(challenge_BUILDTOOL_DEPENDS "ament_cmake") +set(challenge_BUILD_EXPORT_DEPENDS "rclcpp") +set(challenge_BUILDTOOL_EXPORT_DEPENDS ) +set(challenge_EXEC_DEPENDS "rclcpp") +set(challenge_TEST_DEPENDS "ament_lint_auto" "ament_lint_common") +set(challenge_GROUP_DEPENDS ) +set(challenge_MEMBER_OF_GROUPS ) +set(challenge_DEPRECATED "") +set(challenge_EXPORT_TAGS) +list(APPEND challenge_EXPORT_TAGS "ament_cmake") diff --git a/src/build/challenge/ament_cmake_core/stamps/ament_prefix_path.sh.stamp b/src/build/challenge/ament_cmake_core/stamps/ament_prefix_path.sh.stamp new file mode 100644 index 00000000..02e441b7 --- /dev/null +++ b/src/build/challenge/ament_cmake_core/stamps/ament_prefix_path.sh.stamp @@ -0,0 +1,4 @@ +# copied from +# ament_cmake_core/cmake/environment_hooks/environment/ament_prefix_path.sh + +ament_prepend_unique_value AMENT_PREFIX_PATH "$AMENT_CURRENT_PREFIX" diff --git a/src/build/challenge/ament_cmake_core/stamps/nameConfig-version.cmake.in.stamp b/src/build/challenge/ament_cmake_core/stamps/nameConfig-version.cmake.in.stamp new file mode 100644 index 00000000..ee49c9f1 --- /dev/null +++ b/src/build/challenge/ament_cmake_core/stamps/nameConfig-version.cmake.in.stamp @@ -0,0 +1,14 @@ +# generated from ament/cmake/core/templates/nameConfig-version.cmake.in +set(PACKAGE_VERSION "@PACKAGE_VERSION@") + +set(PACKAGE_VERSION_EXACT False) +set(PACKAGE_VERSION_COMPATIBLE False) + +if("${PACKAGE_FIND_VERSION}" VERSION_EQUAL "${PACKAGE_VERSION}") + set(PACKAGE_VERSION_EXACT True) + set(PACKAGE_VERSION_COMPATIBLE True) +endif() + +if("${PACKAGE_FIND_VERSION}" VERSION_LESS "${PACKAGE_VERSION}") + set(PACKAGE_VERSION_COMPATIBLE True) +endif() diff --git a/src/build/challenge/ament_cmake_core/stamps/nameConfig.cmake.in.stamp b/src/build/challenge/ament_cmake_core/stamps/nameConfig.cmake.in.stamp new file mode 100644 index 00000000..6fb3fe78 --- /dev/null +++ b/src/build/challenge/ament_cmake_core/stamps/nameConfig.cmake.in.stamp @@ -0,0 +1,42 @@ +# generated from ament/cmake/core/templates/nameConfig.cmake.in + +# prevent multiple inclusion +if(_@PROJECT_NAME@_CONFIG_INCLUDED) + # ensure to keep the found flag the same + if(NOT DEFINED @PROJECT_NAME@_FOUND) + # explicitly set it to FALSE, otherwise CMake will set it to TRUE + set(@PROJECT_NAME@_FOUND FALSE) + elseif(NOT @PROJECT_NAME@_FOUND) + # use separate condition to avoid uninitialized variable warning + set(@PROJECT_NAME@_FOUND FALSE) + endif() + return() +endif() +set(_@PROJECT_NAME@_CONFIG_INCLUDED TRUE) + +# output package information +if(NOT @PROJECT_NAME@_FIND_QUIETLY) + message(STATUS "Found @PROJECT_NAME@: @PACKAGE_VERSION@ (${@PROJECT_NAME@_DIR})") +endif() + +# warn when using a deprecated package +if(NOT "@PACKAGE_DEPRECATED@" STREQUAL "") + set(_msg "Package '@PROJECT_NAME@' is deprecated") + # append custom deprecation text if available + if(NOT "@PACKAGE_DEPRECATED@" STREQUAL "TRUE") + set(_msg "${_msg} (@PACKAGE_DEPRECATED@)") + endif() + # optionally quiet the deprecation message + if(NOT ${@PROJECT_NAME@_DEPRECATED_QUIET}) + message(DEPRECATION "${_msg}") + endif() +endif() + +# flag package as ament-based to distinguish it after being find_package()-ed +set(@PROJECT_NAME@_FOUND_AMENT_PACKAGE TRUE) + +# include all config extra files +set(_extras "@PACKAGE_CONFIG_EXTRA_FILES@") +foreach(_extra ${_extras}) + include("${@PROJECT_NAME@_DIR}/${_extra}") +endforeach() diff --git a/src/build/challenge/ament_cmake_core/stamps/package.xml.stamp b/src/build/challenge/ament_cmake_core/stamps/package.xml.stamp new file mode 100644 index 00000000..a823e8af --- /dev/null +++ b/src/build/challenge/ament_cmake_core/stamps/package.xml.stamp @@ -0,0 +1,19 @@ + + + + challenge + 0.0.0 + subbots software team challenge + danialramzan + Apache License 2.0 + + ament_cmake + rclcpp + + ament_lint_auto + ament_lint_common + + + ament_cmake + + diff --git a/src/build/challenge/ament_cmake_core/stamps/package_xml_2_cmake.py.stamp b/src/build/challenge/ament_cmake_core/stamps/package_xml_2_cmake.py.stamp new file mode 100644 index 00000000..8be98943 --- /dev/null +++ b/src/build/challenge/ament_cmake_core/stamps/package_xml_2_cmake.py.stamp @@ -0,0 +1,150 @@ +#!/usr/bin/env python3 + +# Copyright 2014-2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +from collections import OrderedDict +import os +import sys + +from catkin_pkg.package import parse_package_string + + +def main(argv=sys.argv[1:]): + """ + Extract the information from package.xml and make them accessible to CMake. + + Parse the given package.xml file and + print CMake code defining several variables containing the content. + """ + parser = argparse.ArgumentParser( + description='Parse package.xml file and print CMake code defining ' + 'several variables', + ) + parser.add_argument( + 'package_xml', + type=argparse.FileType('r', encoding='utf-8'), + help='The path to a package.xml file', + ) + parser.add_argument( + 'outfile', + nargs='?', + help='The filename where the output should be written to', + ) + args = parser.parse_args(argv) + + try: + package = parse_package_string( + args.package_xml.read(), filename=args.package_xml.name) + except Exception as e: + print("Error parsing '%s':" % args.package_xml.name, file=sys.stderr) + raise e + finally: + args.package_xml.close() + + lines = generate_cmake_code(package) + if args.outfile: + with open(args.outfile, 'w', encoding='utf-8') as f: + for line in lines: + f.write('%s\n' % line) + else: + for line in lines: + print(line) + + +def get_dependency_values(key, depends): + dependencies = [] + + # Filter the dependencies, checking for any condition attributes + dependencies.append((key, ' '.join([ + '"%s"' % str(d) for d in depends + if d.condition is None or d.evaluate_condition(os.environ) + ]))) + + for d in depends: + comparisons = [ + 'version_lt', + 'version_lte', + 'version_eq', + 'version_gte', + 'version_gt'] + for comp in comparisons: + value = getattr(d, comp, None) + if value is not None: + dependencies.append(('%s_%s_%s' % (key, str(d), comp.upper()), + '"%s"' % value)) + return dependencies + + +def generate_cmake_code(package): + """ + Return a list of CMake set() commands containing the manifest information. + + :param package: catkin_pkg.package.Package + :returns: list of str + """ + variables = [] + variables.append(('VERSION', '"%s"' % package.version)) + + variables.append(( + 'MAINTAINER', + '"%s"' % (', '.join([str(m) for m in package.maintainers])))) + + variables.extend(get_dependency_values('BUILD_DEPENDS', + package.build_depends)) + variables.extend(get_dependency_values('BUILDTOOL_DEPENDS', + package.buildtool_depends)) + variables.extend(get_dependency_values('BUILD_EXPORT_DEPENDS', + package.build_export_depends)) + variables.extend(get_dependency_values('BUILDTOOL_EXPORT_DEPENDS', + package.buildtool_export_depends)) + variables.extend(get_dependency_values('EXEC_DEPENDS', + package.exec_depends)) + variables.extend(get_dependency_values('TEST_DEPENDS', + package.test_depends)) + variables.extend(get_dependency_values('GROUP_DEPENDS', + package.group_depends)) + variables.extend(get_dependency_values('MEMBER_OF_GROUPS', + package.member_of_groups)) + + deprecated = [e.content for e in package.exports + if e.tagname == 'deprecated'] + variables.append(('DEPRECATED', + '"%s"' % ((deprecated[0] if deprecated[0] else 'TRUE') + if deprecated + else ''))) + + lines = [] + lines.append('set(_AMENT_PACKAGE_NAME "%s")' % package.name) + for (k, v) in variables: + lines.append('set(%s_%s %s)' % (package.name, k, v)) + + lines.append('set(%s_EXPORT_TAGS)' % package.name) + replaces = OrderedDict() + replaces['${prefix}/'] = '' + replaces['\\'] = '\\\\' # escape backslashes + replaces['"'] = '\\"' # prevent double quotes to end the CMake string + replaces[';'] = '\\;' # prevent semicolons to be interpreted as list separators + for export in package.exports: + export = str(export) + for k, v in replaces.items(): + export = export.replace(k, v) + lines.append('list(APPEND %s_EXPORT_TAGS "%s")' % (package.name, export)) + + return lines + + +if __name__ == '__main__': + main() diff --git a/src/build/challenge/ament_cmake_core/stamps/path.sh.stamp b/src/build/challenge/ament_cmake_core/stamps/path.sh.stamp new file mode 100644 index 00000000..e59b749a --- /dev/null +++ b/src/build/challenge/ament_cmake_core/stamps/path.sh.stamp @@ -0,0 +1,5 @@ +# copied from ament_cmake_core/cmake/environment_hooks/environment/path.sh + +if [ -d "$AMENT_CURRENT_PREFIX/bin" ]; then + ament_prepend_unique_value PATH "$AMENT_CURRENT_PREFIX/bin" +fi diff --git a/src/build/challenge/ament_cmake_core/stamps/templates_2_cmake.py.stamp b/src/build/challenge/ament_cmake_core/stamps/templates_2_cmake.py.stamp new file mode 100644 index 00000000..fb2fb479 --- /dev/null +++ b/src/build/challenge/ament_cmake_core/stamps/templates_2_cmake.py.stamp @@ -0,0 +1,112 @@ +#!/usr/bin/env python3 + +# Copyright 2014-2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import os +import sys + +from ament_package.templates import get_environment_hook_template_path +from ament_package.templates import get_package_level_template_names +from ament_package.templates import get_package_level_template_path +from ament_package.templates import get_prefix_level_template_names +from ament_package.templates import get_prefix_level_template_path + +IS_WINDOWS = os.name == 'nt' + + +def main(argv=sys.argv[1:]): + """ + Extract the information about templates provided by ament_package. + + Call the API provided by ament_package and + print CMake code defining several variables containing information about + the available templates. + """ + parser = argparse.ArgumentParser( + description='Extract information about templates provided by ' + 'ament_package and print CMake code defining several ' + 'variables', + ) + parser.add_argument( + 'outfile', + nargs='?', + help='The filename where the output should be written to', + ) + args = parser.parse_args(argv) + + lines = generate_cmake_code() + if args.outfile: + basepath = os.path.dirname(args.outfile) + if not os.path.exists(basepath): + os.makedirs(basepath) + with open(args.outfile, 'w') as f: + for line in lines: + f.write('%s\n' % line) + else: + for line in lines: + print(line) + + +def generate_cmake_code(): + """ + Return a list of CMake set() commands containing the template information. + + :returns: list of str + """ + variables = [] + + if not IS_WINDOWS: + variables.append(( + 'ENVIRONMENT_HOOK_LIBRARY_PATH', + '"%s"' % get_environment_hook_template_path('library_path.sh'))) + else: + variables.append(('ENVIRONMENT_HOOK_LIBRARY_PATH', '')) + + ext = '.bat.in' if IS_WINDOWS else '.sh.in' + variables.append(( + 'ENVIRONMENT_HOOK_PYTHONPATH', + '"%s"' % get_environment_hook_template_path('pythonpath' + ext))) + + templates = [] + for name in get_package_level_template_names(): + templates.append('"%s"' % get_package_level_template_path(name)) + variables.append(( + 'PACKAGE_LEVEL', + templates)) + + templates = [] + for name in get_prefix_level_template_names(): + templates.append('"%s"' % get_prefix_level_template_path(name)) + variables.append(( + 'PREFIX_LEVEL', + templates)) + + lines = [] + for (k, v) in variables: + if isinstance(v, list): + lines.append('set(ament_cmake_package_templates_%s "")' % k) + for vv in v: + lines.append('list(APPEND ament_cmake_package_templates_%s %s)' + % (k, vv)) + else: + lines.append('set(ament_cmake_package_templates_%s %s)' % (k, v)) + # Ensure backslashes are replaced with forward slashes because CMake cannot + # parse files with backslashes in it. + return [line.replace('\\', '/') for line in lines] + + +if __name__ == '__main__': + main() diff --git a/src/build/challenge/ament_cmake_environment_hooks/ament_prefix_path.dsv b/src/build/challenge/ament_cmake_environment_hooks/ament_prefix_path.dsv new file mode 100644 index 00000000..79d4c95b --- /dev/null +++ b/src/build/challenge/ament_cmake_environment_hooks/ament_prefix_path.dsv @@ -0,0 +1 @@ +prepend-non-duplicate;AMENT_PREFIX_PATH; diff --git a/src/build/challenge/ament_cmake_environment_hooks/local_setup.bash b/src/build/challenge/ament_cmake_environment_hooks/local_setup.bash new file mode 100644 index 00000000..49782f24 --- /dev/null +++ b/src/build/challenge/ament_cmake_environment_hooks/local_setup.bash @@ -0,0 +1,46 @@ +# generated from ament_package/template/package_level/local_setup.bash.in + +# source local_setup.sh from same directory as this file +_this_path=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" && pwd) +# provide AMENT_CURRENT_PREFIX to shell script +AMENT_CURRENT_PREFIX=$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." && pwd) +# store AMENT_CURRENT_PREFIX to restore it before each environment hook +_package_local_setup_AMENT_CURRENT_PREFIX=$AMENT_CURRENT_PREFIX + +# trace output +if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then + echo "# . \"$_this_path/local_setup.sh\"" +fi +. "$_this_path/local_setup.sh" +unset _this_path + +# unset AMENT_ENVIRONMENT_HOOKS +# if not appending to them for return +if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then + unset AMENT_ENVIRONMENT_HOOKS +fi + +# restore AMENT_CURRENT_PREFIX before evaluating the environment hooks +AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX +# list all environment hooks of this package + +# source all shell-specific environment hooks of this package +# if not returning them +if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then + _package_local_setup_IFS=$IFS + IFS=":" + for _hook in $AMENT_ENVIRONMENT_HOOKS; do + # restore AMENT_CURRENT_PREFIX for each environment hook + AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX + # restore IFS before sourcing other files + IFS=$_package_local_setup_IFS + . "$_hook" + done + unset _hook + IFS=$_package_local_setup_IFS + unset _package_local_setup_IFS + unset AMENT_ENVIRONMENT_HOOKS +fi + +unset _package_local_setup_AMENT_CURRENT_PREFIX +unset AMENT_CURRENT_PREFIX diff --git a/src/build/challenge/ament_cmake_environment_hooks/local_setup.dsv b/src/build/challenge/ament_cmake_environment_hooks/local_setup.dsv new file mode 100644 index 00000000..6e4495d3 --- /dev/null +++ b/src/build/challenge/ament_cmake_environment_hooks/local_setup.dsv @@ -0,0 +1,2 @@ +source;share/challenge/environment/ament_prefix_path.sh +source;share/challenge/environment/path.sh diff --git a/src/build/challenge/ament_cmake_environment_hooks/local_setup.sh b/src/build/challenge/ament_cmake_environment_hooks/local_setup.sh new file mode 100644 index 00000000..75f6e3df --- /dev/null +++ b/src/build/challenge/ament_cmake_environment_hooks/local_setup.sh @@ -0,0 +1,184 @@ +# generated from ament_package/template/package_level/local_setup.sh.in + +# since this file is sourced use either the provided AMENT_CURRENT_PREFIX +# or fall back to the destination set at configure time +: ${AMENT_CURRENT_PREFIX:="/home/danialramzan/PycharmProjects/new/software-start-here/src/install/challenge"} +if [ ! -d "$AMENT_CURRENT_PREFIX" ]; then + if [ -z "$COLCON_CURRENT_PREFIX" ]; then + echo "The compile time prefix path '$AMENT_CURRENT_PREFIX' doesn't " \ + "exist. Consider sourcing a different extension than '.sh'." 1>&2 + else + AMENT_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" + fi +fi + +# function to append values to environment variables +# using colons as separators and avoiding leading separators +ament_append_value() { + # arguments + _listname="$1" + _value="$2" + #echo "listname $_listname" + #eval echo "list value \$$_listname" + #echo "value $_value" + + # avoid leading separator + eval _values=\"\$$_listname\" + if [ -z "$_values" ]; then + eval export $_listname=\"$_value\" + #eval echo "set list \$$_listname" + else + # field separator must not be a colon + _ament_append_value_IFS=$IFS + unset IFS + eval export $_listname=\"\$$_listname:$_value\" + #eval echo "append list \$$_listname" + IFS=$_ament_append_value_IFS + unset _ament_append_value_IFS + fi + unset _values + + unset _value + unset _listname +} + +# function to append non-duplicate values to environment variables +# using colons as separators and avoiding leading separators +ament_append_unique_value() { + # arguments + _listname=$1 + _value=$2 + #echo "listname $_listname" + #eval echo "list value \$$_listname" + #echo "value $_value" + + # check if the list contains the value + eval _values=\$$_listname + _duplicate= + _ament_append_unique_value_IFS=$IFS + IFS=":" + if [ "$AMENT_SHELL" = "zsh" ]; then + ament_zsh_to_array _values + fi + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + if [ $_item = $_value ]; then + _duplicate=1 + fi + done + unset _item + + # append only non-duplicates + if [ -z "$_duplicate" ]; then + # avoid leading separator + if [ -z "$_values" ]; then + eval $_listname=\"$_value\" + #eval echo "set list \$$_listname" + else + # field separator must not be a colon + unset IFS + eval $_listname=\"\$$_listname:$_value\" + #eval echo "append list \$$_listname" + fi + fi + IFS=$_ament_append_unique_value_IFS + unset _ament_append_unique_value_IFS + unset _duplicate + unset _values + + unset _value + unset _listname +} + +# function to prepend non-duplicate values to environment variables +# using colons as separators and avoiding trailing separators +ament_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + #echo "listname $_listname" + #eval echo "list value \$$_listname" + #echo "value $_value" + + # check if the list contains the value + eval _values=\"\$$_listname\" + _duplicate= + _ament_prepend_unique_value_IFS=$IFS + IFS=":" + if [ "$AMENT_SHELL" = "zsh" ]; then + ament_zsh_to_array _values + fi + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + if [ "$_item" = "$_value" ]; then + _duplicate=1 + fi + done + unset _item + + # prepend only non-duplicates + if [ -z "$_duplicate" ]; then + # avoid trailing separator + if [ -z "$_values" ]; then + eval export $_listname=\"$_value\" + #eval echo "set list \$$_listname" + else + # field separator must not be a colon + unset IFS + eval export $_listname=\"$_value:\$$_listname\" + #eval echo "prepend list \$$_listname" + fi + fi + IFS=$_ament_prepend_unique_value_IFS + unset _ament_prepend_unique_value_IFS + unset _duplicate + unset _values + + unset _value + unset _listname +} + +# unset AMENT_ENVIRONMENT_HOOKS +# if not appending to them for return +if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then + unset AMENT_ENVIRONMENT_HOOKS +fi + +# list all environment hooks of this package +ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/challenge/environment/ament_prefix_path.sh" +ament_append_value AMENT_ENVIRONMENT_HOOKS "$AMENT_CURRENT_PREFIX/share/challenge/environment/path.sh" + +# source all shell-specific environment hooks of this package +# if not returning them +if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then + _package_local_setup_IFS=$IFS + IFS=":" + if [ "$AMENT_SHELL" = "zsh" ]; then + ament_zsh_to_array AMENT_ENVIRONMENT_HOOKS + fi + for _hook in $AMENT_ENVIRONMENT_HOOKS; do + if [ -f "$_hook" ]; then + # restore IFS before sourcing other files + IFS=$_package_local_setup_IFS + # trace output + if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then + echo "# . \"$_hook\"" + fi + . "$_hook" + fi + done + unset _hook + IFS=$_package_local_setup_IFS + unset _package_local_setup_IFS + unset AMENT_ENVIRONMENT_HOOKS +fi + +# reset AMENT_CURRENT_PREFIX after each package +# allowing to source multiple package-level setup files +unset AMENT_CURRENT_PREFIX diff --git a/src/build/challenge/ament_cmake_environment_hooks/local_setup.zsh b/src/build/challenge/ament_cmake_environment_hooks/local_setup.zsh new file mode 100644 index 00000000..fe161be5 --- /dev/null +++ b/src/build/challenge/ament_cmake_environment_hooks/local_setup.zsh @@ -0,0 +1,59 @@ +# generated from ament_package/template/package_level/local_setup.zsh.in + +AMENT_SHELL=zsh + +# source local_setup.sh from same directory as this file +_this_path=$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd) +# provide AMENT_CURRENT_PREFIX to shell script +AMENT_CURRENT_PREFIX=$(builtin cd -q "`dirname "${(%):-%N}"`/../.." > /dev/null && pwd) +# store AMENT_CURRENT_PREFIX to restore it before each environment hook +_package_local_setup_AMENT_CURRENT_PREFIX=$AMENT_CURRENT_PREFIX + +# function to convert array-like strings into arrays +# to wordaround SH_WORD_SPLIT not being set +ament_zsh_to_array() { + local _listname=$1 + local _dollar="$" + local _split="{=" + local _to_array="(\"$_dollar$_split$_listname}\")" + eval $_listname=$_to_array +} + +# trace output +if [ -n "$AMENT_TRACE_SETUP_FILES" ]; then + echo "# . \"$_this_path/local_setup.sh\"" +fi +# the package-level local_setup file unsets AMENT_CURRENT_PREFIX +. "$_this_path/local_setup.sh" +unset _this_path + +# unset AMENT_ENVIRONMENT_HOOKS +# if not appending to them for return +if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then + unset AMENT_ENVIRONMENT_HOOKS +fi + +# restore AMENT_CURRENT_PREFIX before evaluating the environment hooks +AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX +# list all environment hooks of this package + +# source all shell-specific environment hooks of this package +# if not returning them +if [ -z "$AMENT_RETURN_ENVIRONMENT_HOOKS" ]; then + _package_local_setup_IFS=$IFS + IFS=":" + for _hook in $AMENT_ENVIRONMENT_HOOKS; do + # restore AMENT_CURRENT_PREFIX for each environment hook + AMENT_CURRENT_PREFIX=$_package_local_setup_AMENT_CURRENT_PREFIX + # restore IFS before sourcing other files + IFS=$_package_local_setup_IFS + . "$_hook" + done + unset _hook + IFS=$_package_local_setup_IFS + unset _package_local_setup_IFS + unset AMENT_ENVIRONMENT_HOOKS +fi + +unset _package_local_setup_AMENT_CURRENT_PREFIX +unset AMENT_CURRENT_PREFIX diff --git a/src/build/challenge/ament_cmake_environment_hooks/package.dsv b/src/build/challenge/ament_cmake_environment_hooks/package.dsv new file mode 100644 index 00000000..0acf9f8a --- /dev/null +++ b/src/build/challenge/ament_cmake_environment_hooks/package.dsv @@ -0,0 +1,4 @@ +source;share/challenge/local_setup.bash +source;share/challenge/local_setup.dsv +source;share/challenge/local_setup.sh +source;share/challenge/local_setup.zsh diff --git a/src/build/challenge/ament_cmake_environment_hooks/path.dsv b/src/build/challenge/ament_cmake_environment_hooks/path.dsv new file mode 100644 index 00000000..b94426af --- /dev/null +++ b/src/build/challenge/ament_cmake_environment_hooks/path.dsv @@ -0,0 +1 @@ +prepend-non-duplicate-if-exists;PATH;bin diff --git a/src/build/challenge/ament_cmake_index/share/ament_index/resource_index/package_run_dependencies/challenge b/src/build/challenge/ament_cmake_index/share/ament_index/resource_index/package_run_dependencies/challenge new file mode 100644 index 00000000..31627e69 --- /dev/null +++ b/src/build/challenge/ament_cmake_index/share/ament_index/resource_index/package_run_dependencies/challenge @@ -0,0 +1 @@ +rclcpp;ament_lint_auto;ament_lint_common \ No newline at end of file diff --git a/src/build/challenge/ament_cmake_index/share/ament_index/resource_index/packages/challenge b/src/build/challenge/ament_cmake_index/share/ament_index/resource_index/packages/challenge new file mode 100644 index 00000000..e69de29b diff --git a/src/build/challenge/ament_cmake_index/share/ament_index/resource_index/parent_prefix_path/challenge b/src/build/challenge/ament_cmake_index/share/ament_index/resource_index/parent_prefix_path/challenge new file mode 100644 index 00000000..6350bc15 --- /dev/null +++ b/src/build/challenge/ament_cmake_index/share/ament_index/resource_index/parent_prefix_path/challenge @@ -0,0 +1 @@ +/opt/ros/humble \ No newline at end of file diff --git a/src/build/challenge/ament_cmake_package_templates/templates.cmake b/src/build/challenge/ament_cmake_package_templates/templates.cmake new file mode 100644 index 00000000..42a5a033 --- /dev/null +++ b/src/build/challenge/ament_cmake_package_templates/templates.cmake @@ -0,0 +1,14 @@ +set(ament_cmake_package_templates_ENVIRONMENT_HOOK_LIBRARY_PATH "/opt/ros/humble/lib/python3.10/site-packages/ament_package/template/environment_hook/library_path.sh") +set(ament_cmake_package_templates_ENVIRONMENT_HOOK_PYTHONPATH "/opt/ros/humble/lib/python3.10/site-packages/ament_package/template/environment_hook/pythonpath.sh.in") +set(ament_cmake_package_templates_PACKAGE_LEVEL "") +list(APPEND ament_cmake_package_templates_PACKAGE_LEVEL "/opt/ros/humble/lib/python3.10/site-packages/ament_package/template/package_level/local_setup.bash.in") +list(APPEND ament_cmake_package_templates_PACKAGE_LEVEL "/opt/ros/humble/lib/python3.10/site-packages/ament_package/template/package_level/local_setup.sh.in") +list(APPEND ament_cmake_package_templates_PACKAGE_LEVEL "/opt/ros/humble/lib/python3.10/site-packages/ament_package/template/package_level/local_setup.zsh.in") +set(ament_cmake_package_templates_PREFIX_LEVEL "") +list(APPEND ament_cmake_package_templates_PREFIX_LEVEL "/opt/ros/humble/lib/python3.10/site-packages/ament_package/template/prefix_level/local_setup.bash") +list(APPEND ament_cmake_package_templates_PREFIX_LEVEL "/opt/ros/humble/lib/python3.10/site-packages/ament_package/template/prefix_level/local_setup.sh.in") +list(APPEND ament_cmake_package_templates_PREFIX_LEVEL "/opt/ros/humble/lib/python3.10/site-packages/ament_package/template/prefix_level/local_setup.zsh") +list(APPEND ament_cmake_package_templates_PREFIX_LEVEL "/opt/ros/humble/lib/python3.10/site-packages/ament_package/template/prefix_level/setup.bash") +list(APPEND ament_cmake_package_templates_PREFIX_LEVEL "/opt/ros/humble/lib/python3.10/site-packages/ament_package/template/prefix_level/setup.sh.in") +list(APPEND ament_cmake_package_templates_PREFIX_LEVEL "/opt/ros/humble/lib/python3.10/site-packages/ament_package/template/prefix_level/setup.zsh") +list(APPEND ament_cmake_package_templates_PREFIX_LEVEL "/opt/ros/humble/lib/python3.10/site-packages/ament_package/template/prefix_level/_local_setup_util.py") diff --git a/src/build/challenge/ament_cmake_uninstall_target/ament_cmake_uninstall_target.cmake b/src/build/challenge/ament_cmake_uninstall_target/ament_cmake_uninstall_target.cmake new file mode 100644 index 00000000..e2705167 --- /dev/null +++ b/src/build/challenge/ament_cmake_uninstall_target/ament_cmake_uninstall_target.cmake @@ -0,0 +1,57 @@ +# generated from +# ament_cmake_core/cmake/uninstall_target/ament_cmake_uninstall_target.cmake.in + +function(ament_cmake_uninstall_target_remove_empty_directories path) + set(install_space "/home/danialramzan/PycharmProjects/new/software-start-here/src/install/challenge") + if(install_space STREQUAL "") + message(FATAL_ERROR "The CMAKE_INSTALL_PREFIX variable must not be empty") + endif() + + string(LENGTH "${install_space}" length) + string(SUBSTRING "${path}" 0 ${length} path_prefix) + if(NOT path_prefix STREQUAL install_space) + message(FATAL_ERROR "The path '${path}' must be within the install space '${install_space}'") + endif() + if(path STREQUAL install_space) + return() + endif() + + # check if directory is empty + file(GLOB files "${path}/*") + list(LENGTH files length) + if(length EQUAL 0) + message(STATUS "Uninstalling: ${path}/") + execute_process(COMMAND "/usr/bin/cmake" "-E" "remove_directory" "${path}") + # recursively try to remove parent directories + get_filename_component(parent_path "${path}" PATH) + ament_cmake_uninstall_target_remove_empty_directories("${parent_path}") + endif() +endfunction() + +# uninstall files installed using the standard install() function +set(install_manifest "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/install_manifest.txt") +if(NOT EXISTS "${install_manifest}") + message(FATAL_ERROR "Cannot find install manifest: ${install_manifest}") +endif() + +file(READ "${install_manifest}" installed_files) +string(REGEX REPLACE "\n" ";" installed_files "${installed_files}") +foreach(installed_file ${installed_files}) + if(EXISTS "${installed_file}" OR IS_SYMLINK "${installed_file}") + message(STATUS "Uninstalling: ${installed_file}") + file(REMOVE "${installed_file}") + if(EXISTS "${installed_file}" OR IS_SYMLINK "${installed_file}") + message(FATAL_ERROR "Failed to remove '${installed_file}'") + endif() + + # remove empty parent folders + get_filename_component(parent_path "${installed_file}" PATH) + ament_cmake_uninstall_target_remove_empty_directories("${parent_path}") + endif() +endforeach() + +# end of template + +message(STATUS "Execute custom uninstall script") + +# begin of custom uninstall code diff --git a/src/build/challenge/cmake_args.last b/src/build/challenge/cmake_args.last new file mode 100644 index 00000000..807bfb7c --- /dev/null +++ b/src/build/challenge/cmake_args.last @@ -0,0 +1 @@ +['-DCMAKE_VERBOSE_MAKEFILE=ON'] \ No newline at end of file diff --git a/src/build/challenge/cmake_install.cmake b/src/build/challenge/cmake_install.cmake new file mode 100644 index 00000000..8da386f5 --- /dev/null +++ b/src/build/challenge/cmake_install.cmake @@ -0,0 +1,129 @@ +# Install script for directory: /home/danialramzan/PycharmProjects/new/software-start-here/src/challenge + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/home/danialramzan/PycharmProjects/new/software-start-here/src/install/challenge") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/usr/bin/objdump") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/challenge/solution" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/challenge/solution") + file(RPATH_CHECK + FILE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/challenge/solution" + RPATH "") + endif() + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/challenge" TYPE EXECUTABLE FILES "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/solution") + if(EXISTS "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/challenge/solution" AND + NOT IS_SYMLINK "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/challenge/solution") + if(CMAKE_INSTALL_DO_STRIP) + execute_process(COMMAND "/usr/bin/strip" "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/challenge/solution") + endif() + endif() +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/share/ament_index/resource_index/package_run_dependencies" TYPE FILE FILES "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/ament_cmake_index/share/ament_index/resource_index/package_run_dependencies/challenge") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/share/ament_index/resource_index/parent_prefix_path" TYPE FILE FILES "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/ament_cmake_index/share/ament_index/resource_index/parent_prefix_path/challenge") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/share/challenge/environment" TYPE FILE FILES "/opt/ros/humble/share/ament_cmake_core/cmake/environment_hooks/environment/ament_prefix_path.sh") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/share/challenge/environment" TYPE FILE FILES "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/ament_cmake_environment_hooks/ament_prefix_path.dsv") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/share/challenge/environment" TYPE FILE FILES "/opt/ros/humble/share/ament_cmake_core/cmake/environment_hooks/environment/path.sh") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/share/challenge/environment" TYPE FILE FILES "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/ament_cmake_environment_hooks/path.dsv") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/share/challenge" TYPE FILE FILES "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/ament_cmake_environment_hooks/local_setup.bash") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/share/challenge" TYPE FILE FILES "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/ament_cmake_environment_hooks/local_setup.sh") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/share/challenge" TYPE FILE FILES "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/ament_cmake_environment_hooks/local_setup.zsh") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/share/challenge" TYPE FILE FILES "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/ament_cmake_environment_hooks/local_setup.dsv") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/share/challenge" TYPE FILE FILES "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/ament_cmake_environment_hooks/package.dsv") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/share/ament_index/resource_index/packages" TYPE FILE FILES "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/ament_cmake_index/share/ament_index/resource_index/packages/challenge") +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/share/challenge/cmake" TYPE FILE FILES + "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/ament_cmake_core/challengeConfig.cmake" + "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/ament_cmake_core/challengeConfig-version.cmake" + ) +endif() + +if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT) + file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/share/challenge" TYPE FILE FILES "/home/danialramzan/PycharmProjects/new/software-start-here/src/challenge/package.xml") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/src/build/challenge/colcon_build.rc b/src/build/challenge/colcon_build.rc new file mode 100644 index 00000000..0cfbf088 --- /dev/null +++ b/src/build/challenge/colcon_build.rc @@ -0,0 +1 @@ +2 diff --git a/src/build/challenge/colcon_command_prefix_build.sh b/src/build/challenge/colcon_command_prefix_build.sh new file mode 100644 index 00000000..f9867d51 --- /dev/null +++ b/src/build/challenge/colcon_command_prefix_build.sh @@ -0,0 +1 @@ +# generated from colcon_core/shell/template/command_prefix.sh.em diff --git a/src/build/challenge/colcon_command_prefix_build.sh.env b/src/build/challenge/colcon_command_prefix_build.sh.env new file mode 100644 index 00000000..0ef34a35 --- /dev/null +++ b/src/build/challenge/colcon_command_prefix_build.sh.env @@ -0,0 +1,77 @@ +AMENT_PREFIX_PATH=/opt/ros/humble +CMAKE_PREFIX_PATH=/opt/ros/humble +COLCON=1 +DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus +DESKTOP_SESSION=ubuntu +DESKTOP_STARTUP_ID=gnome-shell/CLion 2023.3.2/2021-12-danialramzan-Zenbook-UP6502ZA-Linux_TIME53880312 +DISPLAY=:0 +GAZEBO_MASTER_URI=http://localhost:11345 +GAZEBO_MODEL_DATABASE_URI=http://models.gazebosim.org +GAZEBO_MODEL_PATH=/usr/share/gazebo-11/models: +GAZEBO_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/gazebo-11/plugins: +GAZEBO_RESOURCE_PATH=/usr/share/gazebo-11: +GDMSESSION=ubuntu +GEM_HOME=/home/danialramzan/gems +GIO_LAUNCHED_DESKTOP_FILE=/home/danialramzan/.local/share/applications/jetbrains-clion-837a2d1f-4882-46ef-be0c-ce0faef65a9c.desktop +GIO_LAUNCHED_DESKTOP_FILE_PID=177838 +GJS_DEBUG_OUTPUT=stderr +GJS_DEBUG_TOPICS=JS ERROR;JS LOG +GNOME_DESKTOP_SESSION_ID=this-is-deprecated +GNOME_SETUP_DISPLAY=:1 +GNOME_SHELL_SESSION_MODE=ubuntu +GTK_MODULES=gail:atk-bridge +HOME=/home/danialramzan +HOMEBREW_CELLAR=/home/linuxbrew/.linuxbrew/Cellar +HOMEBREW_PREFIX=/home/linuxbrew/.linuxbrew +HOMEBREW_REPOSITORY=/home/linuxbrew/.linuxbrew/Homebrew +IM_CONFIG_PHASE=1 +INFOPATH=/home/linuxbrew/.linuxbrew/share/info: +INVOCATION_ID=97d7a16dcb8b42518088ac66808149b1 +JOURNAL_STREAM=8:45212 +LANG=en_CA.UTF-8 +LANGUAGE=en_CA:en +LD_LIBRARY_PATH=/opt/ros/humble/opt/rviz_ogre_vendor/lib:/opt/ros/humble/lib/x86_64-linux-gnu:/opt/ros/humble/opt/libphidget22/lib:/opt/ros/humble/lib::/usr/lib/x86_64-linux-gnu/gazebo-11/plugins: +LESSCLOSE=/usr/bin/lesspipe %s %s +LESSOPEN=| /usr/bin/lesspipe %s +LOGNAME=danialramzan +LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36: +MANAGERPID=1874 +MANPATH=/home/linuxbrew/.linuxbrew/share/man: +NVM_BIN=/home/danialramzan/.nvm/versions/node/v20.9.0/bin +NVM_CD_FLAGS= +NVM_DIR=/home/danialramzan/.nvm +NVM_INC=/home/danialramzan/.nvm/versions/node/v20.9.0/include/node +OGRE_RESOURCE_PATH=/usr/lib/x86_64-linux-gnu/OGRE-1.9.0 +OLDPWD=/home/danialramzan/PycharmProjects/new/software-start-here +PATH=/opt/ros/humble/bin:/home/danialramzan/gems/bin:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/home/danialramzan/.nvm/versions/node/v20.9.0/bin:/home/danialramzan/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/home/danialramzan/.local/share/JetBrains/Toolbox/scripts +PWD=/home/danialramzan/PycharmProjects/new/software-start-here/src/build/challenge +PYTHONPATH=/opt/ros/humble/lib/python3.10/site-packages:/opt/ros/humble/local/lib/python3.10/dist-packages +QT_ACCESSIBILITY=1 +QT_IM_MODULE=ibus +ROS_DISTRO=humble +ROS_LOCALHOST_ONLY=0 +ROS_PYTHON_VERSION=3 +ROS_VERSION=2 +SESSION_MANAGER=local/danialramzan-Zenbook-UP6502ZA-Linux:@/tmp/.ICE-unix/1982,unix/danialramzan-Zenbook-UP6502ZA-Linux:/tmp/.ICE-unix/1982 +SHELL=/bin/bash +SHLVL=1 +SSH_AGENT_LAUNCHER=gnome-keyring +SSH_AUTH_SOCK=/run/user/1000/keyring/ssh +SYSTEMD_EXEC_PID=2021 +TERM=xterm-256color +TERMINAL_EMULATOR=JetBrains-JediTerm +TERM_SESSION_ID=85e59cca-a37f-4cce-be61-b6b1b4e5fa20 +USER=danialramzan +USERNAME=danialramzan +WAYLAND_DISPLAY=wayland-0 +XAUTHORITY=/run/user/1000/.mutter-Xwaylandauth.GQSOS2 +XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg +XDG_CURRENT_DESKTOP=ubuntu:GNOME +XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop +XDG_MENU_PREFIX=gnome- +XDG_RUNTIME_DIR=/run/user/1000 +XDG_SESSION_CLASS=user +XDG_SESSION_DESKTOP=ubuntu +XDG_SESSION_TYPE=wayland +XMODIFIERS=@im=ibus +_=/usr/bin/colcon diff --git a/src/challenge/CMakeLists.txt b/src/challenge/CMakeLists.txt new file mode 100644 index 00000000..844a7399 --- /dev/null +++ b/src/challenge/CMakeLists.txt @@ -0,0 +1,25 @@ +cmake_minimum_required(VERSION 3.8) +project(challenge) + +# Set C++ standard to C++14 +if(NOT CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 14) +endif() + +if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic) +endif() + +# find dependencies +find_package(ament_cmake REQUIRED) +find_package(rclcpp REQUIRED) + +add_executable(solution src/solution.cpp) +ament_target_dependencies(solution rclcpp) + +install(TARGETS + solution + DESTINATION lib/${PROJECT_NAME} +) + +ament_package() diff --git a/src/challenge/package.xml b/src/challenge/package.xml new file mode 100644 index 00000000..a823e8af --- /dev/null +++ b/src/challenge/package.xml @@ -0,0 +1,19 @@ + + + + challenge + 0.0.0 + subbots software team challenge + danialramzan + Apache License 2.0 + + ament_cmake + rclcpp + + ament_lint_auto + ament_lint_common + + + ament_cmake + + diff --git a/src/challenge/src/solution.cpp b/src/challenge/src/solution.cpp new file mode 100644 index 00000000..36c8c8b6 --- /dev/null +++ b/src/challenge/src/solution.cpp @@ -0,0 +1,19 @@ +#include "rclcpp/rclcpp.hpp" + +class MyNode : public rclcpp::Node +{ +public: + MyNode() : Node("solution") { + RCLCPP_INFO(get_logger(), "Node started!"); + } +private: +}; + +int main(int argc, char **argv) +{ + rclcpp::init(argc, argv); + auto node = std::make_shared(); + rclcpp::spin(node); + rclcpp::shutdown(); + return 0; +} diff --git a/src/install/.colcon_install_layout b/src/install/.colcon_install_layout new file mode 100644 index 00000000..3aad5336 --- /dev/null +++ b/src/install/.colcon_install_layout @@ -0,0 +1 @@ +isolated diff --git a/src/install/COLCON_IGNORE b/src/install/COLCON_IGNORE new file mode 100644 index 00000000..e69de29b diff --git a/src/install/_local_setup_util_ps1.py b/src/install/_local_setup_util_ps1.py new file mode 100644 index 00000000..3c6d9e87 --- /dev/null +++ b/src/install/_local_setup_util_ps1.py @@ -0,0 +1,407 @@ +# Copyright 2016-2019 Dirk Thomas +# Licensed under the Apache License, Version 2.0 + +import argparse +from collections import OrderedDict +import os +from pathlib import Path +import sys + + +FORMAT_STR_COMMENT_LINE = '# {comment}' +FORMAT_STR_SET_ENV_VAR = 'Set-Item -Path "Env:{name}" -Value "{value}"' +FORMAT_STR_USE_ENV_VAR = '$env:{name}' +FORMAT_STR_INVOKE_SCRIPT = '_colcon_prefix_powershell_source_script "{script_path}"' # noqa: E501 +FORMAT_STR_REMOVE_LEADING_SEPARATOR = '' # noqa: E501 +FORMAT_STR_REMOVE_TRAILING_SEPARATOR = '' # noqa: E501 + +DSV_TYPE_APPEND_NON_DUPLICATE = 'append-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE = 'prepend-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS = 'prepend-non-duplicate-if-exists' +DSV_TYPE_SET = 'set' +DSV_TYPE_SET_IF_UNSET = 'set-if-unset' +DSV_TYPE_SOURCE = 'source' + + +def main(argv=sys.argv[1:]): # noqa: D103 + parser = argparse.ArgumentParser( + description='Output shell commands for the packages in topological ' + 'order') + parser.add_argument( + 'primary_extension', + help='The file extension of the primary shell') + parser.add_argument( + 'additional_extension', nargs='?', + help='The additional file extension to be considered') + parser.add_argument( + '--merged-install', action='store_true', + help='All install prefixes are merged into a single location') + args = parser.parse_args(argv) + + packages = get_packages(Path(__file__).parent, args.merged_install) + + ordered_packages = order_packages(packages) + for pkg_name in ordered_packages: + if _include_comments(): + print( + FORMAT_STR_COMMENT_LINE.format_map( + {'comment': 'Package: ' + pkg_name})) + prefix = os.path.abspath(os.path.dirname(__file__)) + if not args.merged_install: + prefix = os.path.join(prefix, pkg_name) + for line in get_commands( + pkg_name, prefix, args.primary_extension, + args.additional_extension + ): + print(line) + + for line in _remove_ending_separators(): + print(line) + + +def get_packages(prefix_path, merged_install): + """ + Find packages based on colcon-specific files created during installation. + + :param Path prefix_path: The install prefix path of all packages + :param bool merged_install: The flag if the packages are all installed + directly in the prefix or if each package is installed in a subdirectory + named after the package + :returns: A mapping from the package name to the set of runtime + dependencies + :rtype: dict + """ + packages = {} + # since importing colcon_core isn't feasible here the following constant + # must match colcon_core.location.get_relative_package_index_path() + subdirectory = 'share/colcon-core/packages' + if merged_install: + # return if workspace is empty + if not (prefix_path / subdirectory).is_dir(): + return packages + # find all files in the subdirectory + for p in (prefix_path / subdirectory).iterdir(): + if not p.is_file(): + continue + if p.name.startswith('.'): + continue + add_package_runtime_dependencies(p, packages) + else: + # for each subdirectory look for the package specific file + for p in prefix_path.iterdir(): + if not p.is_dir(): + continue + if p.name.startswith('.'): + continue + p = p / subdirectory / p.name + if p.is_file(): + add_package_runtime_dependencies(p, packages) + + # remove unknown dependencies + pkg_names = set(packages.keys()) + for k in packages.keys(): + packages[k] = {d for d in packages[k] if d in pkg_names} + + return packages + + +def add_package_runtime_dependencies(path, packages): + """ + Check the path and if it exists extract the packages runtime dependencies. + + :param Path path: The resource file containing the runtime dependencies + :param dict packages: A mapping from package names to the sets of runtime + dependencies to add to + """ + content = path.read_text() + dependencies = set(content.split(os.pathsep) if content else []) + packages[path.name] = dependencies + + +def order_packages(packages): + """ + Order packages topologically. + + :param dict packages: A mapping from package name to the set of runtime + dependencies + :returns: The package names + :rtype: list + """ + # select packages with no dependencies in alphabetical order + to_be_ordered = list(packages.keys()) + ordered = [] + while to_be_ordered: + pkg_names_without_deps = [ + name for name in to_be_ordered if not packages[name]] + if not pkg_names_without_deps: + reduce_cycle_set(packages) + raise RuntimeError( + 'Circular dependency between: ' + ', '.join(sorted(packages))) + pkg_names_without_deps.sort() + pkg_name = pkg_names_without_deps[0] + to_be_ordered.remove(pkg_name) + ordered.append(pkg_name) + # remove item from dependency lists + for k in list(packages.keys()): + if pkg_name in packages[k]: + packages[k].remove(pkg_name) + return ordered + + +def reduce_cycle_set(packages): + """ + Reduce the set of packages to the ones part of the circular dependency. + + :param dict packages: A mapping from package name to the set of runtime + dependencies which is modified in place + """ + last_depended = None + while len(packages) > 0: + # get all remaining dependencies + depended = set() + for pkg_name, dependencies in packages.items(): + depended = depended.union(dependencies) + # remove all packages which are not dependent on + for name in list(packages.keys()): + if name not in depended: + del packages[name] + if last_depended: + # if remaining packages haven't changed return them + if last_depended == depended: + return packages.keys() + # otherwise reduce again + last_depended = depended + + +def _include_comments(): + # skipping comment lines when COLCON_TRACE is not set speeds up the + # processing especially on Windows + return bool(os.environ.get('COLCON_TRACE')) + + +def get_commands(pkg_name, prefix, primary_extension, additional_extension): + commands = [] + package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv') + if os.path.exists(package_dsv_path): + commands += process_dsv_file( + package_dsv_path, prefix, primary_extension, additional_extension) + return commands + + +def process_dsv_file( + dsv_path, prefix, primary_extension=None, additional_extension=None +): + commands = [] + if _include_comments(): + commands.append(FORMAT_STR_COMMENT_LINE.format_map({'comment': dsv_path})) + with open(dsv_path, 'r') as h: + content = h.read() + lines = content.splitlines() + + basenames = OrderedDict() + for i, line in enumerate(lines): + # skip over empty or whitespace-only lines + if not line.strip(): + continue + # skip over comments + if line.startswith('#'): + continue + try: + type_, remainder = line.split(';', 1) + except ValueError: + raise RuntimeError( + "Line %d in '%s' doesn't contain a semicolon separating the " + 'type from the arguments' % (i + 1, dsv_path)) + if type_ != DSV_TYPE_SOURCE: + # handle non-source lines + try: + commands += handle_dsv_types_except_source( + type_, remainder, prefix) + except RuntimeError as e: + raise RuntimeError( + "Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e + else: + # group remaining source lines by basename + path_without_ext, ext = os.path.splitext(remainder) + if path_without_ext not in basenames: + basenames[path_without_ext] = set() + assert ext.startswith('.') + ext = ext[1:] + if ext in (primary_extension, additional_extension): + basenames[path_without_ext].add(ext) + + # add the dsv extension to each basename if the file exists + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if os.path.exists(basename + '.dsv'): + extensions.add('dsv') + + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if 'dsv' in extensions: + # process dsv files recursively + commands += process_dsv_file( + basename + '.dsv', prefix, primary_extension=primary_extension, + additional_extension=additional_extension) + elif primary_extension in extensions and len(extensions) == 1: + # source primary-only files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + primary_extension})] + elif additional_extension in extensions: + # source non-primary files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + additional_extension})] + + return commands + + +def handle_dsv_types_except_source(type_, remainder, prefix): + commands = [] + if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET): + try: + env_name, value = remainder.split(';', 1) + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the value') + try_prefixed_value = os.path.join(prefix, value) if value else prefix + if os.path.exists(try_prefixed_value): + value = try_prefixed_value + if type_ == DSV_TYPE_SET: + commands += _set(env_name, value) + elif type_ == DSV_TYPE_SET_IF_UNSET: + commands += _set_if_unset(env_name, value) + else: + assert False + elif type_ in ( + DSV_TYPE_APPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS + ): + try: + env_name_and_values = remainder.split(';') + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the values') + env_name = env_name_and_values[0] + values = env_name_and_values[1:] + for value in values: + if not value: + value = prefix + elif not os.path.isabs(value): + value = os.path.join(prefix, value) + if ( + type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and + not os.path.exists(value) + ): + comment = f'skip extending {env_name} with not existing ' \ + f'path: {value}' + if _include_comments(): + commands.append( + FORMAT_STR_COMMENT_LINE.format_map({'comment': comment})) + elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE: + commands += _append_unique_value(env_name, value) + else: + commands += _prepend_unique_value(env_name, value) + else: + raise RuntimeError( + 'contains an unknown environment hook type: ' + type_) + return commands + + +env_state = {} + + +def _append_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # append even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional leading separator + extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': extend + value}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +def _prepend_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # prepend even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional trailing separator + extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value + extend}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +# generate commands for removing prepended underscores +def _remove_ending_separators(): + # do nothing if the shell extension does not implement the logic + if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None: + return [] + + global env_state + commands = [] + for name in env_state: + # skip variables that already had values before this script started prepending + if name in os.environ: + continue + commands += [ + FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}), + FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})] + return commands + + +def _set(name, value): + global env_state + env_state[name] = value + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + return [line] + + +def _set_if_unset(name, value): + global env_state + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + if env_state.get(name, os.environ.get(name)): + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +if __name__ == '__main__': # pragma: no cover + try: + rc = main() + except RuntimeError as e: + print(str(e), file=sys.stderr) + rc = 1 + sys.exit(rc) diff --git a/src/install/_local_setup_util_sh.py b/src/install/_local_setup_util_sh.py new file mode 100644 index 00000000..f67eaa98 --- /dev/null +++ b/src/install/_local_setup_util_sh.py @@ -0,0 +1,407 @@ +# Copyright 2016-2019 Dirk Thomas +# Licensed under the Apache License, Version 2.0 + +import argparse +from collections import OrderedDict +import os +from pathlib import Path +import sys + + +FORMAT_STR_COMMENT_LINE = '# {comment}' +FORMAT_STR_SET_ENV_VAR = 'export {name}="{value}"' +FORMAT_STR_USE_ENV_VAR = '${name}' +FORMAT_STR_INVOKE_SCRIPT = 'COLCON_CURRENT_PREFIX="{prefix}" _colcon_prefix_sh_source_script "{script_path}"' # noqa: E501 +FORMAT_STR_REMOVE_LEADING_SEPARATOR = 'if [ "$(echo -n ${name} | head -c 1)" = ":" ]; then export {name}=${{{name}#?}} ; fi' # noqa: E501 +FORMAT_STR_REMOVE_TRAILING_SEPARATOR = 'if [ "$(echo -n ${name} | tail -c 1)" = ":" ]; then export {name}=${{{name}%?}} ; fi' # noqa: E501 + +DSV_TYPE_APPEND_NON_DUPLICATE = 'append-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE = 'prepend-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS = 'prepend-non-duplicate-if-exists' +DSV_TYPE_SET = 'set' +DSV_TYPE_SET_IF_UNSET = 'set-if-unset' +DSV_TYPE_SOURCE = 'source' + + +def main(argv=sys.argv[1:]): # noqa: D103 + parser = argparse.ArgumentParser( + description='Output shell commands for the packages in topological ' + 'order') + parser.add_argument( + 'primary_extension', + help='The file extension of the primary shell') + parser.add_argument( + 'additional_extension', nargs='?', + help='The additional file extension to be considered') + parser.add_argument( + '--merged-install', action='store_true', + help='All install prefixes are merged into a single location') + args = parser.parse_args(argv) + + packages = get_packages(Path(__file__).parent, args.merged_install) + + ordered_packages = order_packages(packages) + for pkg_name in ordered_packages: + if _include_comments(): + print( + FORMAT_STR_COMMENT_LINE.format_map( + {'comment': 'Package: ' + pkg_name})) + prefix = os.path.abspath(os.path.dirname(__file__)) + if not args.merged_install: + prefix = os.path.join(prefix, pkg_name) + for line in get_commands( + pkg_name, prefix, args.primary_extension, + args.additional_extension + ): + print(line) + + for line in _remove_ending_separators(): + print(line) + + +def get_packages(prefix_path, merged_install): + """ + Find packages based on colcon-specific files created during installation. + + :param Path prefix_path: The install prefix path of all packages + :param bool merged_install: The flag if the packages are all installed + directly in the prefix or if each package is installed in a subdirectory + named after the package + :returns: A mapping from the package name to the set of runtime + dependencies + :rtype: dict + """ + packages = {} + # since importing colcon_core isn't feasible here the following constant + # must match colcon_core.location.get_relative_package_index_path() + subdirectory = 'share/colcon-core/packages' + if merged_install: + # return if workspace is empty + if not (prefix_path / subdirectory).is_dir(): + return packages + # find all files in the subdirectory + for p in (prefix_path / subdirectory).iterdir(): + if not p.is_file(): + continue + if p.name.startswith('.'): + continue + add_package_runtime_dependencies(p, packages) + else: + # for each subdirectory look for the package specific file + for p in prefix_path.iterdir(): + if not p.is_dir(): + continue + if p.name.startswith('.'): + continue + p = p / subdirectory / p.name + if p.is_file(): + add_package_runtime_dependencies(p, packages) + + # remove unknown dependencies + pkg_names = set(packages.keys()) + for k in packages.keys(): + packages[k] = {d for d in packages[k] if d in pkg_names} + + return packages + + +def add_package_runtime_dependencies(path, packages): + """ + Check the path and if it exists extract the packages runtime dependencies. + + :param Path path: The resource file containing the runtime dependencies + :param dict packages: A mapping from package names to the sets of runtime + dependencies to add to + """ + content = path.read_text() + dependencies = set(content.split(os.pathsep) if content else []) + packages[path.name] = dependencies + + +def order_packages(packages): + """ + Order packages topologically. + + :param dict packages: A mapping from package name to the set of runtime + dependencies + :returns: The package names + :rtype: list + """ + # select packages with no dependencies in alphabetical order + to_be_ordered = list(packages.keys()) + ordered = [] + while to_be_ordered: + pkg_names_without_deps = [ + name for name in to_be_ordered if not packages[name]] + if not pkg_names_without_deps: + reduce_cycle_set(packages) + raise RuntimeError( + 'Circular dependency between: ' + ', '.join(sorted(packages))) + pkg_names_without_deps.sort() + pkg_name = pkg_names_without_deps[0] + to_be_ordered.remove(pkg_name) + ordered.append(pkg_name) + # remove item from dependency lists + for k in list(packages.keys()): + if pkg_name in packages[k]: + packages[k].remove(pkg_name) + return ordered + + +def reduce_cycle_set(packages): + """ + Reduce the set of packages to the ones part of the circular dependency. + + :param dict packages: A mapping from package name to the set of runtime + dependencies which is modified in place + """ + last_depended = None + while len(packages) > 0: + # get all remaining dependencies + depended = set() + for pkg_name, dependencies in packages.items(): + depended = depended.union(dependencies) + # remove all packages which are not dependent on + for name in list(packages.keys()): + if name not in depended: + del packages[name] + if last_depended: + # if remaining packages haven't changed return them + if last_depended == depended: + return packages.keys() + # otherwise reduce again + last_depended = depended + + +def _include_comments(): + # skipping comment lines when COLCON_TRACE is not set speeds up the + # processing especially on Windows + return bool(os.environ.get('COLCON_TRACE')) + + +def get_commands(pkg_name, prefix, primary_extension, additional_extension): + commands = [] + package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv') + if os.path.exists(package_dsv_path): + commands += process_dsv_file( + package_dsv_path, prefix, primary_extension, additional_extension) + return commands + + +def process_dsv_file( + dsv_path, prefix, primary_extension=None, additional_extension=None +): + commands = [] + if _include_comments(): + commands.append(FORMAT_STR_COMMENT_LINE.format_map({'comment': dsv_path})) + with open(dsv_path, 'r') as h: + content = h.read() + lines = content.splitlines() + + basenames = OrderedDict() + for i, line in enumerate(lines): + # skip over empty or whitespace-only lines + if not line.strip(): + continue + # skip over comments + if line.startswith('#'): + continue + try: + type_, remainder = line.split(';', 1) + except ValueError: + raise RuntimeError( + "Line %d in '%s' doesn't contain a semicolon separating the " + 'type from the arguments' % (i + 1, dsv_path)) + if type_ != DSV_TYPE_SOURCE: + # handle non-source lines + try: + commands += handle_dsv_types_except_source( + type_, remainder, prefix) + except RuntimeError as e: + raise RuntimeError( + "Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e + else: + # group remaining source lines by basename + path_without_ext, ext = os.path.splitext(remainder) + if path_without_ext not in basenames: + basenames[path_without_ext] = set() + assert ext.startswith('.') + ext = ext[1:] + if ext in (primary_extension, additional_extension): + basenames[path_without_ext].add(ext) + + # add the dsv extension to each basename if the file exists + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if os.path.exists(basename + '.dsv'): + extensions.add('dsv') + + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if 'dsv' in extensions: + # process dsv files recursively + commands += process_dsv_file( + basename + '.dsv', prefix, primary_extension=primary_extension, + additional_extension=additional_extension) + elif primary_extension in extensions and len(extensions) == 1: + # source primary-only files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + primary_extension})] + elif additional_extension in extensions: + # source non-primary files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + additional_extension})] + + return commands + + +def handle_dsv_types_except_source(type_, remainder, prefix): + commands = [] + if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET): + try: + env_name, value = remainder.split(';', 1) + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the value') + try_prefixed_value = os.path.join(prefix, value) if value else prefix + if os.path.exists(try_prefixed_value): + value = try_prefixed_value + if type_ == DSV_TYPE_SET: + commands += _set(env_name, value) + elif type_ == DSV_TYPE_SET_IF_UNSET: + commands += _set_if_unset(env_name, value) + else: + assert False + elif type_ in ( + DSV_TYPE_APPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS + ): + try: + env_name_and_values = remainder.split(';') + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the values') + env_name = env_name_and_values[0] + values = env_name_and_values[1:] + for value in values: + if not value: + value = prefix + elif not os.path.isabs(value): + value = os.path.join(prefix, value) + if ( + type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and + not os.path.exists(value) + ): + comment = f'skip extending {env_name} with not existing ' \ + f'path: {value}' + if _include_comments(): + commands.append( + FORMAT_STR_COMMENT_LINE.format_map({'comment': comment})) + elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE: + commands += _append_unique_value(env_name, value) + else: + commands += _prepend_unique_value(env_name, value) + else: + raise RuntimeError( + 'contains an unknown environment hook type: ' + type_) + return commands + + +env_state = {} + + +def _append_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # append even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional leading separator + extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': extend + value}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +def _prepend_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # prepend even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional trailing separator + extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value + extend}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +# generate commands for removing prepended underscores +def _remove_ending_separators(): + # do nothing if the shell extension does not implement the logic + if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None: + return [] + + global env_state + commands = [] + for name in env_state: + # skip variables that already had values before this script started prepending + if name in os.environ: + continue + commands += [ + FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}), + FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})] + return commands + + +def _set(name, value): + global env_state + env_state[name] = value + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + return [line] + + +def _set_if_unset(name, value): + global env_state + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + if env_state.get(name, os.environ.get(name)): + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +if __name__ == '__main__': # pragma: no cover + try: + rc = main() + except RuntimeError as e: + print(str(e), file=sys.stderr) + rc = 1 + sys.exit(rc) diff --git a/src/install/challenge/share/challenge/package.bash b/src/install/challenge/share/challenge/package.bash new file mode 100644 index 00000000..a2552899 --- /dev/null +++ b/src/install/challenge/share/challenge/package.bash @@ -0,0 +1,39 @@ +# generated from colcon_bash/shell/template/package.bash.em + +# This script extends the environment for this package. + +# a bash script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + # the prefix is two levels up from the package specific share directory + _colcon_package_bash_COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." > /dev/null && pwd)" +else + _colcon_package_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +_colcon_package_bash_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$@" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source sh script of this package +_colcon_package_bash_source_script "$_colcon_package_bash_COLCON_CURRENT_PREFIX/share/challenge/package.sh" + +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced scripts +COLCON_CURRENT_PREFIX="$_colcon_package_bash_COLCON_CURRENT_PREFIX" + +# source bash hooks +_colcon_package_bash_source_script "$COLCON_CURRENT_PREFIX/share/challenge/local_setup.bash" + +unset COLCON_CURRENT_PREFIX + +unset _colcon_package_bash_source_script +unset _colcon_package_bash_COLCON_CURRENT_PREFIX diff --git a/src/install/challenge/share/challenge/package.dsv b/src/install/challenge/share/challenge/package.dsv new file mode 100644 index 00000000..6c8a7e71 --- /dev/null +++ b/src/install/challenge/share/challenge/package.dsv @@ -0,0 +1,5 @@ +source;share/challenge/local_setup.bash +source;share/challenge/local_setup.dsv +source;share/challenge/local_setup.ps1 +source;share/challenge/local_setup.sh +source;share/challenge/local_setup.zsh diff --git a/src/install/challenge/share/challenge/package.ps1 b/src/install/challenge/share/challenge/package.ps1 new file mode 100644 index 00000000..f8dbaa08 --- /dev/null +++ b/src/install/challenge/share/challenge/package.ps1 @@ -0,0 +1,115 @@ +# generated from colcon_powershell/shell/template/package.ps1.em + +# function to append a value to a variable +# which uses colons as separators +# duplicates as well as leading separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +function colcon_append_unique_value { + param ( + $_listname, + $_value + ) + + # get values from variable + if (Test-Path Env:$_listname) { + $_values=(Get-Item env:$_listname).Value + } else { + $_values="" + } + $_duplicate="" + # start with no values + $_all_values="" + # iterate over existing values in the variable + if ($_values) { + $_values.Split(";") | ForEach { + # not an empty string + if ($_) { + # not a duplicate of _value + if ($_ -eq $_value) { + $_duplicate="1" + } + if ($_all_values) { + $_all_values="${_all_values};$_" + } else { + $_all_values="$_" + } + } + } + } + # append only non-duplicates + if (!$_duplicate) { + # avoid leading separator + if ($_all_values) { + $_all_values="${_all_values};${_value}" + } else { + $_all_values="${_value}" + } + } + + # export the updated variable + Set-Item env:\$_listname -Value "$_all_values" +} + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +function colcon_prepend_unique_value { + param ( + $_listname, + $_value + ) + + # get values from variable + if (Test-Path Env:$_listname) { + $_values=(Get-Item env:$_listname).Value + } else { + $_values="" + } + # start with the new value + $_all_values="$_value" + # iterate over existing values in the variable + if ($_values) { + $_values.Split(";") | ForEach { + # not an empty string + if ($_) { + # not a duplicate of _value + if ($_ -ne $_value) { + # keep non-duplicate values + $_all_values="${_all_values};$_" + } + } + } + } + # export the updated variable + Set-Item env:\$_listname -Value "$_all_values" +} + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +function colcon_package_source_powershell_script { + param ( + $_colcon_package_source_powershell_script + ) + # source script with conditional trace output + if (Test-Path $_colcon_package_source_powershell_script) { + if ($env:COLCON_TRACE) { + echo ". '$_colcon_package_source_powershell_script'" + } + . "$_colcon_package_source_powershell_script" + } else { + Write-Error "not found: '$_colcon_package_source_powershell_script'" + } +} + + +# a powershell script is able to determine its own path +# the prefix is two levels up from the package specific share directory +$env:COLCON_CURRENT_PREFIX=(Get-Item $PSCommandPath).Directory.Parent.Parent.FullName + +colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/challenge/local_setup.ps1" + +Remove-Item Env:\COLCON_CURRENT_PREFIX diff --git a/src/install/challenge/share/challenge/package.sh b/src/install/challenge/share/challenge/package.sh new file mode 100644 index 00000000..7a2503e5 --- /dev/null +++ b/src/install/challenge/share/challenge/package.sh @@ -0,0 +1,86 @@ +# generated from colcon_core/shell/template/package.sh.em + +# This script extends the environment for this package. + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prepend_unique_value_IFS=$IFS + IFS=":" + # start with the new value + _all_values="$_value" + # workaround SH_WORD_SPLIT not being set in zsh + if [ "$(command -v colcon_zsh_convert_to_array)" ]; then + colcon_zsh_convert_to_array _values + fi + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + # restore the field separator + IFS=$_colcon_prepend_unique_value_IFS + unset _colcon_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# since a plain shell script can't determine its own path when being sourced +# either use the provided COLCON_CURRENT_PREFIX +# or fall back to the build time prefix (if it exists) +_colcon_package_sh_COLCON_CURRENT_PREFIX="/home/danialramzan/PycharmProjects/new/software-start-here/src/install/challenge" +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + if [ ! -d "$_colcon_package_sh_COLCON_CURRENT_PREFIX" ]; then + echo "The build time path \"$_colcon_package_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 + unset _colcon_package_sh_COLCON_CURRENT_PREFIX + return 1 + fi + COLCON_CURRENT_PREFIX="$_colcon_package_sh_COLCON_CURRENT_PREFIX" +fi +unset _colcon_package_sh_COLCON_CURRENT_PREFIX + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +_colcon_package_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$@" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source sh hooks +_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/challenge/local_setup.sh" + +unset _colcon_package_sh_source_script +unset COLCON_CURRENT_PREFIX + +# do not unset _colcon_prepend_unique_value since it might be used by non-primary shell hooks diff --git a/src/install/challenge/share/challenge/package.zsh b/src/install/challenge/share/challenge/package.zsh new file mode 100644 index 00000000..fa8dae35 --- /dev/null +++ b/src/install/challenge/share/challenge/package.zsh @@ -0,0 +1,50 @@ +# generated from colcon_zsh/shell/template/package.zsh.em + +# This script extends the environment for this package. + +# a zsh script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + # the prefix is two levels up from the package specific share directory + _colcon_package_zsh_COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`/../.." > /dev/null && pwd)" +else + _colcon_package_zsh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +_colcon_package_zsh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$@" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# function to convert array-like strings into arrays +# to workaround SH_WORD_SPLIT not being set +colcon_zsh_convert_to_array() { + local _listname=$1 + local _dollar="$" + local _split="{=" + local _to_array="(\"$_dollar$_split$_listname}\")" + eval $_listname=$_to_array +} + +# source sh script of this package +_colcon_package_zsh_source_script "$_colcon_package_zsh_COLCON_CURRENT_PREFIX/share/challenge/package.sh" +unset convert_zsh_to_array + +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced scripts +COLCON_CURRENT_PREFIX="$_colcon_package_zsh_COLCON_CURRENT_PREFIX" + +# source zsh hooks +_colcon_package_zsh_source_script "$COLCON_CURRENT_PREFIX/share/challenge/local_setup.zsh" + +unset COLCON_CURRENT_PREFIX + +unset _colcon_package_zsh_source_script +unset _colcon_package_zsh_COLCON_CURRENT_PREFIX diff --git a/src/install/challenge/share/colcon-core/packages/challenge b/src/install/challenge/share/colcon-core/packages/challenge new file mode 100644 index 00000000..080a9503 --- /dev/null +++ b/src/install/challenge/share/colcon-core/packages/challenge @@ -0,0 +1 @@ +rclcpp \ No newline at end of file diff --git a/src/install/local_setup.bash b/src/install/local_setup.bash new file mode 100644 index 00000000..03f00256 --- /dev/null +++ b/src/install/local_setup.bash @@ -0,0 +1,121 @@ +# generated from colcon_bash/shell/template/prefix.bash.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# a bash script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + _colcon_prefix_bash_COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" > /dev/null && pwd)" +else + _colcon_prefix_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prefix_bash_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prefix_bash_prepend_unique_value_IFS="$IFS" + IFS=":" + # start with the new value + _all_values="$_value" + _contained_value="" + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + _contained_value=1 + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + if [ -z "$_contained_value" ]; then + if [ -n "$COLCON_TRACE" ]; then + if [ "$_all_values" = "$_value" ]; then + echo "export $_listname=$_value" + else + echo "export $_listname=$_value:\$$_listname" + fi + fi + fi + unset _contained_value + # restore the field separator + IFS="$_colcon_prefix_bash_prepend_unique_value_IFS" + unset _colcon_prefix_bash_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# add this prefix to the COLCON_PREFIX_PATH +_colcon_prefix_bash_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_bash_COLCON_CURRENT_PREFIX" +unset _colcon_prefix_bash_prepend_unique_value + +# check environment variable for custom Python executable +if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then + if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then + echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" + return 1 + fi + _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" +else + # try the Python executable known at configure time + _colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if [ ! -f "$_colcon_python_executable" ]; then + if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then + echo "error: unable to find python3 executable" + return 1 + fi + _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` + fi +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# get all commands in topological order +_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_bash_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh bash)" +unset _colcon_python_executable +if [ -n "$COLCON_TRACE" ]; then + echo "$(declare -f _colcon_prefix_sh_source_script)" + echo "# Execute generated script:" + echo "# <<<" + echo "${_colcon_ordered_commands}" + echo "# >>>" + echo "unset _colcon_prefix_sh_source_script" +fi +eval "${_colcon_ordered_commands}" +unset _colcon_ordered_commands + +unset _colcon_prefix_sh_source_script + +unset _colcon_prefix_bash_COLCON_CURRENT_PREFIX diff --git a/src/install/local_setup.ps1 b/src/install/local_setup.ps1 new file mode 100644 index 00000000..6f68c8de --- /dev/null +++ b/src/install/local_setup.ps1 @@ -0,0 +1,55 @@ +# generated from colcon_powershell/shell/template/prefix.ps1.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# check environment variable for custom Python executable +if ($env:COLCON_PYTHON_EXECUTABLE) { + if (!(Test-Path "$env:COLCON_PYTHON_EXECUTABLE" -PathType Leaf)) { + echo "error: COLCON_PYTHON_EXECUTABLE '$env:COLCON_PYTHON_EXECUTABLE' doesn't exist" + exit 1 + } + $_colcon_python_executable="$env:COLCON_PYTHON_EXECUTABLE" +} else { + # use the Python executable known at configure time + $_colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if (!(Test-Path "$_colcon_python_executable" -PathType Leaf)) { + if (!(Get-Command "python3" -ErrorAction SilentlyContinue)) { + echo "error: unable to find python3 executable" + exit 1 + } + $_colcon_python_executable="python3" + } +} + +# function to source another script with conditional trace output +# first argument: the path of the script +function _colcon_prefix_powershell_source_script { + param ( + $_colcon_prefix_powershell_source_script_param + ) + # source script with conditional trace output + if (Test-Path $_colcon_prefix_powershell_source_script_param) { + if ($env:COLCON_TRACE) { + echo ". '$_colcon_prefix_powershell_source_script_param'" + } + . "$_colcon_prefix_powershell_source_script_param" + } else { + Write-Error "not found: '$_colcon_prefix_powershell_source_script_param'" + } +} + +# get all commands in topological order +$_colcon_ordered_commands = & "$_colcon_python_executable" "$(Split-Path $PSCommandPath -Parent)/_local_setup_util_ps1.py" ps1 + +# execute all commands in topological order +if ($env:COLCON_TRACE) { + echo "Execute generated script:" + echo "<<<" + $_colcon_ordered_commands.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries) | Write-Output + echo ">>>" +} +if ($_colcon_ordered_commands) { + $_colcon_ordered_commands.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries) | Invoke-Expression +} diff --git a/src/install/local_setup.sh b/src/install/local_setup.sh new file mode 100644 index 00000000..b642b2cf --- /dev/null +++ b/src/install/local_setup.sh @@ -0,0 +1,137 @@ +# generated from colcon_core/shell/template/prefix.sh.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# since a plain shell script can't determine its own path when being sourced +# either use the provided COLCON_CURRENT_PREFIX +# or fall back to the build time prefix (if it exists) +_colcon_prefix_sh_COLCON_CURRENT_PREFIX="/home/danialramzan/PycharmProjects/new/software-start-here/src/install" +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + if [ ! -d "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX" ]; then + echo "The build time path \"$_colcon_prefix_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 + unset _colcon_prefix_sh_COLCON_CURRENT_PREFIX + return 1 + fi +else + _colcon_prefix_sh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prefix_sh_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prefix_sh_prepend_unique_value_IFS="$IFS" + IFS=":" + # start with the new value + _all_values="$_value" + _contained_value="" + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + _contained_value=1 + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + if [ -z "$_contained_value" ]; then + if [ -n "$COLCON_TRACE" ]; then + if [ "$_all_values" = "$_value" ]; then + echo "export $_listname=$_value" + else + echo "export $_listname=$_value:\$$_listname" + fi + fi + fi + unset _contained_value + # restore the field separator + IFS="$_colcon_prefix_sh_prepend_unique_value_IFS" + unset _colcon_prefix_sh_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# add this prefix to the COLCON_PREFIX_PATH +_colcon_prefix_sh_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX" +unset _colcon_prefix_sh_prepend_unique_value + +# check environment variable for custom Python executable +if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then + if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then + echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" + return 1 + fi + _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" +else + # try the Python executable known at configure time + _colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if [ ! -f "$_colcon_python_executable" ]; then + if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then + echo "error: unable to find python3 executable" + return 1 + fi + _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` + fi +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# get all commands in topological order +_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh)" +unset _colcon_python_executable +if [ -n "$COLCON_TRACE" ]; then + echo "_colcon_prefix_sh_source_script() { + if [ -f \"\$1\" ]; then + if [ -n \"\$COLCON_TRACE\" ]; then + echo \"# . \\\"\$1\\\"\" + fi + . \"\$1\" + else + echo \"not found: \\\"\$1\\\"\" 1>&2 + fi + }" + echo "# Execute generated script:" + echo "# <<<" + echo "${_colcon_ordered_commands}" + echo "# >>>" + echo "unset _colcon_prefix_sh_source_script" +fi +eval "${_colcon_ordered_commands}" +unset _colcon_ordered_commands + +unset _colcon_prefix_sh_source_script + +unset _colcon_prefix_sh_COLCON_CURRENT_PREFIX diff --git a/src/install/local_setup.zsh b/src/install/local_setup.zsh new file mode 100644 index 00000000..b6487102 --- /dev/null +++ b/src/install/local_setup.zsh @@ -0,0 +1,134 @@ +# generated from colcon_zsh/shell/template/prefix.zsh.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# a zsh script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + _colcon_prefix_zsh_COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd)" +else + _colcon_prefix_zsh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to convert array-like strings into arrays +# to workaround SH_WORD_SPLIT not being set +_colcon_prefix_zsh_convert_to_array() { + local _listname=$1 + local _dollar="$" + local _split="{=" + local _to_array="(\"$_dollar$_split$_listname}\")" + eval $_listname=$_to_array +} + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prefix_zsh_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prefix_zsh_prepend_unique_value_IFS="$IFS" + IFS=":" + # start with the new value + _all_values="$_value" + _contained_value="" + # workaround SH_WORD_SPLIT not being set + _colcon_prefix_zsh_convert_to_array _values + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + _contained_value=1 + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + if [ -z "$_contained_value" ]; then + if [ -n "$COLCON_TRACE" ]; then + if [ "$_all_values" = "$_value" ]; then + echo "export $_listname=$_value" + else + echo "export $_listname=$_value:\$$_listname" + fi + fi + fi + unset _contained_value + # restore the field separator + IFS="$_colcon_prefix_zsh_prepend_unique_value_IFS" + unset _colcon_prefix_zsh_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# add this prefix to the COLCON_PREFIX_PATH +_colcon_prefix_zsh_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_zsh_COLCON_CURRENT_PREFIX" +unset _colcon_prefix_zsh_prepend_unique_value +unset _colcon_prefix_zsh_convert_to_array + +# check environment variable for custom Python executable +if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then + if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then + echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" + return 1 + fi + _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" +else + # try the Python executable known at configure time + _colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if [ ! -f "$_colcon_python_executable" ]; then + if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then + echo "error: unable to find python3 executable" + return 1 + fi + _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` + fi +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# get all commands in topological order +_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_zsh_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh zsh)" +unset _colcon_python_executable +if [ -n "$COLCON_TRACE" ]; then + echo "$(declare -f _colcon_prefix_sh_source_script)" + echo "# Execute generated script:" + echo "# <<<" + echo "${_colcon_ordered_commands}" + echo "# >>>" + echo "unset _colcon_prefix_sh_source_script" +fi +eval "${_colcon_ordered_commands}" +unset _colcon_ordered_commands + +unset _colcon_prefix_sh_source_script + +unset _colcon_prefix_zsh_COLCON_CURRENT_PREFIX diff --git a/src/install/setup.bash b/src/install/setup.bash new file mode 100644 index 00000000..10ea0f7c --- /dev/null +++ b/src/install/setup.bash @@ -0,0 +1,31 @@ +# generated from colcon_bash/shell/template/prefix_chain.bash.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_chain_bash_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source chained prefixes +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/opt/ros/humble" +_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash" + +# source this prefix +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" > /dev/null && pwd)" +_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash" + +unset COLCON_CURRENT_PREFIX +unset _colcon_prefix_chain_bash_source_script diff --git a/src/install/setup.ps1 b/src/install/setup.ps1 new file mode 100644 index 00000000..558e9b9e --- /dev/null +++ b/src/install/setup.ps1 @@ -0,0 +1,29 @@ +# generated from colcon_powershell/shell/template/prefix_chain.ps1.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# function to source another script with conditional trace output +# first argument: the path of the script +function _colcon_prefix_chain_powershell_source_script { + param ( + $_colcon_prefix_chain_powershell_source_script_param + ) + # source script with conditional trace output + if (Test-Path $_colcon_prefix_chain_powershell_source_script_param) { + if ($env:COLCON_TRACE) { + echo ". '$_colcon_prefix_chain_powershell_source_script_param'" + } + . "$_colcon_prefix_chain_powershell_source_script_param" + } else { + Write-Error "not found: '$_colcon_prefix_chain_powershell_source_script_param'" + } +} + +# source chained prefixes +_colcon_prefix_chain_powershell_source_script "/opt/ros/humble\local_setup.ps1" + +# source this prefix +$env:COLCON_CURRENT_PREFIX=(Split-Path $PSCommandPath -Parent) +_colcon_prefix_chain_powershell_source_script "$env:COLCON_CURRENT_PREFIX\local_setup.ps1" diff --git a/src/install/setup.sh b/src/install/setup.sh new file mode 100644 index 00000000..ce715b2e --- /dev/null +++ b/src/install/setup.sh @@ -0,0 +1,45 @@ +# generated from colcon_core/shell/template/prefix_chain.sh.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# since a plain shell script can't determine its own path when being sourced +# either use the provided COLCON_CURRENT_PREFIX +# or fall back to the build time prefix (if it exists) +_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX=/home/danialramzan/PycharmProjects/new/software-start-here/src/install +if [ ! -z "$COLCON_CURRENT_PREFIX" ]; then + _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +elif [ ! -d "$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX" ]; then + echo "The build time path \"$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 + unset _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX + return 1 +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_chain_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source chained prefixes +# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script +COLCON_CURRENT_PREFIX="/opt/ros/humble" +_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh" + + +# source this prefix +# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script +COLCON_CURRENT_PREFIX="$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX" +_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh" + +unset _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX +unset _colcon_prefix_chain_sh_source_script +unset COLCON_CURRENT_PREFIX diff --git a/src/install/setup.zsh b/src/install/setup.zsh new file mode 100644 index 00000000..54799fde --- /dev/null +++ b/src/install/setup.zsh @@ -0,0 +1,31 @@ +# generated from colcon_zsh/shell/template/prefix_chain.zsh.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_chain_zsh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source chained prefixes +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/opt/ros/humble" +_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh" + +# source this prefix +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd)" +_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh" + +unset COLCON_CURRENT_PREFIX +unset _colcon_prefix_chain_zsh_source_script From 3df9cd2fc5eecdaa0b666db8d170fbc3d96c6b23 Mon Sep 17 00:00:00 2001 From: Danial Ramzan Date: Fri, 23 Aug 2024 06:38:39 -0700 Subject: [PATCH 2/3] implemented sinusoidal movement --- install/challenge/lib/challenge/solution | Bin 82576 -> 835200 bytes .../parent_prefix_path/challenge | 2 +- src/challenge/CMakeLists.txt | 5 +- src/challenge/src/solution.cpp | 49 +++++++++++++++--- 4 files changed, 46 insertions(+), 10 deletions(-) diff --git a/install/challenge/lib/challenge/solution b/install/challenge/lib/challenge/solution index b56bd01ae4ac01f834125e34528cc9a562d35064..213b46d7ae0a2c307717b0cd535aac0dafa71fe3 100755 GIT binary patch literal 835200 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 B7Iy#u literal 82576 zcmeHw4R}?>wf0URii!{sHC5E$U*iukCkYS`H3$b!AV4IEriyM(k^?!KKhHS{fvYVQ zZHWW@3TMWFI|wHmNv%XYm9Z3m4^GS=@L=Q__EoAl~=J< zWSwjkTT`uU>o}ms;;&ee2Eo1QlAz!?&PNqexh$^Pgi|=5f~t0cRL<)v%9a!btxTDw zav5}+C(|apvq<6<)XRzbnz@_-pSV=w71Ya-Z1z4P>3er2!Ya`i%i7FPl_POcxva-z z{;b`Ju$bkkppqxGk^YKUo+dQAZI-L!aweQFtG5)SI_N5YJ61cI`pURmUaRC|!pn}A zcm-8`*P$HAWw=)+XI#ehd5uF3%U?mIXP4K9t7jBmUSB({KHS*SHm$8_#|Ul%0n0N;~^L6Q}FLh#*wJjO)j>|zj@JlX*p^6y_Pi(C_!g+rld7n{A*cP z0M6n2D*>;<-_`iL27gp=KK`!7-}EnEdH2@;F52+>WtneH`>&ZF&N|dFW$Hakww%0X z`NHpgnEUsh(5nsaET|ki2VgS^fUUkG=fyn&Rxb|9IvzdXvG? zy#_FdliZ|p_b@u041X?iB*Xs#f=`B@?7{yg5B#+!Bk8a^CHe0>zJony#A~8>@aAA@BgvLrrZYW zTWAmQ=~^W5TP3iT0Dp=##ahuN5g2Z9rJpGC-@j0%eOxaA%3s_i@r<_q3pZ0?A-Y;5 zK1%{?lBkyx8raV5@8x!?{I?4HB&(PCoWW( z-$0khCe~8Ay9f0?2>zK|uaf6(u6G^d3uQ6OT4hIST4Le)s9oQ*YE`&#l^t#j$HKw- z@Y+zV}V{4@(w}qBN&R<;iw&I3|7~NYVDOx5hoWFuMMpXw$#V$ zV10d4O)#cWBcZ5b@00*P%Py%{jAD_{s&F(Gic~C~SKrhasv!23ZLex*YD8;-k(h1E ztjROpSW!|Q^Ubo$o9%|+Z6P~a7mT2Ju^=kAamkEGO?^#sbK#Pv+R(gw|FT6(%40Ka zyQZzp=kw)P2czK{?s7>D*!XHt+Kxqn;aIe!#$O)9KYmfl_W6j%(&kvWsWIx;cqb6% z`TV|FO5lzt?5LJsv}Jz2zZJNOl7to#+lum`yHgacYl+o1t#0%qZyxu!ITk5dQf|+j z*VGsbwZ&w!N8VYjr9NK?)QG!0-zQsKu3DVXZ)*9CkZsa|m~NNbv9Q0@Ki%eW5o0!k z#;m5P1Wb_AlO)2ABt#7Ax3Xx4HQL2 zAq&;qgx00fzeW0F@a55@mD5@b>?kINuK)vE)6~4irfC!Pm(@UGAgjijqX*D?1O0z0VMq=@Nu!@G0aKIc2+SRbFjgU#KrVb{RFwHHI zklh-N#9D&&WM$jh?B-A;+5~Ne)a=$gM_f=Ps&C1nkq_l`VN^wN2&gEbACX9Kjolbp zZP$kySHDPMTj6D30*y{^n22-9zp(4Va2znCWw6lY1+X}kjjO|G|FTfDr6I%}S{Wv-UQ0rbusYS$ z-Da;0hB1}I>Q`tlXlbk=7eP#Wcbt7AHSoUakml-8@HRUVst;jtR7Too)*-bXN-**| zNDEx{kdgG35IM3$Lim)Nf>>%Uy_AAVGl;mV2J)nok5V-ff9Kt{EfvOrPC18JRYeu@s|dg#HLx}1TJ0VJwfEp;4)(bOtVfxc`7OYBYwnL)z9rE|H@mF@ynv*Q>YzK}mYSHJIUWW7!zVtQh1W&ZS#JI`f@X3~S zg0+RyI|ThW>${w8IWvqMM~3wuNYh2_sb(6b*Zlkm)Hlw0nsICTzmA>A@z%?nzFnlp zTEFG=FQ2##JHjzmoYS$3zl<$gy7f1t=~8iIwU666L*jcmzO3-4&64=IfnUM-`wje7 z-ltg%6`$4`$!DB_-@*7y1OFD|vkd%2wUSS^f#1paJQL69A_E_*mVAm0{6mZ{Gw?l} zt}^hy;QT8L`~q%&vw`pBbfD!)o+8u*=2nJ>%0cQJkgw};{e`7*2cce4k6tA;-h zIn};=rw3likNE5P_h|Vk&aSQ=4Np@@@$dJ*EBO(BJ%7)$k|T_Rh?&b2=A(w6ppbyQ z8vYUuAJ_0I#zEvh4PT(;@7M4=bp|YIv$!U7IyL$y!}oH9WOR zUE4Ig(p{o$*YGgV&b3p+!!SEnmxdqjU@dEphQ~tSTs<0oqJxD#Xn3V-MDEq_dfYs& z;q~}?pN2nGj}x`bPYdF!>d>ukux>Cip>!|OT&MP5PW58_%js}Fh|3m zrQ!25{1gpeq~Xuj@WmSb91S1P@aJmyG7X=t;j1+KR1LpE!=JC=>ooiY8opV>U#Q{R zH2g&xew~K@w1(fH;V;(kof`g94Zm5#U#8)=YWQgyew&8R)$rRje4d8iso{MZzDvV9 zF;LL=X!z+`{$sbtBydau$0Tq}0>>n9OajLwa7+TnBydau$0Tq}0>>n9OalM^NZ@Z1 z&-o~@{@}PkN5*ge)v^Njbj8vKdIIZT9QT6g#K82~_gmJXfeWtyn0T&5`Rj;sX#XDu z1_nAsngWD}_W#^TQ(*AW{^y)D1q2W6{|_fkfxtuiA9T_b06et+OHP^se~0#e-bqtX z>(Kt&oiqjd4($&*X$tTi+JBvsroio?{d1i(1^N!{_c>__@EzJe)k#xe@6i5Job&{d zPIJ-};5)ScuOF-aQeY4LchVHlL;syL1@h2;Crtr7^xsKSfExXG(iF%;|D7}i@X&uJ zO@TY~-$_%z4*hr16sSZ0oiqjL(0?aQfjRWwNmD=${ddw7h(rIKGzH)e?N4*k=Zf@S z|Ec<)Ez*B*(iCVz|D7}i=FxvAO#wIb-$_%T4gGi06ktRDoiqj3(0?aQ0X6jBNmIZZ z{ddw7SVRAvGzHwze3`mv*q{F~(tk11ZyV{~8|hye>7N6?vorIB82r2R(vN+UhpNKZ4;7aHlajr3_o z`eZ%r`%6jt&u9m_s)~TP$?_Uif-BhAndEoO0_kczF({q3gv_F{#P#fqNdm&kcK)XNg z>k4eVr&$oY<8v_S0~`HYX^k6b=^SX;FwnAY;K??S2cA@!KBP?RU(5?^tlS#t5F9)1 zA@)B4ORK#*{slBqaKZf};{Kj8u3#yQePH8PMRMakD+Kn}0pxpL5E#=P|D`M@GjzwZ zPoiS?EM+b~5zYLnNK$Jzo_sz|?*i?w5~ob8SIA36#pw^>9v9rv+=MzG7i^q5>7i=X z?DhYkE;to#LUVphy#r2lC2%4-yEo8L8LtgoI$6kb;@z8&XFrBsSjs^A3yR;ji63&K zE&bp{!y~9p}B>*KVu>89VW> z<+c-jnSX_4X)RfQFdMbT!7Yv{(J%7f-4&Z45#8}LNc6zTDs{u(6T0oRSvD<`EW4D9%SMvi;QhT8@l5;=&g`qMkiy&!wv|{`mQ#T z?GBQy9K|w9(;FU~E~4~hZaRz7FMp7F4Bk)GE|k9p^?SA(^u{6RT|>|hlAG+UshEdS z6Gb0!|Iz=X$PfDSL)3RY%$R3=C_iHe`su0Y>${2*+Pl6>w7(O2uG&v4b*lRB9-{qU zgDLYYzrIW80L@(12~qz;;Hm20^?r)-j@Et4;SgU(Jvxq7MyYkpl>PxN2AVB-*BHgQ z7365FAZ>1cdh>^aU5t)z5;m~$p6vv{@fTo%7L&sNnP^3V`(z#G}UShiA z?_sTbhBn~T+Kz1|25GeQmuX)4b|kCHI=yUr7rvnc)NU5{za(bz`29* z1%!7TE;abw@eI_<3@-u0&Hx+-IDyisj%CEZD(VmQ-86T3f|ntE8*LuVzyNv9ZZtRL zn#?QJA&6!~JjlP|Hgs5l%~}gJ&uijSh zweO{{XXp-`uZf~}xJUNiA~*)&D95)PwkCka?}0no6=<*Asds|5LLE2nL1~b?T-g;!>w&9DGY&pvFZzzZ#o$QX#Kxo& z=JCKeO3S#G$z*w@ZoWyp4NY1kaOAru_w7*seDVO$KpN7H0J+P6z=%3$5s@&+_=Hpx zB@5wsa%N$(635upRTRwz8&`^s$ICu_phGyU?6*?o#wZM+=h`T!nl;T+em^&L4(jvN z>5ej4UB|dUdr#ovJ=k1lI0BIUmz_UO>wLu!e$iyg>m|h#G)BKPq-eDKydh@vL9s@9 zjMg8B$RfB=o806(=8 z?=rw0C7(1l4Ox1yJnil9Z*TYSKx%J?)s6*@ZZbRkJFrsYwjH-S4@}|Ay(07Oj>_FY z^!81BF0;L-bA5jr+yZiQAEp(LYKGlk-v!f5)_EHwKJW{1v%YIQYK(XLsoB(^fmmXL z;vn~7F>Uw1hys1opgrOSt$0y1sE-=7M>L2s_lwN0bX2~AZ2d-qVrPh2MPst`#u)Rg z7!spu_Mp++z`fkSTaq_$Z@Yh=XcrpTD{j!LeQpDL^#&sITOE~eAzRW0qGpm7H*k-T zRx+)iQQs(+@4awkh@GZOzXVG23}^-v(F}lhgHf*BGswH4!S9Z@p%|3m6maVaT;bn? zfDXAW94G^2B0TiJewwCXcl_VqAq}r2QK7I<;p-tM3i^(vOnj8meC{g_ z6p|evHk(0JET^Dwd?x;p#24Z>i8@4e%|tsOnv^(q**{M3PO>4^ei6fLuZ)Wk5c5?u zXB7@)lZ~Co(H)O~>{=;J>&D4xv5#brX%WBOofcE6cXC?n)0C}ODcgZhaRy8UWN3ZoydLAl+=GW&A!XPdr>wI3lL8m_h_f0P8A0tR%LeQZJl8uW@FA9t@#zv>2@whh z`w>x=2CF;XBdc_6_o$`cKNP1?b3Sry+&NSmhplVBJ7Sz(NWzK6Z`fM5Lo#r*R`

M_QLoHk{7X4&aBOrOh6giS5 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 class MyNode : public rclcpp::Node { public: - MyNode() : Node("solution") { - RCLCPP_INFO(get_logger(), "Node started!"); - } + MyNode() : Node("solution"), rate_(10) { + RCLCPP_INFO(this->get_logger(), "Node started!"); + publisher_ = this->create_publisher("/turtle1/cmd_vel", 10); + timer_ = this->create_wall_timer( + std::chrono::milliseconds(1000 / rate_), + std::bind(&MyNode::publish_message, this) + ); + } + private: + void publish_message() { + auto message = geometry_msgs::msg::Twist(); + double t = count_++; + double y_value = std::cos(t / 2.0) * 5; + + message.linear.x = 1; + message.linear.y = y_value; + message.linear.z = 0.0; + message.angular.x = 0.0; + message.angular.y = 0.0; + message.angular.z = 0.0; + + RCLCPP_INFO(this->get_logger(), "Publishing: y_value = %f", y_value); + publisher_->publish(message); + + if (count_ >= duration_) { + rclcpp::shutdown(); + } + } + + rclcpp::Publisher::SharedPtr publisher_; + rclcpp::TimerBase::SharedPtr timer_; + int rate_; + int count_ = 0; + int duration_ = 1000; }; int main(int argc, char **argv) { - rclcpp::init(argc, argv); - auto node = std::make_shared(); - rclcpp::spin(node); - rclcpp::shutdown(); - return 0; + rclcpp::init(argc, argv); + auto node = std::make_shared(); + rclcpp::spin(node); + rclcpp::shutdown(); + return 0; } From ae9d616b47a7eeaf1757b442003139a8ba1c91aa Mon Sep 17 00:00:00 2001 From: Danial Ramzan Date: Fri, 23 Aug 2024 06:56:25 -0700 Subject: [PATCH 3/3] implemented launch file in yaml --- launch/launch.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 launch/launch.yaml diff --git a/launch/launch.yaml b/launch/launch.yaml new file mode 100644 index 00000000..4657477c --- /dev/null +++ b/launch/launch.yaml @@ -0,0 +1,11 @@ +launch: + + - node: + pkg: "turtlesim" + exec: "turtlesim_node" + name: "sim" + + - node: + pkg: "challenge" + exec: "solution" + name: "sol" \ No newline at end of file