summaryrefslogtreecommitdiff
path: root/tools/knarc/Makefile
blob: 24e0de7d8f633d8dad87421e8bfb92ed482f26c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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