Compare commits
10 commits
2bb469b26f
...
6b3ca366bf
Author | SHA1 | Date | |
---|---|---|---|
|
6b3ca366bf | ||
|
ca96457590 | ||
|
29afc49c36 | ||
|
b3a326720b | ||
|
8b1c5b9073 | ||
|
ec26aa89e7 | ||
|
1036d97ec6 | ||
|
816dcbe118 | ||
|
dfcf57aae1 | ||
|
d9e4642472 |
57
.gdb_history
57
.gdb_history
|
@ -1,50 +1,11 @@
|
|||
q
|
||||
break ext_cmake.cc:14
|
||||
r
|
||||
up
|
||||
up
|
||||
up
|
||||
up
|
||||
up
|
||||
up
|
||||
up
|
||||
up
|
||||
up
|
||||
up
|
||||
bt
|
||||
q
|
||||
r
|
||||
q
|
||||
r
|
||||
up
|
||||
up
|
||||
up
|
||||
up
|
||||
up
|
||||
up
|
||||
up
|
||||
up
|
||||
bt
|
||||
q
|
||||
r
|
||||
bt
|
||||
q
|
||||
r
|
||||
bt
|
||||
q
|
||||
r
|
||||
bt
|
||||
q
|
||||
q
|
||||
r
|
||||
up
|
||||
up
|
||||
up
|
||||
:q
|
||||
q
|
||||
r
|
||||
up
|
||||
up
|
||||
up
|
||||
up
|
||||
up
|
||||
r gen
|
||||
print c_path
|
||||
c
|
||||
r gen
|
||||
print std::filesystem::is_symlink(c_path)
|
||||
print std::filesystem::read_symlink(c_path)
|
||||
print std::filesystem::read_symlink(c_path)
|
||||
print c_path
|
||||
q
|
||||
|
|
65
:w
Normal file
65
:w
Normal file
|
@ -0,0 +1,65 @@
|
|||
#pragma once
|
||||
#include "grbc/spec.h"
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
enum GeneratorTargetType {
|
||||
GeneratorTargetType_Executable,
|
||||
GeneratorTargetType_SharedLibrary,
|
||||
GeneratorTargetType_StaticLibrary
|
||||
};
|
||||
|
||||
struct GeneratorResult {
|
||||
std::string file_name;
|
||||
std::string content;
|
||||
};
|
||||
|
||||
struct GeneratorCompileCommand {
|
||||
LanguageType language_type;
|
||||
|
||||
std::string source_file;
|
||||
std::string object_file;
|
||||
|
||||
std::string compiler_flags;
|
||||
};
|
||||
|
||||
struct GeneratorLinkTargetCommand {
|
||||
std::vector<std::string> object_files;
|
||||
std::vector<std::string> libraries; // Libraries which need to be built before this
|
||||
std::string linker_flags;
|
||||
|
||||
std::string output_name;
|
||||
|
||||
GeneratorTargetType target_type;
|
||||
};
|
||||
|
||||
struct GeneratorExternalTargetCommand {
|
||||
|
||||
};
|
||||
|
||||
struct GeneratorTarget {
|
||||
std::vector<GeneratorCompileCommand> compile_commands;
|
||||
std::vector<GeneratorLinkTargetCommand> link_target_commands;
|
||||
std::vector<GeneratorExternalTargetCommand> external_target_commands;
|
||||
};
|
||||
|
||||
struct GeneratorTask {
|
||||
std::string description, id;
|
||||
|
||||
std::string shell_script;
|
||||
};
|
||||
|
||||
typedef GeneratorResult (*Generator_Run)();
|
||||
|
||||
struct Generator {
|
||||
/// Name of the generator, used in grbc_build(...)
|
||||
std::string name;
|
||||
|
||||
/// Function pointer for this generator
|
||||
Generator_Run func;
|
||||
};
|
||||
|
||||
/**
|
||||
* Ninja generator main function
|
||||
*/
|
||||
GeneratorResult ninja_generator();
|
74
CMakeFiles/3.28.2/CMakeCCompiler.cmake
Normal file
74
CMakeFiles/3.28.2/CMakeCCompiler.cmake
Normal file
|
@ -0,0 +1,74 @@
|
|||
set(CMAKE_C_COMPILER "/usr/lib64/ccache/cc")
|
||||
set(CMAKE_C_COMPILER_ARG1 "")
|
||||
set(CMAKE_C_COMPILER_ID "GNU")
|
||||
set(CMAKE_C_COMPILER_VERSION "14.2.1")
|
||||
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 "GNU")
|
||||
set(CMAKE_C_SIMULATE_VERSION "")
|
||||
|
||||
|
||||
|
||||
|
||||
set(CMAKE_AR "/bin/ar")
|
||||
set(CMAKE_C_COMPILER_AR "/bin/gcc-ar")
|
||||
set(CMAKE_RANLIB "/bin/ranlib")
|
||||
set(CMAKE_C_COMPILER_RANLIB "/bin/gcc-ranlib")
|
||||
set(CMAKE_LINKER "/bin/ld")
|
||||
set(CMAKE_MT "")
|
||||
set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND")
|
||||
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)
|
||||
set(CMAKE_C_LINKER_DEPFILE_SUPPORTED TRUE)
|
||||
|
||||
# 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 "")
|
||||
|
||||
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 "")
|
||||
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-redhat-linux/14/include;/usr/local/include;/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-redhat-linux/14;/usr/lib64;/lib64;/usr/lib")
|
||||
set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
|
85
CMakeFiles/3.28.2/CMakeCXXCompiler.cmake
Normal file
85
CMakeFiles/3.28.2/CMakeCXXCompiler.cmake
Normal file
|
@ -0,0 +1,85 @@
|
|||
set(CMAKE_CXX_COMPILER "/usr/lib64/ccache/c++")
|
||||
set(CMAKE_CXX_COMPILER_ARG1 "")
|
||||
set(CMAKE_CXX_COMPILER_ID "GNU")
|
||||
set(CMAKE_CXX_COMPILER_VERSION "14.2.1")
|
||||
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 "GNU")
|
||||
set(CMAKE_CXX_SIMULATE_VERSION "")
|
||||
|
||||
|
||||
|
||||
|
||||
set(CMAKE_AR "/bin/ar")
|
||||
set(CMAKE_CXX_COMPILER_AR "/bin/gcc-ar")
|
||||
set(CMAKE_RANLIB "/bin/ranlib")
|
||||
set(CMAKE_CXX_COMPILER_RANLIB "/bin/gcc-ranlib")
|
||||
set(CMAKE_LINKER "/bin/ld")
|
||||
set(CMAKE_MT "")
|
||||
set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND")
|
||||
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;ccm;cxxm;c++m)
|
||||
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)
|
||||
set(CMAKE_CXX_LINKER_DEPFILE_SUPPORTED TRUE)
|
||||
|
||||
# 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 "")
|
||||
|
||||
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 "")
|
||||
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++/14;/usr/include/c++/14/x86_64-redhat-linux;/usr/include/c++/14/backward;/usr/lib/gcc/x86_64-redhat-linux/14/include;/usr/local/include;/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-redhat-linux/14;/usr/lib64;/lib64;/usr/lib")
|
||||
set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
|
BIN
CMakeFiles/3.28.2/CMakeDetermineCompilerABI_C.bin
Executable file
BIN
CMakeFiles/3.28.2/CMakeDetermineCompilerABI_C.bin
Executable file
Binary file not shown.
BIN
CMakeFiles/3.28.2/CMakeDetermineCompilerABI_CXX.bin
Executable file
BIN
CMakeFiles/3.28.2/CMakeDetermineCompilerABI_CXX.bin
Executable file
Binary file not shown.
15
CMakeFiles/3.28.2/CMakeSystem.cmake
Normal file
15
CMakeFiles/3.28.2/CMakeSystem.cmake
Normal file
|
@ -0,0 +1,15 @@
|
|||
set(CMAKE_HOST_SYSTEM "Linux-6.10.10-200.fc40.x86_64")
|
||||
set(CMAKE_HOST_SYSTEM_NAME "Linux")
|
||||
set(CMAKE_HOST_SYSTEM_VERSION "6.10.10-200.fc40.x86_64")
|
||||
set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
|
||||
|
||||
|
||||
|
||||
set(CMAKE_SYSTEM "Linux-6.10.10-200.fc40.x86_64")
|
||||
set(CMAKE_SYSTEM_NAME "Linux")
|
||||
set(CMAKE_SYSTEM_VERSION "6.10.10-200.fc40.x86_64")
|
||||
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
|
||||
|
||||
set(CMAKE_CROSSCOMPILING "FALSE")
|
||||
|
||||
set(CMAKE_SYSTEM_LOADED 1)
|
880
CMakeFiles/3.28.2/CompilerIdC/CMakeCCompilerId.c
Normal file
880
CMakeFiles/3.28.2/CompilerIdC/CMakeCCompilerId.c
Normal file
|
@ -0,0 +1,880 @@
|
|||
#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(__open_xl__) && defined(__clang__)
|
||||
# define COMPILER_ID "IBMClang"
|
||||
# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__)
|
||||
# define COMPILER_VERSION_MINOR DEC(__open_xl_release__)
|
||||
# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__)
|
||||
# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__)
|
||||
|
||||
|
||||
#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(__clang__) && defined(__cray__)
|
||||
# define COMPILER_ID "CrayClang"
|
||||
# define COMPILER_VERSION_MAJOR DEC(__cray_major__)
|
||||
# define COMPILER_VERSION_MINOR DEC(__cray_minor__)
|
||||
# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__)
|
||||
# define COMPILER_VERSION_INTERNAL_STR __clang_version__
|
||||
|
||||
|
||||
#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(__TASKING__)
|
||||
# define COMPILER_ID "Tasking"
|
||||
# define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000)
|
||||
# define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100)
|
||||
# define COMPILER_VERSION_INTERNAL DEC(__VERSION__)
|
||||
|
||||
#elif defined(__ORANGEC__)
|
||||
# define COMPILER_ID "OrangeC"
|
||||
# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__)
|
||||
# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__)
|
||||
# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__)
|
||||
|
||||
#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/100 % 100)
|
||||
# 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(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__))
|
||||
# define COMPILER_ID "LCC"
|
||||
# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100)
|
||||
# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100)
|
||||
# if defined(__LCC_MINOR__)
|
||||
# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__)
|
||||
# endif
|
||||
# if defined(__GNUC__) && defined(__GNUC_MINOR__)
|
||||
# define SIMULATE_ID "GNU"
|
||||
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
|
||||
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
|
||||
# if defined(__GNUC_PATCHLEVEL__)
|
||||
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
|
||||
# endif
|
||||
# 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(_ADI_COMPILER)
|
||||
# define COMPILER_ID "ADSP"
|
||||
#if defined(__VERSIONNUM__)
|
||||
/* __VERSIONNUM__ = 0xVVRRPPTT */
|
||||
# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF)
|
||||
# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF)
|
||||
# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF)
|
||||
# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 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
|
||||
|
||||
# elif defined(_ADI_COMPILER)
|
||||
# define PLATFORM_ID "ADSP"
|
||||
|
||||
#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
|
||||
|
||||
# elif defined(__ADSPSHARC__)
|
||||
# define ARCHITECTURE_ID "SHARC"
|
||||
|
||||
# elif defined(__ADSPBLACKFIN__)
|
||||
# define ARCHITECTURE_ID "Blackfin"
|
||||
|
||||
#elif defined(__TASKING__)
|
||||
|
||||
# if defined(__CTC__) || defined(__CPTC__)
|
||||
# define ARCHITECTURE_ID "TriCore"
|
||||
|
||||
# elif defined(__CMCS__)
|
||||
# define ARCHITECTURE_ID "MCS"
|
||||
|
||||
# elif defined(__CARM__)
|
||||
# define ARCHITECTURE_ID "ARM"
|
||||
|
||||
# elif defined(__CARC__)
|
||||
# define ARCHITECTURE_ID "ARC"
|
||||
|
||||
# elif defined(__C51__)
|
||||
# define ARCHITECTURE_ID "8051"
|
||||
|
||||
# elif defined(__CPCP__)
|
||||
# define ARCHITECTURE_ID "PCP"
|
||||
|
||||
# else
|
||||
# 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["
|
||||
#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \
|
||||
defined(__TI_COMPILER_VERSION__)) && \
|
||||
!defined(__STRICT_ANSI__)
|
||||
"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
|
BIN
CMakeFiles/3.28.2/CompilerIdC/a.out
Executable file
BIN
CMakeFiles/3.28.2/CompilerIdC/a.out
Executable file
Binary file not shown.
869
CMakeFiles/3.28.2/CompilerIdCXX/CMakeCXXCompilerId.cpp
Normal file
869
CMakeFiles/3.28.2/CompilerIdCXX/CMakeCXXCompilerId.cpp
Normal file
|
@ -0,0 +1,869 @@
|
|||
/* This source file must have a .cpp extension so that all C++ compilers
|
||||
recognize the extension without flags. Borland does not know .cxx for
|
||||
example. */
|
||||
#ifndef __cplusplus
|
||||
# error "A C compiler has been selected for C++."
|
||||
#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(__COMO__)
|
||||
# define COMPILER_ID "Comeau"
|
||||
/* __COMO_VERSION__ = VRR */
|
||||
# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100)
|
||||
# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100)
|
||||
|
||||
#elif 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_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(__open_xl__) && defined(__clang__)
|
||||
# define COMPILER_ID "IBMClang"
|
||||
# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__)
|
||||
# define COMPILER_VERSION_MINOR DEC(__open_xl_release__)
|
||||
# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__)
|
||||
# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__)
|
||||
|
||||
|
||||
#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(__clang__) && defined(__cray__)
|
||||
# define COMPILER_ID "CrayClang"
|
||||
# define COMPILER_VERSION_MAJOR DEC(__cray_major__)
|
||||
# define COMPILER_VERSION_MINOR DEC(__cray_minor__)
|
||||
# define COMPILER_VERSION_PATCH DEC(__cray_patchlevel__)
|
||||
# define COMPILER_VERSION_INTERNAL_STR __clang_version__
|
||||
|
||||
|
||||
#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(__TASKING__)
|
||||
# define COMPILER_ID "Tasking"
|
||||
# define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000)
|
||||
# define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100)
|
||||
# define COMPILER_VERSION_INTERNAL DEC(__VERSION__)
|
||||
|
||||
#elif defined(__ORANGEC__)
|
||||
# define COMPILER_ID "OrangeC"
|
||||
# define COMPILER_VERSION_MAJOR DEC(__ORANGEC_MAJOR__)
|
||||
# define COMPILER_VERSION_MINOR DEC(__ORANGEC_MINOR__)
|
||||
# define COMPILER_VERSION_PATCH DEC(__ORANGEC_PATCHLEVEL__)
|
||||
|
||||
#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/100 % 100)
|
||||
# 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(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__))
|
||||
# define COMPILER_ID "LCC"
|
||||
# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100)
|
||||
# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100)
|
||||
# if defined(__LCC_MINOR__)
|
||||
# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__)
|
||||
# endif
|
||||
# if defined(__GNUC__) && defined(__GNUC_MINOR__)
|
||||
# define SIMULATE_ID "GNU"
|
||||
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
|
||||
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
|
||||
# if defined(__GNUC_PATCHLEVEL__)
|
||||
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
|
||||
# endif
|
||||
# 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(_ADI_COMPILER)
|
||||
# define COMPILER_ID "ADSP"
|
||||
#if defined(__VERSIONNUM__)
|
||||
/* __VERSIONNUM__ = 0xVVRRPPTT */
|
||||
# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF)
|
||||
# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF)
|
||||
# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF)
|
||||
# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 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
|
||||
|
||||
# elif defined(_ADI_COMPILER)
|
||||
# define PLATFORM_ID "ADSP"
|
||||
|
||||
#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
|
||||
|
||||
# elif defined(__ADSPSHARC__)
|
||||
# define ARCHITECTURE_ID "SHARC"
|
||||
|
||||
# elif defined(__ADSPBLACKFIN__)
|
||||
# define ARCHITECTURE_ID "Blackfin"
|
||||
|
||||
#elif defined(__TASKING__)
|
||||
|
||||
# if defined(__CTC__) || defined(__CPTC__)
|
||||
# define ARCHITECTURE_ID "TriCore"
|
||||
|
||||
# elif defined(__CMCS__)
|
||||
# define ARCHITECTURE_ID "MCS"
|
||||
|
||||
# elif defined(__CARM__)
|
||||
# define ARCHITECTURE_ID "ARM"
|
||||
|
||||
# elif defined(__CARC__)
|
||||
# define ARCHITECTURE_ID "ARC"
|
||||
|
||||
# elif defined(__C51__)
|
||||
# define ARCHITECTURE_ID "8051"
|
||||
|
||||
# elif defined(__CPCP__)
|
||||
# define ARCHITECTURE_ID "PCP"
|
||||
|
||||
# else
|
||||
# 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["
|
||||
#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \
|
||||
defined(__TI_COMPILER_VERSION__)) && \
|
||||
!defined(__STRICT_ANSI__)
|
||||
"ON"
|
||||
#else
|
||||
"OFF"
|
||||
#endif
|
||||
"]";
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
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;
|
||||
}
|
BIN
CMakeFiles/3.28.2/CompilerIdCXX/a.out
Executable file
BIN
CMakeFiles/3.28.2/CompilerIdCXX/a.out
Executable file
Binary file not shown.
473
CMakeFiles/CMakeConfigureLog.yaml
Normal file
473
CMakeFiles/CMakeConfigureLog.yaml
Normal file
|
@ -0,0 +1,473 @@
|
|||
|
||||
---
|
||||
events:
|
||||
-
|
||||
kind: "message-v1"
|
||||
backtrace:
|
||||
- "/usr/share/cmake/Modules/CMakeDetermineSystem.cmake:233 (message)"
|
||||
- "CMakeLists.txt:3 (project)"
|
||||
message: |
|
||||
The system is: Linux - 6.10.10-200.fc40.x86_64 - x86_64
|
||||
-
|
||||
kind: "message-v1"
|
||||
backtrace:
|
||||
- "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:17 (message)"
|
||||
- "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)"
|
||||
- "/usr/share/cmake/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)"
|
||||
- "CMakeLists.txt:3 (project)"
|
||||
message: |
|
||||
Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded.
|
||||
Compiler: /usr/lib64/ccache/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/interfiber/dev/grbc/CMakeFiles/3.28.2/CompilerIdC/a.out
|
||||
|
||||
-
|
||||
kind: "message-v1"
|
||||
backtrace:
|
||||
- "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:17 (message)"
|
||||
- "/usr/share/cmake/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)"
|
||||
- "/usr/share/cmake/Modules/CMakeDetermineCXXCompiler.cmake:126 (CMAKE_DETERMINE_COMPILER_ID)"
|
||||
- "CMakeLists.txt:3 (project)"
|
||||
message: |
|
||||
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
|
||||
Compiler: /usr/lib64/ccache/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/interfiber/dev/grbc/CMakeFiles/3.28.2/CompilerIdCXX/a.out
|
||||
|
||||
-
|
||||
kind: "try_compile-v1"
|
||||
backtrace:
|
||||
- "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:57 (try_compile)"
|
||||
- "/usr/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)"
|
||||
- "CMakeLists.txt:3 (project)"
|
||||
checks:
|
||||
- "Detecting C compiler ABI info"
|
||||
directories:
|
||||
source: "/home/interfiber/dev/grbc/CMakeFiles/CMakeScratch/TryCompile-BIFfgi"
|
||||
binary: "/home/interfiber/dev/grbc/CMakeFiles/CMakeScratch/TryCompile-BIFfgi"
|
||||
cmakeVariables:
|
||||
CMAKE_C_FLAGS: ""
|
||||
CMAKE_C_FLAGS_DEBUG: "-g"
|
||||
CMAKE_EXE_LINKER_FLAGS: ""
|
||||
buildResult:
|
||||
variable: "CMAKE_C_ABI_COMPILED"
|
||||
cached: true
|
||||
stdout: |
|
||||
Change Dir: '/home/interfiber/dev/grbc/CMakeFiles/CMakeScratch/TryCompile-BIFfgi'
|
||||
|
||||
Run Build Command(s): /bin/ninja-build -v cmTC_72985
|
||||
[1/2] /usr/lib64/ccache/cc -v -o CMakeFiles/cmTC_72985.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c
|
||||
Using built-in specs.
|
||||
COLLECT_GCC=/bin/cc
|
||||
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
|
||||
OFFLOAD_TARGET_DEFAULT=1
|
||||
Target: x86_64-redhat-linux
|
||||
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,m2,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-libstdcxx-backtrace --with-libstdcxx-zoneinfo=/usr/share/zoneinfo --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-14.2.1-20240912/obj-x86_64-redhat-linux/isl-install --enable-offload-targets=nvptx-none,amdgcn-amdhsa --enable-offload-defaulted --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1
|
||||
Thread model: posix
|
||||
Supported LTO compression algorithms: zlib zstd
|
||||
gcc version 14.2.1 20240912 (Red Hat 14.2.1-3) (GCC)
|
||||
COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-c' '-o' 'CMakeFiles/cmTC_d48cf.dir/CMakeCCompilerABI.c.o' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_d48cf.dir/'
|
||||
/usr/libexec/gcc/x86_64-redhat-linux/14/cc1 -quiet -v /usr/share/cmake/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_d48cf.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -o /tmp/cc9Y0WIN.s
|
||||
GNU C17 (GCC) version 14.2.1 20240912 (Red Hat 14.2.1-3) (x86_64-redhat-linux)
|
||||
compiled by GNU C version 14.2.1 20240912 (Red Hat 14.2.1-3), GMP version 6.2.1, MPFR version 4.2.1, MPC version 1.3.1, isl version isl-0.24-GMP
|
||||
|
||||
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
|
||||
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/14/include-fixed"
|
||||
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/14/../../../../x86_64-redhat-linux/include"
|
||||
#include "..." search starts here:
|
||||
#include <...> search starts here:
|
||||
/usr/lib/gcc/x86_64-redhat-linux/14/include
|
||||
/usr/local/include
|
||||
/usr/include
|
||||
End of search list.
|
||||
Compiler executable checksum: a827ac3ce32367df3fd4c736df15654d
|
||||
COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-c' '-o' 'CMakeFiles/cmTC_d48cf.dir/CMakeCCompilerABI.c.o' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_d48cf.dir/'
|
||||
as -v --64 -o CMakeFiles/cmTC_d48cf.dir/CMakeCCompilerABI.c.o /tmp/cc9Y0WIN.s
|
||||
GNU assembler version 2.41 (x86_64-redhat-linux) using BFD version version 2.41-37.fc40
|
||||
COMPILER_PATH=/usr/libexec/gcc/x86_64-redhat-linux/14/:/usr/libexec/gcc/x86_64-redhat-linux/14/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/14/:/usr/lib/gcc/x86_64-redhat-linux/
|
||||
LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/14/:/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-redhat-linux/14/../../../:/lib/:/usr/lib/
|
||||
COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-c' '-o' 'CMakeFiles/cmTC_d48cf.dir/CMakeCCompilerABI.c.o' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_d48cf.dir/CMakeCCompilerABI.c.'
|
||||
[2/2] : && /usr/lib64/ccache/cc -v CMakeFiles/cmTC_72985.dir/CMakeCCompilerABI.c.o -o cmTC_72985 && :
|
||||
Using built-in specs.
|
||||
COLLECT_GCC=/bin/cc
|
||||
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/14/lto-wrapper
|
||||
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
|
||||
OFFLOAD_TARGET_DEFAULT=1
|
||||
Target: x86_64-redhat-linux
|
||||
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,m2,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-libstdcxx-backtrace --with-libstdcxx-zoneinfo=/usr/share/zoneinfo --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-14.2.1-20240912/obj-x86_64-redhat-linux/isl-install --enable-offload-targets=nvptx-none,amdgcn-amdhsa --enable-offload-defaulted --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1
|
||||
Thread model: posix
|
||||
Supported LTO compression algorithms: zlib zstd
|
||||
gcc version 14.2.1 20240912 (Red Hat 14.2.1-3) (GCC)
|
||||
COMPILER_PATH=/usr/libexec/gcc/x86_64-redhat-linux/14/:/usr/libexec/gcc/x86_64-redhat-linux/14/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/14/:/usr/lib/gcc/x86_64-redhat-linux/
|
||||
LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/14/:/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-redhat-linux/14/../../../:/lib/:/usr/lib/
|
||||
COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_72985' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_72985.'
|
||||
/usr/libexec/gcc/x86_64-redhat-linux/14/collect2 -plugin /usr/libexec/gcc/x86_64-redhat-linux/14/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-redhat-linux/14/lto-wrapper -plugin-opt=-fresolution=/tmp/ccOpoVpk.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 --no-add-needed --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTC_72985 /usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crt1.o /usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/14/crtbegin.o -L/usr/lib/gcc/x86_64-redhat-linux/14 -L/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/14/../../.. CMakeFiles/cmTC_72985.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-redhat-linux/14/crtend.o /usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crtn.o
|
||||
COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_72985' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_72985.'
|
||||
|
||||
exitCode: 0
|
||||
-
|
||||
kind: "message-v1"
|
||||
backtrace:
|
||||
- "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:127 (message)"
|
||||
- "/usr/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)"
|
||||
- "CMakeLists.txt:3 (project)"
|
||||
message: |
|
||||
Parsed C implicit include dir info: rv=done
|
||||
found start of include info
|
||||
found start of implicit include info
|
||||
add: [/usr/lib/gcc/x86_64-redhat-linux/14/include]
|
||||
add: [/usr/local/include]
|
||||
add: [/usr/include]
|
||||
end of search list found
|
||||
collapse include dir [/usr/lib/gcc/x86_64-redhat-linux/14/include] ==> [/usr/lib/gcc/x86_64-redhat-linux/14/include]
|
||||
collapse include dir [/usr/local/include] ==> [/usr/local/include]
|
||||
collapse include dir [/usr/include] ==> [/usr/include]
|
||||
implicit include dirs: [/usr/lib/gcc/x86_64-redhat-linux/14/include;/usr/local/include;/usr/include]
|
||||
|
||||
|
||||
-
|
||||
kind: "message-v1"
|
||||
backtrace:
|
||||
- "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:159 (message)"
|
||||
- "/usr/share/cmake/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)"
|
||||
- "CMakeLists.txt:3 (project)"
|
||||
message: |
|
||||
Parsed C implicit link information:
|
||||
link line regex: [^( *|.*[/\\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)]
|
||||
ignore line: [Change Dir: '/home/interfiber/dev/grbc/CMakeFiles/CMakeScratch/TryCompile-BIFfgi']
|
||||
ignore line: []
|
||||
ignore line: [Run Build Command(s): /bin/ninja-build -v cmTC_72985]
|
||||
ignore line: [[1/2] /usr/lib64/ccache/cc -v -o CMakeFiles/cmTC_72985.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake/Modules/CMakeCCompilerABI.c]
|
||||
ignore line: [Using built-in specs.]
|
||||
ignore line: [COLLECT_GCC=/bin/cc]
|
||||
ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa]
|
||||
ignore line: [OFFLOAD_TARGET_DEFAULT=1]
|
||||
ignore line: [Target: x86_64-redhat-linux]
|
||||
ignore line: [Configured with: ../configure --enable-bootstrap --enable-languages=c c++ fortran objc obj-c++ ada go d m2 lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-libstdcxx-backtrace --with-libstdcxx-zoneinfo=/usr/share/zoneinfo --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-14.2.1-20240912/obj-x86_64-redhat-linux/isl-install --enable-offload-targets=nvptx-none amdgcn-amdhsa --enable-offload-defaulted --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1]
|
||||
ignore line: [Thread model: posix]
|
||||
ignore line: [Supported LTO compression algorithms: zlib zstd]
|
||||
ignore line: [gcc version 14.2.1 20240912 (Red Hat 14.2.1-3) (GCC) ]
|
||||
ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-c' '-o' 'CMakeFiles/cmTC_d48cf.dir/CMakeCCompilerABI.c.o' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_d48cf.dir/']
|
||||
ignore line: [ /usr/libexec/gcc/x86_64-redhat-linux/14/cc1 -quiet -v /usr/share/cmake/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_d48cf.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fdiagnostics-color=always -o /tmp/cc9Y0WIN.s]
|
||||
ignore line: [GNU C17 (GCC) version 14.2.1 20240912 (Red Hat 14.2.1-3) (x86_64-redhat-linux)]
|
||||
ignore line: [ compiled by GNU C version 14.2.1 20240912 (Red Hat 14.2.1-3) GMP version 6.2.1 MPFR version 4.2.1 MPC version 1.3.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/lib/gcc/x86_64-redhat-linux/14/include-fixed"]
|
||||
ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/14/../../../../x86_64-redhat-linux/include"]
|
||||
ignore line: [#include "..." search starts here:]
|
||||
ignore line: [#include <...> search starts here:]
|
||||
ignore line: [ /usr/lib/gcc/x86_64-redhat-linux/14/include]
|
||||
ignore line: [ /usr/local/include]
|
||||
ignore line: [ /usr/include]
|
||||
ignore line: [End of search list.]
|
||||
ignore line: [Compiler executable checksum: a827ac3ce32367df3fd4c736df15654d]
|
||||
ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-c' '-o' 'CMakeFiles/cmTC_d48cf.dir/CMakeCCompilerABI.c.o' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_d48cf.dir/']
|
||||
ignore line: [ as -v --64 -o CMakeFiles/cmTC_d48cf.dir/CMakeCCompilerABI.c.o /tmp/cc9Y0WIN.s]
|
||||
ignore line: [GNU assembler version 2.41 (x86_64-redhat-linux) using BFD version version 2.41-37.fc40]
|
||||
ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-redhat-linux/14/:/usr/libexec/gcc/x86_64-redhat-linux/14/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/14/:/usr/lib/gcc/x86_64-redhat-linux/]
|
||||
ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/14/:/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-redhat-linux/14/../../../:/lib/:/usr/lib/]
|
||||
ignore line: [COLLECT_GCC_OPTIONS='-fdiagnostics-color=always' '-v' '-c' '-o' 'CMakeFiles/cmTC_d48cf.dir/CMakeCCompilerABI.c.o' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_d48cf.dir/CMakeCCompilerABI.c.']
|
||||
ignore line: [[2/2] : && /usr/lib64/ccache/cc -v CMakeFiles/cmTC_72985.dir/CMakeCCompilerABI.c.o -o cmTC_72985 && :]
|
||||
ignore line: [Using built-in specs.]
|
||||
ignore line: [COLLECT_GCC=/bin/cc]
|
||||
ignore line: [COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/14/lto-wrapper]
|
||||
ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa]
|
||||
ignore line: [OFFLOAD_TARGET_DEFAULT=1]
|
||||
ignore line: [Target: x86_64-redhat-linux]
|
||||
ignore line: [Configured with: ../configure --enable-bootstrap --enable-languages=c c++ fortran objc obj-c++ ada go d m2 lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-libstdcxx-backtrace --with-libstdcxx-zoneinfo=/usr/share/zoneinfo --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-14.2.1-20240912/obj-x86_64-redhat-linux/isl-install --enable-offload-targets=nvptx-none amdgcn-amdhsa --enable-offload-defaulted --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1]
|
||||
ignore line: [Thread model: posix]
|
||||
ignore line: [Supported LTO compression algorithms: zlib zstd]
|
||||
ignore line: [gcc version 14.2.1 20240912 (Red Hat 14.2.1-3) (GCC) ]
|
||||
ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-redhat-linux/14/:/usr/libexec/gcc/x86_64-redhat-linux/14/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/14/:/usr/lib/gcc/x86_64-redhat-linux/]
|
||||
ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/14/:/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-redhat-linux/14/../../../:/lib/:/usr/lib/]
|
||||
ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_72985' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_72985.']
|
||||
link line: [ /usr/libexec/gcc/x86_64-redhat-linux/14/collect2 -plugin /usr/libexec/gcc/x86_64-redhat-linux/14/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-redhat-linux/14/lto-wrapper -plugin-opt=-fresolution=/tmp/ccOpoVpk.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 --no-add-needed --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTC_72985 /usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crt1.o /usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/14/crtbegin.o -L/usr/lib/gcc/x86_64-redhat-linux/14 -L/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/14/../../.. CMakeFiles/cmTC_72985.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-redhat-linux/14/crtend.o /usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crtn.o]
|
||||
arg [/usr/libexec/gcc/x86_64-redhat-linux/14/collect2] ==> ignore
|
||||
arg [-plugin] ==> ignore
|
||||
arg [/usr/libexec/gcc/x86_64-redhat-linux/14/liblto_plugin.so] ==> ignore
|
||||
arg [-plugin-opt=/usr/libexec/gcc/x86_64-redhat-linux/14/lto-wrapper] ==> ignore
|
||||
arg [-plugin-opt=-fresolution=/tmp/ccOpoVpk.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 [--no-add-needed] ==> ignore
|
||||
arg [--eh-frame-hdr] ==> ignore
|
||||
arg [--hash-style=gnu] ==> ignore
|
||||
arg [-m] ==> ignore
|
||||
arg [elf_x86_64] ==> ignore
|
||||
arg [-dynamic-linker] ==> ignore
|
||||
arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
|
||||
arg [-o] ==> ignore
|
||||
arg [cmTC_72985] ==> ignore
|
||||
arg [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crt1.o] ==> obj [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crt1.o]
|
||||
arg [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crti.o] ==> obj [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crti.o]
|
||||
arg [/usr/lib/gcc/x86_64-redhat-linux/14/crtbegin.o] ==> obj [/usr/lib/gcc/x86_64-redhat-linux/14/crtbegin.o]
|
||||
arg [-L/usr/lib/gcc/x86_64-redhat-linux/14] ==> dir [/usr/lib/gcc/x86_64-redhat-linux/14]
|
||||
arg [-L/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64] ==> dir [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64]
|
||||
arg [-L/lib/../lib64] ==> dir [/lib/../lib64]
|
||||
arg [-L/usr/lib/../lib64] ==> dir [/usr/lib/../lib64]
|
||||
arg [-L/usr/lib/gcc/x86_64-redhat-linux/14/../../..] ==> dir [/usr/lib/gcc/x86_64-redhat-linux/14/../../..]
|
||||
arg [CMakeFiles/cmTC_72985.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-redhat-linux/14/crtend.o] ==> obj [/usr/lib/gcc/x86_64-redhat-linux/14/crtend.o]
|
||||
arg [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crtn.o] ==> obj [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crtn.o]
|
||||
collapse obj [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crt1.o] ==> [/usr/lib64/crt1.o]
|
||||
collapse obj [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crti.o] ==> [/usr/lib64/crti.o]
|
||||
collapse obj [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crtn.o] ==> [/usr/lib64/crtn.o]
|
||||
collapse library dir [/usr/lib/gcc/x86_64-redhat-linux/14] ==> [/usr/lib/gcc/x86_64-redhat-linux/14]
|
||||
collapse library dir [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64] ==> [/usr/lib64]
|
||||
collapse library dir [/lib/../lib64] ==> [/lib64]
|
||||
collapse library dir [/usr/lib/../lib64] ==> [/usr/lib64]
|
||||
collapse library dir [/usr/lib/gcc/x86_64-redhat-linux/14/../../..] ==> [/usr/lib]
|
||||
implicit libs: [gcc;gcc_s;c;gcc;gcc_s]
|
||||
implicit objs: [/usr/lib64/crt1.o;/usr/lib64/crti.o;/usr/lib/gcc/x86_64-redhat-linux/14/crtbegin.o;/usr/lib/gcc/x86_64-redhat-linux/14/crtend.o;/usr/lib64/crtn.o]
|
||||
implicit dirs: [/usr/lib/gcc/x86_64-redhat-linux/14;/usr/lib64;/lib64;/usr/lib]
|
||||
implicit fwks: []
|
||||
|
||||
|
||||
-
|
||||
kind: "try_compile-v1"
|
||||
backtrace:
|
||||
- "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:57 (try_compile)"
|
||||
- "/usr/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)"
|
||||
- "CMakeLists.txt:3 (project)"
|
||||
checks:
|
||||
- "Detecting CXX compiler ABI info"
|
||||
directories:
|
||||
source: "/home/interfiber/dev/grbc/CMakeFiles/CMakeScratch/TryCompile-IpOeDR"
|
||||
binary: "/home/interfiber/dev/grbc/CMakeFiles/CMakeScratch/TryCompile-IpOeDR"
|
||||
cmakeVariables:
|
||||
CMAKE_CXX_FLAGS: ""
|
||||
CMAKE_CXX_FLAGS_DEBUG: "-g"
|
||||
CMAKE_EXE_LINKER_FLAGS: ""
|
||||
buildResult:
|
||||
variable: "CMAKE_CXX_ABI_COMPILED"
|
||||
cached: true
|
||||
stdout: |
|
||||
Change Dir: '/home/interfiber/dev/grbc/CMakeFiles/CMakeScratch/TryCompile-IpOeDR'
|
||||
|
||||
Run Build Command(s): /bin/ninja-build -v cmTC_ebdbb
|
||||
[1/2] /usr/lib64/ccache/c++ -v -o CMakeFiles/cmTC_ebdbb.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp
|
||||
Using built-in specs.
|
||||
COLLECT_GCC=/bin/c++
|
||||
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
|
||||
OFFLOAD_TARGET_DEFAULT=1
|
||||
Target: x86_64-redhat-linux
|
||||
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,m2,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-libstdcxx-backtrace --with-libstdcxx-zoneinfo=/usr/share/zoneinfo --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-14.2.1-20240912/obj-x86_64-redhat-linux/isl-install --enable-offload-targets=nvptx-none,amdgcn-amdhsa --enable-offload-defaulted --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1
|
||||
Thread model: posix
|
||||
Supported LTO compression algorithms: zlib zstd
|
||||
gcc version 14.2.1 20240912 (Red Hat 14.2.1-3) (GCC)
|
||||
COLLECT_GCC_OPTIONS='-v' '-c' '-o' 'CMakeFiles/cmTC_96d86.dir/CMakeCXXCompilerABI.cpp.o' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_96d86.dir/'
|
||||
/usr/libexec/gcc/x86_64-redhat-linux/14/cc1plus -quiet -v -D_GNU_SOURCE /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_96d86.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -o /tmp/ccqA0DFP.s
|
||||
GNU C++17 (GCC) version 14.2.1 20240912 (Red Hat 14.2.1-3) (x86_64-redhat-linux)
|
||||
compiled by GNU C version 14.2.1 20240912 (Red Hat 14.2.1-3), GMP version 6.2.1, MPFR version 4.2.1, MPC version 1.3.1, isl version isl-0.24-GMP
|
||||
|
||||
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
|
||||
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/14/include-fixed"
|
||||
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/14/../../../../x86_64-redhat-linux/include"
|
||||
#include "..." search starts here:
|
||||
#include <...> search starts here:
|
||||
/usr/lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14
|
||||
/usr/lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14/x86_64-redhat-linux
|
||||
/usr/lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14/backward
|
||||
/usr/lib/gcc/x86_64-redhat-linux/14/include
|
||||
/usr/local/include
|
||||
/usr/include
|
||||
End of search list.
|
||||
Compiler executable checksum: eec2371a83b7453e8c6bc9f634c2b1c3
|
||||
COLLECT_GCC_OPTIONS='-v' '-c' '-o' 'CMakeFiles/cmTC_96d86.dir/CMakeCXXCompilerABI.cpp.o' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_96d86.dir/'
|
||||
as -v --64 -o CMakeFiles/cmTC_96d86.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccqA0DFP.s
|
||||
GNU assembler version 2.41 (x86_64-redhat-linux) using BFD version version 2.41-37.fc40
|
||||
COMPILER_PATH=/usr/libexec/gcc/x86_64-redhat-linux/14/:/usr/libexec/gcc/x86_64-redhat-linux/14/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/14/:/usr/lib/gcc/x86_64-redhat-linux/
|
||||
LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/14/:/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-redhat-linux/14/../../../:/lib/:/usr/lib/
|
||||
COLLECT_GCC_OPTIONS='-v' '-c' '-o' 'CMakeFiles/cmTC_96d86.dir/CMakeCXXCompilerABI.cpp.o' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_96d86.dir/CMakeCXXCompilerABI.cpp.'
|
||||
[2/2] : && /usr/lib64/ccache/c++ -v CMakeFiles/cmTC_ebdbb.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_ebdbb && :
|
||||
Using built-in specs.
|
||||
COLLECT_GCC=/bin/c++
|
||||
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/14/lto-wrapper
|
||||
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
|
||||
OFFLOAD_TARGET_DEFAULT=1
|
||||
Target: x86_64-redhat-linux
|
||||
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,m2,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-libstdcxx-backtrace --with-libstdcxx-zoneinfo=/usr/share/zoneinfo --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-14.2.1-20240912/obj-x86_64-redhat-linux/isl-install --enable-offload-targets=nvptx-none,amdgcn-amdhsa --enable-offload-defaulted --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1
|
||||
Thread model: posix
|
||||
Supported LTO compression algorithms: zlib zstd
|
||||
gcc version 14.2.1 20240912 (Red Hat 14.2.1-3) (GCC)
|
||||
COMPILER_PATH=/usr/libexec/gcc/x86_64-redhat-linux/14/:/usr/libexec/gcc/x86_64-redhat-linux/14/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/14/:/usr/lib/gcc/x86_64-redhat-linux/
|
||||
LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/14/:/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-redhat-linux/14/../../../:/lib/:/usr/lib/
|
||||
COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_ebdbb' '-foffload-options=-l_GCC_m' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_ebdbb.'
|
||||
/usr/libexec/gcc/x86_64-redhat-linux/14/collect2 -plugin /usr/libexec/gcc/x86_64-redhat-linux/14/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-redhat-linux/14/lto-wrapper -plugin-opt=-fresolution=/tmp/ccM5qrwz.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 --no-add-needed --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTC_ebdbb /usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crt1.o /usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/14/crtbegin.o -L/usr/lib/gcc/x86_64-redhat-linux/14 -L/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/14/../../.. CMakeFiles/cmTC_ebdbb.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-redhat-linux/14/crtend.o /usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crtn.o
|
||||
COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_ebdbb' '-foffload-options=-l_GCC_m' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_ebdbb.'
|
||||
|
||||
exitCode: 0
|
||||
-
|
||||
kind: "message-v1"
|
||||
backtrace:
|
||||
- "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:127 (message)"
|
||||
- "/usr/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)"
|
||||
- "CMakeLists.txt:3 (project)"
|
||||
message: |
|
||||
Parsed CXX implicit include dir info: rv=done
|
||||
found start of include info
|
||||
found start of implicit include info
|
||||
add: [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14]
|
||||
add: [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14/x86_64-redhat-linux]
|
||||
add: [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14/backward]
|
||||
add: [/usr/lib/gcc/x86_64-redhat-linux/14/include]
|
||||
add: [/usr/local/include]
|
||||
add: [/usr/include]
|
||||
end of search list found
|
||||
collapse include dir [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14] ==> [/usr/include/c++/14]
|
||||
collapse include dir [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14/x86_64-redhat-linux] ==> [/usr/include/c++/14/x86_64-redhat-linux]
|
||||
collapse include dir [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14/backward] ==> [/usr/include/c++/14/backward]
|
||||
collapse include dir [/usr/lib/gcc/x86_64-redhat-linux/14/include] ==> [/usr/lib/gcc/x86_64-redhat-linux/14/include]
|
||||
collapse include dir [/usr/local/include] ==> [/usr/local/include]
|
||||
collapse include dir [/usr/include] ==> [/usr/include]
|
||||
implicit include dirs: [/usr/include/c++/14;/usr/include/c++/14/x86_64-redhat-linux;/usr/include/c++/14/backward;/usr/lib/gcc/x86_64-redhat-linux/14/include;/usr/local/include;/usr/include]
|
||||
|
||||
|
||||
-
|
||||
kind: "message-v1"
|
||||
backtrace:
|
||||
- "/usr/share/cmake/Modules/CMakeDetermineCompilerABI.cmake:159 (message)"
|
||||
- "/usr/share/cmake/Modules/CMakeTestCXXCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)"
|
||||
- "CMakeLists.txt:3 (project)"
|
||||
message: |
|
||||
Parsed CXX implicit link information:
|
||||
link line regex: [^( *|.*[/\\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)]
|
||||
ignore line: [Change Dir: '/home/interfiber/dev/grbc/CMakeFiles/CMakeScratch/TryCompile-IpOeDR']
|
||||
ignore line: []
|
||||
ignore line: [Run Build Command(s): /bin/ninja-build -v cmTC_ebdbb]
|
||||
ignore line: [[1/2] /usr/lib64/ccache/c++ -v -o CMakeFiles/cmTC_ebdbb.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp]
|
||||
ignore line: [Using built-in specs.]
|
||||
ignore line: [COLLECT_GCC=/bin/c++]
|
||||
ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa]
|
||||
ignore line: [OFFLOAD_TARGET_DEFAULT=1]
|
||||
ignore line: [Target: x86_64-redhat-linux]
|
||||
ignore line: [Configured with: ../configure --enable-bootstrap --enable-languages=c c++ fortran objc obj-c++ ada go d m2 lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-libstdcxx-backtrace --with-libstdcxx-zoneinfo=/usr/share/zoneinfo --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-14.2.1-20240912/obj-x86_64-redhat-linux/isl-install --enable-offload-targets=nvptx-none amdgcn-amdhsa --enable-offload-defaulted --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1]
|
||||
ignore line: [Thread model: posix]
|
||||
ignore line: [Supported LTO compression algorithms: zlib zstd]
|
||||
ignore line: [gcc version 14.2.1 20240912 (Red Hat 14.2.1-3) (GCC) ]
|
||||
ignore line: [COLLECT_GCC_OPTIONS='-v' '-c' '-o' 'CMakeFiles/cmTC_96d86.dir/CMakeCXXCompilerABI.cpp.o' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_96d86.dir/']
|
||||
ignore line: [ /usr/libexec/gcc/x86_64-redhat-linux/14/cc1plus -quiet -v -D_GNU_SOURCE /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_96d86.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -o /tmp/ccqA0DFP.s]
|
||||
ignore line: [GNU C++17 (GCC) version 14.2.1 20240912 (Red Hat 14.2.1-3) (x86_64-redhat-linux)]
|
||||
ignore line: [ compiled by GNU C version 14.2.1 20240912 (Red Hat 14.2.1-3) GMP version 6.2.1 MPFR version 4.2.1 MPC version 1.3.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/lib/gcc/x86_64-redhat-linux/14/include-fixed"]
|
||||
ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/14/../../../../x86_64-redhat-linux/include"]
|
||||
ignore line: [#include "..." search starts here:]
|
||||
ignore line: [#include <...> search starts here:]
|
||||
ignore line: [ /usr/lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14]
|
||||
ignore line: [ /usr/lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14/x86_64-redhat-linux]
|
||||
ignore line: [ /usr/lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14/backward]
|
||||
ignore line: [ /usr/lib/gcc/x86_64-redhat-linux/14/include]
|
||||
ignore line: [ /usr/local/include]
|
||||
ignore line: [ /usr/include]
|
||||
ignore line: [End of search list.]
|
||||
ignore line: [Compiler executable checksum: eec2371a83b7453e8c6bc9f634c2b1c3]
|
||||
ignore line: [COLLECT_GCC_OPTIONS='-v' '-c' '-o' 'CMakeFiles/cmTC_96d86.dir/CMakeCXXCompilerABI.cpp.o' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_96d86.dir/']
|
||||
ignore line: [ as -v --64 -o CMakeFiles/cmTC_96d86.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccqA0DFP.s]
|
||||
ignore line: [GNU assembler version 2.41 (x86_64-redhat-linux) using BFD version version 2.41-37.fc40]
|
||||
ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-redhat-linux/14/:/usr/libexec/gcc/x86_64-redhat-linux/14/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/14/:/usr/lib/gcc/x86_64-redhat-linux/]
|
||||
ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/14/:/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-redhat-linux/14/../../../:/lib/:/usr/lib/]
|
||||
ignore line: [COLLECT_GCC_OPTIONS='-v' '-c' '-o' 'CMakeFiles/cmTC_96d86.dir/CMakeCXXCompilerABI.cpp.o' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_96d86.dir/CMakeCXXCompilerABI.cpp.']
|
||||
ignore line: [[2/2] : && /usr/lib64/ccache/c++ -v CMakeFiles/cmTC_ebdbb.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_ebdbb && :]
|
||||
ignore line: [Using built-in specs.]
|
||||
ignore line: [COLLECT_GCC=/bin/c++]
|
||||
ignore line: [COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/14/lto-wrapper]
|
||||
ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa]
|
||||
ignore line: [OFFLOAD_TARGET_DEFAULT=1]
|
||||
ignore line: [Target: x86_64-redhat-linux]
|
||||
ignore line: [Configured with: ../configure --enable-bootstrap --enable-languages=c c++ fortran objc obj-c++ ada go d m2 lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-libstdcxx-backtrace --with-libstdcxx-zoneinfo=/usr/share/zoneinfo --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-14.2.1-20240912/obj-x86_64-redhat-linux/isl-install --enable-offload-targets=nvptx-none amdgcn-amdhsa --enable-offload-defaulted --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1]
|
||||
ignore line: [Thread model: posix]
|
||||
ignore line: [Supported LTO compression algorithms: zlib zstd]
|
||||
ignore line: [gcc version 14.2.1 20240912 (Red Hat 14.2.1-3) (GCC) ]
|
||||
ignore line: [COMPILER_PATH=/usr/libexec/gcc/x86_64-redhat-linux/14/:/usr/libexec/gcc/x86_64-redhat-linux/14/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/14/:/usr/lib/gcc/x86_64-redhat-linux/]
|
||||
ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/14/:/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-redhat-linux/14/../../../:/lib/:/usr/lib/]
|
||||
ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_ebdbb' '-foffload-options=-l_GCC_m' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_ebdbb.']
|
||||
link line: [ /usr/libexec/gcc/x86_64-redhat-linux/14/collect2 -plugin /usr/libexec/gcc/x86_64-redhat-linux/14/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-redhat-linux/14/lto-wrapper -plugin-opt=-fresolution=/tmp/ccM5qrwz.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 --no-add-needed --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o cmTC_ebdbb /usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crt1.o /usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/14/crtbegin.o -L/usr/lib/gcc/x86_64-redhat-linux/14 -L/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/14/../../.. CMakeFiles/cmTC_ebdbb.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-redhat-linux/14/crtend.o /usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crtn.o]
|
||||
arg [/usr/libexec/gcc/x86_64-redhat-linux/14/collect2] ==> ignore
|
||||
arg [-plugin] ==> ignore
|
||||
arg [/usr/libexec/gcc/x86_64-redhat-linux/14/liblto_plugin.so] ==> ignore
|
||||
arg [-plugin-opt=/usr/libexec/gcc/x86_64-redhat-linux/14/lto-wrapper] ==> ignore
|
||||
arg [-plugin-opt=-fresolution=/tmp/ccM5qrwz.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 [--no-add-needed] ==> ignore
|
||||
arg [--eh-frame-hdr] ==> ignore
|
||||
arg [--hash-style=gnu] ==> ignore
|
||||
arg [-m] ==> ignore
|
||||
arg [elf_x86_64] ==> ignore
|
||||
arg [-dynamic-linker] ==> ignore
|
||||
arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
|
||||
arg [-o] ==> ignore
|
||||
arg [cmTC_ebdbb] ==> ignore
|
||||
arg [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crt1.o] ==> obj [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crt1.o]
|
||||
arg [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crti.o] ==> obj [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crti.o]
|
||||
arg [/usr/lib/gcc/x86_64-redhat-linux/14/crtbegin.o] ==> obj [/usr/lib/gcc/x86_64-redhat-linux/14/crtbegin.o]
|
||||
arg [-L/usr/lib/gcc/x86_64-redhat-linux/14] ==> dir [/usr/lib/gcc/x86_64-redhat-linux/14]
|
||||
arg [-L/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64] ==> dir [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64]
|
||||
arg [-L/lib/../lib64] ==> dir [/lib/../lib64]
|
||||
arg [-L/usr/lib/../lib64] ==> dir [/usr/lib/../lib64]
|
||||
arg [-L/usr/lib/gcc/x86_64-redhat-linux/14/../../..] ==> dir [/usr/lib/gcc/x86_64-redhat-linux/14/../../..]
|
||||
arg [CMakeFiles/cmTC_ebdbb.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-redhat-linux/14/crtend.o] ==> obj [/usr/lib/gcc/x86_64-redhat-linux/14/crtend.o]
|
||||
arg [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crtn.o] ==> obj [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crtn.o]
|
||||
collapse obj [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crt1.o] ==> [/usr/lib64/crt1.o]
|
||||
collapse obj [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crti.o] ==> [/usr/lib64/crti.o]
|
||||
collapse obj [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64/crtn.o] ==> [/usr/lib64/crtn.o]
|
||||
collapse library dir [/usr/lib/gcc/x86_64-redhat-linux/14] ==> [/usr/lib/gcc/x86_64-redhat-linux/14]
|
||||
collapse library dir [/usr/lib/gcc/x86_64-redhat-linux/14/../../../../lib64] ==> [/usr/lib64]
|
||||
collapse library dir [/lib/../lib64] ==> [/lib64]
|
||||
collapse library dir [/usr/lib/../lib64] ==> [/usr/lib64]
|
||||
collapse library dir [/usr/lib/gcc/x86_64-redhat-linux/14/../../..] ==> [/usr/lib]
|
||||
implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc]
|
||||
implicit objs: [/usr/lib64/crt1.o;/usr/lib64/crti.o;/usr/lib/gcc/x86_64-redhat-linux/14/crtbegin.o;/usr/lib/gcc/x86_64-redhat-linux/14/crtend.o;/usr/lib64/crtn.o]
|
||||
implicit dirs: [/usr/lib/gcc/x86_64-redhat-linux/14;/usr/lib64;/lib64;/usr/lib]
|
||||
implicit fwks: []
|
||||
|
||||
|
||||
...
|
41
CMakeFiles/TargetDirectories.txt
Normal file
41
CMakeFiles/TargetDirectories.txt
Normal file
|
@ -0,0 +1,41 @@
|
|||
/home/interfiber/dev/grbc/CMakeFiles/grbc.dir
|
||||
/home/interfiber/dev/grbc/CMakeFiles/edit_cache.dir
|
||||
/home/interfiber/dev/grbc/CMakeFiles/rebuild_cache.dir
|
||||
/home/interfiber/dev/grbc/CMakeFiles/list_install_components.dir
|
||||
/home/interfiber/dev/grbc/CMakeFiles/install.dir
|
||||
/home/interfiber/dev/grbc/CMakeFiles/install/local.dir
|
||||
/home/interfiber/dev/grbc/CMakeFiles/install/strip.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/Experimental.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/Nightly.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/Continuous.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/NightlyMemoryCheck.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/NightlyStart.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/NightlyUpdate.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/NightlyConfigure.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/NightlyBuild.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/NightlyTest.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/NightlyCoverage.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/NightlyMemCheck.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/NightlySubmit.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/ExperimentalStart.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/ExperimentalUpdate.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/ExperimentalConfigure.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/ExperimentalBuild.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/ExperimentalTest.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/ExperimentalCoverage.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/ExperimentalMemCheck.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/ExperimentalSubmit.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/ContinuousStart.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/ContinuousUpdate.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/ContinuousConfigure.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/ContinuousBuild.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/ContinuousTest.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/ContinuousCoverage.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/ContinuousMemCheck.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/ContinuousSubmit.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/edit_cache.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/rebuild_cache.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/list_install_components.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/install.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/install/local.dir
|
||||
/home/interfiber/dev/grbc/vendor/sol2/CMakeFiles/install/strip.dir
|
1
CMakeFiles/cmake.check_cache
Normal file
1
CMakeFiles/cmake.check_cache
Normal file
|
@ -0,0 +1 @@
|
|||
# This file is generated by cmake for dependency checking of the CMakeCache.txt file
|
1
CMakeFiles/cmake.verify_globs
Normal file
1
CMakeFiles/cmake.verify_globs
Normal file
|
@ -0,0 +1 @@
|
|||
# This file is generated by CMake for checking of the VerifyGlobs.cmake file
|
73
CMakeFiles/rules.ninja
Normal file
73
CMakeFiles/rules.ninja
Normal file
|
@ -0,0 +1,73 @@
|
|||
# CMAKE generated file: DO NOT EDIT!
|
||||
# Generated by "Ninja" Generator, CMake Version 3.28
|
||||
|
||||
# This file contains all the rules used to get the outputs files
|
||||
# built from the input files.
|
||||
# It is included in the main 'build.ninja'.
|
||||
|
||||
# =============================================================================
|
||||
# Project: grbc
|
||||
# Configurations: RelWithDebInfo
|
||||
# =============================================================================
|
||||
# =============================================================================
|
||||
|
||||
#############################################
|
||||
# Rule for compiling CXX files.
|
||||
|
||||
rule CXX_COMPILER__grbc_unscanned_RelWithDebInfo
|
||||
depfile = $DEP_FILE
|
||||
deps = gcc
|
||||
command = ${LAUNCHER}${CODE_CHECK}/usr/lib64/ccache/c++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
|
||||
description = Building CXX object $out
|
||||
|
||||
|
||||
#############################################
|
||||
# Rule for linking CXX executable.
|
||||
|
||||
rule CXX_EXECUTABLE_LINKER__grbc_RelWithDebInfo
|
||||
command = $PRE_LINK && /usr/lib64/ccache/c++ $FLAGS $LINK_FLAGS $in -o $TARGET_FILE $LINK_PATH $LINK_LIBRARIES && $POST_BUILD
|
||||
description = Linking CXX executable $TARGET_FILE
|
||||
restat = $RESTAT
|
||||
|
||||
|
||||
#############################################
|
||||
# Rule for running custom commands.
|
||||
|
||||
rule CUSTOM_COMMAND
|
||||
command = $COMMAND
|
||||
description = $DESC
|
||||
|
||||
|
||||
#############################################
|
||||
# Rule for re-running cmake.
|
||||
|
||||
rule RERUN_CMAKE
|
||||
command = /usr/bin/cmake --regenerate-during-build -S/home/interfiber/dev/grbc -B/home/interfiber/dev/grbc
|
||||
description = Re-running CMake...
|
||||
generator = 1
|
||||
|
||||
|
||||
#############################################
|
||||
# Rule for re-checking globbed directories.
|
||||
|
||||
rule VERIFY_GLOBS
|
||||
command = /usr/bin/cmake -P /home/interfiber/dev/grbc/CMakeFiles/VerifyGlobs.cmake
|
||||
description = Re-checking globbed directories...
|
||||
generator = 1
|
||||
|
||||
|
||||
#############################################
|
||||
# Rule for cleaning all built files.
|
||||
|
||||
rule CLEAN
|
||||
command = /bin/ninja-build $FILE_ARG -t clean $TARGETS
|
||||
description = Cleaning all built files...
|
||||
|
||||
|
||||
#############################################
|
||||
# Rule for printing all primary targets available.
|
||||
|
||||
rule HELP
|
||||
command = /bin/ninja-build -t targets
|
||||
description = All primary targets available:
|
||||
|
|
@ -2,10 +2,14 @@ cmake_minimum_required(VERSION 3.28)
|
|||
|
||||
project(grbc)
|
||||
|
||||
message(${CMAKE_CXX_FLAGS_RELEASE})
|
||||
|
||||
add_subdirectory("vendor/sol2")
|
||||
|
||||
include_directories("include")
|
||||
include_directories("include/grbc")
|
||||
include_directories("vendor/hotwire/src")
|
||||
include_directories("vendor/sol2/include")
|
||||
|
||||
add_executable(grbc src/main.cc src/utils.cc src/file.cc src/target_exe.cc src/platform.cc src/ninja.cc src/generator.cc src/target_lib.cc src/package.cc src/ext.cc src/ext_pkg_config.cc)
|
||||
target_link_libraries(grbc sol2 lua)
|
||||
add_executable(grbc src/ext_dynamic.cc vendor/hotwire/src/dlopen.c src/main.cc src/options.cc src/ext_easy.cc src/utils.cc src/file.cc src/target_exe.cc src/platform.cc src/ninja.cc src/generator.cc src/target_lib.cc src/package.cc src/ext.cc src/ext_pkg_config.cc src/task.cc src/ext_profiles.cc src/ext_cmake.cc src/cJSON.c)
|
||||
target_link_libraries(grbc sol2 lua)
|
||||
|
|
107
HConfig
107
HConfig
|
@ -1,15 +1,27 @@
|
|||
grbc_want_version("1.0")
|
||||
grbc_ext("GRBC_EXT_pkg_config")
|
||||
grbc_ext("GRBC_EXT_profiles")
|
||||
grbc_ext("GRBC_EXT_easy")
|
||||
grbc_ext("GRBC_EXT_dynamic_extensions")
|
||||
grbc_ext("GRBC_EXT_cmake")
|
||||
|
||||
grbc_set_profile("release")
|
||||
local cmake_project = grbc_import_cmake("/tmp/SDL", CMakeConfig.new({
|
||||
configure_arguments = {}
|
||||
}))
|
||||
|
||||
local grbc_extensions = grbc_library(LibraryConfig.new({
|
||||
name = "libgrbc_extensions",
|
||||
language_type = LanguageType.Cpp,
|
||||
print(cmake_project:get_library_string())
|
||||
|
||||
local sdl_pkg = cmake_project:get_library("SDL3-shared")
|
||||
|
||||
grbc_global_properties({
|
||||
grbc_cxx_version("c++17")
|
||||
})
|
||||
|
||||
local hotwire = grbc_library(LibraryConfig.new({
|
||||
name = "libhotwire",
|
||||
language_type = LanguageType.C,
|
||||
files = {
|
||||
grbc_file("src/ext_pkg_config.cc"),
|
||||
grbc_file("src/ext_profiles.cc")
|
||||
grbc_file("vendor/hotwire/src/dlopen.c")
|
||||
},
|
||||
lib_type = LibraryType.Static,
|
||||
|
||||
|
@ -17,8 +29,74 @@ local grbc_extensions = grbc_library(LibraryConfig.new({
|
|||
compile_flags = {},
|
||||
linker_flags = {},
|
||||
|
||||
include_dirs = {
|
||||
"vendor/hotwire/src",
|
||||
},
|
||||
|
||||
properties = {
|
||||
},
|
||||
|
||||
package_config = PackageConfig.new({
|
||||
name = "libhotwire",
|
||||
libraries = {},
|
||||
include_dirs = {
|
||||
grbc_file("vendor/hotwire/src")
|
||||
},
|
||||
compile_flags = {},
|
||||
linker_flags = {},
|
||||
})
|
||||
}))
|
||||
|
||||
local cjson = grbc_library(LibraryConfig.new({
|
||||
name = "libcjson",
|
||||
language_type = LanguageType.C,
|
||||
files = {
|
||||
grbc_file("src/cJSON.c")
|
||||
},
|
||||
lib_type = LibraryType.Static,
|
||||
|
||||
requirements = {},
|
||||
compile_flags = {},
|
||||
linker_flags = {},
|
||||
|
||||
include_dirs = {
|
||||
"include/grbc",
|
||||
},
|
||||
|
||||
properties = {
|
||||
},
|
||||
|
||||
package_config = PackageConfig.new({
|
||||
name = "libcjson",
|
||||
libraries = {},
|
||||
include_dirs = {
|
||||
grbc_file("include/grbc")
|
||||
},
|
||||
compile_flags = {},
|
||||
linker_flags = {},
|
||||
})
|
||||
}))
|
||||
|
||||
local grbc_extensions = grbc_library(LibraryConfig.new({
|
||||
name = "libgrbc_extensions",
|
||||
language_type = LanguageType.Cpp,
|
||||
files = {
|
||||
grbc_file("src/ext_pkg_config.cc"),
|
||||
grbc_file("src/ext_profiles.cc"),
|
||||
grbc_file("src/ext_easy.cc"),
|
||||
grbc_file("src/ext_dynamic.cc"),
|
||||
grbc_file("src/ext_cmake.cc")
|
||||
},
|
||||
lib_type = LibraryType.Static,
|
||||
|
||||
requirements = {
|
||||
},
|
||||
compile_flags = {},
|
||||
linker_flags = {},
|
||||
|
||||
include_dirs = {
|
||||
"include",
|
||||
"vendor/hotwire/src",
|
||||
"vendor/sol2/include"
|
||||
},
|
||||
|
||||
|
@ -46,11 +124,16 @@ local grbc_lib = grbc_library(LibraryConfig.new({
|
|||
grbc_file("src/generator.cc"),
|
||||
grbc_file("src/target_lib.cc"),
|
||||
grbc_file("src/package.cc"),
|
||||
grbc_file("src/ext.cc")
|
||||
grbc_file("src/ext.cc"),
|
||||
grbc_file("src/task.cc"),
|
||||
grbc_file("src/options.cc")
|
||||
},
|
||||
lib_type = LibraryType.Static,
|
||||
|
||||
requirements = {},
|
||||
requirements = {
|
||||
grbc_pkg("libhotwire"),
|
||||
grbc_pkg("libcjson")
|
||||
},
|
||||
compile_flags = {},
|
||||
linker_flags = {},
|
||||
include_dirs = {
|
||||
|
@ -80,10 +163,12 @@ local grbc_exe = grbc_executable(ExecutableConfig.new({
|
|||
requirements = {
|
||||
grbc_pkg_config("lua"),
|
||||
grbc_pkg("libgrbc"),
|
||||
grbc_pkg("libgrbc_extensions")
|
||||
},
|
||||
compile_flags = {
|
||||
grbc_pkg("libgrbc_extensions"),
|
||||
grbc_pkg("libhotwire"),
|
||||
grbc_pkg("libcjson"),
|
||||
sdl_pkg
|
||||
},
|
||||
compile_flags = {},
|
||||
linker_flags = {},
|
||||
include_dirs = {}
|
||||
}))
|
||||
|
|
11
README.md
11
README.md
|
@ -1,12 +1,7 @@
|
|||
# GRBC
|
||||
GRaphite Build Configurator
|
||||
|
||||
## About
|
||||
GRBC was developed because I hate CMake. I liked the build systems built for zig, and jai, but wanted something for C++. I also enjoyed how Vulkan extensions were managed and took insipiration from them to make grbc extensible.
|
||||

|
||||
|
||||
## Benifits
|
||||
* GRBC is fast, almost no wait time for build.ninja generation
|
||||
* GRBC scripts are easy to read, and predictable
|
||||
* GRBC produces ninja files which can be ran without grbc installed
|
||||
* GRBC has cmake interop, so libraries using cmake can still be used
|
||||
* GRBC is well documented
|
||||
## About
|
||||
GRBC is a portable project generator for C/C++. By default it comes with a ninja generator but can be modified to support other formats if you wish.
|
95
build.ninja
95
build.ninja
|
@ -1,4 +1,5 @@
|
|||
### GRBC BUILT-IN NINJA GENERATOR ###
|
||||
### GENERATED BY THE GRBC BUILT-IN NINJA GENERATOR ###
|
||||
### GENERATED ON: 1728829359 ###
|
||||
|
||||
## Default variables ##
|
||||
|
||||
|
@ -40,77 +41,137 @@ rule archive
|
|||
command = rm -f $out; ar crs $out $in
|
||||
description = Creating static library $out
|
||||
|
||||
## Compile: vendor/hotwire/src/dlopen.c ##
|
||||
|
||||
build $builddir/vendor/hotwire/src/dlopen.o: cc vendor/hotwire/src/dlopen.c
|
||||
p_cflags = -std=c++17 -Ivendor/hotwire/src
|
||||
|
||||
## Link: libhotwire.a ##
|
||||
|
||||
build $builddir/libhotwire.a: archive $builddir/vendor/hotwire/src/dlopen.o
|
||||
|
||||
## Compile: src/cJSON.c ##
|
||||
|
||||
build $builddir/src/cJSON.o: cc src/cJSON.c
|
||||
p_cflags = -std=c++17 -Iinclude/grbc
|
||||
|
||||
## Link: libcjson.a ##
|
||||
|
||||
build $builddir/libcjson.a: archive $builddir/src/cJSON.o
|
||||
|
||||
## Compile: src/ext_pkg_config.cc ##
|
||||
|
||||
build $builddir/src/ext_pkg_config.o: cxx src/ext_pkg_config.cc
|
||||
p_cflags = -Iinclude -Ivendor/sol2/include
|
||||
p_cflags = -std=c++17 -Iinclude -Ivendor/hotwire/src -Ivendor/sol2/include
|
||||
|
||||
## Compile: src/ext_profiles.cc ##
|
||||
|
||||
build $builddir/src/ext_profiles.o: cxx src/ext_profiles.cc
|
||||
p_cflags = -Iinclude -Ivendor/sol2/include
|
||||
p_cflags = -std=c++17 -Iinclude -Ivendor/hotwire/src -Ivendor/sol2/include
|
||||
|
||||
## Compile: src/ext_easy.cc ##
|
||||
|
||||
build $builddir/src/ext_easy.o: cxx src/ext_easy.cc
|
||||
p_cflags = -std=c++17 -Iinclude -Ivendor/hotwire/src -Ivendor/sol2/include
|
||||
|
||||
## Compile: src/ext_dynamic.cc ##
|
||||
|
||||
build $builddir/src/ext_dynamic.o: cxx src/ext_dynamic.cc
|
||||
p_cflags = -std=c++17 -Iinclude -Ivendor/hotwire/src -Ivendor/sol2/include
|
||||
|
||||
## Compile: src/ext_cmake.cc ##
|
||||
|
||||
build $builddir/src/ext_cmake.o: cxx src/ext_cmake.cc
|
||||
p_cflags = -std=c++17 -Iinclude -Ivendor/hotwire/src -Ivendor/sol2/include
|
||||
|
||||
## Link: libgrbc_extensions.a ##
|
||||
|
||||
build $builddir/libgrbc_extensions.a: archive $builddir/src/ext_pkg_config.o $builddir/src/ext_profiles.o
|
||||
build $builddir/libgrbc_extensions.a: archive $builddir/src/ext_pkg_config.o $builddir/src/ext_profiles.o $builddir/src/ext_easy.o $builddir/src/ext_dynamic.o $builddir/src/ext_cmake.o
|
||||
|
||||
## Compile: src/file.cc ##
|
||||
|
||||
build $builddir/src/file.o: cxx src/file.cc
|
||||
p_cflags = -Iinclude -Ivendor/sol2/include
|
||||
p_cflags = -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include
|
||||
|
||||
## Compile: src/ninja.cc ##
|
||||
|
||||
build $builddir/src/ninja.o: cxx src/ninja.cc
|
||||
p_cflags = -Iinclude -Ivendor/sol2/include
|
||||
p_cflags = -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include
|
||||
|
||||
## Compile: src/platform.cc ##
|
||||
|
||||
build $builddir/src/platform.o: cxx src/platform.cc
|
||||
p_cflags = -Iinclude -Ivendor/sol2/include
|
||||
p_cflags = -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include
|
||||
|
||||
## Compile: src/target_exe.cc ##
|
||||
|
||||
build $builddir/src/target_exe.o: cxx src/target_exe.cc
|
||||
p_cflags = -Iinclude -Ivendor/sol2/include
|
||||
p_cflags = -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include
|
||||
|
||||
## Compile: src/utils.cc ##
|
||||
|
||||
build $builddir/src/utils.o: cxx src/utils.cc
|
||||
p_cflags = -Iinclude -Ivendor/sol2/include
|
||||
p_cflags = -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include
|
||||
|
||||
## Compile: src/generator.cc ##
|
||||
|
||||
build $builddir/src/generator.o: cxx src/generator.cc
|
||||
p_cflags = -Iinclude -Ivendor/sol2/include
|
||||
p_cflags = -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include
|
||||
|
||||
## Compile: src/target_lib.cc ##
|
||||
|
||||
build $builddir/src/target_lib.o: cxx src/target_lib.cc
|
||||
p_cflags = -Iinclude -Ivendor/sol2/include
|
||||
p_cflags = -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include
|
||||
|
||||
## Compile: src/package.cc ##
|
||||
|
||||
build $builddir/src/package.o: cxx src/package.cc
|
||||
p_cflags = -Iinclude -Ivendor/sol2/include
|
||||
p_cflags = -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include
|
||||
|
||||
## Compile: src/ext.cc ##
|
||||
|
||||
build $builddir/src/ext.o: cxx src/ext.cc
|
||||
p_cflags = -Iinclude -Ivendor/sol2/include
|
||||
p_cflags = -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include
|
||||
|
||||
## Compile: src/task.cc ##
|
||||
|
||||
build $builddir/src/task.o: cxx src/task.cc
|
||||
p_cflags = -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include
|
||||
|
||||
## Compile: src/options.cc ##
|
||||
|
||||
build $builddir/src/options.o: cxx src/options.cc
|
||||
p_cflags = -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include
|
||||
|
||||
## Link: libgrbc.a ##
|
||||
|
||||
build $builddir/libgrbc.a: archive $builddir/src/file.o $builddir/src/ninja.o $builddir/src/platform.o $builddir/src/target_exe.o $builddir/src/utils.o $builddir/src/generator.o $builddir/src/target_lib.o $builddir/src/package.o $builddir/src/ext.o
|
||||
build $builddir/libgrbc.a: archive $builddir/src/file.o $builddir/src/ninja.o $builddir/src/platform.o $builddir/src/target_exe.o $builddir/src/utils.o $builddir/src/generator.o $builddir/src/target_lib.o $builddir/src/package.o $builddir/src/ext.o $builddir/src/task.o $builddir/src/options.o
|
||||
|
||||
## Compile: src/main.cc ##
|
||||
|
||||
build $builddir/src/main.o: cxx src/main.cc
|
||||
p_cflags = -Iinclude -Ivendor/sol2/include -Iinclude -Ivendor/sol2/include
|
||||
p_cflags = -Iinclude -Ivendor/sol2/include -Iinclude -Ivendor/hotwire/src -Ivendor/sol2/include -Ivendor/hotwire/src -Iinclude/grbc -std=c++17
|
||||
|
||||
## Link: grbc ##
|
||||
|
||||
build $builddir/grbc: link_cxx $builddir/src/main.o | $builddir/libgrbc.a $builddir/libgrbc_extensions.a
|
||||
p_linker_flags = -llua -lm -ldl build/libgrbc.a build/libgrbc_extensions.a -O3 -Lbuild -Wl,-rpath,build:.
|
||||
build $builddir/grbc: link_cxx $builddir/src/main.o | $builddir/libgrbc.a $builddir/libgrbc_extensions.a $builddir/libhotwire.a $builddir/libcjson.a
|
||||
p_linker_flags = -llua -lm -ldl build/libgrbc.a build/libgrbc_extensions.a build/libhotwire.a build/libcjson.a build/libSDL3.so.0.1.5 -O3 -DNDEBUG -Lbuild -Wl,-rpath,build:.
|
||||
p_cflags =
|
||||
|
||||
## clean ##
|
||||
rule clean_task
|
||||
command = ninja -t clean
|
||||
description = Running task: Clean build (clean)
|
||||
|
||||
build clean: clean_task
|
||||
|
||||
## compdb ##
|
||||
rule compdb_task
|
||||
command = rm -f compile_commands.json; ninja -t compdb >> compile_commands.json
|
||||
description = Running task: Compilation database (clangd) (compdb)
|
||||
|
||||
build compdb: compdb_task
|
||||
|
||||
build all: phony $builddir/libhotwire.a $builddir/libcjson.a $builddir/libgrbc_extensions.a $builddir/libgrbc.a $builddir/grbc
|
||||
|
||||
default all
|
||||
|
|
152
compile_commands.json
Normal file
152
compile_commands.json
Normal file
|
@ -0,0 +1,152 @@
|
|||
[
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/gcc -MMD -MT build/vendor/hotwire/src/dlopen.o -MF build/vendor/hotwire/src/dlopen.o.d -std=c++17 -Ivendor/hotwire/src -c vendor/hotwire/src/dlopen.c -o build/vendor/hotwire/src/dlopen.o",
|
||||
"file": "vendor/hotwire/src/dlopen.c",
|
||||
"output": "build/vendor/hotwire/src/dlopen.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "rm -f build/libhotwire.a; ar crs build/libhotwire.a build/vendor/hotwire/src/dlopen.o",
|
||||
"file": "build/vendor/hotwire/src/dlopen.o",
|
||||
"output": "build/libhotwire.a"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/gcc -MMD -MT build/src/cJSON.o -MF build/src/cJSON.o.d -std=c++17 -Iinclude/grbc -c src/cJSON.c -o build/src/cJSON.o",
|
||||
"file": "src/cJSON.c",
|
||||
"output": "build/src/cJSON.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "rm -f build/libcjson.a; ar crs build/libcjson.a build/src/cJSON.o",
|
||||
"file": "build/src/cJSON.o",
|
||||
"output": "build/libcjson.a"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/g++ -MMD -MT build/src/ext_pkg_config.o -MF build/src/ext_pkg_config.o.d -std=c++17 -Iinclude -Ivendor/hotwire/src -Ivendor/sol2/include -c src/ext_pkg_config.cc -o build/src/ext_pkg_config.o",
|
||||
"file": "src/ext_pkg_config.cc",
|
||||
"output": "build/src/ext_pkg_config.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/g++ -MMD -MT build/src/ext_profiles.o -MF build/src/ext_profiles.o.d -std=c++17 -Iinclude -Ivendor/hotwire/src -Ivendor/sol2/include -c src/ext_profiles.cc -o build/src/ext_profiles.o",
|
||||
"file": "src/ext_profiles.cc",
|
||||
"output": "build/src/ext_profiles.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/g++ -MMD -MT build/src/ext_easy.o -MF build/src/ext_easy.o.d -std=c++17 -Iinclude -Ivendor/hotwire/src -Ivendor/sol2/include -c src/ext_easy.cc -o build/src/ext_easy.o",
|
||||
"file": "src/ext_easy.cc",
|
||||
"output": "build/src/ext_easy.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/g++ -MMD -MT build/src/ext_dynamic.o -MF build/src/ext_dynamic.o.d -std=c++17 -Iinclude -Ivendor/hotwire/src -Ivendor/sol2/include -c src/ext_dynamic.cc -o build/src/ext_dynamic.o",
|
||||
"file": "src/ext_dynamic.cc",
|
||||
"output": "build/src/ext_dynamic.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/g++ -MMD -MT build/src/ext_cmake.o -MF build/src/ext_cmake.o.d -std=c++17 -Iinclude -Ivendor/hotwire/src -Ivendor/sol2/include -c src/ext_cmake.cc -o build/src/ext_cmake.o",
|
||||
"file": "src/ext_cmake.cc",
|
||||
"output": "build/src/ext_cmake.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "rm -f build/libgrbc_extensions.a; ar crs build/libgrbc_extensions.a build/src/ext_pkg_config.o build/src/ext_profiles.o build/src/ext_easy.o build/src/ext_dynamic.o build/src/ext_cmake.o",
|
||||
"file": "build/src/ext_pkg_config.o",
|
||||
"output": "build/libgrbc_extensions.a"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/g++ -MMD -MT build/src/file.o -MF build/src/file.o.d -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include -c src/file.cc -o build/src/file.o",
|
||||
"file": "src/file.cc",
|
||||
"output": "build/src/file.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/g++ -MMD -MT build/src/ninja.o -MF build/src/ninja.o.d -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include -c src/ninja.cc -o build/src/ninja.o",
|
||||
"file": "src/ninja.cc",
|
||||
"output": "build/src/ninja.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/g++ -MMD -MT build/src/platform.o -MF build/src/platform.o.d -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include -c src/platform.cc -o build/src/platform.o",
|
||||
"file": "src/platform.cc",
|
||||
"output": "build/src/platform.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/g++ -MMD -MT build/src/target_exe.o -MF build/src/target_exe.o.d -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include -c src/target_exe.cc -o build/src/target_exe.o",
|
||||
"file": "src/target_exe.cc",
|
||||
"output": "build/src/target_exe.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/g++ -MMD -MT build/src/utils.o -MF build/src/utils.o.d -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include -c src/utils.cc -o build/src/utils.o",
|
||||
"file": "src/utils.cc",
|
||||
"output": "build/src/utils.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/g++ -MMD -MT build/src/generator.o -MF build/src/generator.o.d -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include -c src/generator.cc -o build/src/generator.o",
|
||||
"file": "src/generator.cc",
|
||||
"output": "build/src/generator.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/g++ -MMD -MT build/src/target_lib.o -MF build/src/target_lib.o.d -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include -c src/target_lib.cc -o build/src/target_lib.o",
|
||||
"file": "src/target_lib.cc",
|
||||
"output": "build/src/target_lib.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/g++ -MMD -MT build/src/package.o -MF build/src/package.o.d -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include -c src/package.cc -o build/src/package.o",
|
||||
"file": "src/package.cc",
|
||||
"output": "build/src/package.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/g++ -MMD -MT build/src/ext.o -MF build/src/ext.o.d -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include -c src/ext.cc -o build/src/ext.o",
|
||||
"file": "src/ext.cc",
|
||||
"output": "build/src/ext.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/g++ -MMD -MT build/src/task.o -MF build/src/task.o.d -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include -c src/task.cc -o build/src/task.o",
|
||||
"file": "src/task.cc",
|
||||
"output": "build/src/task.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/g++ -MMD -MT build/src/options.o -MF build/src/options.o.d -Ivendor/hotwire/src -Iinclude/grbc -std=c++17 -Iinclude -Ivendor/sol2/include -c src/options.cc -o build/src/options.o",
|
||||
"file": "src/options.cc",
|
||||
"output": "build/src/options.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "rm -f build/libgrbc.a; ar crs build/libgrbc.a build/src/file.o build/src/ninja.o build/src/platform.o build/src/target_exe.o build/src/utils.o build/src/generator.o build/src/target_lib.o build/src/package.o build/src/ext.o build/src/task.o build/src/options.o",
|
||||
"file": "build/src/file.o",
|
||||
"output": "build/libgrbc.a"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/g++ -MMD -MT build/src/main.o -MF build/src/main.o.d -Iinclude -Ivendor/sol2/include -Iinclude -Ivendor/hotwire/src -Ivendor/sol2/include -Ivendor/hotwire/src -std=c++17 -c src/main.cc -o build/src/main.o",
|
||||
"file": "src/main.cc",
|
||||
"output": "build/src/main.o"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "/usr/lib64/ccache/g++ -o build/grbc build/src/main.o -llua -lm -ldl build/libgrbc.a build/libgrbc_extensions.a build/libhotwire.a -O3 -DNDEBUG -Lbuild -Wl,-rpath,build:. ",
|
||||
"file": "build/src/main.o",
|
||||
"output": "build/grbc"
|
||||
},
|
||||
{
|
||||
"directory": "/home/hstasonis/dev/grbc",
|
||||
"command": "",
|
||||
"file": "build/libhotwire.a",
|
||||
"output": "all"
|
||||
}
|
||||
]
|
306
include/grbc/cJSON.h
Normal file
306
include/grbc/cJSON.h
Normal file
|
@ -0,0 +1,306 @@
|
|||
/*
|
||||
Copyright (c) 2009-2017 Dave Gamble and cJSON contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef cJSON__h
|
||||
#define cJSON__h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#if !defined(__WINDOWS__) && (defined(WIN32) || defined(WIN64) || defined(_MSC_VER) || defined(_WIN32))
|
||||
#define __WINDOWS__
|
||||
#endif
|
||||
|
||||
#ifdef __WINDOWS__
|
||||
|
||||
/* When compiling for windows, we specify a specific calling convention to avoid issues where we are being called from a project with a different default calling convention. For windows you have 3 define options:
|
||||
|
||||
CJSON_HIDE_SYMBOLS - Define this in the case where you don't want to ever dllexport symbols
|
||||
CJSON_EXPORT_SYMBOLS - Define this on library build when you want to dllexport symbols (default)
|
||||
CJSON_IMPORT_SYMBOLS - Define this if you want to dllimport symbol
|
||||
|
||||
For *nix builds that support visibility attribute, you can define similar behavior by
|
||||
|
||||
setting default visibility to hidden by adding
|
||||
-fvisibility=hidden (for gcc)
|
||||
or
|
||||
-xldscope=hidden (for sun cc)
|
||||
to CFLAGS
|
||||
|
||||
then using the CJSON_API_VISIBILITY flag to "export" the same symbols the way CJSON_EXPORT_SYMBOLS does
|
||||
|
||||
*/
|
||||
|
||||
#define CJSON_CDECL __cdecl
|
||||
#define CJSON_STDCALL __stdcall
|
||||
|
||||
/* export symbols by default, this is necessary for copy pasting the C and header file */
|
||||
#if !defined(CJSON_HIDE_SYMBOLS) && !defined(CJSON_IMPORT_SYMBOLS) && !defined(CJSON_EXPORT_SYMBOLS)
|
||||
#define CJSON_EXPORT_SYMBOLS
|
||||
#endif
|
||||
|
||||
#if defined(CJSON_HIDE_SYMBOLS)
|
||||
#define CJSON_PUBLIC(type) type CJSON_STDCALL
|
||||
#elif defined(CJSON_EXPORT_SYMBOLS)
|
||||
#define CJSON_PUBLIC(type) __declspec(dllexport) type CJSON_STDCALL
|
||||
#elif defined(CJSON_IMPORT_SYMBOLS)
|
||||
#define CJSON_PUBLIC(type) __declspec(dllimport) type CJSON_STDCALL
|
||||
#endif
|
||||
#else /* !__WINDOWS__ */
|
||||
#define CJSON_CDECL
|
||||
#define CJSON_STDCALL
|
||||
|
||||
#if (defined(__GNUC__) || defined(__SUNPRO_CC) || defined (__SUNPRO_C)) && defined(CJSON_API_VISIBILITY)
|
||||
#define CJSON_PUBLIC(type) __attribute__((visibility("default"))) type
|
||||
#else
|
||||
#define CJSON_PUBLIC(type) type
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* project version */
|
||||
#define CJSON_VERSION_MAJOR 1
|
||||
#define CJSON_VERSION_MINOR 7
|
||||
#define CJSON_VERSION_PATCH 18
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
/* cJSON Types: */
|
||||
#define cJSON_Invalid (0)
|
||||
#define cJSON_False (1 << 0)
|
||||
#define cJSON_True (1 << 1)
|
||||
#define cJSON_NULL (1 << 2)
|
||||
#define cJSON_Number (1 << 3)
|
||||
#define cJSON_String (1 << 4)
|
||||
#define cJSON_Array (1 << 5)
|
||||
#define cJSON_Object (1 << 6)
|
||||
#define cJSON_Raw (1 << 7) /* raw json */
|
||||
|
||||
#define cJSON_IsReference 256
|
||||
#define cJSON_StringIsConst 512
|
||||
|
||||
/* The cJSON structure: */
|
||||
typedef struct cJSON
|
||||
{
|
||||
/* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem */
|
||||
struct cJSON *next;
|
||||
struct cJSON *prev;
|
||||
/* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */
|
||||
struct cJSON *child;
|
||||
|
||||
/* The type of the item, as above. */
|
||||
int type;
|
||||
|
||||
/* The item's string, if type==cJSON_String and type == cJSON_Raw */
|
||||
char *valuestring;
|
||||
/* writing to valueint is DEPRECATED, use cJSON_SetNumberValue instead */
|
||||
int valueint;
|
||||
/* The item's number, if type==cJSON_Number */
|
||||
double valuedouble;
|
||||
|
||||
/* The item's name string, if this item is the child of, or is in the list of subitems of an object. */
|
||||
char *string;
|
||||
} cJSON;
|
||||
|
||||
typedef struct cJSON_Hooks
|
||||
{
|
||||
/* malloc/free are CDECL on Windows regardless of the default calling convention of the compiler, so ensure the hooks allow passing those functions directly. */
|
||||
void *(CJSON_CDECL *malloc_fn)(size_t sz);
|
||||
void (CJSON_CDECL *free_fn)(void *ptr);
|
||||
} cJSON_Hooks;
|
||||
|
||||
typedef int cJSON_bool;
|
||||
|
||||
/* Limits how deeply nested arrays/objects can be before cJSON rejects to parse them.
|
||||
* This is to prevent stack overflows. */
|
||||
#ifndef CJSON_NESTING_LIMIT
|
||||
#define CJSON_NESTING_LIMIT 1000
|
||||
#endif
|
||||
|
||||
/* Limits the length of circular references can be before cJSON rejects to parse them.
|
||||
* This is to prevent stack overflows. */
|
||||
#ifndef CJSON_CIRCULAR_LIMIT
|
||||
#define CJSON_CIRCULAR_LIMIT 10000
|
||||
#endif
|
||||
|
||||
/* returns the version of cJSON as a string */
|
||||
CJSON_PUBLIC(const char*) cJSON_Version(void);
|
||||
|
||||
/* Supply malloc, realloc and free functions to cJSON */
|
||||
CJSON_PUBLIC(void) cJSON_InitHooks(cJSON_Hooks* hooks);
|
||||
|
||||
/* Memory Management: the caller is always responsible to free the results from all variants of cJSON_Parse (with cJSON_Delete) and cJSON_Print (with stdlib free, cJSON_Hooks.free_fn, or cJSON_free as appropriate). The exception is cJSON_PrintPreallocated, where the caller has full responsibility of the buffer. */
|
||||
/* Supply a block of JSON, and this returns a cJSON object you can interrogate. */
|
||||
CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_ParseWithLength(const char *value, size_t buffer_length);
|
||||
/* ParseWithOpts allows you to require (and check) that the JSON is null terminated, and to retrieve the pointer to the final byte parsed. */
|
||||
/* If you supply a ptr in return_parse_end and parsing fails, then return_parse_end will contain a pointer to the error so will match cJSON_GetErrorPtr(). */
|
||||
CJSON_PUBLIC(cJSON *) cJSON_ParseWithOpts(const char *value, const char **return_parse_end, cJSON_bool require_null_terminated);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_ParseWithLengthOpts(const char *value, size_t buffer_length, const char **return_parse_end, cJSON_bool require_null_terminated);
|
||||
|
||||
/* Render a cJSON entity to text for transfer/storage. */
|
||||
CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item);
|
||||
/* Render a cJSON entity to text for transfer/storage without any formatting. */
|
||||
CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON *item);
|
||||
/* Render a cJSON entity to text using a buffered strategy. prebuffer is a guess at the final size. guessing well reduces reallocation. fmt=0 gives unformatted, =1 gives formatted */
|
||||
CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt);
|
||||
/* Render a cJSON entity to text using a buffer already allocated in memory with given length. Returns 1 on success and 0 on failure. */
|
||||
/* NOTE: cJSON is not always 100% accurate in estimating how much memory it will use, so to be safe allocate 5 bytes more than you actually need */
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length, const cJSON_bool format);
|
||||
/* Delete a cJSON entity and all subentities. */
|
||||
CJSON_PUBLIC(void) cJSON_Delete(cJSON *item);
|
||||
|
||||
/* Returns the number of items in an array (or object). */
|
||||
CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array);
|
||||
/* Retrieve item number "index" from array "array". Returns NULL if unsuccessful. */
|
||||
CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int index);
|
||||
/* Get item "string" from object. Case insensitive. */
|
||||
CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, const char * const string);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_GetObjectItemCaseSensitive(const cJSON * const object, const char * const string);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_HasObjectItem(const cJSON *object, const char *string);
|
||||
/* For analysing failed parses. This returns a pointer to the parse error. You'll probably need to look a few chars back to make sense of it. Defined when cJSON_Parse() returns 0. 0 when cJSON_Parse() succeeds. */
|
||||
CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void);
|
||||
|
||||
/* Check item type and return its value */
|
||||
CJSON_PUBLIC(char *) cJSON_GetStringValue(const cJSON * const item);
|
||||
CJSON_PUBLIC(double) cJSON_GetNumberValue(const cJSON * const item);
|
||||
|
||||
/* These functions check the type of an item */
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON * const item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsFalse(const cJSON * const item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsTrue(const cJSON * const item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsBool(const cJSON * const item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsNull(const cJSON * const item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsNumber(const cJSON * const item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsString(const cJSON * const item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsArray(const cJSON * const item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsObject(const cJSON * const item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_IsRaw(const cJSON * const item);
|
||||
|
||||
/* These calls create a cJSON item of the appropriate type. */
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateNull(void);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateTrue(void);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateFalse(void);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateBool(cJSON_bool boolean);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateNumber(double num);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateString(const char *string);
|
||||
/* raw json */
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateRaw(const char *raw);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateArray(void);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void);
|
||||
|
||||
/* Create a string where valuestring references a string so
|
||||
* it will not be freed by cJSON_Delete */
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateStringReference(const char *string);
|
||||
/* Create an object/array that only references it's elements so
|
||||
* they will not be freed by cJSON_Delete */
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateObjectReference(const cJSON *child);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateArrayReference(const cJSON *child);
|
||||
|
||||
/* These utilities create an Array of count items.
|
||||
* The parameter count cannot be greater than the number of elements in the number array, otherwise array access will be out of bounds.*/
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char *const *strings, int count);
|
||||
|
||||
/* Append item to the specified array/object. */
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToArray(cJSON *array, cJSON *item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item);
|
||||
/* Use this when string is definitely const (i.e. a literal, or as good as), and will definitely survive the cJSON object.
|
||||
* WARNING: When this function was used, make sure to always check that (item->type & cJSON_StringIsConst) is zero before
|
||||
* writing to `item->string` */
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item);
|
||||
/* Append reference to item to the specified array/object. Use this when you want to add an existing cJSON to a new cJSON, but don't want to corrupt your existing cJSON. */
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item);
|
||||
|
||||
/* Remove/Detach items from Arrays/Objects. */
|
||||
CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const item);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which);
|
||||
CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string);
|
||||
CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObjectCaseSensitive(cJSON *object, const char *string);
|
||||
CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string);
|
||||
CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON *object, const char *string);
|
||||
|
||||
/* Update array items. */
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem); /* Shifts pre-existing items to the right. */
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON * const item, cJSON * replacement);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem);
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object,const char *string,cJSON *newitem);
|
||||
|
||||
/* Duplicate a cJSON item */
|
||||
CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse);
|
||||
/* Duplicate will create a new, identical cJSON item to the one you pass, in new memory that will
|
||||
* need to be released. With recurse!=0, it will duplicate any children connected to the item.
|
||||
* The item->next and ->prev pointers are always zero on return from Duplicate. */
|
||||
/* Recursively compare two cJSON items for equality. If either a or b is NULL or invalid, they will be considered unequal.
|
||||
* case_sensitive determines if object keys are treated case sensitive (1) or case insensitive (0) */
|
||||
CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, const cJSON * const b, const cJSON_bool case_sensitive);
|
||||
|
||||
/* Minify a strings, remove blank characters(such as ' ', '\t', '\r', '\n') from strings.
|
||||
* The input pointer json cannot point to a read-only address area, such as a string constant,
|
||||
* but should point to a readable and writable address area. */
|
||||
CJSON_PUBLIC(void) cJSON_Minify(char *json);
|
||||
|
||||
/* Helper functions for creating and adding items to an object at the same time.
|
||||
* They return the added item or NULL on failure. */
|
||||
CJSON_PUBLIC(cJSON*) cJSON_AddNullToObject(cJSON * const object, const char * const name);
|
||||
CJSON_PUBLIC(cJSON*) cJSON_AddTrueToObject(cJSON * const object, const char * const name);
|
||||
CJSON_PUBLIC(cJSON*) cJSON_AddFalseToObject(cJSON * const object, const char * const name);
|
||||
CJSON_PUBLIC(cJSON*) cJSON_AddBoolToObject(cJSON * const object, const char * const name, const cJSON_bool boolean);
|
||||
CJSON_PUBLIC(cJSON*) cJSON_AddNumberToObject(cJSON * const object, const char * const name, const double number);
|
||||
CJSON_PUBLIC(cJSON*) cJSON_AddStringToObject(cJSON * const object, const char * const name, const char * const string);
|
||||
CJSON_PUBLIC(cJSON*) cJSON_AddRawToObject(cJSON * const object, const char * const name, const char * const raw);
|
||||
CJSON_PUBLIC(cJSON*) cJSON_AddObjectToObject(cJSON * const object, const char * const name);
|
||||
CJSON_PUBLIC(cJSON*) cJSON_AddArrayToObject(cJSON * const object, const char * const name);
|
||||
|
||||
/* When assigning an integer value, it needs to be propagated to valuedouble too. */
|
||||
#define cJSON_SetIntValue(object, number) ((object) ? (object)->valueint = (object)->valuedouble = (number) : (number))
|
||||
/* helper for the cJSON_SetNumberValue macro */
|
||||
CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number);
|
||||
#define cJSON_SetNumberValue(object, number) ((object != NULL) ? cJSON_SetNumberHelper(object, (double)number) : (number))
|
||||
/* Change the valuestring of a cJSON_String object, only takes effect when type of object is cJSON_String */
|
||||
CJSON_PUBLIC(char*) cJSON_SetValuestring(cJSON *object, const char *valuestring);
|
||||
|
||||
/* If the object is not a boolean type this does nothing and returns cJSON_Invalid else it returns the new type*/
|
||||
#define cJSON_SetBoolValue(object, boolValue) ( \
|
||||
(object != NULL && ((object)->type & (cJSON_False|cJSON_True))) ? \
|
||||
(object)->type=((object)->type &(~(cJSON_False|cJSON_True)))|((boolValue)?cJSON_True:cJSON_False) : \
|
||||
cJSON_Invalid\
|
||||
)
|
||||
|
||||
/* Macro for iterating over an array or object */
|
||||
#define cJSON_ArrayForEach(element, array) for(element = (array != NULL) ? (array)->child : NULL; element != NULL; element = element->next)
|
||||
|
||||
/* malloc/free objects using the malloc/free functions that have been set with cJSON_InitHooks */
|
||||
CJSON_PUBLIC(void *) cJSON_malloc(size_t size);
|
||||
CJSON_PUBLIC(void) cJSON_free(void *object);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -4,12 +4,30 @@
|
|||
|
||||
#define GRBC_EXT_pkg_config_NAME "GRBC_EXT_pkg_config"
|
||||
#define GRBC_EXT_profiles_NAME "GRBC_EXT_profiles"
|
||||
#define GRBC_EXT_easy_NAME "GRBC_EXT_easy"
|
||||
#define GRBC_EXT_dynamic_extensions_NAME "GRBC_EXT_dynamic_extensions"
|
||||
#define GRBC_EXT_cmake_NAME "GRBC_EXT_cmake"
|
||||
|
||||
/// Called when the extension is loaded
|
||||
typedef void (*EXT_HookInit)(sol::state &lua);
|
||||
|
||||
/// Called when the build completes
|
||||
typedef void (*EXT_HookBuildFinish)();
|
||||
|
||||
/// Called everytime that a file is processed
|
||||
typedef void (*EXT_HookProcessFile)(const std::string &file);
|
||||
|
||||
/// Called when the extension is invoked from the command line
|
||||
typedef void (*EXT_HookInvoke)();
|
||||
|
||||
struct Extension {
|
||||
std::string name;
|
||||
bool loaded = false;
|
||||
|
||||
EXT_HookInit hook_init = nullptr;
|
||||
};
|
||||
EXT_HookBuildFinish build_finish = nullptr;
|
||||
EXT_HookProcessFile process_file = nullptr;
|
||||
EXT_HookInvoke invoke = nullptr;
|
||||
};
|
||||
|
||||
void grbc_ext_process_file(const std::string &file);
|
26
include/grbc/ext_cmake.h
Normal file
26
include/grbc/ext_cmake.h
Normal file
|
@ -0,0 +1,26 @@
|
|||
#pragma once
|
||||
#include "grbc/cJSON.h"
|
||||
#include "grbc/ext.h"
|
||||
#include "sol/table.hpp"
|
||||
|
||||
struct CMakeConfig {
|
||||
CMakeConfig(const sol::table &table) {
|
||||
configure_arguments = table.get<std::vector<std::string>>("configure_arguments");
|
||||
}
|
||||
|
||||
/// Configuration arguments
|
||||
std::vector<std::string> configure_arguments;
|
||||
};
|
||||
|
||||
struct CMakeProject {
|
||||
/// Source directory
|
||||
std::string source_dir;
|
||||
|
||||
/// Build directory
|
||||
std::string build_dir;
|
||||
|
||||
/// Parsed compilation database
|
||||
cJSON* compdb = nullptr;
|
||||
};
|
||||
|
||||
Extension grbc_cmake();
|
7
include/grbc/ext_dynamic.h
Normal file
7
include/grbc/ext_dynamic.h
Normal file
|
@ -0,0 +1,7 @@
|
|||
#pragma once
|
||||
#include "grbc/ext.h"
|
||||
|
||||
/**
|
||||
* Get the grbc dynamic extension
|
||||
*/
|
||||
Extension grbc_dynamic();
|
7
include/grbc/ext_easy.h
Normal file
7
include/grbc/ext_easy.h
Normal file
|
@ -0,0 +1,7 @@
|
|||
#pragma once
|
||||
#include "grbc/ext.h"
|
||||
|
||||
/**
|
||||
* Get the grbc easy extension
|
||||
*/
|
||||
Extension grbc_easy();
|
|
@ -38,6 +38,12 @@ struct GeneratorTarget {
|
|||
std::vector<GeneratorLinkTargetCommand> link_target_commands;
|
||||
};
|
||||
|
||||
struct GeneratorTask {
|
||||
std::string description, id;
|
||||
|
||||
std::string shell_script;
|
||||
};
|
||||
|
||||
typedef GeneratorResult (*Generator_Run)();
|
||||
|
||||
struct Generator {
|
||||
|
|
|
@ -49,3 +49,8 @@ ninja_build_rule_link_exe_target(const GeneratorLinkTargetCommand &link_cmd);
|
|||
*/
|
||||
std::string
|
||||
ninja_build_rule_link_lib_target(const GeneratorLinkTargetCommand &link_cmd);
|
||||
|
||||
/**
|
||||
* Generate a line which describes the given task
|
||||
*/
|
||||
std::string ninja_build_rule_task(const GeneratorTask &task);
|
|
@ -5,6 +5,8 @@
|
|||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#define GRBC_PROPERTY_CXX_VERSION "CXX_VERSION"
|
||||
|
||||
// https://stackoverflow.com/questions/1505582/determining-32-vs-64-bit-in-c
|
||||
|
||||
#if _WIN32 || _WIN64
|
||||
|
@ -26,6 +28,21 @@
|
|||
|
||||
#define GRBC_VERSION "1.0"
|
||||
|
||||
struct Property {
|
||||
Property() = default;
|
||||
|
||||
Property(const sol::table &table) {
|
||||
name = table.get<std::string>("name");
|
||||
value = table.get<std::string>("value");
|
||||
}
|
||||
|
||||
/// Name of this property
|
||||
std::string name;
|
||||
|
||||
/// Value of this property
|
||||
std::string value;
|
||||
};
|
||||
|
||||
enum LanguageType { LanguageType_CPP, LanguageType_C };
|
||||
enum LibraryType { LibraryType_Shared, LibraryType_Static };
|
||||
|
||||
|
@ -104,6 +121,10 @@ struct ExecutableConfig {
|
|||
include_dirs = table.get<std::vector<std::string>>("include_dirs");
|
||||
|
||||
language_type = table.get<LanguageType>("language_type");
|
||||
|
||||
if (table["properties"].valid()) {
|
||||
properties = table.get<std::vector<Property>>("properties");
|
||||
}
|
||||
}
|
||||
|
||||
/// Name of the executable
|
||||
|
@ -126,6 +147,27 @@ struct ExecutableConfig {
|
|||
|
||||
/// Include directories
|
||||
std::vector<std::string> include_dirs{};
|
||||
|
||||
/// Optional list of properties
|
||||
std::vector<Property> properties;
|
||||
};
|
||||
|
||||
struct TaskConfig {
|
||||
TaskConfig() = default;
|
||||
TaskConfig(const sol::table &table) {
|
||||
name = table.get<std::string>("name");
|
||||
task_id = table.get<std::string>("task_id");
|
||||
shell_script = table.get<std::string>("shell_script");
|
||||
}
|
||||
|
||||
/// Name of the task
|
||||
std::string name;
|
||||
|
||||
/// ID of the task
|
||||
std::string task_id;
|
||||
|
||||
/// Shell script content for this task
|
||||
std::string shell_script;
|
||||
};
|
||||
|
||||
struct LibraryConfig {
|
||||
|
@ -144,8 +186,11 @@ struct LibraryConfig {
|
|||
language_type = table.get<LanguageType>("language_type");
|
||||
lib_type = table.get<LibraryType>("lib_type");
|
||||
|
||||
if (!table["package_config"].is<sol::nil_t>())
|
||||
if (table["package_config"].valid())
|
||||
package_config = table.get<PackageConfig>("package_config");
|
||||
|
||||
if (table["properties"].valid())
|
||||
properties = table.get<std::vector<Property>>("properties");
|
||||
}
|
||||
|
||||
/// Name of the executable
|
||||
|
@ -174,6 +219,9 @@ struct LibraryConfig {
|
|||
|
||||
/// Include directories
|
||||
std::vector<std::string> include_dirs{};
|
||||
|
||||
/// Optional list of properties
|
||||
std::vector<Property> properties;
|
||||
};
|
||||
|
||||
struct Platform {
|
||||
|
@ -253,4 +301,16 @@ bool grbc_has_ext(const std::string &extension_id);
|
|||
std::string grbc_platform_file(PlatformType platform_type,
|
||||
const std::string &file_name);
|
||||
|
||||
bool grbc_is_ext_loaded(const std::string &extension_name);
|
||||
bool grbc_is_ext_loaded(const std::string &extension_name);
|
||||
|
||||
void grbc_task(const TaskConfig &config);
|
||||
|
||||
bool grbc_has_option(const std::string &option_name);
|
||||
|
||||
std::string grbc_get_option(const std::string &option_name);
|
||||
|
||||
Property grbc_property(const std::string &key, const std::string &value);
|
||||
|
||||
Property grbc_cxx_version(const std::string &version_string);
|
||||
|
||||
void grbc_global_properties(const sol::table &properties);
|
|
@ -2,30 +2,34 @@
|
|||
#include "grbc/ext.h"
|
||||
#include "grbc/generator.h"
|
||||
#include "grbc/spec.h"
|
||||
#include <map>
|
||||
#include <sol/sol.hpp>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
||||
struct GState {
|
||||
Platform current_platform{};
|
||||
sol::state lua;
|
||||
Platform current_platform{};
|
||||
sol::state lua;
|
||||
|
||||
std::vector<GeneratorTarget> targets;
|
||||
std::vector<Generator> generators;
|
||||
std::vector<GeneratorTask> tasks;
|
||||
std::vector<GeneratorTarget> targets;
|
||||
std::vector<Generator> generators;
|
||||
|
||||
std::unordered_map<std::string, Package> packages;
|
||||
std::map<std::string, std::string> options;
|
||||
|
||||
std::vector<Extension> extensions;
|
||||
std::vector<Property> global_properties;
|
||||
|
||||
std::string global_compiler_flags = "";
|
||||
std::string global_linker_flags = "";
|
||||
std::unordered_map<std::string, Package> packages;
|
||||
|
||||
std::string ninja_output;
|
||||
std::vector<Extension> extensions;
|
||||
|
||||
static GState& get() {
|
||||
static GState state{};
|
||||
std::string global_compiler_flags = "";
|
||||
std::string global_linker_flags = " ";
|
||||
|
||||
return state;
|
||||
}
|
||||
static GState &get() {
|
||||
static GState state{};
|
||||
|
||||
return state;
|
||||
}
|
||||
};
|
|
@ -63,6 +63,9 @@ struct LibraryConfig {
|
|||
|
||||
/// Include directories
|
||||
Array<string> include_dirs;
|
||||
|
||||
/// Optional list of properties
|
||||
Array<Property> properties;
|
||||
};
|
||||
```
|
||||
|
||||
|
@ -97,6 +100,9 @@ struct ExecutableConfig {
|
|||
|
||||
/// Include directories
|
||||
Array<string> include_dirs;
|
||||
|
||||
/// Optional list of properties
|
||||
Array<Property> properties;
|
||||
};
|
||||
```
|
||||
|
||||
|
@ -162,4 +168,29 @@ enum LanguageType {
|
|||
LanguageType_CPP,
|
||||
LanguageType_C
|
||||
};
|
||||
```
|
||||
|
||||
## TaskConfig
|
||||
```c++
|
||||
struct TaskConfig {
|
||||
/// Name of the task, can have spaces unlike task_id
|
||||
string task_name;
|
||||
|
||||
/// ID used when invoking the task, ex: ```ninja task:helloworld```
|
||||
string task_id;
|
||||
|
||||
/// Shell script to be executed when this task is called
|
||||
string shell_script;
|
||||
};
|
||||
```
|
||||
|
||||
## Property
|
||||
```c++
|
||||
struct Property {
|
||||
/// Property name
|
||||
std::string name;
|
||||
|
||||
/// Property value
|
||||
std::string value;
|
||||
};
|
||||
```
|
|
@ -7,13 +7,21 @@ Extensions are built into the grbc executable, and are loaded at runtime as need
|
|||
## Extension list
|
||||
* GRBC_EXT_pkg_config
|
||||
* GRBC_EXT_profiles
|
||||
* GRBC_EXT_easy
|
||||
* GRBC_EXT_dynamic_extensions
|
||||
* GRBC_EXT_cmake [NOSUPPORT]
|
||||
|
||||
## GRBC_EXT_dynamic_extensions
|
||||
Allows loading of extensions from shared object files. Extensions are searched for in: ```C:\grbc\ext```, or ```./grbc_ext```
|
||||
|
||||
## GRBC_EXT_pkg_config
|
||||
Pkg config support. UNIX only
|
||||
|
||||
## GRBC_EXT_profiles
|
||||
Support for compiler profiles, eg: Debug, ReleaseWithDebugSymbols, Release, etc
|
||||
|
||||
## GRBC_EXT_easy
|
||||
Import some sane defaults such as the clean task. No documentation given as no functions are provided
|
||||
|
||||
## GRBC_EXT_cmake
|
||||
CMake interop support
|
0
spec/ext/GRBC_EXT_dynamic_extensions.md
Normal file
0
spec/ext/GRBC_EXT_dynamic_extensions.md
Normal file
37
spec/ext/GRBC_EXT_profiles.md
Normal file
37
spec/ext/GRBC_EXT_profiles.md
Normal file
|
@ -0,0 +1,37 @@
|
|||
# GRBC_EXT_profiles
|
||||
compiler profile support in grbc
|
||||
|
||||
## About
|
||||
Author: Interfiber
|
||||
Release Date: 9/29/24
|
||||
|
||||
## Example
|
||||
```lua
|
||||
-- Load extension, by default the debug profile is selected
|
||||
grbc_ext("GRBC_EXT_profiles")
|
||||
|
||||
-- Set the profile, make sure this is at the top of the file!
|
||||
-- See below for default profiles
|
||||
grbc_set_profile("debug")
|
||||
|
||||
|
||||
```
|
||||
|
||||
## Command line options
|
||||
Passing ```-compiler_profile``` to grbc will allow setting of the compiler profile, for example:
|
||||
```bash
|
||||
grbc gen -compiler_profile release
|
||||
```
|
||||
|
||||
## Profiles
|
||||
For more detailed information see ```src/ext_profiles.cc```
|
||||
|
||||
### debug
|
||||
Standard debug profile, ```-O1```, and debug symbol generation
|
||||
|
||||
### release_with_debug_symbols
|
||||
Release build but with debug symbol generation, uses ```-O3```
|
||||
|
||||
## release
|
||||
Release build with ```-O3```
|
||||
|
|
@ -80,4 +80,22 @@ Generate a compiler flag to define a variable
|
|||
Get the given extension for a library file on the current platform
|
||||
|
||||
## [X] grbc_bake_package_config(config: PackageConfig) -> Package
|
||||
Convert a PackageConfig into a Package
|
||||
Convert a PackageConfig into a Package
|
||||
|
||||
## [X] grbc_task(config: TaskConfig) -> Void
|
||||
Create a task and add it to the build script
|
||||
|
||||
## [X] grbc_has_option(option_name: String) -> Boolean
|
||||
Check if the given option was set on the command line
|
||||
|
||||
## [X] grbc_get_option(option_name: String) -> String
|
||||
Get the value of an option
|
||||
|
||||
## [X] grbc_property(name: String, value: String) -> Property
|
||||
Create a property
|
||||
|
||||
## [X] grbc_cxx_version(version_string: String) -> Property
|
||||
Create a property that sets the C++ version
|
||||
|
||||
## [X] grbc_global_properties(properties: Array<Property>) -> Void
|
||||
Set the global property list
|
3164
src/cJSON.c
Normal file
3164
src/cJSON.c
Normal file
File diff suppressed because it is too large
Load diff
|
@ -44,4 +44,13 @@ bool grbc_is_ext_loaded(const std::string &extension_name) {
|
|||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void grbc_ext_process_file(const std::string &file) {
|
||||
for (auto &ext : GState::get().extensions) {
|
||||
if (!ext.loaded || ext.process_file == nullptr)
|
||||
continue;
|
||||
|
||||
ext.process_file(file);
|
||||
}
|
||||
}
|
215
src/ext_cmake.cc
Normal file
215
src/ext_cmake.cc
Normal file
|
@ -0,0 +1,215 @@
|
|||
#include "grbc/ext_cmake.h"
|
||||
#include "grbc/cJSON.h"
|
||||
#include "grbc/ext.h"
|
||||
#include "grbc/helpers.h"
|
||||
#include "grbc/spec.h"
|
||||
#include "sol/raii.hpp"
|
||||
#include <cstdlib>
|
||||
#include <filesystem>
|
||||
|
||||
std::filesystem::path cmake_eval_symlink(const std::filesystem::path &build_dir,
|
||||
const std::filesystem::path &path) {
|
||||
std::filesystem::path c_path = path;
|
||||
|
||||
while (std::filesystem::is_symlink(c_path)) {
|
||||
c_path = std::filesystem::read_symlink(c_path);
|
||||
|
||||
// Make path absolute if its relative
|
||||
if (c_path.is_relative())
|
||||
c_path = path.parent_path() / c_path;
|
||||
|
||||
std::filesystem::path target_path = build_dir / c_path.filename();
|
||||
|
||||
if (std::filesystem::exists(target_path))
|
||||
std::filesystem::remove(target_path);
|
||||
|
||||
std::filesystem::copy(c_path, target_path);
|
||||
}
|
||||
|
||||
return c_path;
|
||||
}
|
||||
|
||||
std::string cmake_util_read_file(FILE *file) {
|
||||
// http://www.fundza.com/c4serious/fileIO_reading_all/index.html
|
||||
|
||||
char line[190];
|
||||
std::string result;
|
||||
|
||||
while (fgets(line, 190, file))
|
||||
result += line;
|
||||
|
||||
if (result.back() == '\n')
|
||||
result.pop_back();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
CMakeProject EXT_grbc_import_cmake(const std::string &cmake_path,
|
||||
const CMakeConfig &cfg) {
|
||||
CMakeProject project{};
|
||||
|
||||
log_msg(("configuring cmake project: " + cmake_path).c_str());
|
||||
|
||||
if (!std::filesystem::exists(cmake_path)) {
|
||||
grbc_exception("CMake cannot configure in non-existant directory: " +
|
||||
cmake_path);
|
||||
}
|
||||
|
||||
if (!std::filesystem::exists(cmake_path + "/CMakeLists.txt")) {
|
||||
grbc_exception("No CMakeLists.txt file in: " + cmake_path);
|
||||
}
|
||||
|
||||
std::filesystem::path old_path = std::filesystem::current_path();
|
||||
|
||||
// Change directory into the cmake dir
|
||||
std::filesystem::current_path(cmake_path);
|
||||
|
||||
std::filesystem::create_directory("grbc_configure");
|
||||
|
||||
std::filesystem::current_path("./grbc_configure");
|
||||
|
||||
project.build_dir = std::filesystem::current_path().string();
|
||||
|
||||
// Create configure arg string
|
||||
std::string configure_arguments;
|
||||
|
||||
for (const std::string &argument : cfg.configure_arguments) {
|
||||
configure_arguments += argument + " ";
|
||||
}
|
||||
|
||||
// Run configure
|
||||
int exit_code =
|
||||
std::system(("cmake -S .. -B . -GNinja " + configure_arguments).c_str());
|
||||
|
||||
if (exit_code != EXIT_SUCCESS)
|
||||
grbc_exception("Failed to configure cmake project in: " + cmake_path);
|
||||
|
||||
// Collect compilation database
|
||||
FILE *compdb = popen("ninja -t compdb", "r");
|
||||
std::string compdb_raw = cmake_util_read_file(compdb);
|
||||
|
||||
pclose(compdb);
|
||||
|
||||
project.compdb = cJSON_Parse(compdb_raw.c_str());
|
||||
|
||||
// Build the cmake subproject, we need this so we can copy artifacts later on in the build step
|
||||
|
||||
grbc_log("building cmake subproject...");
|
||||
int build_exit_code = std::system("ninja");
|
||||
|
||||
if (build_exit_code != EXIT_SUCCESS)
|
||||
grbc_exception("Failed to build cmake project in: " + project.build_dir);
|
||||
|
||||
std::filesystem::current_path(old_path);
|
||||
|
||||
|
||||
return project;
|
||||
}
|
||||
|
||||
Package EXT_grbc_get_cmake_library(const CMakeProject &self,
|
||||
const std::string &library_name) {
|
||||
|
||||
// Loop over every output in the compdb
|
||||
|
||||
for (int i = 0; i < cJSON_GetArraySize(self.compdb); i++) {
|
||||
cJSON *compdb_item = cJSON_GetArrayItem(self.compdb, i);
|
||||
|
||||
if (!cJSON_HasObjectItem(compdb_item, "output"))
|
||||
grbc_exception("Ninja produced invalid compilation database!");
|
||||
|
||||
if (!cJSON_HasObjectItem(compdb_item, "command"))
|
||||
grbc_exception("Compilation database item is missing 'command'");
|
||||
|
||||
if (!cJSON_HasObjectItem(compdb_item, "file"))
|
||||
grbc_exception("Compilation database item is missing 'file'");
|
||||
|
||||
std::string command =
|
||||
cJSON_GetStringValue(cJSON_GetObjectItem(compdb_item, "command"));
|
||||
|
||||
// Only handle objects with an empty command
|
||||
// In the compilation databse objects with no command, but an output, and
|
||||
// file give us the info we need Info needed: Target name, output name
|
||||
|
||||
if (!command.empty())
|
||||
continue;
|
||||
|
||||
std::string output_name =
|
||||
cJSON_GetStringValue(cJSON_GetObjectItem(compdb_item, "output"));
|
||||
std::string library_path =
|
||||
cJSON_GetStringValue(cJSON_GetObjectItem(compdb_item, "file"));
|
||||
|
||||
if (output_name != library_name)
|
||||
continue;
|
||||
|
||||
std::filesystem::path full_lib_path = self.build_dir + "/" + library_path;
|
||||
full_lib_path =
|
||||
cmake_eval_symlink(grbc_get_config().build_dir, full_lib_path);
|
||||
|
||||
Package pkg{};
|
||||
pkg.name = output_name;
|
||||
pkg.linker_flags = grbc_get_config().build_dir + "/" + full_lib_path.filename().generic_string();
|
||||
|
||||
grbc_log("found cmake library at: " + full_lib_path.generic_string());
|
||||
|
||||
return pkg;
|
||||
}
|
||||
|
||||
grbc_exception("Failed to find library with name: " + library_name);
|
||||
|
||||
return Package{};
|
||||
}
|
||||
|
||||
std::string EXT_grbc_get_cmake_library_string(const CMakeProject &self) {
|
||||
std::string library_string;
|
||||
|
||||
for (int i = 0; i < cJSON_GetArraySize(self.compdb); i++) {
|
||||
cJSON *compdb_item = cJSON_GetArrayItem(self.compdb, i);
|
||||
|
||||
if (!cJSON_HasObjectItem(compdb_item, "output"))
|
||||
grbc_exception("Ninja produced invalid compilation database!");
|
||||
|
||||
if (!cJSON_HasObjectItem(compdb_item, "command"))
|
||||
grbc_exception("Compilation database item is missing 'command'");
|
||||
|
||||
if (!cJSON_HasObjectItem(compdb_item, "file"))
|
||||
grbc_exception("Compilation database item is missing 'file'");
|
||||
|
||||
std::string cmd =
|
||||
cJSON_GetStringValue(cJSON_GetObjectItem(compdb_item, "command"));
|
||||
|
||||
if (!cmd.empty())
|
||||
continue;
|
||||
|
||||
std::string file =
|
||||
cJSON_GetStringValue(cJSON_GetObjectItem(compdb_item, "file"));
|
||||
std::string output =
|
||||
cJSON_GetStringValue(cJSON_GetObjectItem(compdb_item, "output"));
|
||||
|
||||
library_string += "Target: " + output + "\n";
|
||||
library_string += "\tOutputting to file: " + output + "\n\n";
|
||||
}
|
||||
|
||||
return library_string;
|
||||
}
|
||||
|
||||
void grbc_cmake_init(sol::state &lua) {
|
||||
lua.new_usertype<CMakeConfig>(
|
||||
"CMakeConfig", sol::constructors<CMakeConfig(sol::table)>(),
|
||||
"configure_arguments", &CMakeConfig::configure_arguments);
|
||||
lua.new_usertype<CMakeProject>("CMakeProject", "source_dir",
|
||||
&CMakeProject::source_dir, "build_dir",
|
||||
&CMakeProject::build_dir);
|
||||
|
||||
lua["CMakeProject"]["get_library"] = EXT_grbc_get_cmake_library;
|
||||
lua["CMakeProject"]["get_library_string"] = EXT_grbc_get_cmake_library_string;
|
||||
|
||||
lua.set("grbc_import_cmake", EXT_grbc_import_cmake);
|
||||
}
|
||||
|
||||
Extension grbc_cmake() {
|
||||
Extension ext{};
|
||||
ext.name = GRBC_EXT_cmake_NAME;
|
||||
ext.hook_init = grbc_cmake_init;
|
||||
|
||||
return ext;
|
||||
}
|
72
src/ext_dynamic.cc
Normal file
72
src/ext_dynamic.cc
Normal file
|
@ -0,0 +1,72 @@
|
|||
#include "grbc/ext_dynamic.h"
|
||||
|
||||
extern "C" {
|
||||
#include "dlopen.h"
|
||||
}
|
||||
|
||||
#include "grbc/ext.h"
|
||||
#include "grbc/helpers.h"
|
||||
#include "grbc/spec.h"
|
||||
#include <filesystem>
|
||||
|
||||
typedef const char *(*EXT_GetName)();
|
||||
|
||||
void EXT_dynamic_ext(const std::string &extension_name) {
|
||||
const std::array<std::string, 4> extension_paths = {
|
||||
"./grbc_ext", "C:\\grbc\\ext", "./", "./build"};
|
||||
|
||||
std::filesystem::path good_extension_path;
|
||||
|
||||
for (size_t i = 0; i < extension_paths.size(); i++) {
|
||||
std::filesystem::path extension_path =
|
||||
std::filesystem::path(extension_paths[i]) /
|
||||
std::filesystem::path(extension_name + ".grbcext");
|
||||
|
||||
if (std::filesystem::exists(extension_path)) {
|
||||
good_extension_path = extension_path;
|
||||
|
||||
break;
|
||||
} else {
|
||||
log_msg(("no extension at: " + extension_path.generic_string()).c_str());
|
||||
}
|
||||
}
|
||||
|
||||
if (good_extension_path.empty())
|
||||
grbc_exception("Failed to find GRBC dynamic extension!");
|
||||
|
||||
struct hotwire_dll_t dll = hw_dlopen(good_extension_path.c_str(), 0x00002);
|
||||
|
||||
EXT_HookInit hook_init = (EXT_HookInit)hw_dlsym(dll, "GRBC_Hook_Init");
|
||||
EXT_GetName get_name = (EXT_GetName)hw_dlsym(dll, "GRBC_Get_Name");
|
||||
|
||||
if (hook_init == nullptr)
|
||||
grbc_exception(
|
||||
"Dynamic extension is missing public GRBC_Hook_Init symbol!");
|
||||
|
||||
if (get_name == nullptr)
|
||||
grbc_exception("Dynamic extension is missing public GRBC_Get_Name symbol!");
|
||||
|
||||
Extension ext{};
|
||||
ext.name = get_name();
|
||||
ext.hook_init = hook_init;
|
||||
|
||||
log_msg(
|
||||
("loaded dynamic extension from: " + good_extension_path.generic_string())
|
||||
.c_str());
|
||||
|
||||
grbc_register_ext(ext);
|
||||
}
|
||||
|
||||
void grbc_dynamic_init(sol::state &lua) {
|
||||
lua.set("grbc_dynamic_ext", EXT_dynamic_ext);
|
||||
|
||||
log_msg("dynamic extension support loaded!");
|
||||
}
|
||||
|
||||
Extension grbc_dynamic() {
|
||||
Extension ext{};
|
||||
ext.name = GRBC_EXT_dynamic_extensions_NAME;
|
||||
ext.hook_init = grbc_dynamic_init;
|
||||
|
||||
return ext;
|
||||
}
|
27
src/ext_easy.cc
Normal file
27
src/ext_easy.cc
Normal file
|
@ -0,0 +1,27 @@
|
|||
#include "grbc/ext_easy.h"
|
||||
#include "grbc/ext.h"
|
||||
#include "grbc/spec.h"
|
||||
|
||||
void grbc_easy_init(sol::state &lua) {
|
||||
TaskConfig clean_task_cfg{};
|
||||
clean_task_cfg.name = "Clean build";
|
||||
clean_task_cfg.task_id = "clean";
|
||||
clean_task_cfg.shell_script = "ninja -t clean";
|
||||
|
||||
grbc_task(clean_task_cfg);
|
||||
|
||||
TaskConfig compdb_task_cfg{};
|
||||
compdb_task_cfg.name = "Compilation database (clangd)";
|
||||
compdb_task_cfg.task_id = "compdb";
|
||||
compdb_task_cfg.shell_script = "rm -f compile_commands.json; ninja -t compdb >> compile_commands.json";
|
||||
|
||||
grbc_task(compdb_task_cfg);
|
||||
}
|
||||
|
||||
Extension grbc_easy() {
|
||||
Extension ext{};
|
||||
ext.name = GRBC_EXT_easy_NAME;
|
||||
ext.hook_init = grbc_easy_init;
|
||||
|
||||
return ext;
|
||||
}
|
|
@ -51,17 +51,21 @@ void grbc_profiles_init(sol::state &lua) {
|
|||
|
||||
Profile release_with_debug_symbols_profile{};
|
||||
release_with_debug_symbols_profile.name = "release_with_debug_symbols";
|
||||
release_with_debug_symbols_profile.compiler_flags = {"-g", "-O3"};
|
||||
release_with_debug_symbols_profile.compiler_flags = {"-g", "-O3", "-DNDEBUG"};
|
||||
|
||||
Profile release_profile{};
|
||||
release_profile.name = "release";
|
||||
release_profile.linker_flags = {"-O3"};
|
||||
release_profile.linker_flags = {"-O3", "-DNDEBUG"};
|
||||
|
||||
EXT_profiles_get_profiles().push_back(debug_profile);
|
||||
EXT_profiles_get_profiles().push_back(release_with_debug_symbols_profile);
|
||||
EXT_profiles_get_profiles().push_back(release_profile);
|
||||
|
||||
EXT_profiles_set("debug"); // Always use debug as the default profile
|
||||
if (!grbc_has_option("compiler_profile")) {
|
||||
EXT_profiles_set("debug"); // Always use debug as the default profile
|
||||
} else {
|
||||
EXT_profiles_set(grbc_get_option("compiler_profile"));
|
||||
}
|
||||
|
||||
lua.set("grbc_set_profile", EXT_profiles_set);
|
||||
|
||||
|
|
288
src/main.cc
288
src/main.cc
|
@ -1,13 +1,53 @@
|
|||
#include "grbc/ext.h"
|
||||
#include "grbc/ext_cmake.h"
|
||||
#include "grbc/ext_dynamic.h"
|
||||
#include "grbc/ext_easy.h"
|
||||
#include "grbc/ext_pkg_config.h"
|
||||
#include "grbc/ext_profiles.h"
|
||||
#include "grbc/state.h"
|
||||
#define SOL_ALL_SAFETIES_ON 1
|
||||
|
||||
#include "grbc/helpers.h"
|
||||
#include "grbc/spec.h"
|
||||
#include "grbc/state.h"
|
||||
#include <cstdlib>
|
||||
#include <map>
|
||||
#include <sol/raii.hpp>
|
||||
#include <sol/sol.hpp>
|
||||
#include <sol/table.hpp>
|
||||
|
||||
void print_help() {
|
||||
printf("GRBC - Graphite Build Configurator\n");
|
||||
printf("Author: Interfiber <webmaster@interfiber.dev>\n");
|
||||
printf("Commands:\n");
|
||||
printf(" gen - Generate build configuration from HConfig\n");
|
||||
printf(" ext - Invoke a dynamic extension\n");
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
if (argc == 1) {
|
||||
print_help();
|
||||
|
||||
std::exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
std::map<std::string, std::string> options;
|
||||
|
||||
for (int i = 0; i < argc; i++) {
|
||||
std::string arg = argv[i];
|
||||
|
||||
if (arg[0] == '-' && i + 1 < argc) {
|
||||
if (std::string(argv[i + 1]).empty())
|
||||
continue;
|
||||
|
||||
arg.erase(arg.begin());
|
||||
|
||||
options.insert({arg, std::string(argv[i + 1])});
|
||||
|
||||
log_msg(
|
||||
("found option: " + arg + " = " + std::string(argv[i + 1])).c_str());
|
||||
}
|
||||
}
|
||||
|
||||
GState::get().options = options;
|
||||
|
||||
int main() {
|
||||
log_msg("opening lua libraries...");
|
||||
|
||||
auto &lua = GState::get().lua;
|
||||
|
@ -15,132 +55,174 @@ int main() {
|
|||
lua.open_libraries(sol::lib::base, sol::lib::coroutine, sol::lib::string,
|
||||
sol::lib::io, sol::lib::package, sol::lib::math);
|
||||
|
||||
log_msg("setting up runtime...");
|
||||
if (std::string(argv[1]) == "ext") {
|
||||
if (argc < 3) grbc_exception("expected argument 'dynamic_ext_path'");
|
||||
|
||||
// TargetInfo
|
||||
lua.new_usertype<TargetInfo>("TargetInfo", "name", &TargetInfo::name);
|
||||
log_msg("invoking extension...");
|
||||
|
||||
// PackageConfig
|
||||
lua.new_usertype<PackageConfig>(
|
||||
"PackageConfig", sol::constructors<PackageConfig(sol::table)>(), "name",
|
||||
&PackageConfig::name, "libraries", &PackageConfig::libraries,
|
||||
"include_dirs", &PackageConfig::include_dirs, "compile_flags",
|
||||
&PackageConfig::compile_flags, "linker_flags",
|
||||
&PackageConfig::linker_flags);
|
||||
grbc_register_ext(grbc_dynamic()); // Register dynamic extensions
|
||||
|
||||
// GlobalConfig
|
||||
lua.new_usertype<GlobalConfig>("GlobalConfig", "engine_version",
|
||||
&GlobalConfig::engine_version, "architecture",
|
||||
&GlobalConfig::architecture, "target_config",
|
||||
&GlobalConfig::platform_config);
|
||||
grbc_ext(GRBC_EXT_dynamic_extensions_NAME); // Load dynamic extension
|
||||
|
||||
// Platform
|
||||
lua.new_usertype<Platform>("Platform", "name", &Platform::name,
|
||||
"cxx_compiler", &Platform::cxx_compiler,
|
||||
"cc_compiler", &Platform::cc_compiler,
|
||||
"platform_type", &Platform::platform_type,
|
||||
"is_64bit", &Platform::is_64bit);
|
||||
lua.script("grbc_dynamic_ext('" + std::string(argv[2]) + "')");
|
||||
|
||||
// PlatformType
|
||||
lua.new_enum<PlatformType>("PlatformType", {{"Win32", PlatformType_Win32},
|
||||
{"Linux", PlatformType_Linux}});
|
||||
Extension ext =
|
||||
GState::get()
|
||||
.extensions.front(); // Only one extension should be loaded!
|
||||
|
||||
// LanguageType
|
||||
lua.new_enum<LanguageType>(
|
||||
"LanguageType", {{"Cpp", LanguageType_CPP}, {"C", LanguageType_C}});
|
||||
ext.invoke(); // Invoke extension
|
||||
} else if (std::string(argv[1]) == "gen") {
|
||||
log_msg("running grbc generator...");
|
||||
|
||||
// LibraryType
|
||||
lua.new_enum<LibraryType>("LibraryType", {{"Static", LibraryType_Static},
|
||||
{"Shared", LibraryType_Shared}});
|
||||
log_msg("setting up runtime...");
|
||||
|
||||
// ExecutableConfig
|
||||
lua.new_usertype<ExecutableConfig>(
|
||||
"ExecutableConfig", sol::constructors<ExecutableConfig(sol::table)>(),
|
||||
"name", &ExecutableConfig::name, "files", &ExecutableConfig::files,
|
||||
"requirements", &ExecutableConfig::requirements, "compile_flags",
|
||||
&ExecutableConfig::compile_flags, "linker_flags",
|
||||
&ExecutableConfig::linker_flags, "include_dirs",
|
||||
&ExecutableConfig::include_dirs, "language_type",
|
||||
&ExecutableConfig::language_type);
|
||||
// TargetInfo
|
||||
lua.new_usertype<TargetInfo>("TargetInfo", "name", &TargetInfo::name);
|
||||
|
||||
// LibraryConfig
|
||||
lua.new_usertype<LibraryConfig>(
|
||||
"LibraryConfig", sol::constructors<LibraryConfig(sol::table)>(), "name",
|
||||
&LibraryConfig::name, "files", &LibraryConfig::files, "requirements",
|
||||
&LibraryConfig::requirements, "compile_flags",
|
||||
&LibraryConfig::compile_flags, "linker_flags",
|
||||
&LibraryConfig::linker_flags, "include_dirs",
|
||||
&LibraryConfig::include_dirs, "language_type",
|
||||
&LibraryConfig::language_type, "lib_type", &LibraryConfig::lib_type,
|
||||
"package_config", &LibraryConfig::package_config);
|
||||
// PackageConfig
|
||||
lua.new_usertype<PackageConfig>(
|
||||
"PackageConfig", sol::constructors<PackageConfig(sol::table)>(), "name",
|
||||
&PackageConfig::name, "libraries", &PackageConfig::libraries,
|
||||
"include_dirs", &PackageConfig::include_dirs, "compile_flags",
|
||||
&PackageConfig::compile_flags, "linker_flags",
|
||||
&PackageConfig::linker_flags);
|
||||
|
||||
// Package
|
||||
lua.new_usertype<Package>("Package", sol::constructors<Package(sol::table)>(),
|
||||
"name", &Package::name, "compiler_flags",
|
||||
&Package::compiler_flags, "linker_flags",
|
||||
&Package::linker_flags);
|
||||
// GlobalConfig
|
||||
lua.new_usertype<GlobalConfig>(
|
||||
"GlobalConfig", "engine_version", &GlobalConfig::engine_version,
|
||||
"architecture", &GlobalConfig::architecture, "target_config",
|
||||
&GlobalConfig::platform_config);
|
||||
|
||||
lua.set("grbc_want_version", grbc_want_version);
|
||||
lua.set("grbc_exception", grbc_exception);
|
||||
lua.set("grbc_get_config", grbc_get_config);
|
||||
lua.set("grbc_file", grbc_file);
|
||||
lua.set("grbc_executable", grbc_executable);
|
||||
lua.set("grbc_library", grbc_library);
|
||||
lua.set("grbc_load_platform", grbc_load_platform);
|
||||
lua.set("grbc_set_platform", grbc_set_platform);
|
||||
lua.set("grbc_find_compiler", grbc_find_compiler);
|
||||
lua.set("grbc_build", grbc_build);
|
||||
lua.set("grbc_replace_string", grbc_replace_string);
|
||||
lua.set("grbc_object_file", grbc_object_file);
|
||||
lua.set("grbc_include_dirs_to_clflags", grbc_include_dirs_to_cflags);
|
||||
lua.set("grbc_log", grbc_log);
|
||||
lua.set("grbc_is_32bit", grbc_is_32bit);
|
||||
lua.set("grbc_is_64bit", grbc_is_64bit);
|
||||
lua.set("grbc_is_linux", grbc_is_linux);
|
||||
lua.set("grbc_is_win32", grbc_is_win32);
|
||||
lua.set("grbc_get_platform", grbc_get_platform);
|
||||
lua.set("grbc_compiler_define", grbc_compiler_define);
|
||||
lua.set("grbc_get_lib_extension", grbc_get_lib_extension);
|
||||
lua.set("grbc_bake_package_config", grbc_bake_package_config);
|
||||
lua.set("grbc_pkg", grbc_pkg);
|
||||
lua.set("grbc_ext", grbc_ext);
|
||||
lua.set("grbc_has_ext", grbc_has_ext);
|
||||
lua.set("grbc_platform_file", grbc_platform_file);
|
||||
lua.set("grbc_is_ext_loaded", grbc_is_ext_loaded);
|
||||
// Platform
|
||||
lua.new_usertype<Platform>("Platform", "name", &Platform::name,
|
||||
"cxx_compiler", &Platform::cxx_compiler,
|
||||
"cc_compiler", &Platform::cc_compiler,
|
||||
"platform_type", &Platform::platform_type,
|
||||
"is_64bit", &Platform::is_64bit);
|
||||
|
||||
// Load generators
|
||||
// PlatformType
|
||||
lua.new_enum<PlatformType>("PlatformType", {{"Win32", PlatformType_Win32},
|
||||
{"Linux", PlatformType_Linux}});
|
||||
|
||||
GState::get().generators.push_back(
|
||||
{.name = "ninja", .func = ninja_generator});
|
||||
// LanguageType
|
||||
lua.new_enum<LanguageType>(
|
||||
"LanguageType", {{"Cpp", LanguageType_CPP}, {"C", LanguageType_C}});
|
||||
|
||||
// Load default extensions
|
||||
// LibraryType
|
||||
lua.new_enum<LibraryType>("LibraryType", {{"Static", LibraryType_Static},
|
||||
{"Shared", LibraryType_Shared}});
|
||||
|
||||
// ExecutableConfig
|
||||
lua.new_usertype<ExecutableConfig>(
|
||||
"ExecutableConfig", sol::constructors<ExecutableConfig(sol::table)>(),
|
||||
"name", &ExecutableConfig::name, "files", &ExecutableConfig::files,
|
||||
"requirements", &ExecutableConfig::requirements, "compile_flags",
|
||||
&ExecutableConfig::compile_flags, "linker_flags",
|
||||
&ExecutableConfig::linker_flags, "include_dirs",
|
||||
&ExecutableConfig::include_dirs, "language_type",
|
||||
&ExecutableConfig::language_type);
|
||||
|
||||
// LibraryConfig
|
||||
lua.new_usertype<LibraryConfig>(
|
||||
"LibraryConfig", sol::constructors<LibraryConfig(sol::table)>(), "name",
|
||||
&LibraryConfig::name, "files", &LibraryConfig::files, "requirements",
|
||||
&LibraryConfig::requirements, "compile_flags",
|
||||
&LibraryConfig::compile_flags, "linker_flags",
|
||||
&LibraryConfig::linker_flags, "include_dirs",
|
||||
&LibraryConfig::include_dirs, "language_type",
|
||||
&LibraryConfig::language_type, "lib_type", &LibraryConfig::lib_type,
|
||||
"package_config", &LibraryConfig::package_config);
|
||||
|
||||
// Package
|
||||
lua.new_usertype<Package>(
|
||||
"Package", sol::constructors<Package(sol::table)>(), "name",
|
||||
&Package::name, "compiler_flags", &Package::compiler_flags,
|
||||
"linker_flags", &Package::linker_flags);
|
||||
|
||||
// TaskConfig
|
||||
lua.new_usertype<TaskConfig>(
|
||||
"TaskConfig", sol::constructors<TaskConfig(sol::table)>(), "name",
|
||||
&TaskConfig::name, "task_id", &TaskConfig::task_id, "shell_script",
|
||||
&TaskConfig::shell_script);
|
||||
|
||||
// Property
|
||||
lua.new_usertype<Property>("Property", sol::constructors<Property(sol::table)>(), "name", &Property::name, "value", &Property::value);
|
||||
|
||||
lua.set("grbc_want_version", grbc_want_version);
|
||||
lua.set("grbc_exception", grbc_exception);
|
||||
lua.set("grbc_get_config", grbc_get_config);
|
||||
lua.set("grbc_file", grbc_file);
|
||||
lua.set("grbc_executable", grbc_executable);
|
||||
lua.set("grbc_library", grbc_library);
|
||||
lua.set("grbc_load_platform", grbc_load_platform);
|
||||
lua.set("grbc_set_platform", grbc_set_platform);
|
||||
lua.set("grbc_find_compiler", grbc_find_compiler);
|
||||
lua.set("grbc_build", grbc_build);
|
||||
lua.set("grbc_replace_string", grbc_replace_string);
|
||||
lua.set("grbc_object_file", grbc_object_file);
|
||||
lua.set("grbc_include_dirs_to_clflags", grbc_include_dirs_to_cflags);
|
||||
lua.set("grbc_log", grbc_log);
|
||||
lua.set("grbc_is_32bit", grbc_is_32bit);
|
||||
lua.set("grbc_is_64bit", grbc_is_64bit);
|
||||
lua.set("grbc_is_linux", grbc_is_linux);
|
||||
lua.set("grbc_is_win32", grbc_is_win32);
|
||||
lua.set("grbc_get_platform", grbc_get_platform);
|
||||
lua.set("grbc_compiler_define", grbc_compiler_define);
|
||||
lua.set("grbc_get_lib_extension", grbc_get_lib_extension);
|
||||
lua.set("grbc_bake_package_config", grbc_bake_package_config);
|
||||
lua.set("grbc_pkg", grbc_pkg);
|
||||
lua.set("grbc_ext", grbc_ext);
|
||||
lua.set("grbc_has_ext", grbc_has_ext);
|
||||
lua.set("grbc_platform_file", grbc_platform_file);
|
||||
lua.set("grbc_is_ext_loaded", grbc_is_ext_loaded);
|
||||
lua.set("grbc_task", grbc_task);
|
||||
lua.set("grbc_has_option", grbc_has_option);
|
||||
lua.set("grbc_get_option", grbc_get_option);
|
||||
lua.set("grbc_property", grbc_property);
|
||||
lua.set("grbc_cxx_version", grbc_cxx_version);
|
||||
lua.set("grbc_global_properties", grbc_global_properties);
|
||||
|
||||
// Load generators
|
||||
|
||||
GState::get().generators.push_back(
|
||||
{.name = "ninja", .func = ninja_generator});
|
||||
|
||||
// Load default extensions
|
||||
|
||||
#if !defined(_WIN32)
|
||||
grbc_register_ext(grbc_pkg_config());
|
||||
grbc_register_ext(grbc_pkg_config());
|
||||
#endif
|
||||
|
||||
grbc_register_ext(grbc_profiles());
|
||||
grbc_register_ext(grbc_profiles());
|
||||
grbc_register_ext(grbc_easy());
|
||||
grbc_register_ext(grbc_dynamic());
|
||||
grbc_register_ext(grbc_cmake());
|
||||
|
||||
// Detect platform
|
||||
log_msg("autodetecting platform...");
|
||||
// Detect platform
|
||||
log_msg("autodetecting platform...");
|
||||
|
||||
#if defined(WIN32)
|
||||
GState::get().current_platform.platform_type = PlatformType_Win32;
|
||||
GState::get().current_platform.name = "Windows";
|
||||
GState::get().current_platform.platform_type = PlatformType_Win32;
|
||||
GState::get().current_platform.name = "Windows";
|
||||
#elif defined(__linux__)
|
||||
GState::get().current_platform.platform_type = PlatformType_Linux;
|
||||
GState::get().current_platform.name = "Linux";
|
||||
GState::get().current_platform.platform_type = PlatformType_Linux;
|
||||
GState::get().current_platform.name = "Linux";
|
||||
#endif
|
||||
|
||||
#if defined(ENVIRONMENT32)
|
||||
GState::get().current_platform.is_64bit = false;
|
||||
GState::get().current_platform.is_64bit = false;
|
||||
#endif
|
||||
|
||||
// Default compiler is g++
|
||||
GState::get().current_platform.cc_compiler = grbc_find_compiler("gcc");
|
||||
GState::get().current_platform.cxx_compiler = grbc_find_compiler("g++");
|
||||
// Default compiler is g++
|
||||
GState::get().current_platform.cc_compiler = grbc_find_compiler("gcc");
|
||||
GState::get().current_platform.cxx_compiler = grbc_find_compiler("g++");
|
||||
|
||||
log_msg("loading HConfig...");
|
||||
log_msg("loading HConfig...");
|
||||
|
||||
lua.script_file("HConfig");
|
||||
lua.script_file("HConfig");
|
||||
} else {
|
||||
printf("unknown command\n");
|
||||
|
||||
std::exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
40
src/ninja.cc
40
src/ninja.cc
|
@ -74,7 +74,8 @@ ninja_build_rule_compile_file(const GeneratorCompileCommand &compile_cmd) {
|
|||
|
||||
result += "build $builddir/" + compile_cmd.object_file + ": " +
|
||||
compiler_rule + " " + compile_cmd.source_file + "\n";
|
||||
result += " p_cflags = " + compile_cmd.compiler_flags + GState::get().global_compiler_flags + "\n\n";
|
||||
result += " p_cflags = " + compile_cmd.compiler_flags +
|
||||
GState::get().global_compiler_flags + "\n\n";
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -104,7 +105,8 @@ ninja_build_rule_link_lib_target(const GeneratorLinkTargetCommand &link_cmd) {
|
|||
result += "build $builddir/" + link_cmd.output_name + ": link_cxx " +
|
||||
file_list + "\n";
|
||||
|
||||
result += " p_linker_flags = " + link_cmd.linker_flags + " -shared" + GState::get().global_linker_flags + "\n";
|
||||
result += " p_linker_flags = " + link_cmd.linker_flags + " -shared" +
|
||||
GState::get().global_linker_flags + "\n";
|
||||
result += " p_cflags = " + GState::get().global_compiler_flags + "\n\n";
|
||||
} else {
|
||||
result += "build $builddir/" + link_cmd.output_name + ": archive " +
|
||||
|
@ -129,7 +131,8 @@ ninja_build_rule_link_exe_target(const GeneratorLinkTargetCommand &link_cmd) {
|
|||
if (!link_cmd.libraries.empty()) {
|
||||
lib_list = "| ";
|
||||
for (auto &lib : link_cmd.libraries) {
|
||||
if (lib.empty()) continue;
|
||||
if (lib.empty())
|
||||
continue;
|
||||
|
||||
lib_list += "$builddir/" + lib + " ";
|
||||
}
|
||||
|
@ -141,12 +144,26 @@ ninja_build_rule_link_exe_target(const GeneratorLinkTargetCommand &link_cmd) {
|
|||
|
||||
result += "build $builddir/" + link_cmd.output_name + ": link_cxx " +
|
||||
file_list + " " + lib_list + "\n";
|
||||
result += " p_linker_flags = " + link_cmd.linker_flags + GState::get().global_linker_flags + "\n";
|
||||
result += " p_linker_flags = " + link_cmd.linker_flags +
|
||||
GState::get().global_linker_flags + "\n";
|
||||
result += " p_cflags = " + GState::get().global_compiler_flags + "\n\n";
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
std::string ninja_build_rule_task(const GeneratorTask &task) {
|
||||
std::string result;
|
||||
|
||||
result += "## " + task.id + " ##\n";
|
||||
result += "rule " + task.id + "_task\n";
|
||||
result += " command = " + task.shell_script + "\n";
|
||||
result += " description = " + task.description += "\n\n";
|
||||
|
||||
result += "build " + task.id + ": " + task.id + "_task\n\n";
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// Ninja generator entry
|
||||
|
||||
GeneratorResult ninja_generator() {
|
||||
|
@ -156,7 +173,9 @@ GeneratorResult ninja_generator() {
|
|||
|
||||
result.file_name = "build.ninja";
|
||||
|
||||
result.content += "### GRBC BUILT-IN NINJA GENERATOR ###\n\n";
|
||||
result.content += "### GENERATED BY THE GRBC BUILT-IN NINJA GENERATOR ###\n";
|
||||
result.content += "### GENERATED ON: " + std::to_string(std::time(nullptr)) + " ###\n\n";
|
||||
|
||||
result.content += ninja_build_default_variables();
|
||||
result.content += ninja_build_rule_compile_cc();
|
||||
result.content += ninja_build_rule_compile_cxx();
|
||||
|
@ -164,6 +183,8 @@ GeneratorResult ninja_generator() {
|
|||
result.content += ninja_build_rule_link_cxx();
|
||||
result.content += ninja_build_rule_archive_library();
|
||||
|
||||
std::string targets;
|
||||
|
||||
for (auto &target : GState::get().targets) {
|
||||
for (auto &compile_cmd : target.compile_commands) {
|
||||
result.content += ninja_build_rule_compile_file(compile_cmd);
|
||||
|
@ -175,8 +196,17 @@ GeneratorResult ninja_generator() {
|
|||
} else {
|
||||
result.content += ninja_build_rule_link_lib_target(link_cmd);
|
||||
}
|
||||
|
||||
targets += "$builddir/" + link_cmd.output_name + " ";
|
||||
}
|
||||
}
|
||||
|
||||
for (auto &task : GState::get().tasks) {
|
||||
result.content += ninja_build_rule_task(task);
|
||||
}
|
||||
|
||||
result.content += "build all: phony " + targets + "\n\n";
|
||||
result.content += "default all\n";
|
||||
|
||||
return result;
|
||||
}
|
22
src/options.cc
Normal file
22
src/options.cc
Normal file
|
@ -0,0 +1,22 @@
|
|||
#include "grbc/spec.h"
|
||||
#include "grbc/state.h"
|
||||
|
||||
bool grbc_has_option(const std::string &option_name) {
|
||||
for (auto &k : GState::get().options) {
|
||||
if (k.first == option_name)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string grbc_get_option(const std::string &option_name) {
|
||||
for (auto &k : GState::get().options) {
|
||||
if (k.first == option_name)
|
||||
return k.second;
|
||||
}
|
||||
|
||||
grbc_exception("Failed to find option with name '" + option_name + "'");
|
||||
|
||||
return "";
|
||||
}
|
|
@ -1,3 +1,4 @@
|
|||
#include "grbc/ext.h"
|
||||
#include "grbc/generator.h"
|
||||
#include "grbc/spec.h"
|
||||
#include "grbc/state.h"
|
||||
|
@ -26,6 +27,14 @@ TargetInfo grbc_executable(const ExecutableConfig &executable_config) {
|
|||
compiler_args += compiler_arg + " ";
|
||||
}
|
||||
|
||||
std::vector<Property> properties = executable_config.properties; for (auto &global_property : GState::get().global_properties)
|
||||
properties.push_back(global_property);
|
||||
|
||||
for (auto &property : properties) {
|
||||
if (property.name == GRBC_PROPERTY_CXX_VERSION)
|
||||
compiler_args += "-std=" + property.value + " ";
|
||||
}
|
||||
|
||||
// Include directories
|
||||
|
||||
compiler_args += grbc_include_dirs_to_cflags(executable_config.include_dirs);
|
||||
|
@ -50,6 +59,8 @@ TargetInfo grbc_executable(const ExecutableConfig &executable_config) {
|
|||
object_files.push_back(compile_cmd.object_file);
|
||||
|
||||
target.compile_commands.push_back(compile_cmd);
|
||||
|
||||
grbc_ext_process_file(src_file);
|
||||
}
|
||||
|
||||
// Final executable link
|
||||
|
|
|
@ -5,6 +5,11 @@
|
|||
TargetInfo grbc_library(const LibraryConfig &library_config) {
|
||||
TargetInfo target_config{};
|
||||
|
||||
if (library_config.name[0] != 'l' && library_config.name[1] != 'i' &&
|
||||
library_config.name[2] != 'b') {
|
||||
grbc_exception("library names are mandated to start with 'lib'");
|
||||
}
|
||||
|
||||
std::string lib_name = library_config.name;
|
||||
lib_name += grbc_get_lib_extension(library_config.lib_type);
|
||||
|
||||
|
@ -28,6 +33,15 @@ TargetInfo grbc_library(const LibraryConfig &library_config) {
|
|||
compiler_args += "-fPIC ";
|
||||
}
|
||||
|
||||
std::vector<Property> properties = library_config.properties;
|
||||
for (auto &global_property : GState::get().global_properties)
|
||||
properties.push_back(global_property);
|
||||
|
||||
for (auto &property : properties) {
|
||||
if (property.name == GRBC_PROPERTY_CXX_VERSION)
|
||||
compiler_args += "-std=" + property.value + " ";
|
||||
}
|
||||
|
||||
// Include directories
|
||||
|
||||
compiler_args += grbc_include_dirs_to_cflags(library_config.include_dirs);
|
||||
|
@ -46,6 +60,8 @@ TargetInfo grbc_library(const LibraryConfig &library_config) {
|
|||
object_files.push_back(compile_cmd.object_file);
|
||||
|
||||
target.compile_commands.push_back(compile_cmd);
|
||||
|
||||
grbc_ext_process_file(src_file);
|
||||
}
|
||||
|
||||
// Libraries which need to be built before us
|
||||
|
|
12
src/task.cc
Normal file
12
src/task.cc
Normal file
|
@ -0,0 +1,12 @@
|
|||
#include "grbc/generator.h"
|
||||
#include "grbc/spec.h"
|
||||
#include "grbc/state.h"
|
||||
|
||||
void grbc_task(const TaskConfig &config) {
|
||||
GeneratorTask task{};
|
||||
task.description = "Running task: " + config.name + " (" + config.task_id + ")";
|
||||
task.id = config.task_id;
|
||||
task.shell_script = config.shell_script;
|
||||
|
||||
GState::get().tasks.push_back(task);
|
||||
}
|
29
src/utils.cc
29
src/utils.cc
|
@ -48,7 +48,7 @@ std::string grbc_replace_string(const std::string &string, char substring,
|
|||
return res;
|
||||
}
|
||||
|
||||
GlobalConfig& grbc_get_config() {
|
||||
GlobalConfig &grbc_get_config() {
|
||||
static GlobalConfig cfg{};
|
||||
|
||||
return cfg;
|
||||
|
@ -97,4 +97,31 @@ std::string grbc_get_lib_extension(LibraryType lib_type) {
|
|||
"library combo");
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
Property grbc_property(const std::string &key, const std::string &value) {
|
||||
static std::vector<std::string> validPropertyNames = {
|
||||
GRBC_PROPERTY_CXX_VERSION};
|
||||
|
||||
for (const std::string &propertyName : validPropertyNames) {
|
||||
if (propertyName == key) {
|
||||
Property property{};
|
||||
property.name = key;
|
||||
property.value = value;
|
||||
|
||||
return property;
|
||||
}
|
||||
}
|
||||
|
||||
grbc_exception("Invalid property name: " + key);
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
Property grbc_cxx_version(const std::string &version_string) {
|
||||
return grbc_property(GRBC_PROPERTY_CXX_VERSION, version_string);
|
||||
}
|
||||
|
||||
void grbc_global_properties(const sol::table &properties) {
|
||||
GState::get().global_properties = properties.as<std::vector<Property>>();
|
||||
}
|
Loading…
Reference in a new issue