CXXFLAGS := -std=c++17 -O2 -Wall -Wno-switch CFLAGS := -O2 -Wall -Wno-switch 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 -D_LIBCPP_NO_EXPERIMENTAL_DEPRECATION_WARNING_FILESYSTEM 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 @: clean: $(RM) knarc knarc.exe $(OBJS) ifeq ($(OS),Windows_NT) knarc: $(OBJS) $(CXX) $^ -o $@ $(LDFLAGS) $(CXXFLAGS) %.o: %.c $(HEADERS) $(CC) $(CFLAGS) -c -o $@ $< %.o: %.cpp $(HEADERS) $(CXX) $(CXXFLAGS) -c -o $@ $< else knarc: $(CXX_SRCS) $(HEADERS) $(CXX) $(CXX_SRCS) -o $@ $(LDFLAGS) $(CXXFLAGS) endif