RISC OS Open
Safeguarding the past, present and future of RISC OS for everyone
ROOL
Home | News | Downloads | Bugs | Bounties | Forum | Documents | Photos | Contact us
Account

Previous|Next

  • Tickets
  • » Ticket #150

Ticket #150 (Invalid)Mon Sep 17 21:35:40 UTC 2007

Failure to compile PRISMLib

Reported by: Rob F Johnson (156) Severity: Normal
Part: Legacy: Batch 1 issues Release:
Milestone: Status Invalid

Details by Rob F Johnson (156):

I had a problem building PRISMLib in BatchOne. 3 of the C sources (JobQueue, NRArrays, RLIsts) wouldn’t compile because of missing headers. I tracked it down to 1 header (FuncTypes) included by 3 headers (Internal, NRArrays, RLIsts). The header wasn’t actually missing, but couldn’t be found by the way it was called.

The ‘missing’ header belongs to PRISMLib itself, and is present in Sources.Lib.PRISMLib.h. It is #included as “PRISMLib/FuncTypes.h”. Unfortunately this won’t track to the local h directory.

The #include is in this format because the (only so far released) component (Video.Render.ScreenFX) that uses PRISMLib finds it as a subdirectory of Export.APCS-32.Lib, which is on the default C: path. PRISMLib doesn’t have a path of its own.

Because Export.APCS-32.Lib is on the default path, the PRISMLib headers there are automatically made available to compilations of PRISMLib sources. But on the first run through, there is no PRISMLib in Export.APCS-32.Lib.

Once PRISMLib has been released to Export.APCS-32.Lib, the compilations will stop failing. But the problem hasn’t actually gone away. If FuncTypes.h is amended in the original Sources copy, the changes won’t be picked up by recompilations of PRISMLib.

There are 2 solutions to this I can see. One long, the other quick.

The long solution is to bring PRISMLib into line with ConfigLib and zlib. When their headers call each other they just say “xxxx.h” and so in compilations of their own sources they automatically find headers in the local h directory. Other components that call ConfigLib or zlib headers also just say “xxxx.h”. These other components find the released headers by quoting e.g. -I C:zlib in their compilation parameters. The solution would involve removing ‘PRISMLib’ from all header calls, both in PRISMLib’s headers and in the sources of other components. And putting -I C:PRISMLib in the other component’s Makefiles.

The quick solution is just to change PRIXMLib’s Makefile, by adding the line CINCLUDES = -I^.,C:. This makes Sources.Lib get searched before the standard libraries. I have appended an amended copy of the Makefile.

Changelog:

Modified by Rob F Johnson (156) Mon, September 17 2007 - 21:37:00 GMT

  • Attachment added: Makefile

Modified by Andrew Hodgkinson (6) Tue, September 18 2007 - 23:12:18 GMT

I think the whole thing here just boils down to you needing to run !MkExport before you try to build an individual component. The need isn’t obvious until, as Ben put it in an e-mail to me recently, “you’re compiling
a large number of components with circular dependencies (such as a ROM
build)”.

The general rule is to always run the export phase before trying to build any individual component. If you were to update exported headers as part of code changes, then of course you would need to run the export phase again.

If this solves your problem then please close the ticket, else feel free to describe any remaining issues and we’ll see if we can help resolve them.

Modified by Steve Revill (20) Tue, October 02 2007 - 17:38:42 GMT

  • Status changed from Open to Invalid

Closed.

  • Comment on, or change status of, this ticket

Previous|Next

Search tickets

Social

Follow us on and

ROOL Store

Buy RISC OS Open merchandise here, including SD cards for Raspberry Pi and more.

Donate! Why?

Help ROOL make things happen – please consider donating!

RISC OS IPR

RISC OS is an Open Source operating system owned by RISC OS Developments Ltd and licensed primarily under the Apache 2.0 license.

Options

  • Tickets
  • New ticket
  • Milestones
  • Subversion: Changesets
  • Subversion: Browse
  • CVS: Revisions
  • CVS: Browse
  • Search

RSS feeds Rss

  • Tickets
  • Everything!
  • More feeds...
Site design © RISC OS Open Limited 2018 except where indicated
The RISC OS Open Collaboa theme is distantly based on the Collaboa default layout

Valid XHTML 1.0  |  Valid CSS

Powered by Collaboa
This site runs on Rails

Hosted by Arachsys