blob: 289994d72029da78e497dac2f286ad0f8214066e (
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
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
|
.POSIX:
.SUFFIXES:
CC ?= cc
RM ?= rm -f
INSTALL ?= install -p
COMMIT :=
COMMIT_INFO = commit.h
EXTRA_CFLAGS ?= -O2 -Wall -Wno-restrict -Wno-unknown-warning-option
IS_MACARM := 0
# build on macos(arm) support
ifneq ($(OS),Windows_NT)
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
UNAME_P := $(shell uname -p)
ifneq ($(filter arm%,$(UNAME_P)),)
EXTRA_CFLAGS += -I$(shell brew --prefix)/include
IS_MACARM = 1
endif
endif
endif
CFLAGS += ${EXTRA_CFLAGS} -I.
EXEDIR ?= ..
PREFIX ?= /usr
BINDIR ?= $(PREFIX)/bin
ifeq ($(OS),Windows_NT)
PROGRAM = $(EXEDIR)/nesasm.exe
else
PROGRAM = $(EXEDIR)/nesasm
endif
ifeq ($(COMMIT),)
COMMIT = $(shell git rev-parse --short HEAD)
else
COMMIT += $(shell git diff-index HEAD) (dirty)
endif
ifeq ($(OS),Windows_NT)
LDFLAGS += -largp
$(PROGRAM) = $(EXEDIR)/$(PROGRAM).exe
else
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
LDFLAGS += -largp
# build on macos(arm) support
ifeq ($(IS_MACARM), 1)
LDFLAGS += -L$(shell brew --prefix)/lib
endif
endif
endif
# Object files
OBJS = main.o input.o assemble.o expr.o code.o command.o\
macro.o func.o proc.o symbol.o output.o crc.o\
nes.o
# All *.c file compiled to *.o
.SUFFIXES: .c .o
.c.o:
$(CC) $(CFLAGS) -o $@ -c $<
# default target
all: commit_file $(PROGRAM)
commit_file:
@printf "#define COMMIT \"$(COMMIT)\"\\n" > $(COMMIT_INFO)
clean:
ifeq ($(OS),Windows_NT)
@if [ -f "$(PROGRAM)" ]; then for f in `cygcheck "$(PROGRAM)" | grep .dll | grep msys` ; do rm -f $(EXEDIR)/`basename "$$f"` ; done fi
endif
$(RM) $(OBJS) $(PROGRAM) $(COMMIT_INFO)
# Link objects into executable file
$(PROGRAM): $(OBJS)
$(CC) -o $(PROGRAM) $(OBJS) $(LDFLAGS) $(LDADD)
ifeq ($(OS),Windows_NT)
@for f in `cygcheck "$(PROGRAM)" | grep .dll | grep msys` ; do cp -vf `cygpath "$$f"` $(EXEDIR)/ ; done
endif
.PHONY: all commit_file clean
|