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

github.com/ClusterM/nesasm.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Clark <andrewclarkii@gmail.com>2021-12-10 22:02:57 +0300
committerAndrew Clark <andrewclarkii@gmail.com>2021-12-10 22:02:57 +0300
commit0cba74f29f040c819769a072f9258f0eba800af5 (patch)
treea3f5bd838f269ebd5635687962df665c5e6f3ed6
parentd80f61af89d4c8cb1205c9ed9696d888335d5f6d (diff)
revamped Makefile. It should be more posix accurate, but I am not sure about ifeq/else/endif conditionals. They are probably GNU specific
-rw-r--r--source/Makefile99
1 files changed, 48 insertions, 51 deletions
diff --git a/source/Makefile b/source/Makefile
index 7fa99f2..a96ca59 100644
--- a/source/Makefile
+++ b/source/Makefile
@@ -1,74 +1,71 @@
-RM = rm -f
-CC = gcc
-COMMIT_INFO = commit.h
+.POSIX:
+.SUFFIXES:
-CFLAGS = -O2 -Wall -Wno-restrict -Wno-unknown-warning-option
-ifeq ($(OS),Windows_NT)
- LDFLAGS += -largp
-else
- UNAME_S := $(shell uname -s)
- ifeq ($(UNAME_S),Darwin)
- LDFLAGS += -largp
- endif
-endif
+CC ?= cc
+RM ?= rm -f
+INSTALL ?= install -p
+COMMIT :=
+COMMIT_INFO = commit.h
-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
+EXTRA_CFLAGS ?= -O2 -Wall -Wno-restrict -Wno-unknown-warning-option
+CFLAGS += ${EXTRA_CFLAGS} -I.
+LDADD ?= -Wl,--as-needed
-EXEDIR = ..
+EXEDIR ?= ..
+PREFIX ?= /usr
+BINDIR ?= $(PREFIX)/bin
+
+PROGRAM ?= nesasm
-COMMIT = $(shell git rev-parse --short HEAD)
-COMMIT_DIRTY = $(shell git diff-index HEAD)
-ifneq ($(COMMIT_DIRTY),)
- COMMIT += (dirty)
-endif
ifeq ($(COMMIT),)
- COMMIT = "unknown"
+ COMMIT = $(shell git rev-parse --short HEAD)
+else
+ COMMIT += $(shell git diff-index HEAD) (dirty)
endif
ifeq ($(OS),Windows_NT)
- TARGNES = $(EXEDIR)/nesasm.exe
+ LDFLAGS += -largp
+ $(PROGRAM) = $(EXEDIR)/$(PROGRAM).exe
else
- TARGNES = $(EXEDIR)/nesasm
+ UNAME_S := $(shell uname -s)
+ ifeq ($(UNAME_S),Darwin)
+ LDFLAGS += -largp
+ 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 $<
-all: $(TARGNES)
-default: $(TARGNES)
+# default target
+all: commit_file $(PROGRAM)
-# CLEAN
-#
+commit_file:
+ @printf "#define COMMIT \"$(COMMIT)\"\\n" > $(COMMIT_INFO)
clean:
- $(RM) *.o
+
ifeq ($(OS),Windows_NT)
- @if [ -f "$(TARGNES)" ]; then for f in `cygcheck "$(TARGNES)" | grep .dll | grep msys` ; do rm -f $(EXEDIR)/`basename "$$f"` ; done fi
+ @if [ -f "$(PROGRAM)" ]; then for f in `cygcheck "$(PROGRAM)" | grep .dll | grep msys` ; do rm -f $(EXEDIR)/`basename "$$f"` ; done fi
endif
- $(RM) $(TARGNES)
- $(RM) $(COMMIT_INFO)
-# ASSEMBLER
-#
+ $(RM) $(OBJS) $(PROGRAM) $(COMMIT_INFO)
-$(OBJS) : defs.h externs.h protos.h
-main.o : inst.h vars.h $(COMMIT_INFO)
-expr.o : expr.h
-nes.o : nes.h
-%.o : %.c
- $(CC) $(CFLAGS) -o $@ -c $<
-
-.PHONY: $(COMMIT_INFO)
-$(COMMIT_INFO):
- @printf "#define COMMIT \"$(COMMIT)\"\\n" > $(COMMIT_INFO)
+# Link objects into executable file
-# EXE
-#
+$(PROGRAM): $(OBJS)
+ $(CC) -o $(PROGRAM) $(OBJS) $(LDFLAGS) $(LDADD)
-$(TARGNES): $(OBJS)
- $(CC) -o $(TARGNES) $(OBJS) $(LDFLAGS)
ifeq ($(OS),Windows_NT)
- @for f in `cygcheck "$(TARGNES)" | grep .dll | grep msys` ; do cp -vf `cygpath "$$f"` $(EXEDIR)/ ; done
+ @for f in `cygcheck "$(PROGRAM)" | grep .dll | grep msys` ; do cp -vf `cygpath "$$f"` $(EXEDIR)/ ; done
endif
+
+.PHONY: all commit_file clean
+