Just to have something concrete to look at, I've included 2 tree diagrams
of frameworks using Apple's layout *(minus modules and code signatures)*...

*Development (with headers)*

└──── Quasi.framework
├──── Quasi -> Versions/Current/Quasi
├──── Headers -> Versions/Current/Headers
├──── Resources -> Versions/Current/Resources
└──── Versions
├──── A
│     ├──── Quasi
│     ├──── Headers
│     │     ├──── Quasi.h
│     │     ├──── QZThat.h
│     │     └──── QZThis.h
│     └──── Resources
│           └──── Info.plist
└──── Current -> A


*Deployment (without headers)*

└──── Quasi.framework
├──── Quasi -> Versions/Current/Quasi
├──── Resources -> Versions/Current/Resources
└──── Versions
├───── A
│     ├──── Quasi
│     └──── Resources
│           ├──── Info.plist
│           ├──── that.png
│           └──── this.aif
└──── Current -> A

On the *development* side, because I can tell clang to look for the
headers/library in whatever directories I want, I don't think sharing the
same layout with the macOS side will be a problem. I'll just need someone
to talk about how umbrella headers are supposed to work in GNUstep.

On the *deployment* side, I don't think layout will be a problem as long as:

- it can be bundled
- the entire app folder structure can be moved anywhere on the filesystem
and still be able to find its frameworks *(optional, since the use-case
isn't too common for linux)*
- i understand what in the Info.plist file will need to be changed from the
macOS version

So hopefully I can get some clarification on those four things in this
thread.


Noel





On Thu, May 6, 2021 at 10:34 AM blackstripe <triv...@blackstripe.net> wrote:
>
> A few questions about frameworks in GNUstep...
>
> 1: Layout
>
> I know framework layout is unusual in gnustep, but I haven't seen a clear
example of what it actually should look like — only discussion of it being
different (in the wiki or faq i believe, but it provided no example).
>
> Is there any way to force macOS-style layout?
>
>
> 2: Bundling
>
> Is is possible to bundle a framework such that (a) the framework stays
with the surrounding app, and (b) can be moved anywhere on the file system
(with the surrounding app)? (presumably some link references will have to
be made relative using something like patchelf)
>
>
> 3: Umbrella headers
>
> This project is shared with the macOS/Xcode side, so I would of course
like the existing umbrella header to work as-is on the GNUstep side. Is
this possible and how do I set that up?
>
>
> 4: Clang
>
> What arguments need to be passed into clang to facilitate all of this?
>
>
> - Noel
>
>

Reply via email to