Merge https://github.com/cc65/cc65 into c1p
This commit is contained in:
154
src/Makefile
154
src/Makefile
@@ -1,4 +1,6 @@
|
||||
ifeq ($(shell echo),)
|
||||
ifneq ($(shell echo),)
|
||||
CMD_EXE = 1
|
||||
endif
|
||||
|
||||
PROGS = ar65 \
|
||||
c1p65 \
|
||||
@@ -13,38 +15,99 @@ PROGS = ar65 \
|
||||
sim65 \
|
||||
sp65
|
||||
|
||||
ifdef prefix
|
||||
CA65_INC = $(prefix)/lib/cc65/asminc
|
||||
CC65_INC = $(prefix)/lib/cc65/include
|
||||
LD65_LIB = $(prefix)/lib/cc65/lib
|
||||
LD65_OBJ = $(prefix)/lib/cc65/lib
|
||||
LD65_CFG = $(prefix)/lib/cc65/cfg
|
||||
.PHONY: all mostlyclean clean install zip avail unavail bin $(PROGS)
|
||||
|
||||
.SUFFIXES:
|
||||
|
||||
bindir := $(prefix)/bin
|
||||
datadir := $(if $(prefix),$(prefix)/share/cc65,$(abspath ..))
|
||||
|
||||
CA65_INC = $(datadir)/asminc
|
||||
CC65_INC = $(datadir)/include
|
||||
LD65_LIB = $(datadir)/lib
|
||||
LD65_OBJ = $(datadir)/lib
|
||||
LD65_CFG = $(datadir)/cfg
|
||||
|
||||
ifdef CMD_EXE
|
||||
NULLDEV = nul:
|
||||
DIRLIST = $(strip $(foreach dir,$1,$(wildcard $(dir))))
|
||||
MKDIR = mkdir $(subst /,\,$1)
|
||||
RMDIR = $(if $(DIRLIST),rmdir /s /q $(subst /,\,$(DIRLIST)))
|
||||
else
|
||||
CA65_INC := $(abspath ../asminc)
|
||||
CC65_INC := $(abspath ../include)
|
||||
LD65_LIB := $(abspath ../lib)
|
||||
LD65_OBJ := $(abspath ../lib)
|
||||
LD65_CFG := $(abspath ../cfg)
|
||||
NULLDEV = /dev/null
|
||||
MKDIR = mkdir -p $1
|
||||
RMDIR = $(RM) -r $1
|
||||
endif
|
||||
|
||||
CFLAGS += -MMD -MP -O -std=c89 -I common \
|
||||
-Wall -Wextra -Wno-char-subscripts -Werror \
|
||||
-DCA65_INC=$(CA65_INC) -DCC65_INC=$(CC65_INC) \
|
||||
CC = $(CROSS_COMPILE)gcc
|
||||
AR = $(CROSS_COMPILE)ar
|
||||
|
||||
ifdef CROSS_COMPILE
|
||||
$(info CC: $(CC))
|
||||
$(info AR: $(AR))
|
||||
endif
|
||||
|
||||
ifdef USER_CFLAGS
|
||||
$(info USER_CFLAGS: $(USER_CFLAGS))
|
||||
endif
|
||||
|
||||
ifdef GIT_SHA
|
||||
$(info GIT_SHA: $(GIT_SHA))
|
||||
else
|
||||
GIT_SHA := $(shell git rev-parse --short HEAD 2>$(NULLDEV))
|
||||
ifneq ($(words $(GIT_SHA)),1)
|
||||
GIT_SHA := N/A
|
||||
$(info GIT_SHA: N/A)
|
||||
endif
|
||||
endif
|
||||
|
||||
CFLAGS += -MMD -MP -O -I common \
|
||||
-Wall -Wextra -Wno-char-subscripts $(USER_CFLAGS) \
|
||||
-DGIT_SHA=$(GIT_SHA) -DCA65_INC=$(CA65_INC) -DCC65_INC=$(CC65_INC) \
|
||||
-DLD65_LIB=$(LD65_LIB) -DLD65_OBJ=$(LD65_OBJ) -DLD65_CFG=$(LD65_CFG)
|
||||
|
||||
LDLIBS += -lm
|
||||
|
||||
.SUFFIXES:
|
||||
ifdef CMD_EXE
|
||||
EXE_SUFFIX=.exe
|
||||
endif
|
||||
|
||||
.PHONY: all bin $(PROGS) mostlyclean clean avail unavail
|
||||
ifdef CROSS_COMPILE
|
||||
EXE_SUFFIX=.exe
|
||||
endif
|
||||
|
||||
all bin: $(PROGS)
|
||||
|
||||
mostlyclean:
|
||||
$(RM) -r ../wrk
|
||||
$(call RMDIR,../wrk)
|
||||
|
||||
clean:
|
||||
$(RM) -r ../wrk ../bin
|
||||
$(call RMDIR,../wrk ../bin)
|
||||
|
||||
ifdef CMD_EXE
|
||||
|
||||
install avail unavail:
|
||||
|
||||
else # CMD_EXE
|
||||
|
||||
INSTALL = install
|
||||
|
||||
define AVAIL_recipe
|
||||
|
||||
ln -s $(abspath ../bin/$(prog)) /usr/local/bin/$(prog)
|
||||
|
||||
endef # AVAIL_recipe
|
||||
|
||||
define UNAVAIL_recipe
|
||||
|
||||
$(RM) /usr/local/bin/$(prog)
|
||||
|
||||
endef # UNAVAIL_recipe
|
||||
|
||||
install:
|
||||
$(if $(prefix),,$(error variable `prefix' must be set))
|
||||
$(INSTALL) -d $(DESTDIR)$(bindir)
|
||||
$(INSTALL) ../bin/* $(DESTDIR)$(bindir)
|
||||
|
||||
avail:
|
||||
$(foreach prog,$(PROGS),$(AVAIL_recipe))
|
||||
@@ -52,23 +115,10 @@ avail:
|
||||
unavail:
|
||||
$(foreach prog,$(PROGS),$(UNAVAIL_recipe))
|
||||
|
||||
##########
|
||||
endif # CMD_EXE
|
||||
|
||||
define AVAIL_recipe
|
||||
|
||||
ln -s $(abspath ../bin/$(prog)) /usr/local/bin/$(prog)
|
||||
|
||||
endef
|
||||
|
||||
##########
|
||||
|
||||
define UNAVAIL_recipe
|
||||
|
||||
$(RM) /usr/local/bin/$(prog)
|
||||
|
||||
endef
|
||||
|
||||
##########
|
||||
zip:
|
||||
@cd .. && zip cc65 bin/*
|
||||
|
||||
define OBJS_template
|
||||
|
||||
@@ -77,55 +127,35 @@ $1_OBJS := $$(patsubst %.c,../wrk/%.o,$$(wildcard $1/*.c))
|
||||
$$($1_OBJS): | ../wrk/$1
|
||||
|
||||
../wrk/$1:
|
||||
@mkdir -p $$@
|
||||
@$$(call MKDIR,$$@)
|
||||
|
||||
DEPS += $$($1_OBJS:.o=.d)
|
||||
|
||||
endef
|
||||
|
||||
##########
|
||||
endef # OBJS_template
|
||||
|
||||
define PROG_template
|
||||
|
||||
$$(eval $$(call OBJS_template,$1))
|
||||
|
||||
../bin/$1: $$($1_OBJS) ../wrk/common/common.a | ../bin
|
||||
../bin/$1$(EXE_SUFFIX): $$($1_OBJS) ../wrk/common/common.a | ../bin
|
||||
$$(CC) $$(LDFLAGS) -o $$@ $$^ $$(LDLIBS)
|
||||
|
||||
$1: ../bin/$1
|
||||
$1: ../bin/$1$(EXE_SUFFIX)
|
||||
|
||||
endef
|
||||
|
||||
##########
|
||||
endef # PROG_template
|
||||
|
||||
../wrk/%.o: %.c
|
||||
@echo $<
|
||||
@$(CC) -c $(CFLAGS) -o $@ $<
|
||||
|
||||
../bin:
|
||||
@mkdir $@
|
||||
@$(call MKDIR,$@)
|
||||
|
||||
$(eval $(call OBJS_template,common))
|
||||
|
||||
../wrk/common/common.a: $(common_OBJS)
|
||||
$(AR) r $@ $?
|
||||
|
||||
$(foreach prog,$(PROGS),$(eval $(call PROG_template,$(prog))))
|
||||
|
||||
-include $(DEPS)
|
||||
|
||||
else # cmd.exe
|
||||
|
||||
.SUFFIXES:
|
||||
|
||||
.PHONY: all bin mostlyclean clean
|
||||
|
||||
all bin:
|
||||
msbuild cc65.sln /p:configuration=release /consoleloggerparameters:disableconsolecolor
|
||||
|
||||
mostlyclean:
|
||||
$(if $(wildcard ../wrk),rmdir /s /q ..\wrk)
|
||||
|
||||
clean:
|
||||
msbuild cc65.sln /p:configuration=release /consoleloggerparameters:disableconsolecolor /target:$@
|
||||
|
||||
endif # cmd.exe
|
||||
|
||||
Reference in New Issue
Block a user