According to Bernhard Tschirren:
Im using GPC 2.0 (Alpha 9704??) with DJGPP 2.01. I noticed that a unit creates two files - One witht the extension GPI and another GPM. What is this GPM?
In fact it creates three files:
- The `.o' file which contains the implementation part, functions and variables,
- the `.gpi' file which contains the pre-compiled interface part, and
- the `.gpm' files which serves the only purpose to tell which interfaces are implemented in the Unit.
The need for the `.gpm' file arises from Extended Pascal's Modules. In a UCSD-style Unit (like in Borland Pascal), you can always arrange it in a way that a Unit `Foo' - the identifier appearing after `uses' - is located in a file `foo.pas'. With Extended Pascal, you don't include `Module Foo' but some interfaces defined in the module which usually don't have the same name:
Module Foo Interface;
Exports Bar = (some, identifiers, listed, here);
end.
This will produce `foo.gpm' and `bar.gpi'. (See the info documentation, section `Extended Pascal' for more about EP Modules.)
Another file may contain:
Module Foo Implementation;
...
This will read `foo.gpm' and `foo.gpi' and produce `foo.o'.
To use it in a program, do
Program Humpta;
Imports Bar;
...
It's no problem to find `bar.gpi' from `Program Humpta'. However `Module Foo Implementation' does not explicitly import `Bar', so it does not know where to find those `(some, identifiers, listed, here)'. To locate them, it looks at the name of the module, `Foo', looks up `foo.gpm' where `bar' is listed. Now it can find `bar.gpi' - voila!
If it looks weird for you, never mind, it does so for me as well. You don't need to worry about all this unless you want to change from UCSD-style Units to EP-style Modules. ;-)
Schoene Gruesse,
Peter
Dipl.-Phys. Peter Gerwinski, Essen, Germany, free physicist and programmer peter.gerwinski@uni-essen.de - http://home.pages.de/~peter.gerwinski/ [970201] maintainer GNU Pascal [970510] - http://home.pages.de/~gnu-pascal/ [970125]