2003-12-02 15:23 UTC+0100 Lorenzo Fiorini <lorenzo_fiorini@tin.it>

* source/vm/hvm.c
  * source/vm/mainwin.c
  * bin/bld.bat
  * config/dos/watcom.cf
  + config/w32/watcom.cf
    ! added support to OpenWatcom DOS/Win32 borrowed from xHarbour
This commit is contained in:
Lorenzo Fiorini
2003-12-02 14:26:44 +00:00
parent e43a44c18e
commit e1f9622905
6 changed files with 230 additions and 29 deletions

View File

@@ -8,6 +8,14 @@
2002-12-01 23:12 UTC+0100 Foo Bar <foo.bar@foobar.org>
*/
2003-12-02 15:23 UTC+0100 Lorenzo Fiorini <lorenzo_fiorini@tin.it>
* source/vm/hvm.c
* source/vm/mainwin.c
* bin/bld.bat
* config/dos/watcom.cf
+ config/w32/watcom.cf
! added support to OpenWatcom DOS/Win32 borrowed from xHarbour
2003-11-24 18:32 UTC+0100 Lorenzo Fiorini <lorenzo_fiorini@tin.it>
* source/compiler/gencobj.c
! fixed to allow = for the C compiler options

View File

@@ -55,14 +55,14 @@ if "%HB_INC_INSTALL%" == "" set HB_INC_INSTALL=..\include\
echo - w32 (HB_GT_LIB=gtwin by default)
echo - linux (HB_GT_LIB=gtstd by default)
echo - os2 (HB_GT_LIB=gtos2 by default)
echo.
pause
echo.
pause
echo HB_COMPILER:
echo - When HB_ARCHITECTURE=dos
echo - bcc16 (Borland C++ 3.x, 4.x, 5.0x, DOS 16-bit)
echo - djgpp (Delorie GNU C, DOS 32-bit)
echo - rxs32 (EMX/RSXNT/DOS GNU C, DOS 32-bit)
echo - watcom (Watcom C++ 9.x, 10.x, 11.x, DOS 32-bit)
echo - watcom (OpenWatcom, DOS 32-bit)
echo - When HB_ARCHITECTURE=w32
echo - bcc32 (Borland C++ 4.x, 5.x, Windows 32-bit)
echo - gcc (Cygnus/Cygwin GNU C, Windows 32-bit)
@@ -70,13 +70,14 @@ if "%HB_INC_INSTALL%" == "" set HB_INC_INSTALL=..\include\
echo - rxsnt (EMX/RSXNT/Win32 GNU C, Windows 32-bit)
echo - icc (IBM Visual Age C++, Windows 32-bit)
echo - msvc (Microsoft Visual C++, Windows 32-bit)
echo - watcom (OpenWatcom, Windows 32-bit)
echo - When HB_ARCHITECTURE=linux
echo - gcc (GNU C, 32-bit)
echo - When HB_ARCHITECTURE=os2
echo - gcc (EMX GNU C, OS/2 32-bit)
echo - icc (IBM Visual Age C++ 3.0, OS/2 32-bit)
echo.
pause
echo.
pause
echo HB_GT_LIB:
echo - gtstd (Standard streaming) (for all architectures)
echo - gtdos (DOS console) (for dos architecture)
@@ -109,7 +110,7 @@ if "%HB_INC_INSTALL%" == "" set HB_INC_INSTALL=..\include\
:COMPILE
%HB_BIN_INSTALL%\harbour %1.prg -n -i%HB_INC_INSTALL% %2 %3 %HARBOURFLAGS%
%HB_BIN_INSTALL%\harbour %1.prg -n -q0 -gc0 -i%HB_INC_INSTALL% %2 %3 %HARBOURFLAGS%
:A_DOS
@@ -132,6 +133,8 @@ if "%HB_INC_INSTALL%" == "" set HB_INC_INSTALL=..\include\
echo rdd.lib >> build.tmp
echo macro.lib >> build.tmp
echo pp.lib >> build.tmp
echo dbfdbt.lib >> build.tmp
echo dbffpt.lib >> build.tmp
echo dbfntx.lib >> build.tmp
echo dbfcdx.lib >> build.tmp
echo common.lib >> build.tmp
@@ -140,7 +143,7 @@ if "%HB_INC_INSTALL%" == "" set HB_INC_INSTALL=..\include\
goto END
:A_DOS_BCC16_NOT
if not "%HB_COMPILER%" == "djgpp" goto A_DOS_DJGPP_NOT
echo %1.c > build.tmp
@@ -155,9 +158,11 @@ if "%HB_INC_INSTALL%" == "" set HB_INC_INSTALL=..\include\
echo -lvm >> build.tmp
echo -lmacro >> build.tmp
echo -lpp >> build.tmp
echo -ldbfnt >> build.tmp
echo -ldbfcd >> build.tmp
echo -lcommo >> build.tmp
echo -ldbfdbt >> build.tmp
echo -ldbffpt >> build.tmp
echo -ldbfntx >> build.tmp
echo -ldbfcdx >> build.tmp
echo -lcommon >> build.tmp
echo -lm >> build.tmp
gcc @build.tmp
del build.tmp
@@ -165,22 +170,77 @@ if "%HB_INC_INSTALL%" == "" set HB_INC_INSTALL=..\include\
:A_DOS_DJGPP_NOT
if "%HB_COMPILER%" == "rsx32" gcc %1.c -Zrsx32 %CFLAGS% -I%HB_INC_INSTALL% -L%HB_LIB_INSTALL% -ldebug -lvm -lrtl -l%_HB_GT_LIB% -llang -lrdd -lrtl -lvm -lmacro -lpp -ldbfntx -ldbfcdx -lcommon
if not "%HB_COMPILER%" == "rsx32" GOTO A_DOS_RSX32_NOT
gcc %1.c -Zrsx32 %CFLAGS% -I%HB_INC_INSTALL% -L%HB_LIB_INSTALL% -ldebug -lvm -lrtl -l%_HB_GT_LIB% -llang -lrdd -lrtl -lvm -lmacro -lpp -ldbfntx -ldbfcdx -lcommon
goto END
:A_DOS_RSX32_NOT
if not "%HB_COMPILER%" == "watcom" goto END
wpp386 -j -w3 -d2 -5s -5r -fp5 -oxehtz -zq -zt0 -bt=DOS %1.c -fo=%1.obj
echo debug all OP osn=DOS OP stack=65536 OP CASEEXACT OP stub=cwstub.exe NAME %1.exe > build.tmp
echo FILE %1.obj >> build.tmp
echo LIB debug.lib >> build.tmp
echo LIB vm.lib >> build.tmp
echo LIB rtl.lib >> build.tmp
echo LIB %_HB_GT_LIB%.lib >> build.tmp
echo LIB lang.lib >> build.tmp
echo LIB rdd.lib >> build.tmp
echo LIB macro.lib >> build.tmp
echo LIB pp.lib >> build.tmp
echo LIB dbfntx.lib >> build.tmp
echo LIB dbfcdx.lib >> build.tmp
echo LIB dbfdbt.lib >> build.tmp
echo LIB dbffpt.lib >> build.tmp
echo LIB common.lib >> build.tmp
wlink @build.tmp
del build.tmp
goto END
:A_W32
if not "%HB_ARCHITECTURE%" == "w32" goto A_OS2
if not "%HB_ARCHITECTURE%" == "w32" goto A_OS2
if "%HB_GT_LIB%" == "" set _HB_GT_LIB=gtwin
if "%HB_COMPILER%" == "bcc32" bcc32 -O2 -d %CFLAGS% -I%HB_INC_INSTALL% -L%HB_LIB_INSTALL% %1.c debug.lib vm.lib rtl.lib %_HB_GT_LIB%.lib lang.lib rdd.lib macro.lib pp.lib dbfntx.lib dbfcdx.lib common.lib
if "%HB_COMPILER%" == "gcc" gcc %1.c -o%1.exe %CFLAGS% -I%HB_INC_INSTALL% -L%HB_LIB_INSTALL% -ldebug -lvm -lrtl -l%_HB_GT_LIB% -llang -lrdd -lrtl -lvm -lmacro -lpp -ldbfntx -ldbfcdx -lcommon
if "%HB_COMPILER%" == "mingw32" gcc %1.c -o%1.exe %CFLAGS% -mno-cygwin -I%HB_INC_INSTALL% -L%HB_LIB_INSTALL% -ldebug -lvm -lrtl -l%_HB_GT_LIB% -llang -lrdd -lrtl -lvm -lmacro -lpp -ldbfntx -ldbfcdx -lcommon
if "%HB_COMPILER%" == "gcc" gcc %1.c -o%1.exe %CFLAGS% -I%HB_INC_INSTALL% -L%HB_LIB_INSTALL% -ldebug -lvm -lrtl -l%_HB_GT_LIB% -llang -lrdd -lrtl -lvm -lmacro -lpp -ldbfdbt -ldbffpt -ldbfntx -ldbfcdx -lcommon
if "%HB_COMPILER%" == "mingw32" gcc %1.c -o%1.exe %CFLAGS% -mno-cygwin -I%HB_INC_INSTALL% %HB_INC_TEMP% -L%HB_LIB_INSTALL% -ldebug -lvm -lrtl -l%_HB_GT_LIB% -llang -lrdd -lrtl -lvm -lmacro -lpp -ldbfdbt -ldbffpt -ldbfntx -ldbfcdx -lcommon
if "%HB_COMPILER%" == "rsxnt" gcc %1.c -Zwin32 %CFLAGS% -I%HB_INC_INSTALL% -L%HB_LIB_INSTALL% -ldebug -lvm -lrtl -l%_HB_GT_LIB% -llang -lrdd -lrtl -lvm -lmacro -lpp -ldbfntx -ldbfcdx -lcommon
if "%HB_COMPILER%" == "msvc" cl -TP -W3 %CFLAGS% -I%HB_INC_INSTALL% %1.c /link /subsystem:CONSOLE %HB_LIB_INSTALL%\debug.lib %HB_LIB_INSTALL%\vm.lib %HB_LIB_INSTALL%\rtl.lib %HB_LIB_INSTALL%\%_HB_GT_LIB%.lib %HB_LIB_INSTALL%\lang.lib %HB_LIB_INSTALL%\rdd.lib %HB_LIB_INSTALL%\macro.lib %HB_LIB_INSTALL%\pp.lib %HB_LIB_INSTALL%\dbfntx.lib %HB_LIB_INSTALL%\dbfcdx.lib %HB_LIB_INSTALL%\common.lib user32.lib winspool.lib
if "%HB_COMPILER%" == "msvc" echo Ignore LNK4033 warning
:C_WATCOM
if not "%HB_COMPILER%" == "watcom" goto end
wpp386 -j -w3 -d2 -5s -5r -fp5 -oxehtz -zq -zt0 -mf -bt=NT %1.c -fo=%1.obj
echo debug all OP osn=NT OP stack=65536 OP CASEEXACT NAME %1.exe > build.tmp
echo FILE %1.obj >> build.tmp
echo LIB debug.lib >> build.tmp
echo LIB vm.lib >> build.tmp
echo LIB rtl.lib >> build.tmp
echo LIB %_HB_GT_LIB%.lib >> build.tmp
echo LIB lang.lib >> build.tmp
echo LIB macro.lib >> build.tmp
echo LIB pp.lib >> build.tmp
echo LIB dbfntx.lib >> build.tmp
echo LIB dbfcdx.lib >> build.tmp
echo LIB dbfdbt.lib >> build.tmp
echo LIB dbffpt.lib >> build.tmp
echo LIB rdd.lib >> build.tmp
echo LIB common.lib >> build.tmp
echo LIB kernel32.lib >> build.tmp
echo LIB user32.lib >> build.tmp
echo LIB winspool.lib >> build.tmp
echo LIB oleaut32.lib >> build.tmp
echo LIB uuid.lib >> build.tmp
wlink @build.tmp
del build.tmp
goto END
goto END
:A_OS2
@@ -189,8 +249,8 @@ if "%HB_INC_INSTALL%" == "" set HB_INC_INSTALL=..\include\
if "%HB_GT_LIB%" == "" set _HB_GT_LIB=gtos2
if "%HB_COMPILER%" == "gcc" gcc %1.c %CFLAGS% -I%HB_INC_INSTALL% -L%HB_LIB_INSTALL% -ldebug -lvm -lrtl -l%_HB_GT_LIB% -llang -lrdd -lrtl -lvm -lmacro -lpp -ldbfntx -ldbfcdx -lcommon
if "%HB_COMPILER%" == "icc" icc /Gs+ /W2 /Se /Sd+ /Ti+ /C- /Tp %CFLAGS% -I%HB_INC_INSTALL% %1.c %HB_LIB_INSTALL%\debug.lib %HB_LIB_INSTALL%\vm.lib %HB_LIB_INSTALL%\rtl.lib %HB_LIB_INSTALL%\%_HB_GT_LIB%.lib %HB_LIB_INSTALL%\lang.lib %HB_LIB_INSTALL%\rdd.lib %HB_LIB_INSTALL%\rtl.lib %HB_LIB_INSTALL%\vm.lib %HB_LIB_INSTALL%\macro.lib %HB_LIB_INSTALL%\pp.lib %HB_LIB_INSTALL%\dbfntx.lib %HB_LIB_INSTALL%\dbfcdx.lib %HB_LIB_INSTALL%\common.lib
if "%HB_COMPILER%" == "gcc" gcc %1.c %CFLAGS% -I%HB_INC_INSTALL% -L%HB_LIB_INSTALL% -ldebug -lvm -lrtl -l%_HB_GT_LIB% -llang -lrdd -lrtl -lvm -lmacro -lpp -ldbfdbt -ldbffpt -ldbfntx -ldbfcdx -lcommon
if "%HB_COMPILER%" == "icc" icc /Gs+ /W2 /Se /Sd+ /Ti+ /C- /Tp %CFLAGS% -I%HB_INC_INSTALL% %1.c %HB_LIB_INSTALL%\debug.lib %HB_LIB_INSTALL%\vm.lib %HB_LIB_INSTALL%\rtl.lib %HB_LIB_INSTALL%\%_HB_GT_LIB%.lib %HB_LIB_INSTALL%\lang.lib %HB_LIB_INSTALL%\rdd.lib %HB_LIB_INSTALL%\rtl.lib %HB_LIB_INSTALL%\vm.lib %HB_LIB_INSTALL%\macro.lib %HB_LIB_INSTALL%\pp.lib %HB_LIB_INSTALL%\dbfdbt.lib %HB_LIB_INSTALL%\dbffpt.lib %HB_LIB_INSTALL%\dbfntx.lib %HB_LIB_INSTALL%\dbfcdx.lib %HB_LIB_INSTALL%\common.lib
goto END
:A_LINUX

