# Notes on Cygwin Support

The Opal compiler has been ported to the Cygwin environment, which provides a Unix-like GNU-based environment for Windows 9x/ME/NT/2000 operating system. Due to some differences/limitations/restrictions the support is not complete. The configuration program has been changed accordingly, so that the default installation will only consist of the unproblematic parts.

### Case Insensitivity of Filenames

Filenames are not case sensitive in the Cygwin environment. They are under most (all ?) other Unix-like systems, and the Opal library uses different cases to distinguish structures. During the port, we found the following problems:

- The internally generated C header file for structure `S` is confused with a C library header file `s.h`. This concerns structures `Time, Wait, Signal, Tcl, Tk, ReadLine`.
- Two library structures are distinguished by case only. This concerns the pairs `BOOL/Bool, DENOTATION/Denotation, REFLECTION/Reflection`.

In order to keep changes to the source code to a minimum, we decided to break the strong connection between filenames and structure names for the structures concerned. The Opal compiler and the `genmake` program "know" which structures reside in renamed file names, and the configuration script renames the files accordingly.

The Dosfop system for building documentation has not been updated and is not able to handle structures the names of which do not match their respective filenames. So you cannot generate the OCS documentation under Cygwin, instead you must install the documentation separately.

Note for developers: The `SysDefs` files and if present, the `.hc.{c,h}` files, have to be changed to take a possible renaming of filenames into account. See `SysDefs` and `Wait.hc.c` in subsystem `src/lib/System/Unix` for an example. If the files of further structures need to be renamed, the functions in `src/om/genmake/Genmake.impl` and `src/oc/shared/admin/OcOptions.impl` have to be changed accordingly as well as the script `src/om/scripts/xoc1`, and you probably have to augment the code in `configure.in` as well.

### Handling of Libraries

Handling of libraries is different for Cygwin systems. The following problems still persist:

- Linking external libraries does not work for the readline, tcl and tk libraries. This means that neither the Opal libraries that embed these C libraries can be used, nor the libraries and programs that build upon them, such as OpalWin, Oasys, and the Proofchecker.
- Building and using dynamic libraries is different for Windows' DLLs and Unix' shared objects. The scripts have not been updated. Opal libraries and programs that depend on dynamic linking cannot be used. This concerns Oasys and the Proofchecker.

Last modified: Thu Jun 7 11:16:40 MEST 2001