diff options
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | tools/csv2bin/.gitignore | 1 | ||||
-rw-r--r-- | tools/csv2bin/Makefile | 13 | ||||
-rw-r--r-- | tools/csv2bin/csv2bin.c | 103 | ||||
-rw-r--r-- | tools/knarc/Makefile | 36 |
5 files changed, 30 insertions, 125 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 398b650f..6a8fbb58 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,7 @@ target_include_directories(PokeDiamond PRIVATE include include-mw arm9/lib/inclu add_executable(calcrom .travis/calcrom/calcrom.cpp) target_include_directories(calcrom PRIVATE /usr/local/include) -add_executable(knarc tools/knarc/Source.cpp tools/knarc/Narc.cpp) +add_executable(knarc tools/knarc/Source.cpp tools/knarc/Narc.cpp tools/knarc/fnmatch.c) add_executable(jsonproc tools/jsonproc/jsonproc.cpp) target_include_directories(jsonproc PRIVATE SYSTEM tools/jsonproc) diff --git a/tools/csv2bin/.gitignore b/tools/csv2bin/.gitignore deleted file mode 100644 index acf9f588..00000000 --- a/tools/csv2bin/.gitignore +++ /dev/null @@ -1 +0,0 @@ -csv2bin diff --git a/tools/csv2bin/Makefile b/tools/csv2bin/Makefile deleted file mode 100644 index 818e6579..00000000 --- a/tools/csv2bin/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -CC = gcc -CFLAGS = -O3 - -.PHONY: all clean - -all: csv2bin $(growth_rates_bin) - @: - -clean: - $(RM) csv2bin - -csv2bin: csv2bin.c - $(CC) $(CFLAGS) -o $@ $^ diff --git a/tools/csv2bin/csv2bin.c b/tools/csv2bin/csv2bin.c deleted file mode 100644 index 5c8b5111..00000000 --- a/tools/csv2bin/csv2bin.c +++ /dev/null @@ -1,103 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <stdint.h> -#include <ctype.h> - -char * ReadWholeFile(char * filename) { - FILE * infile = fopen(filename, "rb"); - if (infile == NULL) return NULL; - fseek(infile, 0, SEEK_END); - size_t fsize = ftell(infile); - fseek(infile, 0, SEEK_SET); - char * ret = malloc(fsize); - if (ret != NULL) { - if (fread(ret, 1, fsize, infile) != fsize) { - free(ret); - ret = NULL; - } - } - fclose(infile); - return ret; -} - -int main(int argc, char ** argv) { - int width = 4; - char * buffer = NULL; - char * endptr = NULL; - FILE * outfile = NULL; - char * infname = NULL; - for (int i = 1; i < argc; i++) { - if (strcmp(argv[i], "-w") == 0 || strcmp(argv[i], "--width") == 0) { - ++i; - width = strtol(argv[i], &endptr, 10); - if (width == 0) { - fprintf(stderr, "invalid integer value for %s: %s\n", argv[i - 1], argv[i]); - return EXIT_FAILURE; - } - } else if (strcmp(argv[i], "-o") == 0 || strcmp(argv[i], "--output") == 0) { - ++i; - outfile = fopen(argv[i], "wb"); - if (outfile == NULL) { - fprintf(stderr, "unable to open file '%s' for writing\n", argv[i]); - return EXIT_FAILURE; - } - } else { - if (buffer == NULL) - { - buffer = ReadWholeFile(argv[i]); - } - if (buffer == NULL) - { - fprintf(stderr, "invalid argument: %s\n", argv[i]); - return EXIT_FAILURE; - } - infname = argv[i]; - } - } - if (buffer == NULL) { - fprintf(stderr, "missing required argument: INFILE\n"); - return EXIT_FAILURE; - } - if (outfile == NULL) { - char * infname_ext = strrchr(infname, '.'); - char * outfname = malloc(infname_ext - infname + 5); - char * outfname_ext = stpncpy(outfname, argv[1], infname_ext - argv[1]); - strcpy(outfname_ext, ".bin"); - outfile = fopen(outfname, "wb"); - if (outfile == NULL) { - fprintf(stderr, "unable to open file '%s' for writing\n", outfname); - return EXIT_FAILURE; - } - free(outfname); - } - uint32_t value; - size_t size = 0; - char * ptr = buffer; - char * end = NULL; - int lineno = 1; - int colno = 1; - while (1) { - while (isspace(*ptr) || *ptr == ',') { - if (*ptr == 0) break; - if (*ptr == '\n') - { lineno++; colno = 1; } - if (*ptr == ',') colno++; - ptr++; - }; - if (*ptr == 0) break; - value = strtoul(ptr, &end, 10); - if (value == 0 && ptr == end) { - fprintf(stderr, "syntax error: %d:%d\n", lineno, colno); - return EXIT_FAILURE; - } - if (fwrite(&value, 1, width, outfile) != width) { - fprintf(stderr, "write error\n"); - return EXIT_FAILURE; - } - ptr = end; - } - fclose(outfile); - free(buffer); - return EXIT_SUCCESS; -} diff --git a/tools/knarc/Makefile b/tools/knarc/Makefile index ef75789b..07c518a4 100644 --- a/tools/knarc/Makefile +++ b/tools/knarc/Makefile @@ -1,15 +1,37 @@ -CXXFLAGS := -std=c++17 -O2 -Wall -Wno-switch -lstdc++fs +CXXFLAGS := -std=c++17 -O2 -Wall -Wno-switch +CFLAGS := -O2 -Wall -Wno-switch -SRCS := Source.cpp Narc.cpp fnmatch.c -HEADERS := Narc.h fnmatch.h +ifeq ($(OS),Windows_NT) +C_SRCS := fnmatch.c +LDFLAGS += -lstdc++fs +else +C_SRCS := +UNAME_S := $(shell uname -s) +ifeq ($(UNAME_S),Darwin) +LDFLAGS += -lstdc++ -lc++ -lc +else +LDFLAGS += -lstdc++fs +endif +endif +CXX_SRCS := Source.cpp Narc.cpp +C_OBJS := $(C_SRCS:%.c=%.o) +CXX_OBJS := $(CXX_SRCS:%.cpp=%.o) +OBJS := $(C_OBJS) $(CXX_OBJS) +HEADERS := Narc.h fnmatch.h .PHONY: all clean all: knarc @: -knarc: $(SRCS) $(HEADERS) - $(CXX) $(SRCS) -o $@ $(LDFLAGS) $(CXXFLAGS) - clean: - $(RM) knarc knarc.exe + $(RM) knarc knarc.exe $(OBJS) + +knarc: $(OBJS) + $(LD) $(LDFLAGS) -o $@ $^ + +%.o: %.c $(HEADERS) + $(CC) $(CFLAGS) -c -o $@ $< + +%.o: %.cpp $(HEADERS) + $(CXX) $(CXXFLAGS) -c -o $@ $< |