ChangeLog: 19990621-00:37

This commit is contained in:
Ryszard Glab
1999-06-20 23:45:58 +00:00
parent c30ae2bd8e
commit ab5039166c
26 changed files with 142 additions and 385 deletions

View File

@@ -1,3 +1,47 @@
19990621-00:37 Ryszard Glab <rglab@imid.med.pl>
* config/dos/watcom.cf
* changed invocation of 'echo' command to overcome problems with
too small space for environment variables.
Note also that it is possible that you will have to increase this
space at DOS startup (for example add
SHELL=c:\command.com c:\ /E:2048 /P
to config.sys)
* removed some variables that can be expanded directly
* config/dos/global.cf
* all '\' are now replaced with '/' in COMSPEC variable to shell from
make utility succesully
+ added check to not include this file recursively
* config/dos/djgpp.cf
* removed some unnecessary data
* config/linux/gcc.cf
* created executables have no extension now
* config/win32/gcc.cf
* config/win32/msvc.cf
+ added missing CC_IN variable
* config/c.cf
* config/global.cf
* config/lib.cf
* config/rules.cf
+ added dependency on header files for YACC and LEX sources
* some rules or variables got clarified
* source/compiler/Makefile
+ added dependency on header files
* include/Makefile
+ added missing hbpp.h
* makewat.env, makefile.wat
- removed from repository - replaced by GNU make (dos/watcom.cf)
* makefile.gcc, readmake.txt, tests/tests.mk
- removed from repository - replaced by GNU make (gcc.cf)
19990620-23:40 CET Victor Szel <info@szelvesz.hu>
* source/compiler/harbour.y
Finished the required modifications for the PCODE

View File

@@ -13,24 +13,25 @@ YACC_H_TMP = $(YACC_C:.c=.h)
YACC_H = y_tab.h
YACC_OUTPUT = $(YACC_C:.c=.out)
YACC_OBJ = $(YACC_C:.c=$(OBJ_EXT))
YACC_HB_H := $(foreach h, $(YACC_HEADERS), $(HB_INC_DIR)/$(h))
endif
ifdef LEX_SOURCE
LEX_BASE = $(LEX_SOURCE:.l=)
LEX_C = $(LEX_BASE)l.c
LEX_OBJ = $(LEX_C:.c=$(OBJ_EXT))
LEX_HB_H := $(foreach h, $(LEX_HEADERS), $(HB_INC_DIR)/$(h))
endif
ALL_C_OBJS = $(C_OBJS) $(MAIN_OBJ) $(YACC_OBJ) $(LEX_OBJ)
$(YACC_OBJ) : $(YACC_C)
$(YACC_C) : ../../$(YACC_SOURCE)
$(YACC) $(YACC_FLAGS) -o$@ $?
$(YACC_C) : ../../$(YACC_SOURCE) $(YACC_HB_H)
$(YACC) $(YACC_FLAGS) -o$@ $<
$(LEX_OBJ) : $(LEX_C)
$(LEX_C) : ../../$(LEX_SOURCE)
$(LEX) $(LEX_FLAGS) -o$@ $?
$(LEX_C) : ../../$(LEX_SOURCE) $(LEX_HB_H)
$(LEX) $(LEX_FLAGS) -o$@ $<

View File

@@ -8,8 +8,8 @@ ifeq ($(DIRS),) # Empty directory list
DIR_RULE =\
@echo Done
else
DIR_LIST = $(subst /,\,$(DIRS))
DIR_MAKE = $(subst /,\,$(MK))
DIR_LIST := $(subst /,\,$(DIRS))
DIR_MAKE := $(subst /,\,$(MK))
DIR_RULE =\
$(COMSPEC) /C FOR %d IN ($(DIR_LIST)) DO $(DIR_MAKE) -C %d $@
endif

View File

