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:
Oliver Schmidt
2013-04-27 17:19:52 +02:00
parent ede72d78b2
commit 052b229f86
30 changed files with 76 additions and 2765 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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)