>> Przemek, Viktor, Maurilio:
>>
>> As make381-os2 show problems (limits) and incompatibility with
>> make381-windows (and perhaps Linux), there are some way to use
>> ANOTHER make system in OS/2 ?
>> Reading docs of Watcom I found wmake.exe, based in GNU make but with
>> some differences specified in docs
>> I tried to use it to build Harbour and raised errors not described
>> in differences

>No, sorry. I'd certainly not want to reintroduce a parallel (non-GNU)
>make system for OS/2 after having spent a year getting rid of them
>for Windows (and all the permanent double work with them).

>Probably it would be better to find a GNU Make build for OS/2 which
>works well, or trying to work around the bugs which it has under
>OS/2. I don't exactly see what are these though, can't find any lines
>like "for %i in ( *.obj ) do @echo -+%i >> __lib__.tmp" in current SVN.

>[ It'd recommend to make tests using latest SVN, as changes are made
>regularly in the GNU Make process. Also, confirmed pending patches
>should better be uploaded to SVN, as currently it's very difficult to
>track what is the tested codebase. The only slight problem I see with
>these watcom patches, is that it's not too clean and for cross-
>compilation
>it would have to be added to all watcom.cf files, just to make OS/2
>happy. ]

>It should also be noted that our GNU Make process uses shell specific
>rules and parts, and some other OS specific tricks so maybe not GNU
>Make itself should be blamed for some problems you're seeing.

>It may also be an option to use the DOS build of GNU Make under OS/2.
>I don't know to what extent OS/2 is compatible with DOS exes, but it's
>worth a check.

Viktor:

The short history is:
I have years building Harbour under OS/2 using os2make376. In February 2008 Przemek added changes to "make process" not supported by os2make376. I checked some versions of os2make381 and all of them show problems. Przemek reversed his changes. Until December 2008 os2make376 was able to build Harbour using gcc335 and Watcom 1.7a This year you changed make process and in meantime some workarounds for OS/2-os2make376 were left off. Now Harbour under OS/2 does not build with os2make376 and partially build with os2make381 We are currently discarding os2make376 and forcing to use os2make381, and trying to find why and how to apply workarounds

Line "for %i in ( *.obj ) do @echo -+%i >> __lib__.tmp" are not in SVN because is part of "local tests" to find solutions I have reported many of these issues in my previous messages and Przemek has explained many of the reasons also. "install" and "clean" stages show a lot of errors. At this moment we are trying to get a complete build of Harbour with workarounds and without problems. Then we can concentrate in "install" and "clean"

Przemek has been working deeply to find right workarounds. He knows much better than me what are the problems and how to clean them My tests in real OS/2 environment show the results and I contribute to clarify problems and propose alternatives There were the cases with gcc335 build, OpenWatcom 1.8 build, os2->win cross build and win->os2 cross build. Each of them show different problems with os2make381
And additionally, differences between os2make381 and winmake381

Przemek explained some days ago:

 >Yes and it's a bug in OS2 GNU make port we are exploiting from time to
 >time.
 >If we find some acceptable solution the we will use it. If not we will
 >have to return to the:
 >   for %i in ( *$(OBJ_EXT) ) do @echo ... >> __lib__.tmp
 >trick and add some hack to protect against adding hbpp.obj to library.

I do not know if Maurilio has done test with OpenWatcom 1.8, native and cross build. If so then he can see problems, some of them faced with gcc version

My proposal was simple:

If os2make381 have problems, and wmake.exe (OpenWatcom) with some adjustments can do same process as os2make381, then we can discard os2make381 and to use wmake.exe As you can see is not to introduce a parallel make process. Is to use same structure of current GNUmake with proper adjustments

Below are some parts of Watcom Tools Guide related to wmake


David Macias



---------------
Some readers will be quite familiar with the concepts of the Make file maintenance tool. Open Watcom Make is patterned after the Make utility found on UNIX systems. The next major section is simply intended to summarize, for reference purposes only, the syntax and options of Make's command line and special macros. Subsequent sections go into the philosophy and capabilities of Open Watcom Make. If you are not familiar with the capabilities of the Make utility, we recommend that you skip to the next major section entitled "Dependency Declarations" and read on.
---------------

Open Watcom Make was originally based on the UNIX Make utility. The PC's operating environment presents a base of users which may or may not be familiar with the UNIX operating system. Make is designed to be a PC product with some UNIX compatibility. The line continuation in UNIX Make is a backslash ("\") at the end of the line. The backslash ("\") is used by the operating system for directory specifications and as such will be confused with line continuation. For example, you could type:


    cd \

along with other commands ... and get unexpected results. However, if your makefile does not contain path separator characters ("\") and you wish to use "\" as a line continuation indicator then you can use the Make "u" (UNIX compatibility mode) option.

Also, in the UNIX operating system there is no concept of file extensions, only the concept of a file suffix. Make will accept the UNIX Make directive .SUFFIXES for compatibility with UNIX makefiles. The UNIX compatible special macros supported are:

Macro
Expansion

$@
full name of the target

$*
target with the extension removed

$<
list of all dependents

$?
list of dependents that are younger than the target

The extra checking of makefiles done by Make will require modifications to UNIX makefiles. The UNIX Make utility does not check for the existence of targets after the associated command list is executed so the "c" or the .NOCHECK directive should be used to disable this checking. The lack of a command list to update a target is ignored by the UNIX Make utility but Open Watcom Make requires the special internal command %null to specify a null command list. In summary, Make supports many of the features of the UNIX Make utility but is not 100% compatible.
---------------

_______________________________________________
Harbour mailing list
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to