-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
144 lines (111 loc) · 3.71 KB
/
Makefile
File metadata and controls
144 lines (111 loc) · 3.71 KB
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
prefix := /usr/local
srcdir := $(dir $(lastword $(MAKEFILE_LIST)))
bindir = $(prefix)/bin
libdir = $(prefix)/lib
CC = gcc
CFLAGS = -O2 -Wall
CPPFLAGS =
LDFLAGS = -s
AR = ar
ARFLAGS = rc
DO_CC = $(DO)$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $(if $(filter %.so,$@),-shared -fPIC) $(INCLUDEOPTS) $(filter %.c,$^) $(LDFLAGS) -lm
DO_AR = $(DO)$(AR) $(ARFLAGS) $@ $^
FUT = $(DO)fut -o $@ $(patsubst %,-I %,$(sort $(dir $(filter-out %.fu,$^)))) $(filter %.fu,$^)
INSTALL = install
INSTALL_PROGRAM = mkdir -p $(DESTDIR)$(2) && $(INSTALL) $(1) $(DESTDIR)$(2)/$(or $(3),$(1))
INSTALL_DATA = mkdir -p $(DESTDIR)$(2) && $(INSTALL) -m 644 $(1) $(DESTDIR)$(2)/$(1)
SDL_CFLAGS = `sdl-config --cflags`
SDL_LIBS = `sdl-config --libs`
SEVENZIP = 7z a -mx=9 -bd -bso0
MAKEZIP = $(DO)$(RM) $@ && $(SEVENZIP) -tzip $@ $(patsubst %,./%,$(filter-out win32/signed,$^)) # "./" makes 7z don't store paths in the archive
COPY = $(DO)cp $< $@
XASM = $(DO)xasm -q -o $@ $<
OSX_CC = $(DO)cc -O2 -Wall -o $@ -undefined dynamic_lookup -mmacosx-version-min=10.6 -arch x86_64 -arch arm64 $(INCLUDEOPTS) $(filter %.c,$^)
# no user-configurable paths below this line
MAKEFLAGS = -r
ifdef V
DO = mkdir -p $(@D) &&
else
DO = @echo $@ && mkdir -p $(@D) &&
endif
src = $(addprefix $(srcdir),$(1:.[ch]=.c) $(patsubst %.[ch],%.h,$(filter %.[ch],$(1))))
INCLUDEOPTS = $(patsubst %/,-I%,$(sort $(dir $(filter %.h,$^))))
CLEAN :=
CLEANDIR :=
all: asapconv libasap.a
.PHONY: all
install: install-asapconv install-lib
.PHONY: install
include $(srcdir)6502/6502.mk
include $(srcdir)www/www.mk
include $(srcdir)release/release.mk
include $(srcdir)test/test.mk
# asapconv
asapconv: $(call src,asapconv.c asap.[ch])
$(DO_CC)
CLEAN += asapconv
install-asapconv: asapconv
$(call INSTALL_PROGRAM,asapconv,$(bindir))
.PHONY: install-asapconv
uninstall-asapconv:
$(RM) $(DESTDIR)$(bindir)/asapconv
.PHONY: uninstall-asapconv
# lib
lib: libasap.a
.PHONY: lib
libasap.a: asap.o
$(DO_AR)
CLEAN += libasap.a
asap.o: $(call src,asap.[ch])
$(DO_CC) -c
CLEAN += asap.o
install-lib: libasap.a $(srcdir)asap.h
$(call INSTALL_DATA,$(srcdir)asap.h,$(prefix)/include)
$(call INSTALL_DATA,libasap.a,$(libdir))
.PHONY: install-lib
uninstall-lib:
$(RM) $(DESTDIR)$(prefix)/include/asap.h $(DESTDIR)$(libdir)/libasap.a
.PHONY: uninstall-lib
# SDL
asap-sdl: $(call src,asap-sdl.c asap.[ch])
$(DO_CC) $(SDL_CFLAGS) $(SDL_LIBS)
CLEAN += asap-sdl
install-sdl: asap-sdl
$(call INSTALL_PROGRAM,asap-sdl,$(bindir))
.PHONY: install-sdl
uninstall-sdl:
$(RM) $(DESTDIR)$(bindir)/asap-sdl
.PHONY: uninstall-sdl
# asapscan
asapscan: $(srcdir)asapscan.c asap-asapscan.h
$(DO_CC)
CLEAN += asapscan asapscan.exe
asap-asapscan.h: $(call src,asap.fu asap6502.fu asapinfo.fu cpu6502.fu pokey.fu) $(ASM6502_PLAYERS_OBX) | asap-asapscan.c
asap-asapscan.c: $(call src,asap.fu asap6502.fu asapinfo.fu cpu6502.fu pokey.fu) $(ASM6502_PLAYERS_OBX)
$(FUT) -D ASAPSCAN
CLEAN += asap-asapscan.c asap-asapscan.h
# asap.[ch]
$(srcdir)asap.h: $(call src,asap.fu asap6502.fu asapinfo.fu asapwriter.fu cpu6502.fu flashpack.fu pokey.fu) $(ASM6502_OBX) | $(srcdir)asap.c
$(srcdir)asap.c: $(call src,asap.fu asap6502.fu asapinfo.fu asapwriter.fu cpu6502.fu flashpack.fu pokey.fu) $(ASM6502_OBX)
$(FUT) -D C
# aatr.[ch]
$(srcdir)aatr.h: $(srcdir)aatr.fu | $(srcdir)aatr.c
$(srcdir)aatr.c: $(srcdir)aatr.fu
$(FUT)
clean:
$(RM) $(CLEAN)
$(RM) -r $(CLEANDIR)
.PHONY: clean
.DELETE_ON_ERROR:
include $(srcdir)moc/moc.mk
include $(srcdir)vlc/vlc.mk
include $(srcdir)xmms/xmms.mk
include $(srcdir)xmms2/xmms2.mk
include $(srcdir)csharp/csharp.mk
include $(srcdir)d/d.mk
include $(srcdir)java/java.mk
include $(srcdir)javascript/javascript.mk
include $(srcdir)opencl/opencl.mk
include $(srcdir)python/python.mk
include $(srcdir)swift/swift.mk
include $(srcdir)win32/win32.mk