Welcome to mirror list, hosted at ThFree Co, Russian Federation.

Makefile « source - github.com/ClusterM/nesasm.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
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