@@ -12,35 +12,36 @@ LIB_EXT = .a
CC = gcc
CC_IN = -c
CC_OUT = -o
CPPFLAGS = -DDEBUG -I. -I$(HB_INC_DIR)
CFLAGS = -Wall -g
CPPFLAGS = -I. -I$(HB_INC_DIR)
CFLAGS = -Wall
LD = gcc
LD_OUT = -o
ifdef HB_LIB_DIR
LDFLAGS = -L$(HB_LIB_DIR)
endif
LINKLIBS = $(foreach lib, $(LIBS), -l$(lib))
LINKLIBS := $(foreach lib, $(LIBS), -l$(lib))
# LINKLIBS += -lm
#Note: The empty line below HAVE TO exist!
# Note: The empty line directly before 'endef' HAVE TO exist!
# It causes that every echo command will be separated by LF
define lib_object
echo ADDMOD $(file) >> __lib__.tmp
endef
# We have to use script to overcome the DOS limit of max 128 characters
# in commmand line
define create_library
echo CREATE $@ > __lib__.tmp
$(foreach file, $^, $(lib_object))
echo SAVE >> __lib__.tmp
echo END >> __lib__.tmp
$(AR) -M < __lib__.tmp
del __lib__.tmp
endef
AR = ar
ARFLAGS =
#AR_RULE = $(AR) $(ARFLAGS) r $@ $^ || $(RM) $@
AR_RULE = $(create_library)
include $(TOP)$(ROOT)config/rules.cf

View File

@@ -2,24 +2,30 @@
# $Id$
#
ifndef MK
all : first
# There is a conflict with the use of '\' and '/' characters
# The MAKE requires '/' in filenames (ARCH_DIR) however some compilers
# and some DOS commands require '\' (ARCH_DOS)
ARCH_DIR = $(subst \,/,$(ARCH))
ARCH_DOS = $(subst /,\,$(ARCH))
MK = $(subst \,/,$(subst \~,~,$(MAKE)))
MK := $(subst \,/,$(subst \~,~,$(MAKE)))
ifeq ($(HB_INC_DIR),)
HB_INC_DIR=$(TOP)$(ROOT)include
HB_INC_DIR = $(TOP)$(ROOT)include
endif
ifeq ($(HB_LIB_DIR),)
HB_LIB_DIR=$(TOP)$(ROOT)libs
HB_LIB_DIR = $(TOP)$(ROOT)libs
endif
ifeq ($(HB_BIN_DIR),)
HB_BIN_DIR=$(TOP)$(ROOT)bin
HB_BIN_DIR = $(TOP)$(ROOT)bin
endif
ifeq ($(COMSPEC),) #location of command.com
COMSPEC = command.com
COMSPEC := command.com
else
COMSPEC := $(subst \,/,$(COMSPEC))
endif
RM = del
@@ -35,4 +41,5 @@ dirbase::
clean::
-echo Y | $(RM) $(ARCH_DOS)\*.*
-$(RD) $(ARCH_DOS)
-$(RD) $(HB_ARCHITECTURE)
-$(RD) $(HB_ARCHITECTURE)
endif

View File

@@ -10,47 +10,43 @@ LIB_PREF =
LIB_EXT = .lib
$(HB_ARCHITECTURE)_$(HB_COMPILER)_GRANDP = $(subst /,\\,$(GRANDP))
_HB_INC_DIR = $(subst /,\\,$(HB_INC_DIR))
_HB_LIB_DIR = $(subst /,\,$(HB_LIB_DIR))
WATCOM_INCLUDE = $(subst \,\\,$(WATCOM))\\h
CC = wpp386
CC_IN =
CC_OUT = -fo=
CPPFLAGS = -d2 -w2 -5r -zq -zt0 -bt=DOS4G
CFLAGS = -i$(WATCOM_INCLUDE) -i$(_HB_INC_DIR) -i.
CFLAGS := -i$(subst \,\\,$(WATCOM))\\h -i$(subst /,\\,$(HB_INC_DIR)) -i.
#Note: The empty line below HAVE TO exist!
# Note: The empty line directly before 'endef' HAVE TO exist!
# It causes that the 'echo' command is separated by LF
define link_file
echo FILE $(file) >> __link__.tmp
$(COMSPEC) /E:2048 /Cecho FILE $(file) >> __link__.tmp
endef
define link_exe_file
echo $(LDFLAGS) > __link__.tmp
echo NAME $@ >> __link__.tmp
$(COMSPEC) /E:2048 /Cecho $(LDFLAGS) NAME $@ > __link__.tmp
$(foreach file, $^, $(link_file))
echo $(LINKLIBS) >> __link__.tmp
$(LD) @__link__.tmp
del __link__.tmp
$(COMSPEC) /E:2048 /Cecho $(LINKLIBS) >> __link__.tmp
-$(LD) @__link__.tmp
endef
LD = wlink
LDFLAGS = debug all OP osn=DOS4G OP stack=16384
LINKLIBS = LIBP $(_HB_LIB_DIR) LIB $(foreach lib, $(LIBS), $(lib))
LINKLIBS := LIBP $(subst /,\,$(HB_LIB_DIR)) $(foreach lib, $(LIBS), LIB $(lib))
LD_RULE = $(link_exe_file)
#Note: The empty line below HAVE TO exist!
define lib_object
echo -+$(file) >> __lib__.tmp
$(COMSPEC) /E:2048 /Cecho -+$(file) >> __lib__.tmp
endef
define create_library
echo $@ > __lib__.tmp
$(COMSPEC) /E:2048 /Cecho $@ > __lib__.tmp
$(foreach file, $^, $(lib_object))
$(AR) @__lib__.tmp
del __lib__.tmp
endef
AR = wlib

