summaryrefslogtreecommitdiff
path: root/tools/knarc/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'tools/knarc/Makefile')
-rw-r--r--tools/knarc/Makefile36
1 files changed, 29 insertions, 7 deletions
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 $@ $<