Baron-von-Riedesel / HX

Home of the HX DOS Extender and its included DPMI-host HDPMI.
192 stars 14 forks source link

Build issues #40

Open awik32 opened 7 months ago

awik32 commented 7 months ago

I'm trying to build HX

Q:\git\HX\Src>wmake -ms >wmake2.out
Error(E42): Last command making (Release\EDITPE.obj) returned a bad status
Error(E02): Make execution terminated
Error(E42): Last command making (ALL) returned a bad status
Error(E02): Make execution terminated

Q:\git\HX\Src>type wmake2.out
Open Watcom Make Version 1.9
Portions Copyright (c) 1988-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
        cd    HDPMI
        cd ..\DPMILDR
        cd ..\VESA32
        cd ..\HXLDR32
        cd ..\EDITPE
EDITPE.ASM(10) : Error A2106: Cannot open file: "winnt.inc" [ENOENT]
EDITPE.ASM(78) : Error A2209: Syntax error: mzhdr
EDITPE.ASM(79) : Error A2209: Syntax error: pehdr

Q:\git\HX\Src>

The environment is Win98SE under VMware under Linux. More information available on request.

Baron-von-Riedesel commented 7 months ago

It's a bug in src/EditPE/MAKEFILE. Line

AOPT=-c -nologo -coff -Sg -Fl$* -Fo$* $(AOPTD) -I$(HXINST)\Include

should actually be:

AOPT=-c -nologo -coff -Sg -Fl$* -Fo$* $(AOPTD) -I$(INC32DIR)
awik32 commented 7 months ago

OK. Next error:

Q:\git\HX\Src>wmake -ms >wmake.out
Error(E42): Last command making (Release\EDITPE.EXE) returned a bad status
Error(E02): Make execution terminated

Excerpt from wmake.out:

    cd ..\EDITPE
Warning! W1008: cannot open dkrnl32.lib : No such file or directory
Warning! W1008: cannot open libc32s.lib : No such file or directory
Error! E2028: _mainCRTStartup is an undefined reference
Error! E2028: _fopen is an undefined reference
Baron-von-Riedesel commented 7 months ago

Are you sure you have installed the HXDEV package before running nmake?

awik32 commented 7 months ago

I think so, yes:

Q:\git\HX\Src>dir c:\hx\dkrnl32.lib /s
...
Directory of C:\HX\LIB

DKRNL32  LIB       129,682  27/01/23   9:52 DKRNL32.lib
         1 file(s)        129,682 bytes

And the DIRS are as follows:

Q:\git\HX\Src>cat dirs

# HXINST:  location where to install HX binaries
# LIBCOFF: location where COFF libraries will be read from

#HXINST=\hx
HXINST=C:\myHX
#LIBCOFF=$(HXINST)\Lib
LIBCOFF=C:\HX\Lib
INC32DIR=..\..\Include
INC16DIR=.

#MAKE=nmake.exe /nologo
MAKE=wmake.exe -h -ms
ASM=jwasm.exe -q
MSLINK=0
LINKBIN=jwlink.exe
LINK16BIN=jwlink.exe
LIBBIN=jwlib.exe -q -fa -n
LIB16BIN=jwlib.exe -q -b -n

Q:\git\HX\Src>
Baron-von-Riedesel commented 7 months ago

Makefile for EditPE obviously assumes that HXINST contains the directories supplied with HXDEV.

awik32 commented 7 months ago

Is not LIBCOFF supposed to be used for finding the libraries?

Anyway, I changed the HXINST variable to the path where I installed the binary release of HX. After that, the build finished without further errors. Then I changed HX again, back to the c:\my.HX directory where I want my build installed.

However, there is something peculiar about "wmake -ms install" (in the Src directory). I end up with the following files in my install directory:

Q:\git\HX\Src>dir c:\my.HX\

 Volume in drive C has no label
 Volume Serial Number is 353A-18E6
 Directory of C:\my.HX

.              <DIR>        06/02/24   7:51 .
..             <DIR>        06/02/24   7:51 ..
BIN                    714  06/02/24   7:47 Bin
INCLUDE              4,732  04/02/24  18:12 Include
DOC                  1,571  04/02/24  18:12 Doc
UNSUPP               3,025  04/02/24  18:12 UnSupp
LIB                 18,642  04/02/24  19:21 Lib
LIBOMF                 791  06/02/24   7:47 LibOMF
LIB16                  131  06/02/24   7:47 Lib16
         7 file(s)         29,606 bytes
         2 dir(s)        6,536.24 MB free

Q:\git\HX\Src>

Note that these directory entries are not directories, but ordinary files!

Baron-von-Riedesel commented 7 months ago

Is not LIBCOFF supposed to be used for finding the libraries?

Yes, I think that was the goal. Nevertheless, the current status is that LIBCOFF should be "$(HXINST)\Lib". The "stubs" are also supposed to be taken from "$(HXINST)\Bin", so corrently it's still kind of a mix.