View File

@@ -3,6 +3,6 @@
#
GRANDP = ../../
ARCH = $(HB_ARCHITECTURE)/$(HB_COMPILER)
ARCH := $(HB_ARCHITECTURE)/$(HB_COMPILER)
include $(TOP)$(ROOT)config/$(ARCH).cf

View File

@@ -6,15 +6,15 @@ include $(TOP)$(ROOT)config/global.cf
include $(TOP)$(ROOT)config/c.cf
include $(TOP)$(ROOT)config/prg.cf
LIB_NAME = $(LIB_PREF)$(LIB)$(LIB_EXT)
LIB_NAME := $(LIB_PREF)$(LIB)$(LIB_EXT)
_ARCH_DIR = $(notdir $(ARCH_DIR))
ifeq ($(_ARCH_DIR),)
LIB_ARCH := $(notdir $(ARCH_DIR))
ifeq ($(LIB_ARCH),)
# ARCH_DIR ends with a slash
LIB_ARCH = $(ARCH_DIR)$(LIB_NAME)
LIB_ARCH := $(ARCH_DIR)$(LIB_NAME)
else
# there is no slash at the end of ARCH_DIR
LIB_ARCH = $(ARCH_DIR)/$(LIB_NAME)
LIB_ARCH := $(ARCH_DIR)/$(LIB_NAME)
endif
ALL_OBJS = $(ALL_C_OBJS) $(ALL_PRG_OBJS)

View File

@@ -5,7 +5,7 @@
include $(TOP)$(ROOT)config/$(HB_ARCHITECTURE)/global.cf
OBJ_EXT = .o
EXE_EXT = .exe
EXE_EXT =
LIB_PREF = lib
LIB_EXT = .a

View File

@@ -11,12 +11,12 @@ LEX = flex
LEX_FLAGS = -i -8
# How to run Harbour.
_HB = $(notdir $(HB_BIN_DIR))
ifeq ($(_HB),)
HB := $(notdir $(HB_BIN_DIR))
ifeq ($(HB),)
# there is a slash at the end
HB = $(HB_BIN_DIR)harbour$(EXE_EXT)
HB := $(HB_BIN_DIR)harbour$(EXE_EXT)
else
HB = $(HB_BIN_DIR)/harbour$(EXE_EXT)
HB := $(HB_BIN_DIR)/harbour$(EXE_EXT)
endif
HB_FLAGS = -n -q -I$(TOP) -I$(HB_INC_DIR)

View File

@@ -10,6 +10,7 @@ LIB_PREF = lib
LIB_EXT = .a
CC = gcc
CC_IN = -c
CC_OUT = -o
CPPFLAGS = -DDEBUG -I. -I$(HB_INC_DIR)
CFLAGS = -Wall -g

View File

