diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-05-02 19:38:33 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-02 19:38:33 +0200 |
| commit | 87979899ce833ca477bb563b84e3698224119dab (patch) | |
| tree | df67a0724de4c76ce594222747220c233c3bc7f5 /tools | |
| parent | 3afc481dc64a07fe7fcaff9ce7a12a492c3ec8e7 (diff) | |
| parent | fb12b9730d78052f5cafbd84fbc9a830a22cec17 (diff) | |
Merge pull request #4 from nekernel-org/dev
0.0.1
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/asm.cc | 156 | ||||
| -rw-r--r-- | tools/cppdrv.cc | 27 | ||||
| -rw-r--r-- | tools/cppdrv.json | 12 | ||||
| -rw-r--r-- | tools/cxxdrv.cc | 90 | ||||
| -rw-r--r-- | tools/dbg.cc | 9 | ||||
| -rw-r--r-- | tools/kdbg.cc | 18 | ||||
| -rw-r--r-- | tools/kdbg.json | 12 | ||||
| -rw-r--r-- | tools/ld64.cc | 12 |
8 files changed, 155 insertions, 181 deletions
diff --git a/tools/asm.cc b/tools/asm.cc index d84a904..36e55cf 100644 --- a/tools/asm.cc +++ b/tools/asm.cc @@ -1,6 +1,6 @@ /* ------------------------------------------- - Copyright (C) 2024-2025 Amlal EL Mahrous, all rights reserved + Copyright (C) 2024-2025 Amlal EL Mahrous, all rights reserved ------------------------------------------- */ @@ -9,8 +9,8 @@ #include <LibCompiler/Defines.h> #include <LibCompiler/Version.h> -#include <iostream> #include <cstring> +#include <iostream> #include <string> #include <vector> @@ -19,94 +19,80 @@ LC_IMPORT_C int AssemblerMainARM64(int argc, char const* argv[]); LC_IMPORT_C int AssemblerMain64x0(int argc, char const* argv[]); LC_IMPORT_C int AssemblerMainAMD64(int argc, char const* argv[]); -enum AsmKind : Int32 -{ - kX64Assembler, - k64X0Assembler, - kPOWER64Assembler, - kARM64Assembler, - kAssemblerCount, +enum AsmKind : Int32 { + kInvalidAssembler = 0, + kX64Assembler = 100, + k64X0Assembler, + kPOWER64Assembler, + kARM64Assembler, + kAssemblerCount, }; -int main(int argc, char const* argv[]) -{ - std::vector<const char*> arg_vec_cstr; - arg_vec_cstr.push_back(argv[0]); +int main(int argc, char const* argv[]) { + std::vector<const char*> arg_vec_cstr; + arg_vec_cstr.push_back(argv[0]); - const Int32 kInvalidAssembler = -1; - Int32 asm_type = kInvalidAssembler; + const Int32 kInvalidAssembler = -1; + Int32 asm_type = kInvalidAssembler; - for (size_t index_arg = 1; index_arg < argc; ++index_arg) - { - if (strstr(argv[index_arg], "--asm:h")) - { - std::printf("asm.exe: Frontend Assembler (64x0, power64, arm64, x64).\n"); - std::printf("asm.exe: Version: %s, Release: %s.\n", kDistVersion, kDistRelease); - std::printf("asm.exe: Designed by Amlal El Mahrouss, Copyright (C) 2024-2025 Amlal El Mahrouss, all rights reserved.\n"); - std::printf("libCompiler.dylib: Designed by Amlal El Mahrouss, Copyright (C) 2024-2025 Amlal El Mahrouss, all rights reserved.\n"); + for (size_t index_arg = 1; index_arg < argc; ++index_arg) { + if (strstr(argv[index_arg], "--asm:h")) { + std::printf("asm: Frontend Assembler (64x0, power64, arm64, x64).\n"); + std::printf("asm: Version: %s, Release: %s.\n", kDistVersion, kDistRelease); + std::printf( + "asm: Designed by Amlal El Mahrouss, Copyright (C) 2024-2025 Amlal El Mahrouss, all " + "rights reserved.\n"); + std::printf( + "LibCompiler: Designed by Amlal El Mahrouss, Copyright (C) 2024-2025 Amlal El Mahrouss, " + "all rights reserved.\n"); - return 0; - } - else if (strstr(argv[index_arg], "--asm:x64")) - { - asm_type = kX64Assembler; - } - else if (strstr(argv[index_arg], "--asm:aarch64")) - { - asm_type = kARM64Assembler; - } - else if (strstr(argv[index_arg], "--asm:64x0")) - { - asm_type = k64X0Assembler; - } - else if (strstr(argv[index_arg], "--asm:power64")) - { - asm_type = kPOWER64Assembler; - } - else - { - arg_vec_cstr.push_back(argv[index_arg]); - } - } + return 0; + } else if (strstr(argv[index_arg], "--asm:x64")) { + asm_type = kX64Assembler; + } else if (strstr(argv[index_arg], "--asm:aarch64")) { + asm_type = kARM64Assembler; + } else if (strstr(argv[index_arg], "--asm:64x0")) { + asm_type = k64X0Assembler; + } else if (strstr(argv[index_arg], "--asm:power64")) { + asm_type = kPOWER64Assembler; + } else { + arg_vec_cstr.push_back(argv[index_arg]); + } + } - switch (asm_type) - { - case kPOWER64Assembler: { - if (int32_t code = AssemblerMainPower64(arg_vec_cstr.size(), arg_vec_cstr.data()); code) - { - std::printf("asm.exe: frontend exited with code %i.\n", code); - return code; - } - break; - } - case k64X0Assembler: { - if (int32_t code = AssemblerMain64x0(arg_vec_cstr.size(), arg_vec_cstr.data()); code) - { - std::printf("asm.exe: frontend exited with code %i.\n", code); - return code; - } - break; - } - case kARM64Assembler: { - if (int32_t code = AssemblerMainARM64(arg_vec_cstr.size(), arg_vec_cstr.data()); code) - { - std::printf("asm.exe: frontend exited with code %i.\n", code); - return code; - } - break; - } - case kX64Assembler: { - if (int32_t code = AssemblerMainAMD64(arg_vec_cstr.size(), arg_vec_cstr.data()); code) - { - std::printf("asm.exe: frontend exited with code %i.\n", code); - return code; - } - break; - } - default: { - return 1; - } - } + switch (asm_type) { + case kPOWER64Assembler: { + if (int32_t code = AssemblerMainPower64(arg_vec_cstr.size(), arg_vec_cstr.data()); code) { + std::printf("asm: frontend exited with code %i.\n", code); + return code; + } + break; + } + case k64X0Assembler: { + if (int32_t code = AssemblerMain64x0(arg_vec_cstr.size(), arg_vec_cstr.data()); code) { + std::printf("asm: frontend exited with code %i.\n", code); + return code; + } + break; + } + case kARM64Assembler: { + if (int32_t code = AssemblerMainARM64(arg_vec_cstr.size(), arg_vec_cstr.data()); code) { + std::printf("asm: frontend exited with code %i.\n", code); + return code; + } + break; + } + case kX64Assembler: { + if (int32_t code = AssemblerMainAMD64(arg_vec_cstr.size(), arg_vec_cstr.data()); code) { + std::printf("asm: frontend exited with code %i.\n", code); + return code; + } + break; + } + default: { + return EXIT_FAILURE; + } + } - return 0; + return EXIT_SUCCESS; } diff --git a/tools/cppdrv.cc b/tools/cppdrv.cc new file mode 100644 index 0000000..7adfd0b --- /dev/null +++ b/tools/cppdrv.cc @@ -0,0 +1,27 @@ +/* ------------------------------------------- + + Copyright (C) 2024-2025 Amlal EL Mahrous, all rights reserved + +------------------------------------------- */ + +/// @file cxxdrv.cc +/// @brief NE frontend preprocessor. + +#include <LibCompiler/Defines.h> +#include <LibCompiler/ErrorID.h> +#include <LibCompiler/Version.h> +#include <cstring> +#include <iostream> +#include <vector> + +LC_IMPORT_C int CPlusPlusPreprocessorMain(int argc, char const* argv[]); + +int main(int argc, char const* argv[]) { + if (auto code = CPlusPlusPreprocessorMain(2, argv); code > 0) { + std::printf("cppdrv: preprocessor exited with code %i.\n", code); + + return LIBCOMPILER_EXEC_ERROR; + } + + return LIBCOMPILER_SUCCESS; +}
\ No newline at end of file diff --git a/tools/cppdrv.json b/tools/cppdrv.json new file mode 100644 index 0000000..9a4282c --- /dev/null +++ b/tools/cppdrv.json @@ -0,0 +1,12 @@ +{ + "compiler_path": "g++", + "compiler_std": "c++20", + "headers_path": ["../dev/LibCompiler", "../dev/", "../dev/LibCompiler/src/Detail"], + "sources_path": ["cppdrv.cc"], + "output_name": "cppdrv", + "compiler_flags": ["-L/usr/local/lib", "-lCompiler"], + "cpp_macros": [ + "__CXXDRV__=202504", + "kDistReleaseBranch=$(git rev-parse --abbrev-ref HEAD)-$(uuidgen)" + ] +} diff --git a/tools/cxxdrv.cc b/tools/cxxdrv.cc index e5d6334..a44b51d 100644 --- a/tools/cxxdrv.cc +++ b/tools/cxxdrv.cc @@ -1,6 +1,6 @@ /* ------------------------------------------- - Copyright (C) 2024-2025 Amlal EL Mahrous, all rights reserved + Copyright (C) 2024-2025 Amlal EL Mahrous, all rights reserved ------------------------------------------- */ @@ -8,91 +8,17 @@ /// @brief NE C++ frontend compiler. #include <LibCompiler/Defines.h> -#include <LibCompiler/NFC/ErrorID.h> +#include <LibCompiler/ErrorID.h> #include <LibCompiler/Version.h> -#include <iostream> #include <cstring> -#include <vector> -LC_IMPORT_C int CPlusPlusPreprocessorMain(int argc, char const* argv[]); LC_IMPORT_C int CompilerCPlusPlusAMD64(int argc, char const* argv[]); -LC_IMPORT_C int AssemblerMainAMD64(int argc, char const* argv[]); -int main(int argc, char const* argv[]) -{ - for (size_t index_arg = 0; index_arg < argc; ++index_arg) - { - if (strstr(argv[index_arg], "--cxxdrv:h")) - { - std::printf("cxxdrv: C++ Compiler Driver.\n"); - std::printf("cxxdrv: Version: %s, Release: %s.\n", kDistVersion, kDistRelease); - std::printf("cxxdrv: Designed by Amlal El Mahrouss, Copyright (C) 2024-2025 Amlal El Mahrouss, all rights reserved.\n"); - std::printf("libCompiler.dylib: Designed by Amlal El Mahrouss, Copyright (C) 2024-2025 Amlal El Mahrouss, all rights reserved.\n"); +int main(int argc, char const* argv[]) { + if (auto code = CompilerCPlusPlusAMD64(argc, argv); code > 0) { + std::printf("cxxdrv: compiler exited with code %i.\n", code); + return LIBCOMPILER_EXEC_ERROR; + } - return 0; - } - } - - if (auto code = CPlusPlusPreprocessorMain(2, argv); - code > 0) - { - std::printf("cxxdrv: compiler exited with code %i.", code); - - return LIBCOMPILER_EXEC_ERROR; - } - - std::vector<std::string> args_list_cxx; - std::vector<std::string> args_list_asm; - - for (size_t index_arg = 0; index_arg < argc; ++index_arg) - { - if (strstr(argv[index_arg], ".cxx") || - strstr(argv[index_arg], ".cpp") || - strstr(argv[index_arg], ".cc") || - strstr(argv[index_arg], ".c++") || - strstr(argv[index_arg], ".C")) - { - std::string arg = argv[index_arg]; - - arg += ".pp.masm"; - args_list_asm.push_back(arg); - - arg = argv[index_arg]; - arg += ".pp"; - - args_list_cxx.push_back(arg); - } - else if (strstr(argv[index_arg], ".c")) - { - std::printf("cxxdrv: error: Not a C driver.\n"); - return EXIT_FAILURE; - } - } - - - for (auto& cli : args_list_cxx) - { - const char* arr_cli[] = {argv[0], cli.data()}; - - if (auto code = CompilerCPlusPlusAMD64(2, arr_cli); - code > 0) - { - std::printf("cxxdrv: compiler exited with code %i.", code); - - return LIBCOMPILER_EXEC_ERROR; - } - } - - for (auto& cli : args_list_asm) - { - const char* arr_cli[] = {argv[0], cli.data()}; - - if (auto code = AssemblerMainAMD64(2, arr_cli); - code > 0) - { - std::printf("cxxdrv: assembler exited with code %i.", code); - } - } - - return LIBCOMPILER_EXEC_ERROR; + return LIBCOMPILER_SUCCESS; } diff --git a/tools/dbg.cc b/tools/dbg.cc index d63f574..b9be862 100644 --- a/tools/dbg.cc +++ b/tools/dbg.cc @@ -1,6 +1,6 @@ /* ------------------------------------------- - Copyright (C) 2024-2025 Amlal EL Mahrous, all rights reserved + Copyright (C) 2024-2025 Amlal EL Mahrous, all rights reserved ------------------------------------------- */ @@ -9,11 +9,10 @@ /// @file dbg.cxx /// @brief NE debugger. -LC_IMPORT_C int DebuggerPOSIX(int argc, char const* argv[]); +LC_IMPORT_C int DebuggerMachPOSIX(int argc, char const* argv[]); /// @brief Debugger entrypoint. /// @return Status code of debugger. -int main(int argc, char const* argv[]) -{ - return DebuggerPOSIX(argc, argv); +int main(int argc, char const* argv[]) { + return DebuggerMachPOSIX(argc, argv); } diff --git a/tools/kdbg.cc b/tools/kdbg.cc new file mode 100644 index 0000000..11901e3 --- /dev/null +++ b/tools/kdbg.cc @@ -0,0 +1,18 @@ +/* ------------------------------------------- + + Copyright (C) 2024-2025 Amlal EL Mahrous, all rights reserved + +------------------------------------------- */ + +#include <LibCompiler/Defines.h> + +/// @file kdbg.cxx +/// @brief NeKernel debugger. + +LC_IMPORT_C int DebuggerNeKernel(int argc, char const* argv[]); + +/// @brief Debugger entrypoint. +/// @return Status code of debugger. +int main(int argc, char const* argv[]) { + return DebuggerNeKernel(argc, argv); +} diff --git a/tools/kdbg.json b/tools/kdbg.json new file mode 100644 index 0000000..8019a76 --- /dev/null +++ b/tools/kdbg.json @@ -0,0 +1,12 @@ +{ + "compiler_path": "g++", + "compiler_std": "c++20", + "headers_path": ["../dev/LibCompiler", "../dev/", "../dev/LibCompiler/src/Detail"], + "sources_path": ["kdbg.cc"], + "output_name": "kdbg", + "compiler_flags": ["-L/usr/lib", "-lDebugger"], + "cpp_macros": [ + "__DBG__=202401", + "kDistReleaseBranch=$(git rev-parse --abbrev-ref HEAD)-$(uuidgen)" + ] +} diff --git a/tools/ld64.cc b/tools/ld64.cc index 48c1368..ebb7376 100644 --- a/tools/ld64.cc +++ b/tools/ld64.cc @@ -1,6 +1,6 @@ /* ------------------------------------------- - Copyright (C) 2024-2025 Amlal EL Mahrous, all rights reserved + Copyright (C) 2024-2025 Amlal EL Mahrous, all rights reserved ------------------------------------------- */ @@ -11,12 +11,6 @@ LC_IMPORT_C int DynamicLinker64PEF(int argc, char const* argv[]); -int main(int argc, char const* argv[]) -{ - if (argc < 1) - { - return 1; - } - - return DynamicLinker64PEF(argc, argv); +int main(int argc, char const* argv[]) { + return DynamicLinker64PEF(argc, argv); } |