View File

@@ -11,29 +11,39 @@ EXE_EXT = .exe
LIB_PREF =
LIB_EXT = .lib
$(HB_ARCHITECTURE)_$(HB_COMPILER)_GRANDP = $(subst /,\\,$(GRANDP))
$(HB_ARCHITECTURE)_$(HB_COMPILER)_GRANDP = $(subst /,\,$(GRANDP))
CC = wpp386
CC_IN =
CC_OUT = -fo=
CPPFLAGS = -d2 -w2 -5r -zq -zt0 -bt=DOS4G
CFLAGS := -i$(subst \,\\,$(WATCOM))\\h -i$(subst /,\\,$(HB_INC_COMPILE)) -i.
# important: -j is necessary for proper build
CPPFLAGS = -j -w3 -d2 -5s -5r -fp5 -oxehtz -zq -zt0 -bt=DOS
CFLAGS := -i$(subst /,\,$(HB_INC_COMPILE)) -i.
# work arround to DOS command line size limit
export WPP386 := $(CPPFLAGS)
CPPFLAGS =
ifeq ($(HB_LEX),SIMPLEX)
CFLAGS += -DSIMPLEX
endif
# Note: The empty line directly before 'endef' HAVE TO exist!
# It causes that the 'echo' command is separated by LF
define link_file
$(COMSPEC) /E:2048 /Cecho FILE $(file) >> __link__.tmp
echo FILE $(file) >> __link__.tmp
endef
#Note: The empty line directly before 'endef' HAVE TO exist!
define link_lib
$(COMSPEC) /E:2048 /Cecho LIB $(lib) >> __link__.tmp
echo LIB $(lib) >> __link__.tmp
endef
define link_exe_file
$(COMSPEC) /E:2048 /Cecho $(LDFLAGS) NAME $@ > __link__.tmp
echo $(LDFLAGS) NAME $@ > __link__.tmp
$(foreach file, $^, $(link_file))
$(foreach lib, $(LINKLIBS), $(link_lib))
$(foreach lib, $(RDDLIBS), $(link_lib))
@@ -42,7 +52,7 @@ $(foreach lib, $(GTLIBS), $(link_lib))
endef
LD = wlink
LDFLAGS = debug all OP osn=DOS4G OP stack=65536 OP CASEEXACT
LDFLAGS = debug all OP osn=DOS OP stack=65536 OP CASEEXACT OP stub=cwstub.exe
ifeq ($(HB_LIB_COMPILE),)
LINKLIBS := $(foreach lib, $(CONTRIBS), $(subst /,\,$(TOP)$(ROOT)contrib/$(lib)/$(ARCH)/$(subst lib,,$(lib))))
LINKLIBS := $(foreach lib, $(LIBS), $(subst /,\,$(TOP)$(ROOT)source/$(lib)/$(ARCH)/$(lib)))
@@ -56,28 +66,38 @@ ifeq ($(findstring rdd,$(LIBS)),rdd)
RDDLIBS := $(foreach drv, $(HB_DB_DRIVERS), $(subst /,\,$(TOP)$(ROOT)source/rdd/$(drv)/$(ARCH)/$(drv)))
endif
ifeq ($(findstring rtl,$(LIBS)),rtl)
GTLIBS := $(TOP)$(ROOT)source/rtl/$(HB_GT_LIB)/$(ARCH)/$(HB_GT_LIB)
ifeq ($(HB_MULTI_GT),yes)
GTLIBS := $(TOP)$(ROOT)source/rtl/gtnul/$(ARCH)/gtnul
endif
GTLIBS := $(subst /,\,$(GTLIBS))
endif
LD_RULE = $(link_exe_file)
#Note: The empty line below HAVE TO exist!
define lib_object
$(COMSPEC) /E:2048 /Cecho -+$(file) >> __lib__.tmp
echo -+$(file) >> __lib__.tmp
endef
define create_library
$(COMSPEC) /E:2048 /Cecho $@ > __lib__.tmp
echo $@ > __lib__.tmp
$(foreach file, $^, $(lib_object))
$(AR) $(ARFLAGS) @__lib__.tmp
endef
AR = wlib
ARFLAGS = -p=32 -c $(A_USR)
AR_RULE = $(create_library)
include $(TOP)$(ROOT)config/rules.cf
HB := $(subst /,\\,$(HB))
HB := $(subst /,\,$(HB))
HB_FLAGS := $(subst /,\,$(HB_FLAGS))
# work arround to DOS command line size limit
export HARBOURCMD := $(HB_FLAGS)
HB_FLAGS =