@@ -8,6 +8,7 @@ LIB_PREF =
LIB_EXT = .lib
CC = cl.exe
CC_IN = -c
CC_OUT = -Fo
CPPFLAGS = -DDEBUG -I. -I$(HB_INC_DIR)
CFLAGS = -W0 -Zi # -W4 for max warnings

View File

@@ -13,6 +13,7 @@ C_HEADERS=\
filesys.h \
gtapi.h \
hberrors.h \
hbpp.h \
hbsetup.h \
init.h \
itemapi.h \

View File

@@ -1,23 +0,0 @@
# Tell emacs that this is a -*- makefile -*-
.PHONY: COMPILER VM RTL TESTS
all: COMPILER VM RTL TESTS
COMPILER:
make -w --directory=SOURCE/COMPILER -f MAKEFILE.GCC
VM:
make -w --directory=SOURCE/VM -f MAKEFILE.GCC
RTL:
make -w --directory=SOURCE/RTL -f MAKEFILE.GCC
TESTS:
make -w --directory=TESTS/WORKING -f MAKEFILE.GCC
clean:
make -w --directory=SOURCE/COMPILER -f MAKEFILE.GCC clean
make -w --directory=SOURCE/VM -f MAKEFILE.GCC clean
make -w --directory=SOURCE/RTL -f MAKEFILE.GCC clean
make -w --directory=TESTS -f MAKEFILE.GCC clean

View File

@@ -1,42 +0,0 @@
# $Id$
# Makefile definitions for WATCOM C/C++ 10.x
# This file is included by makefile.wat located in subdirectories
# Usage:
# wmake /f makefile.wat
#
# HARBOURDIR: set to where the Harbour project is installed
#
# Harbour project directories
HARBOURDIR = o:\h
HARBOURLIB = $(HARBOURDIR)\libs\harbour.lib
# Watcom directories
WATDIR=$(%WATCOM)
WATLIBDIR=$(WATDIR)\lib386
WATINCDIR=$(WATDIR)\h
OS_TARGET=DOS4G
# Compiler options
WC = wcc386
WPP = wpp386
WCDEBUG = /d2
WCOPTIONS = /w2 /5r /zq /zt0 /bt=$(OS_TARGET)
WCINCLUDE = -i=$(HARBOURDIR)\include -i=$(WATINCDIR)
WCDEFINE = /d_OS_DOS
WCEXTRA =
# Linker options
WLINK = wlink
WLOPTIONS = op osn=$(OS_TARGET)
WLSTACK = op stack=16384
WLDEBUG = debug all
WLLIBS = $(HARBOURLIB)
.EXTENSIONS: .prg
.c.obj: # $< # .AUTODEPEND
*$(WPP) $(WCOPTIONS) $(WCINCLUDE) $(WCDEBUG) $(WCDEFINE) $(WCEXTRA) $<
.prg.c: # <$ # .AUTODEPEND
*$(HARBOURDIR)\BIN\HARBOUR -N $^*

View File

@@ -1,36 +0,0 @@
This makefile tree provides an easy method to build
the entire Harbour project. The development environment
was Cygnus win32 B19 developers distribution, which
means GNU Make and GCC. The root makefile will build
the Harbour compiler, the VM, the RTL, and all tests found
in the TESTS/WORKING dir. There is also a MAKEFILE.GCC in
TESTS/BROKEN, but it is not called by the root makefile.
I have left all the MAKEFILE names as MAKEFILE.GCC.
Using the makefiles for development: Say you've just written
a new RTL function in C. Just type
make -f MAKEFILE.GCC
in the RTL directory and it will compile it for you, and if
the compile succeeds, add it to libharbour.a.
Say you've just written a new test function in Harbour, in the
TESTS directory. Just type
make -f MAKEFILE.GCC
and it will harbour it, gcc it, and link it (along with any other
uncompiled tests) into an EXE file.
Say you just want to work with one Harbour test called FOO.PRG.
Do this:
make -f MAKEFILE.GCC foo.exe
Because of how my system unpacks a build, I assumed that all
of the original files have uppercase filenames. Therefore
I put in workarounds for .C instead of .c, .PRG instead of .prg,
etc. Hopefully this won't cause much trouble if you happen to
change all filenames to lowercase on your system.
-- Ross Presser 4/24/1999

View File

