#
-# CC65 Makefile for the Watcom compiler
+# CC65 Makefile for the Watcom compiler (using GNU make)
#
# ------------------------------------------------------------------------------
# Generic stuff
-.AUTODEPEND
-.SUFFIXES .ASM .C .CC .CPP
-.SWAP
-
AR = WLIB
LD = WLINK
-
-!if !$d(TARGET)
-!if $d(__OS2__)
-TARGET = OS2
-!else
-TARGET = NT
-!endif
-!endif
-
-# target specific macros.
-!if $(TARGET)==OS2
+LNKCFG = ld.tmp
# --------------------- OS2 ---------------------
-SYSTEM = os2v2
-CC = WCC386
-CCCFG = -bt=$(TARGET) -d1 -onatx -zp4 -5 -zq -w2
-
-!elif $(TARGET)==DOS32
+ifeq ($(TARGET),OS2)
+SYSTEM = os2v2
+CC = WCC386
+CFLAGS = -bt=$(TARGET) -d1 -onatx -zp4 -5 -zq -w2
+endif
# -------------------- DOS4G --------------------
-SYSTEM = dos4g
-CC = WCC386
-CCCFG = -bt=$(TARGET) -d1 -onatx -zp4 -5 -zq -w2
-
-!elif $(TARGET)==DOS
-
-# --------------------- DOS ---------------------
-SYSTEM = dos
-CC = WCC
-CCCFG = -bt=$(TARGET) -d1 -onatx -zp2 -2 -ml -zq -w2
-
-!elif $(TARGET)==NT
+ifeq ($(TARGET),DOS32)
+SYSTEM = dos4g
+CC = WCC386
+CFLAGS = -bt=$(TARGET) -d1 -onatx -zp4 -5 -zq -w2
+endif
# --------------------- NT ----------------------
-SYSTEM = nt
-CC = WCC386
-CCCFG = -bt=$(TARGET) -d1 -onatx -zp4 -5 -zq -w2
-
-!else
-!error
-!endif
+ifeq ($(TARGET),NT)
+SYSTEM = nt
+CC = WCC386
+CFLAGS = -bt=$(TARGET) -d1 -onatx -zp4 -5 -zq -w2
+endif
# Add the include dir
-CCCFG = $(CCCFG) -i=..\common
-
+CFLAGS += -i=..\common
# ------------------------------------------------------------------------------
# Implicit rules
-.c.obj:
- $(CC) $(CCCFG) $<
+%.obj: %.c
+ $(CC) $(CFLAGS) $^
# ------------------------------------------------------------------------------
# All library OBJ files
OBJS = anonname.obj \
- asmcode.obj \
+ asmcode.obj \
asmlabel.obj \
- asmline.obj \
+ asmstmt.obj \
+ assignment.obj \
+ casenode.obj \
+ codeent.obj \
codegen.obj \
+ codelab.obj \
+ codeinfo.obj \
+ codeopt.obj \
+ codeseg.obj \
compile.obj \
- cpu.obj \
- ctrans.obj \
+ coptadd.obj \
+ coptc02.obj \
+ coptcmp.obj \
+ coptind.obj \
+ coptneg.obj \
+ coptpush.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 \
+ exprheap.obj \
+ exprnode.obj \
funcdesc.obj \
function.obj \
global.obj \
goto.obj \
+ hexval.obj \
ident.obj \
- incpath.obj \
+ incpath.obj \
input.obj \
+ lineinfo.obj \
litpool.obj \
locals.obj \
- loop.obj \
+ loop.obj \
macrotab.obj \
main.obj \
- optimize.obj \
- pragma.obj \
+ opcodes.obj \
preproc.obj \
- stmt.obj \
- scanner.obj \
- segname.obj \
- stdfunc.obj \
- symentry.obj \
- symtab.obj \
- typecmp.obj \
+ pragma.obj \
+ reginfo.obj \
+ scanner.obj \
+ scanstrbuf.obj \
+ segments.obj \
+ stdfunc.obj \
+ stmt.obj \
+ swstmt.obj \
+ symentry.obj \
+ symtab.obj \
+ textseg.obj \
+ typecmp.obj \
+ typeconv.obj \
util.obj
LIBS = ..\common\common.lib
-.PRECIOUS $(OBJS:.obj=.c)
-
# ------------------------------------------------------------------------------
# Main targets
cc65.exe: $(OBJS) $(LIBS)
- $(LD) system $(SYSTEM) @&&|
-DEBUG ALL
-OPTION QUIET
-NAME $<
-FILE anonname.obj
-FILE asmcode.obj
-FILE asmlabel.obj
-FILE asmline.obj
-FILE codegen.obj
-FILE compile.obj
-FILE cpu.obj
-FILE ctrans.obj
-FILE datatype.obj
-FILE declare.obj
-FILE error.obj
-FILE expr.obj
-FILE funcdesc.obj
-FILE function.obj
-FILE global.obj
-FILE goto.obj
-FILE ident.obj
-FILE incpath.obj
-FILE input.obj
-FILE litpool.obj
-FILE locals.obj
-FILE loop.obj
-FILE macrotab.obj
-FILE main.obj
-FILE optimize.obj
-FILE pragma.obj
-FILE preproc.obj
-FILE stmt.obj
-FILE scanner.obj
-FILE segname.obj
-FILE stdfunc.obj
-FILE symentry.obj
-FILE symtab.obj
-FILE typecmp.obj
-FILE util.obj
-LIBRARY ..\common\common.lib
-|
+ @echo DEBUG ALL > $(LNKCFG)
+ @echo OPTION QUIET >> $(LNKCFG)
+ @echo NAME $@ >> $(LNKCFG)
+ @for %%i in ($(OBJS)) do echo FILE %%i >> $(LNKCFG)
+ @for %%i in ($(LIBS)) do echo LIBRARY %%i >> $(LNKCFG)
+ $(LD) system $(SYSTEM) @$(LNKCFG)
+ @rm $(LNKCFG)
clean:
@if exist *.obj del *.obj
- @if exist cc65.exe del cc65.exe
+ @if exist cc65.exe del cc65.exe
strip:
@-wstrip cc65.exe