summaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-05-02 19:38:33 +0200
committerGitHub <noreply@github.com>2025-05-02 19:38:33 +0200
commit87979899ce833ca477bb563b84e3698224119dab (patch)
treedf67a0724de4c76ce594222747220c233c3bc7f5 /tools
parent3afc481dc64a07fe7fcaff9ce7a12a492c3ec8e7 (diff)
parentfb12b9730d78052f5cafbd84fbc9a830a22cec17 (diff)
Merge pull request #4 from nekernel-org/dev
0.0.1
Diffstat (limited to 'tools')
-rw-r--r--tools/asm.cc156
-rw-r--r--tools/cppdrv.cc27
-rw-r--r--tools/cppdrv.json12
-rw-r--r--tools/cxxdrv.cc90
-rw-r--r--tools/dbg.cc9
-rw-r--r--tools/kdbg.cc18
-rw-r--r--tools/kdbg.json12
-rw-r--r--tools/ld64.cc12
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);
}