Replaced whole bunch for Makefiles with a single generic Makefile.
- Targeting GNU toolchain. - Modern dependency handling. - Warning-free build. - GCC option -Werror set. - Dynamic search paths. - Don't write into source directories. - Easy cleanup by just removing 'wrk'.
This commit is contained in:
@@ -1,40 +0,0 @@
|
||||
#
|
||||
# Makefile for CC65.COM.
|
||||
#
|
||||
|
||||
.SUFFIXES: .o .obj .m65 .c
|
||||
|
||||
.c.m65:
|
||||
@echo $<
|
||||
@cc65 -I../lib65/ -O -t4 $<
|
||||
|
||||
.m65.obj:
|
||||
../ra65/ra65 -o $@ ../lib65/ace/global.m65 $<
|
||||
|
||||
C_SRCS = code-gen.c error.c expr1.c expr2.c expr3.c function.c mem.c loop.c\
|
||||
globlvar.c io.c scanner.c main.c optimize.c preproc.c\
|
||||
stmt.c symtab.c util.c declare.c
|
||||
|
||||
H_SRCS = cc65.h scanner.h error.h mem.h optimize.h code-gen.h function.h\
|
||||
preproc.h util.h symtab.h io.h ctrans.h stmt.h declare.h loop.h\
|
||||
expr.h
|
||||
|
||||
M65_FILES = ccmisc.m65 extra.m65 rtextra.m65
|
||||
|
||||
OBJS = code-gen.obj error.obj expr1.obj expr2.obj expr3.obj function.obj \
|
||||
globlvar.obj io.obj scanner.obj main.obj\
|
||||
optimize.obj preproc.obj stmt.obj symtab.obj declare.obj loop.obj\
|
||||
ccmisc.obj extra.obj rtextra.obj ctrans.obj mem.obj util.obj
|
||||
|
||||
cc65.com: $(OBJS)
|
||||
@../ra65/link65 -t4 -m -o cc65.com ../lib65/ace/crt0.obj $(OBJS)\
|
||||
../lib65/ace.olb
|
||||
|
||||
.PRECIOUS: $(C_SRCS:.c=.m65)
|
||||
|
||||
|
||||
$(OBJS) : $(H_SRCS)
|
||||
|
||||
clean :
|
||||
rm -f $(OBJS)
|
||||
rm -f $(C_SRCS:.c=.m65)
|
||||
@@ -1,135 +0,0 @@
|
||||
#
|
||||
# Makefile for cross-compiler version of CC65.
|
||||
#
|
||||
|
||||
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# The executable to build
|
||||
EXE = cc65
|
||||
|
||||
# Library directories
|
||||
COMMON = ../common
|
||||
|
||||
# The compiler include search path. Default is "/usr/lib/cc65/include/" if
|
||||
# nothing is defined. You may use CC65_INC=foo on the command line to override it.
|
||||
CC65_INC = \"/usr/lib/cc65/include/\"
|
||||
|
||||
#
|
||||
CC = gcc
|
||||
CFLAGS = -O2 -g -Wall -W -std=c89
|
||||
override CFLAGS += -I$(COMMON)
|
||||
override CFLAGS += -DCC65_INC=$(CC65_INC)
|
||||
EBIND = emxbind
|
||||
LDFLAGS = -lm
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Object files and libraries to link
|
||||
|
||||
OBJS = anonname.o \
|
||||
asmcode.o \
|
||||
asmlabel.o \
|
||||
asmstmt.o \
|
||||
assignment.o \
|
||||
casenode.o \
|
||||
codeent.o \
|
||||
codegen.o \
|
||||
codelab.o \
|
||||
codeinfo.o \
|
||||
codeopt.o \
|
||||
codeseg.o \
|
||||
compile.o \
|
||||
coptadd.o \
|
||||
coptc02.o \
|
||||
coptcmp.o \
|
||||
coptind.o \
|
||||
coptneg.o \
|
||||
coptptrload.o \
|
||||
coptptrstore.o \
|
||||
coptpush.o \
|
||||
coptshift.o \
|
||||
coptsize.o \
|
||||
coptstop.o \
|
||||
coptstore.o \
|
||||
coptsub.o \
|
||||
copttest.o \
|
||||
dataseg.o \
|
||||
datatype.o \
|
||||
declare.o \
|
||||
declattr.o \
|
||||
error.o \
|
||||
expr.o \
|
||||
exprdesc.o \
|
||||
funcdesc.o \
|
||||
function.o \
|
||||
global.o \
|
||||
goto.o \
|
||||
hexval.o \
|
||||
ident.o \
|
||||
incpath.o \
|
||||
input.o \
|
||||
lineinfo.o \
|
||||
litpool.o \
|
||||
loadexpr.o \
|
||||
locals.o \
|
||||
loop.o \
|
||||
macrotab.o \
|
||||
main.o \
|
||||
opcodes.o \
|
||||
output.o \
|
||||
preproc.o \
|
||||
pragma.o \
|
||||
reginfo.o \
|
||||
scanner.o \
|
||||
scanstrbuf.o \
|
||||
segments.o \
|
||||
shiftexpr.o \
|
||||
stackptr.o \
|
||||
standard.o \
|
||||
stdfunc.o \
|
||||
stdnames.o \
|
||||
stmt.o \
|
||||
swstmt.o \
|
||||
symentry.o \
|
||||
symtab.o \
|
||||
testexpr.o \
|
||||
textseg.o \
|
||||
typecmp.o \
|
||||
typeconv.o \
|
||||
util.o
|
||||
|
||||
LIBS = $(COMMON)/common.a
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Makefile targets
|
||||
|
||||
# Main target - must be first
|
||||
.PHONY: all
|
||||
ifeq (.depend,$(wildcard .depend))
|
||||
all: $(EXE)
|
||||
include .depend
|
||||
else
|
||||
all: depend
|
||||
@$(MAKE) -f make/gcc.mak all
|
||||
endif
|
||||
|
||||
$(EXE): $(OBJS) $(LIBS)
|
||||
$(CC) $(LDFLAGS) $(OBJS) $(LIBS) -lm -o $@
|
||||
@if [ $(OS2_SHELL) ] ; then $(EBIND) $(EXE) ; fi
|
||||
|
||||
clean:
|
||||
$(RM) *~ core.* *.map
|
||||
|
||||
zap: clean
|
||||
$(RM) $(OBJS) $(EXE) .depend
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Make the dependencies
|
||||
|
||||
.PHONY: depend dep
|
||||
depend dep: $(OBJS:.o=.c)
|
||||
@echo "Creating dependency information"
|
||||
$(CC) -I$(COMMON) -MM $^ > .depend
|
||||
@@ -1,190 +0,0 @@
|
||||
#
|
||||
# CC65 Makefile for the Watcom compiler (using GNU make)
|
||||
#
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Generic stuff
|
||||
|
||||
# Environment variables for the watcom compiler
|
||||
export WATCOM = c:\\watcom
|
||||
export INCLUDE = $(WATCOM)\\h
|
||||
|
||||
# We will use the windows compiler under linux (define as empty for windows)
|
||||
export WINEDEBUG=fixme-all
|
||||
WINE = wine
|
||||
|
||||
# Programs
|
||||
AR = $(WINE) wlib
|
||||
CC = $(WINE) wcc386
|
||||
LD = $(WINE) wlink
|
||||
WSTRIP = $(WINE) wstrip -q
|
||||
|
||||
LNKCFG = ld.tmp
|
||||
|
||||
# Program arguments
|
||||
CFLAGS = -d1 -obeilr -zp4 -5 -zq -w2 -i=..\\common
|
||||
|
||||
# Target files
|
||||
EXE = cc65.exe
|
||||
|
||||
# Determine the svn version number if possible
|
||||
ifneq "$(shell which svnversion 2>/dev/null)" ""
|
||||
SVNVERSION=$(shell svnversion)
|
||||
ifeq "$(SVNVERSION)" "exported"
|
||||
SVNVERSION=unknown
|
||||
endif
|
||||
ifeq "$(SVNVERSION)" "Unversioned directory"
|
||||
SVNVERSION=unknown
|
||||
endif
|
||||
else
|
||||
SVNVERSION=unknown
|
||||
endif
|
||||
|
||||
# Create NT programs by default
|
||||
ifndef TARGET
|
||||
TARGET = NT
|
||||
endif
|
||||
|
||||
# --------------------- OS2 ---------------------
|
||||
ifeq ($(TARGET),OS2)
|
||||
SYSTEM = os2v2
|
||||
CFLAGS += -bt=$(TARGET)
|
||||
endif
|
||||
|
||||
# -------------------- DOS4G --------------------
|
||||
ifeq ($(TARGET),DOS32)
|
||||
SYSTEM = dos4g
|
||||
CFLAGS += -bt=$(TARGET)
|
||||
endif
|
||||
|
||||
# --------------------- NT ----------------------
|
||||
ifeq ($(TARGET),NT)
|
||||
SYSTEM = nt
|
||||
CFLAGS += -bt=$(TARGET)
|
||||
endif
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Implicit rules
|
||||
|
||||
%.obj: %.c
|
||||
$(CC) $(CFLAGS) -fo=$@ $^
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# All OBJ files
|
||||
|
||||
OBJS = anonname.obj \
|
||||
asmcode.obj \
|
||||
asmlabel.obj \
|
||||
asmstmt.obj \
|
||||
assignment.obj \
|
||||
casenode.obj \
|
||||
codeent.obj \
|
||||
codegen.obj \
|
||||
codelab.obj \
|
||||
codeinfo.obj \
|
||||
codeopt.obj \
|
||||
codeseg.obj \
|
||||
compile.obj \
|
||||
coptadd.obj \
|
||||
coptc02.obj \
|
||||
coptcmp.obj \
|
||||
coptind.obj \
|
||||
coptneg.obj \
|
||||
coptptrload.obj \
|
||||
coptptrstore.obj\
|
||||
coptpush.obj \
|
||||
coptshift.obj \
|
||||
coptsize.obj \
|
||||
coptstop.obj \
|
||||
coptstore.obj \
|
||||
coptsub.obj \
|
||||
copttest.obj \
|
||||
dataseg.obj \
|
||||
datatype.obj \
|
||||
declare.obj \
|
||||
declattr.obj \
|
||||
error.obj \
|
||||
expr.obj \
|
||||
exprdesc.obj \
|
||||
funcdesc.obj \
|
||||
function.obj \
|
||||
global.obj \
|
||||
goto.obj \
|
||||
hexval.obj \
|
||||
ident.obj \
|
||||
incpath.obj \
|
||||
input.obj \
|
||||
lineinfo.obj \
|
||||
litpool.obj \
|
||||
loadexpr.obj \
|
||||
locals.obj \
|
||||
loop.obj \
|
||||
macrotab.obj \
|
||||
main.obj \
|
||||
opcodes.obj \
|
||||
output.obj \
|
||||
preproc.obj \
|
||||
pragma.obj \
|
||||
reginfo.obj \
|
||||
scanner.obj \
|
||||
scanstrbuf.obj \
|
||||
segments.obj \
|
||||
shiftexpr.obj \
|
||||
stackptr.obj \
|
||||
standard.obj \
|
||||
stdfunc.obj \
|
||||
stdnames.obj \
|
||||
stmt.obj \
|
||||
svnversion.obj \
|
||||
swstmt.obj \
|
||||
symentry.obj \
|
||||
symtab.obj \
|
||||
testexpr.obj \
|
||||
textseg.obj \
|
||||
typecmp.obj \
|
||||
typeconv.obj \
|
||||
util.obj
|
||||
|
||||
LIBS = ../common/common.lib
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Main targets
|
||||
|
||||
all: svnversion $(EXE)
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Other targets
|
||||
|
||||
|
||||
$(EXE): $(OBJS) $(LIBS)
|
||||
@echo "DEBUG ALL" > $(LNKCFG)
|
||||
@echo "OPTION QUIET" >> $(LNKCFG)
|
||||
@echo "OPTION MAP" >> $(LNKCFG)
|
||||
@echo "OPTION STACK=65536" >> $(LNKCFG)
|
||||
@echo "NAME $@" >> $(LNKCFG)
|
||||
@for i in $(OBJS); do echo "FILE $${i}"; done >> $(LNKCFG)
|
||||
@for i in $(LIBS); do echo "LIBRARY $${i}"; done >> $(LNKCFG)
|
||||
@$(LD) system $(SYSTEM) @$(LNKCFG)
|
||||
@rm $(LNKCFG)
|
||||
|
||||
.PHONY: svnversion
|
||||
svnversion:
|
||||
@$(RM) svnversion.c
|
||||
@echo "/* This file is auto-generated - do not modify! */" >> svnversion.c
|
||||
@echo "" >> svnversion.c
|
||||
@echo "const char SVNVersion[] = \"$(SVNVERSION)\";" >> svnversion.c
|
||||
|
||||
svnversion.c: svnversion
|
||||
|
||||
clean:
|
||||
@rm -f *~ core
|
||||
|
||||
zap: clean
|
||||
@rm -f $(OBJS) $(EXE) $(EXE:.exe=.map) svnversion.c
|
||||
|
||||
strip:
|
||||
@-$(WSTRIP) $(EXE)
|
||||
|
||||
Reference in New Issue
Block a user