Note that these directory entries are not directories, but ordinary files!

A wmake bug? Did you use the binary from OW v1.9? OW 2.0 still has no "official" release.

awik32 commented 7 months ago

The same problem occurs with NMake.

From stderr:

Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.

Path not found - c:\my.HX\OWSupp\WDSupp
File not found - HXHELP\TRAP\HX.TRP
Path not found - c:\my.HX\OWSupp\WDSupp
Path not found - c:\my.HX\OWSupp16\HXHP16.EXE
File not found - HXHELP\TRAP\HX16.TRP

From stdin:

        1 file(s) copied
        1 file(s) copied
        1 file(s) copied
...
        0 file(s) copied
        0 file(s) copied
        0 file(s) copied
        0 file(s) copied
        0 file(s) copied
        1 file(s) copied
        1 file(s) copied
        1 file(s) copied
...

A wmake bug? Did you use the binary from OW v1.9? OW 2.0 still has no "official" release.

Q:\git\HX\Src>wmake -?
Open Watcom Make Version 1.9
Portions Copyright (c) 1988-2002 Sybase, Inc. All Rights Reserved.
Baron-von-Riedesel commented 7 months ago

The same problem occurs with NMake. Path not found - c:\my.HX\OWSupp\WDSupp File not found - HXHELP\TRAP\HX.TRP

Hm, doesn't really look like "the same problem". The "Path not found" errors are trivial to fix by a few lines in MAKEFILE:

install:
    @if not exist $(HXINST)\NUL               mkdir $(HXINST)
    @if not exist $(HXINST)\Bin\NUL           mkdir $(HXINST)\Bin
    @if not exist $(HXINST)\Doc\NUL           mkdir $(HXINST)\Doc
    @if not exist $(HXINST)\Include\NUL       mkdir $(HXINST)\Include
    @if not exist $(HXINST)\Lib\NUL           mkdir $(HXINST)\Lib
    @if not exist $(HXINST)\LibOMF\NUL        mkdir $(HXINST)\LibOMF
    @if not exist $(HXINST)\Lib16\NUL         mkdir $(HXINST)\Lib16
    @if not exist $(HXINST)\OWSupp\NUL        mkdir $(HXINST)\OWSupp
    @if not exist $(HXINST)\OWSupp\WDSupp\NUL mkdir $(HXINST)\OWSupp\WDSupp
    @if not exist $(HXINST)\OWSupp16\NUL      mkdir $(HXINST)\OWSupp16
    @if not exist $(HXINST)\Unsupp\NUL        mkdir $(HXINST)\UnSupp

The "file not found" errors are of a different nature - the generation of the trap files for the Watcom debugger hasn't succeeded. Those are indeed a bit problematic, since, IIRC they need parts of OW. Will have a look at this later.

Baron-von-Riedesel commented 7 months ago

Ok, I added the binary trap files to src\hxhelp\trap, although I really don't like to supply binary files with source.

awik32 commented 7 months ago

After doing "nmake install", is the %hxinst% directory supposed to be identical to that of a (zipped) release?

Here are the differences (in the directory tree, not files) between my C:\HX (from release) and C:\my.HX (from source):

--- hx.find 2024-02-09 10:36:52 +0000
+++ myhx.find   2024-02-09 10:36:42 +0000
@@ -6,43 +6,6 @@
 ./lib16
 ./libomf
 ./owsupp
-./owsupp/dll
-./owsupp/dos
-./owsupp/helper
-./owsupp/nt
 ./owsupp/wdsupp
 ./owsupp16
-./sample16
-./samples
-./samples/cc386
-./samples/djgpp
-./samples/dynload
-./samples/fasm
-./samples/gas
-./samples/hello
-./samples/lzasm
-./samples/masm1
-./samples/masm2
-./samples/masm3
-./samples/mfcobol
-./samples/msc1
-./samples/msc2
-./samples/nasm
-./samples/ow1
-./samples/ow2
-./samples/ow3
-./samples/ow4
-./samples/pascal1
-./samples/pascal2
-./samples/pbasic
-./samples/plasma08
-./samples/plasma32
-./samples/showbmp
-./samples/textout
-./samples/thread
-./samples/tsrsmple
-./samples/vesa1
-./samples/vesa2
-./samples/vesa3
-./test
 ./unsupp

Is there a way to produce the .ZIP files?

Baron-von-Riedesel commented 7 months ago

After doing "nmake install", is the %hxinst% directory supposed to be identical to that of a (zipped) release?

It's supposed that you install into HXINST all zips that are delivered: hxrt, hxgui, hxdev. And run nmake after those steps.

awik32 commented 7 months ago

Yes, that's what I did. The question is whether you can create, from source, all the same files you get from the ZIPs, or even generate the ZIPs themselves?

Baron-von-Riedesel commented 7 months ago

The question is whether you can create, from source, all the same files you get from the ZIPs, or even generate the ZIPs themselves?

No, obviously.