View File

@@ -0,0 +1,101 @@
#
# $Id$
#
# The Harbour project
# GNU MAKE file for Watcom C/C++ 10.x
include $(TOP)$(ROOT)config/$(HB_ARCHITECTURE)/global.cf
OBJ_EXT = .obj
EXE_EXT = .exe
LIB_PREF =
LIB_EXT = .lib
$(HB_ARCHITECTURE)_$(HB_COMPILER)_GRANDP = $(subst /,\,$(GRANDP))
CC = wpp386
CC_IN =
CC_OUT = -fo=
# important: -j is necessary for proper build
CPPFLAGS = -j -w3 -d2 -5s -5r -fp5 -oxehtz -zq -zt0 -mf -bt=NT
CFLAGS := -i$(subst /,\,$(HB_INC_COMPILE)) -i.
# work arround to DOS command line size limit
export WPP386 := $(CPPFLAGS)
CPPFLAGS =
# 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
endef
#Note: The empty line directly before 'endef' HAVE TO exist!
define link_lib
echo LIB $(lib) >> __link__.tmp
endef
define link_exe_file
echo $(LDFLAGS) NAME $@ > __link__.tmp
echo LIB kernel32.lib, user32.lib, winspool.lib, oleaut32.lib, uuid.lib >> __link__.tmp
$(foreach file, $^, $(link_file))
$(foreach lib, $(LINKLIBS), $(link_lib))
$(foreach lib, $(RDDLIBS), $(link_lib))
$(foreach lib, $(GTLIBS), $(link_lib))
-$(LD) @__link__.tmp
endef
LD = wlink
LDFLAGS = debug all OP osn=NT OP stack=65536 OP CASEEXACT
ifeq ($(HB_LIB_COMPILE),)
LINKLIBS := $(foreach lib, $(CONTRIBS), $(subst /,\,$(TOP)$(ROOT)contrib/$(lib)/$(ARCH)/$(subst lib,,$(lib))))
LINKLIBS := $(foreach lib, $(LIBS), $(subst /,\,$(TOP)$(ROOT)source/$(lib)/$(ARCH)/$(lib)))
else
LINKLIBS := $(foreach lib, $(CONTRIBS), $(subst /,\,$(HB_LIB_COMPILE)/$(lib)))
LINKLIBS := $(foreach lib, $(LIBS), $(subst /,\,$(HB_LIB_COMPILE)/$(lib)))
endif
# If LIBS specifies the rdd library, add all DB drivers.
ifeq ($(findstring rdd,$(LIBS)),rdd)
RDDLIBS := $(foreach drv, $(HB_DB_DRIVERS), $(subst /,\,$(TOP)$(ROOT)source/rdd/$(drv)/$(ARCH)/$(drv)))
endif
ifeq ($(findstring rtl,$(LIBS)),rtl)
GTLIBS := $(TOP)$(ROOT)source/rtl/$(HB_GT_LIB)/$(ARCH)/$(HB_GT_LIB)
ifeq ($(HB_MULTI_GT),yes)
GTLIBS := $(TOP)$(ROOT)source/rtl/gtnul/$(ARCH)/gtnul
endif
GTLIBS := $(subst /,\,$(GTLIBS))
endif
LD_RULE = $(link_exe_file)
#Note: The empty line below HAVE TO exist!
define lib_object
echo -+$(file) >> __lib__.tmp
endef
define create_library
echo $@ > __lib__.tmp
$(foreach file, $^, $(lib_object))
$(AR) $(ARFLAGS) @__lib__.tmp
endef
AR = wlib
ARFLAGS = -p=64 -c $(A_USR)
AR_RULE = $(create_library)
include $(TOP)$(ROOT)config/rules.cf
HB := $(subst /,\,$(HB))
HB_FLAGS := $(subst /,\,$(HB_FLAGS))
# work arround to DOS command line size limit
export HARBOURCMD := $(HB_FLAGS)
HB_FLAGS =

View File

@@ -5181,3 +5181,11 @@ HB_FUNC( __OPGETPRF ) /* profiler: It returns an array with an opcode called and
hb_stornl( hb_ulOpcodesTime[ ulOpcode ], -1, 2 );
}
}
#if defined(HB_OS_WIN_32) && defined(__WATCOMC__)
extern void HB_EXPORT hb_froceLinkMain();
void _hb_froceLinkMain()
{
hb_froceLinkMain();
}
#endif

View File

@@ -116,6 +116,10 @@ int WINAPI WinMain( HINSTANCE hInstance, /* handle to current instance */
/* NOTE: This point is never reached */
return 0;
}
}
#if defined(__WATCOMC__)
void HB_EXPORT hb_froceLinkMain() {}
#endif
#endif