@@ -1,19 +1,64 @@
#
# $Id$
#
ROOT = ../../
YACC_SOURCE=harbour.y
YACC_HEADERS=\
compiler.h \
hbsetup.h \
pcode.h \
types.h \
hberrors.h \
hbpp.h
LEX_SOURCE=harbour.l
LEX_HEADERS=\
hbsetup.h \
hberrors.h \
types.h
C_SOURCES=\
genobj32.c \
C_MAIN=harbour.c
LIBS=\
hbpp \
include $(TOP)$(ROOT)config/bin.cf

View File

@@ -1,44 +0,0 @@
# $Id$
# Makefile for Watcom C/C++ 10.x
#
!include ..\..\makewat.env
TARGET=$(HARBOURDIR)\bin\harbour.exe
all : $(TARGET)
$(TARGET) : harboury.obj harbourl.obj harbour.obj
%create link.tmp
%append link.tmp $(WLDEBUG)
%append link.tmp FI harboury
%append link.tmp FI harbourl
%append link.tmp FI harbour
%append link.tmp LIB $(HARBOURDIR)\libs\hbpp
%append link.tmp NAME $(TARGET)
%append link.tmp $(WLOPTIONS)
%append link.tmp $(WLSTACK)
wlink @link.tmp
harboury.obj : harboury.c
*$(WC) $(WCOPTIONS) $(WCINCLUDE) $(WCDEBUG) $(WCDEFINE) $(WCEXTRA) $<
harbourl.obj : harbourl.c
*$(WC) $(WCOPTIONS) $(WCINCLUDE) $(WCDEBUG) $(WCDEFINE) $(WCEXTRA) $<
harbour.obj : harbour.c
*$(WC) $(WCOPTIONS) $(WCINCLUDE) $(WCDEBUG) $(WCDEFINE) $(WCEXTRA) $<
harboury.c : harbour.y
bison -d -v -o harboury.c harbour.y
harbourl.c : harbour.l
flex -i -8 -oharbourl.c harbour.l
clean : .SYMBOLIC
del *.out
del *.obj
del harboury.*
del harbourl.*
del *.h
del *.err
del *.tmp

View File

@@ -1,23 +0,0 @@
# $Id$
# Makefile for Watcom C/C++ 10.x
#
!include ..\..\makewat.env
TARGET=$(HARBOURDIR)\libs\hbpp.lib
OBJECTS=hbpp.obj hbppint.obj table.obj
all : $(TARGET)
.c.obj: # $< # .AUTODEPEND
*$(WC) $(WCOPTIONS) $(WCINCLUDE) $(WCDEBUG) $(WCDEFINE) $(WCEXTRA) $<
$(TARGET) : $(OBJECTS)
%create lib.tmp
@for %i in ( $(OBJECTS) ) do @%append lib.tmp +-%i
wlib $^@ @lib.tmp
clean : .SYMBOLIC
-del *.obj
-del *.tmp
-del *.err

View File

@@ -1,38 +0,0 @@
# $Id$
# Makefile for Watcom C/C++
#
all : hbpp compiler vm rtl tools
hbpp : .SYMBOLIC
cd hbpp
wmake $(__MAKEOPTS__) /f makefile.wat all
cd ..
compiler : .SYMBOLIC
cd compiler
wmake $(__MAKEOPTS__) /f makefile.wat all
cd ..
vm : .SYMBOLIC
cd vm
wmake $(__MAKEOPTS__) /f makefile.wat all
cd ..
rtl : .SYMBOLIC
cd rtl
wmake $(__MAKEOPTS__) /f makefile.wat all
cd ..
tools: .SYMBOLIC
cd tools
wmake $(__MAKEOPTS__) /f makefile.wat all
cd ..
clean : .SYMBOLIC
cd compiler
wmake /f makefile.wat clean
cd ../vm
wmake /f makefile.wat clean
cd ../rtl
wmake /f makefile.wat clean
cd ..

View File

