]> git.sur5r.net Git - cc65/blobdiff - src/cc65/make/watcom.mak
Change the OptStackOps function so that it adjusts the instruction pointer
[cc65] / src / cc65 / make / watcom.mak
index 16d1098cd839a94698fc83a45a94ba89e9253e78..ea83b0e1b08c3d421191a39a4163071b01b78b4f 100644 (file)
 #
-# 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
+# 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)" ""
+ifneq "$(wildcard .svn)" ""
+SVNVERSION=$(shell svnversion)
+else
+SVNVERSION=unknown
+endif
+else
+SVNVERSION=unknown
+endif
+
+# Create NT programs by default
+ifndef TARGET
 TARGET = NT
-!endif
-!endif
-
-# target specific macros.
-!if $(TARGET)==OS2
+endif
 
 # --------------------- OS2 ---------------------
-SYSTEM = os2v2
-CC = WCC386
-CCCFG  = -bt=$(TARGET) -d1 -onatx -zp4 -5 -zq -w2
-
-!elif $(TARGET)==DOS32
+ifeq ($(TARGET),OS2)
+SYSTEM  = os2v2
+CFLAGS  += -bt=$(TARGET)
+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
+CFLAGS  += -bt=$(TARGET)
+endif
 
 # --------------------- NT ----------------------
-SYSTEM = nt
-CC = WCC386
-CCCFG  = -bt=$(TARGET) -d1 -onatx -zp4 -5 -zq -w2
-
-!else
-!error
-!endif
+ifeq ($(TARGET),NT)
+SYSTEM  = nt
+CFLAGS  += -bt=$(TARGET)
+endif
 
 # ------------------------------------------------------------------------------
 # Implicit rules
 
-.c.obj:
-  $(CC) $(CCCFG) $<
+%.obj:  %.c
+       $(CC) $(CFLAGS) -fo=$@ $^
 
 
 # ------------------------------------------------------------------------------
-# All library OBJ files
+# All OBJ files
 
 OBJS = anonname.obj    \
-       asmcode.obj     \
+       asmcode.obj     \
        asmlabel.obj    \
-       asmline.obj     \
-       check.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     \
+        coptptrload.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    \
        funcdesc.obj    \
        function.obj    \
        global.obj      \
        goto.obj        \
+        hexval.obj      \
        ident.obj       \
-       incpath.obj     \
+       incpath.obj     \
        input.obj       \
+       lineinfo.obj    \
        litpool.obj     \
+        loadexpr.obj    \
        locals.obj      \
-       loop.obj        \
+       loop.obj        \
        macrotab.obj    \
        main.obj        \
-       optimize.obj    \
-       pragma.obj      \
+       opcodes.obj     \
+        output.obj      \
        preproc.obj     \
-       stmt.obj        \
-       scanner.obj     \
-       stdfunc.obj     \
-       symentry.obj    \
-       symtab.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
+LIBS = ../common/common.lib
 
-.PRECIOUS $(OBJS:.obj=.c)
 
 # ------------------------------------------------------------------------------
 # Main targets
 
-all:           cc65
-
-cc65:          cc65.exe
+all:           svnversion $(EXE)
 
 
 # ------------------------------------------------------------------------------
 # Other 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 check.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 stdfunc.obj
-FILE symentry.obj
-FILE symtab.obj
-FILE util.obj
-LIBRARY ..\common\common.lib
-|
+$(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:
-       @if exist *.obj del *.obj
-               @if exist cc65.exe del cc65.exe
+       @rm -f *~ core
 
-strip:
-       @-wstrip cc65.exe
+zap:   clean
+       @rm -f $(OBJS) $(EXE) $(EXE:.exe=.map) svnversion.c
 
+strip:
+       @-$(WSTRIP) $(EXE)