aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 01e08af0332b50a117fab45ee64b0d12bc44fd2a (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
43
44
45
46
47
48
49
50
51
EXE = EpisodeBrowser.exe
OBJ = b/datalistview.obj b/debug.obj b/episodelistview.obj b/wcharptr.obj b/win.obj
OBJ += b/layout.obj b/listview.obj b/pl.obj b/test.obj b/resource.obj
PL = pl/cfg.pl pl/episode_data.pl pl/local_episodes.pl pl/track_episodes.pl

CL = swipl-ld
CLFLAGS = -DUNICODE -D_UNICODE
CLFLAGS += -cc-options,-std=c++17 -O2
CLFLAGS += -Wall -Wextra -Wpedantic -Wno-missing-field-initializers -Wno-parentheses
CLFLAGS += -ld-options,-mwindows,-static-libstdc++ -lcomctl32
CLFLAGS += -DDEBUG

all: showdeps b/$(EXE)
	cp b/$(EXE) "C:\Users\John\Desktop\Delat"

clean:
	rm -fr b/$(EXE) b/*.obj

TAGS: c/*.cpp c/*.h pl/*.pl
	etags --declarations -lc++ c/*.cpp c/*.h -lprolog pl/*.pl

b/$(EXE): Makefile c/main.cpp $(OBJ) $(PL)
	$(CL) $(CLFLAGS) -goal true -o $@ c/main.cpp $(OBJ) $(PL)

b/resource.obj: c/resource.h c/resource.rc c/application.manifest
	windres -i c/resource.rc -o b/resource.obj

b/%.obj: c/%.cpp
	$(CL) -c $(CLFLAGS) -o $@ $<

s/%.s: c/%.cpp
	$(CL) $(CLFLAGS) -cc-options,-fverbose-asm,-masm=intel -S -o $@ $<

# showdeps prints a short summary of which dependencies have changed,
# causing which targets to be rebuilt. It is run by the `all' target
# by default.
.PHONY: showdeps
showdeps:
	@perl showdeps

# showdeps prints all TODO comments in the C++ source files.
.PHONY: showtodo
showtodo:
	@perl showtodo

# deps.mk includes additional, dynamically generated dependencies for
# b/*.obj and b/EpisodeBrowser.exe. Because it is included below, GNU
# make should build deps.mk automatically.
deps.mk: c/*.cpp
	@perl makedeps
-include deps.mk