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 <
trivial@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
>
>