summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt2
-rw-r--r--tools/csv2bin/.gitignore1
-rw-r--r--tools/csv2bin/Makefile13
-rw-r--r--tools/csv2bin/csv2bin.c103
-rw-r--r--tools/knarc/Makefile36
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 $@ $<