-
Notifications
You must be signed in to change notification settings - Fork 620
Master issue for static library nonsense: Windows resource file copying and Unix build oddities #308
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
The macOS linker warning ( Line 19 in 51f72ab
You can test this with: $ otool -l out/libui.a | grep -A3 LC_VERSION_MIN_MACOSX
cmd LC_VERSION_MIN_MACOSX
cmdsize 16
version 10.8
sdk n/a
$ otool -l out/libui.dylib | grep -A3 LC_VERSION_MIN_MACOSX
cmd LC_VERSION_MIN_MACOSX
cmdsize 16
version 10.8
sdk 10.13 |
Oh good, so it's already fixed then because package ui on OS X currently uses a cmake build with that patch applied. Either way, those issues can be closed. (And that problem is far from the only one here.) |
I think we should localize symbols in static libraries where we can. |
What do you mean? |
@andlabs I think we should keep using |
Why? For the record, the current static library hacks (all of them combined) doesn't properly inherit object options like |
Update #308. Oops, forgot to do this with the merge...
Windows resource copying is gone now. cmake builds should Just Work™. |
Doesn't handle Objective-C data yet; that'll come later. Also starts a naming document. Update #308
Oops, forgot to mark unix-namespace-cleanup as part of this issue. Most of the immediate work is now finished. I still need to finalize naming policy and apply these fixes to Windows, but we should be better off than before in the meantime. I'll probably make this stop blocking Alpha 4's release now... |
libui needs to be available as both a static and as a dynamic library, as different users have different requirements. Static libraries have two major issues:
Right now, libui tries to hack around all this by a) obfuscating non-public symbols using a trick deduced by @pcwalton b) manually copying the compiled
resources.o
file on Windows into thebuild\out
folder so it can be linked into binaries.These options have caused nothing but build issues and maintenance nightmares for everyone, including myself, so I'm going to be fixing this properly:
static
withuipriv
I need to figure out whether all structs and classes (including ones only used in one source file) need to have this too. All GObject and Objective-C classes also need this change, because they share an application-global namespace regardless.
I need to figure out how to do the Windows resource precompiling thing in a way suitable for each toolchain.
The text was updated successfully, but these errors were encountered: