From 888340b57ab8d87c34b37a5a81fad0699e711b03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Madar=C3=A1sz?= Date: Mon, 19 Aug 2024 10:28:32 +0200 Subject: [PATCH] rewrite split and join to C99 --- MAKE.bat | 4 +- tools/join.bat | 6 +-- tools/join.c | 95 ++++++++++++++++++++++++++++++++++++++++++++ tools/join.exe | Bin 0 -> 155648 bytes tools/split.bat | 6 +-- tools/split.c | 102 ++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 205 insertions(+), 8 deletions(-) create mode 100644 tools/join.c create mode 100644 tools/join.exe create mode 100644 tools/split.c diff --git a/MAKE.bat b/MAKE.bat index 9bb9ae2..263c987 100644 --- a/MAKE.bat +++ b/MAKE.bat @@ -272,11 +272,11 @@ if "%1"=="prep" ( rem shortcuts for split & join amalgamation scripts if "%1"=="split" ( - call tools\split + call tools\split.bat exit /b ) if "%1"=="join" ( - call tools\join + call tools\join.bat exit /b ) if "%1"=="3rd" ( diff --git a/tools/join.bat b/tools/join.bat index f67b08d..fa5071b 100644 --- a/tools/join.bat +++ b/tools/join.bat @@ -1,5 +1,5 @@ #!/bin/bash 2>nul -python tools/join.py --template engine/split/v4k.h.inl --path ./engine/split/ --output ./engine/v4k.h -python tools/join.py --template engine/split/v4k.c.inl --path ./engine/split/ --output ./engine/v4k.c -python tools/join.py --template engine/split/v4k.x.inl --path ./engine/split/ --output ./engine/v4k +tools\join.exe --template engine/split/v4k.h.inl --path ./engine/split/ --output ./engine/v4k.h +tools\join.exe --template engine/split/v4k.c.inl --path ./engine/split/ --output ./engine/v4k.c +tools\join.exe --template engine/split/v4k.x.inl --path ./engine/split/ --output ./engine/v4k diff --git a/tools/join.c b/tools/join.c new file mode 100644 index 0000000..07ab9f4 --- /dev/null +++ b/tools/join.c @@ -0,0 +1,95 @@ +#include +#include +#include +#include + +#define MAX_PATH 1024 +#define MAX_LINE 4096 + +void process_template(const char* template_path, const char* base_path, const char* output_path) { + FILE *template_file, *output_file; + char line[MAX_LINE]; + char file_path[MAX_PATH]; + + template_file = fopen(template_path, "r"); + if (!template_file) { + fprintf(stderr, "Error opening template file: %s\n", template_path); + exit(1); + } + + output_file = fopen(output_path, "w"); + if (!output_file) { + fprintf(stderr, "Error opening output file: %s\n", output_path); + fclose(template_file); + exit(1); + } + + while (fgets(line, sizeof(line), template_file)) { + if (strncmp(line, "{{FILE:", 7) == 0) { + char* end = strchr(line + 7, '}'); + if (end) { + *end = '\0'; + snprintf(file_path, sizeof(file_path), "%s%s", base_path, line + 7); + printf("Appending file: %s\n", line + 7); + + FILE* include_file = fopen(file_path, "r"); + if (include_file) { + fprintf(output_file, "#line 1 \"%s\"\n", line + 7); + char include_line[MAX_LINE]; + while (fgets(include_line, sizeof(include_line), include_file)) { + fputs(include_line, output_file); + } + fprintf(output_file, "#line 0\n"); + fclose(include_file); + } else { + fprintf(stderr, "Warning: Unable to open included file: %s\n", file_path); + fputs(line, output_file); + } + } else { + fputs(line, output_file); + } + } else { + fputs(line, output_file); + } + } + + fclose(template_file); + fclose(output_file); +} + +int main(int argc, char* argv[]) { + char template_path[MAX_PATH] = ""; + char base_path[MAX_PATH] = ""; + char output_path[MAX_PATH] = ""; + + for (int i = 1; i < argc; i += 2) { + if (i + 1 < argc) { + if (strcmp(argv[i], "--template") == 0) { + strncpy(template_path, argv[i + 1], sizeof(template_path) - 1); + } else if (strcmp(argv[i], "--path") == 0) { + strncpy(base_path, argv[i + 1], sizeof(base_path) - 1); + } else if (strcmp(argv[i], "--output") == 0) { + strncpy(output_path, argv[i + 1], sizeof(output_path) - 1); + } + } + } + + if (template_path[0] == '\0' || base_path[0] == '\0' || output_path[0] == '\0') { + fprintf(stderr, "Usage: %s --template --path --output \n", argv[0]); + return 1; + } + + process_template(template_path, base_path, output_path); + printf("OK\n"); + + return 0; +} + +/* + compiled with: + cc -ObjC join.c -I../engine -o join.osx -framework Cocoa -framework IOKit -framework audiotoolbox -framework coreaudio -O3 + cc join.c -I../engine -o join.linux -lm -lpthread -ldl -lX11 -O3 + tcc join.c -I..\engine + cl join.c -I..\engine /openmp /Os /Ox /O2 /Oy /MT /DNDEBUG /GL /GF /Gw /arch:AVX2 /link /OPT:ICF /LTCG + del *.o & del *.obj & del *.lib & del *.exp & del *.pdb +*/ diff --git a/tools/join.exe b/tools/join.exe new file mode 100644 index 0000000000000000000000000000000000000000..93e4f8ea3d8adb136c125a90cf3b73edd8f5d624 GIT binary patch literal 155648 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 -python tools/split.py --input ./engine/v4k.h --output-path ./engine/split/ -python tools/split.py --input ./engine/v4k.c --output-path ./engine/split/ -python tools/split.py --input ./engine/v4k --output-path ./engine/split/ +tools/split.exe --input ./engine/v4k.h --output-path ./engine/split/ +tools/split.exe --input ./engine/v4k.c --output-path ./engine/split/ +tools/split.exe --input ./engine/v4k --output-path ./engine/split/ diff --git a/tools/split.c b/tools/split.c new file mode 100644 index 0000000..5f4e396 --- /dev/null +++ b/tools/split.c @@ -0,0 +1,102 @@ +#include +#include +#include +#include + +#define MAX_FILENAME_LENGTH 256 +#define MAX_LINE_LENGTH 1024 + +void print_usage(const char* program_name) { + fprintf(stderr, "Usage: %s --input --output-path \n", program_name); +} + +int main(int argc, char* argv[]) { + char* input_file = NULL; + char* output_path = NULL; + + // Parse command-line arguments + for (int i = 1; i < argc; i += 2) { + if (i + 1 >= argc) { + fprintf(stderr, "Error: Missing argument value\n"); + print_usage(argv[0]); + return 1; + } + if (strcmp(argv[i], "--input") == 0) { + input_file = argv[i + 1]; + } else if (strcmp(argv[i], "--output-path") == 0) { + output_path = argv[i + 1]; + } else { + fprintf(stderr, "Error: Unknown argument %s\n", argv[i]); + print_usage(argv[0]); + return 1; + } + } + + if (!input_file || !output_path) { + fprintf(stderr, "Error: Missing required arguments\n"); + print_usage(argv[0]); + return 1; + } + + FILE* input = fopen(input_file, "r"); + if (!input) { + fprintf(stderr, "Error: Unable to open input file %s\n", input_file); + return 1; + } + + char line[MAX_LINE_LENGTH]; + char current_filename[MAX_FILENAME_LENGTH] = ""; + FILE* current_output = NULL; + + while (fgets(line, sizeof(line), input)) { + if (strncmp(line, "#line 1 ", 8) == 0) { + // Close previous output file if open + if (current_output) { + fclose(current_output); + current_output = NULL; + } + + // Extract new filename + sscanf(line, "#line 1 \"%[^\"]\"", current_filename); + + // Open new output file + char output_filename[MAX_FILENAME_LENGTH * 2]; + snprintf(output_filename, sizeof(output_filename), "%s/%s", output_path, current_filename); + current_output = fopen(output_filename, "w"); + if (!current_output) { + fprintf(stderr, "Error: Unable to open output file %s\n", output_filename); + fclose(input); + return 1; + } + printf("Writing file: %s\n", current_filename); + } else if (strncmp(line, "#line 0", 7) == 0) { + // Close current output file + if (current_output) { + fclose(current_output); + current_output = NULL; + } + } else if (current_output) { + // Write line to current output file + fputs(line, current_output); + } + } + + // Close any open files + if (current_output) { + fclose(current_output); + } + fclose(input); + + printf("OK\n"); + return 0; +} + + +/* + compiled with: + cc -ObjC join.c -I../engine -o join.osx -framework Cocoa -framework IOKit -framework audiotoolbox -framework coreaudio -O3 + cc join.c -I../engine -o join.linux -lm -lpthread -ldl -lX11 -O3 + tcc join.c -I..\engine + cl join.c -I..\engine /openmp /Os /Ox /O2 /Oy /MT /DNDEBUG /GL /GF /Gw /arch:AVX2 /link /OPT:ICF /LTCG + del *.o & del *.obj & del *.lib & del *.exp & del *.pdb +*/