@@ -1,24 +0,0 @@
# $Id$
# Makefile for Watcom C/C++ 10.x
#
!include ..\..\makewat.env
TARGET=$(HARBOURLIB)
PRGSYS=tclass.prg errorsys.prg error.prg asort.prg objfunc.prg
OBJSYS=tclass.obj errorsys.obj error.obj asort.obj objfunc.obj
OBJECTS=arrays.obj console.obj dates.obj extend.obj strings.obj classes.obj &
strcmp.obj files.obj set.obj math.obj environ.obj itemapi.obj &
transfrm.obj errorapi.obj codebloc.obj $(OBJSYS)
all: $(TARGET)
$(TARGET): $(OBJECTS)
%create lib.tmp
@for %i in ( $(OBJECTS) ) do @%append lib.tmp +-%i
wlib $^@ @lib.tmp
clean: .SYMBOLIC
del *.obj
del *.tmp
del *.err

View File

@@ -1,20 +0,0 @@
# $Id$
# Makefile for Watcom C/C++ 10.x
#
!include ..\..\makewat.env
TARGET=$(HARBOURLIB)
OBJECTS=datesx.obj stringsx.obj mathx.obj
all: $(TARGET)
$(TARGET): $(OBJECTS) $(HARBSYS)
%create lib.tmp
@for %i in ( $(OBJECTS) ) do @%append lib.tmp +-%i
wlib $^@ @lib.tmp
clean: .SYMBOLIC
del *.obj
del *.tmp
del *.err

View File

@@ -1,20 +0,0 @@
# $Id$
# Makefile for Watcom C/C++ 10.x
#
!include ..\..\makewat.env
TARGET=$(HARBOURLIB)
OBJECTS=hvm.obj dynsym.obj initsymb.obj
all : $(TARGET)
$(TARGET) : $(OBJECTS)
%create lib.tmp
@for %i in ( $(OBJECTS) ) do @%append lib.tmp +-%i
wlib $^@ @lib.tmp
clean : .SYMBOLIC
-del *.obj
-del *.tmp
-del *.err

View File

@@ -1,31 +0,0 @@
# compiler macros
CC=gcc
CFLAGS=-Wall -g -DDEBUG -DNO_OBJ -I$(INCLUDE_DIR) -L$(LIB_DIR) -x c
CFLAGS1=-Wall -g -DDEBUG -DNO_OBJ -I$(INCLUDE_DIR) -L$(LIB_DIR)
# directory macros - define the LIB_DIR for you
INCLUDE_DIR=../../INCLUDE/
BIN_DIR=../../bin
LIB_DIR=../../LIBS/WIN32
# makefile macros
OBJECTS=$(SRCS:.PRG=.o)
COMPILE.C=$(COMPILE.c)
# default targets
all:
clean:
-rm -Rf $(BINARY) core *~ y_tab.* lexyy.c y.output *.o *.exe
.prg.c:
$(BIN_DIR)/harbour $? /N
.PRG.c:
$(BIN_DIR)/harbour $? /N
.o.exe:
$(CC) $(CFLAGS1) -o $@ $? -lharbour
.SUFFIXES: .prg .PRG .exe .EXE

View File

@@ -1,12 +0,0 @@
# Tell emacs that this is a -*- makefile -*-
include ../tests.mk
PRGS:= $(wildcard *.PRG)
OBJS= $(PRGS:.PRG=.o)
EXES= $(PRGS:.PRG=.exe)
all: $(EXES)

View File

@@ -1,27 +0,0 @@
# $Id$
# Makefile for WATCOM C/C++ 10.x
#
!ifdef FILE
!include ..\..\makewat.env
all: $(FILE).exe
$(FILE).exe : $(FILE).obj $(HARBOURDIR)\bin\harbour.exe
%create link.tmp
%append link.tmp $(WLDEBUG)
%append link.tmp FI $(FILE)
%append link.tmp NAME $(FILE)
%append link.tmp LIBRARY $(WLLIBS)
%append link.tmp $(WLOPTIONS)
%append link.tmp $(WLSTACK)
wlink @link.tmp
$(FILE).c : $(FILE).prg
$(HARBOURDIR)\bin\harbour $(FILE) -n
!else
dummy : .SYMBOLIC
@echo =============================================================
@echo Please give a name of PRG file to compile (without extension)
@echo wmake /f makefile.wat FILE=codebloc
!endif