Skip to content
Detlef Riekenberg edited this page Jul 16, 2023 · 6 revisions

Collection of Notes, while porting the OpenWatcom codebase

Cross compile for Windows NT on MIPS

Some pathes where recently added to the source tree


Run and compile on Linux PPC

I have remote access to a ppc64 machine running a Redhat Linux variant with a gcc 11 toolchain.
Since OpenWatcom can compile for PowerPC, i just fetched the source and started: OWVERBOSE=1 ./build.sh

  • As expected, that failed early:
**** Building the wpp bootstrap
=========== 22:52:19 ... bld/plusplus/i86 ============
======= 22:52:19 ... bld/plusplus/i86/binbuild =======
...
cc carve.obj
In file included from ../../h/carvecpp.h:41,
                 from <command-line>:
../../h/pcheader.h:119:2: error: #error missing host architecture check
  119 | #error missing host architecture check
      |  ^~~~~
Error(E42): Last command making (carve.obj) returned a bad status
Error(E02): Make execution terminated
<wmake -h -f ../binmake bootstrap=1> => non-zero return: 512
Build failed
builder bootstrap build error
  • With BUILDERT_OPT="-i", the error in bld/plusplus/i86 repeated for bld/plusplus/386 and bld/plusplus/axp

ToDo: There is nothing about bld/plusplus/ppc in the bootstrap build log

  • bug: patched local
  • Another build failure:
**** Building the wclass bootstrap
============== 22:57:56 ... bld/wclass ===============
========== 22:57:56 ... bld/wclass/binbuild ==========
c++ wabout.obj
In file included from ../../../bld/wclass//hpp/wobject.hpp:38,
                 from ../../../bld/wclass//hpp/wmetrics.hpp:37,
                 from ../../../bld/wclass//hpp/wwindow.hpp:38,
                 from ../../../bld/wclass//hpp/wdialog.hpp:36,
                 from ../../../bld/wclass//hpp/wabout.hpp:36,
                 from ../../../bld/wclass//cpp/wabout.cpp:33:
../../../bld/watcom/h/wstd.h:259:6: error: #error PR_xxx macro not enabled.
  259 |     #error PR_xxx macro not enabled.
      |      ^~~~~
../../../bld/watcom/h/wstd.h:377:6: error: #error Character set macro not enabled.
  377 |     #error Character set macro not enabled.
      |      ^~~~~
Error(E42): Last command making (wabout.obj) returned a bad status
Error(E02): Make execution terminated
<wmake -h -f ../binmake bootstrap=1> => non-zero return: 512
  • bug: patched local

  • send a pull request to fix both bugs:

    • bld/watcom/h/wstd.h was removed
    • Updated patch to fix bld/plusplus/h/pcheader.h was commited to master
  • Now the bootstrap build goes a lot further, but fails

======== 16:07:22 ... bld/causeway/cwc/dosi86 ========
wclppc -zq -D_BLDVER=1300 -D_CYEAR=2023 -bt=linux -l=linuxppc  -I"../../../../bld/watcom/h" ../../../../bld/watcom/c/mkcode.c -wx-wce=310-j-za99-s-ox-fo=.obj -fe=./mkcode.exe
sh: line 1: wclppc: command not found
Error(E14): Cannot execute (wclppc): command not found
Error(E42): Last command making (./mkcode.exe) returned a bad status
Error(E02): Make execution terminated
<pmake -d build          -h> => non-zero return: 512
Build failed
  • bug: The build system tries to use the release version of the "Watcom Compile and Link" frontend
    This can not work, as no release programs are build yet.
    (On my x86_64 Linux system, gcc is used to build mkcode.exe after entering causeway/cwc/dosi86)

  • To be continiued ...


Using the bootstrap tools start to work:

  • I tried a well known "helloworld.c" ...
#include <stdio.h>
int main(void)
{
  puts("Hello World\n");
  return 0;
}
  • .. with the bootstrap version of the posix style compiler driver:
  • bowcccalls the correct compiler (bwccppc), but compilation failed:
bwccppc -v -I$WATCOM/lh ./helloworld.c
Open Watcom C PowerPC Optimizing Compiler
Version 2.0 beta Jul 15 2023 22:57:58
Copyright (c) 2002-2023 The Open Watcom Contributors. All Rights Reserved.
Portions Copyright (c) 1984-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
$WATCOM/lh/sys/types.h(189): Error! E1091: unknown platform
$WATCOM/lh/sys/types.h(195): Error! E1055: Unable to open 'arch//sys/types.h'
$WATCOM/lh/sys/types.h(196): Error! E1055: Unable to open 'arch//sys/sysmacros.h'
./helloworld.c: 11 lines, included 1113, 0 warnings, 3 errors
---

### ToDO: Add support for `ppc` to  `sys/stdio.h`

* Next try is a super simple "empty.c":

int main(void) { return 0; }


* Yeah: The object file `empty.o` is created, ...
* ...but linking fails:

Warning! W1107: file __owcc00.lnk: line(2): undefined system name: linuxppc loading object files searching libraries Warning! W1008: cannot open math.lib : No such file or directory Warning! W1008: cannot open clib.lib : No such file or directory Error! E2028: cstart is an undefined reference Error! E2028: .toc is an undefined reference Warning! W1023: no starting address found, using 00000000 Error! E2044: exported symbol cstart not found Error! E2044: exported symbol .toc not found Error: Linker returned a bad status


### ToDo: Add missing system name `linuxppc`
### ToDo: Enable building the `math.lib` runtime library for `linuxppc`
### ToDo: Enable building the `clib.lib` runtime library for `linuxppc`

* To be continiued ...

Clone this wiki locally