aboutsummaryrefslogtreecommitdiffhomepage
path: root/main.c
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-08-24 23:55:22 +0900
committernsfisis <nsfisis@gmail.com>2025-08-25 00:18:08 +0900
commit36da139565202a9a39d1e4261ab8bf950041518b (patch)
treec8e8867edc4e4fed94403331b8a7837e9951d9af /main.c
parent5bbc4414b8178ff924444857ac05e5b06cf0e651 (diff)
downloadducc-36da139565202a9a39d1e4261ab8bf950041518b.tar.gz
ducc-36da139565202a9a39d1e4261ab8bf950041518b.tar.zst
ducc-36da139565202a9a39d1e4261ab8bf950041518b.zip
feat: separate compilation
Diffstat (limited to 'main.c')
-rw-r--r--main.c43
1 files changed, 0 insertions, 43 deletions
diff --git a/main.c b/main.c
deleted file mode 100644
index 434f304..0000000
--- a/main.c
+++ /dev/null
@@ -1,43 +0,0 @@
-// Currently the source code depends on the #include order.
-// clang-format off
-#include "src/std.h"
-#include "src/common.c"
-#include "src/io.c"
-#include "src/sys.c"
-#include "src/preprocess.c"
-#include "src/tokenize.c"
-#include "src/ast.c"
-#include "src/parse.c"
-#include "src/codegen.c"
-#include "src/cli.c"
-// clang-format on
-
-int main(int argc, char** argv) {
- CliArgs* cli_args = parse_cli_args(argc, argv);
- InFile* source = infile_open(cli_args->input_filename);
- TokenArray* pp_tokens = preprocess(source);
- TokenArray* tokens = tokenize(pp_tokens);
- Program* prog = parse(tokens);
-
- const char* assembly_filename;
- if (cli_args->output_executable) {
- char* temp_filename = calloc(19, sizeof(char));
- temp_filename = strdup("/tmp/ducc-XXXXXX.s");
- mkstemps(temp_filename, strlen(".s"));
- assembly_filename = temp_filename;
- } else {
- assembly_filename = cli_args->output_filename;
- }
- FILE* assembly_file = assembly_filename ? fopen(assembly_filename, "wb") : stdout;
- codegen(prog, assembly_file);
- fclose(assembly_file);
-
- if (cli_args->output_executable) {
- char cmd_buf[256];
- sprintf(cmd_buf, "gcc -s -o '%s' '%s'", cli_args->output_filename, assembly_filename);
- int result = system(cmd_buf);
- if (result != 0) {
- fatal_error("gcc failed: %d", result);
- }
- }
-}