-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Conversation
35e5d60
to
b67fea8
Compare
Travis iOS build is running to completion now, but still failing, looks like lots of linker warnings from symbol visibility issues still 😞 |
I'm hitting a problem with MBGL mason-installed RapidJSON 1.0.2 causing symbol visibility linker warnings when building the iOS tests, which causes the Travis build to fail even though the tests compile, run and complete successfully. GeoJSONVT depends on mason-installed RapidJSON 1.0.2 and I wonder if duplicate copies of these headers could be a problem? Reverting 2066295 seems to resolve this for now, maybe we should revisit RapidJSON as a mason module at a later point. More info on Xcode build settings at https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html /cc @jfirebaugh @1ec5 |
9aedffd
to
ff404de
Compare
I get link errors building osxapp in Xcode, starting with:
|
Oh, stale submodule leftovers, disregard. |
0eb254d
to
3ea9920
Compare
From herzbube/littlego#3 (comment) and https://stackoverflow.com/questions/1601900/dont-expose-symbols-from-a-used-library-in-own-static-library it sounds like XCode does all sorts of screwy uncontrollable things when compiling and linking. I'm completely frustrated with trying to get mason GeoJSONVT and RapidJSON to work together. Current work in https://github.com/mapbox/mapbox-gl-native/compare/geojsonvt-2.1.6-rapidjson, could really use some insight from @1ec5 or @incanus into XCode build settings here. |
After merging geojsonvt-2.1.6-rapidjson with master locally, I also get this linker error:
|
The use of MGLPointAnnotation is new (introduced in #2612). |
Added |
3ea9920
to
6919c2a
Compare
Pushed up a version that preserves the RapidJSON mason package, uses a new geojson-vt-cpp branch that sets /cc @jfirebaugh @1ec5 @tmpsantos for review |
6919c2a
to
a8c81ed
Compare
Current Travis test failures being tracked in #2819 |
No good: if I let CocoaPods wrap libMapbox.a in a dynamic library and link an application against that library, I get the following linker errors:
|
Dumb, obvious statement: |
@1ec5 Is that something we could/should be testing in CI? |
I get the same errors after setting |
Welp, those symbols are definitely missing @1ec5. Not sure why yet.
|
If this is not solvable through visibility fixes, it may be that the linker is intentionally removing the symbols because they appear unused. Something to try then would be to ask the linker to create |
I tested this branch on my Android Samsung and did not have any problems. |
Yea, that's kinda my current line of thinking @springmeyer, that they appear unused because they're defined in |
3da9140
to
b80b34f
Compare
Still seeing 199 variations of the following (apparently spurious) linker warning in Xcode when copying
(I may have missed some Can you try this out @1ec5 @springmeyer? |
b80b34f
to
e6e195b
Compare
Okay, pushed up a rebased branch that only sets |
e6e195b
to
6da2367
Compare
ef67516
to
b592a6e
Compare
- [osx] set -fvisibility-inlines-hidden in gyp/common.gypi to silence mismatched visibility linker warnings - [linux] set cxx_host in GYP_FLAGS to set -fabi-version=0 on gcc builds to use clang-built mason binaries - [ios] update symbol visibility for iOS tests - [ios] link libgeojsonvt.a in iOS tests xcodeproj - add libgeojsonvt.a to General -> Linked Frameworks and Libraries - add mason_packages (recursive) to Build Settings -> Library Search Path - [ios] add libuv and geojsonvt first in iOS libtool smush to ensure symbols are found by later compilation units where they are undefined
b592a6e
to
79a5a96
Compare
Fixes #2226, #898
cxx_host
gyp variable to set-fabi-version=0
on non-clang builds, fixes Building mbgl-native with g++ against binary libs built with clang++ #2502'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES'
to prevent linker warnings on OS X builds using mason binaries built with-fvisibility-inlines-hidden=hidden
or'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES'
libgeojsonvt.a
intest/ios/ios-tests.xcodeproj
to fix an undefined symbol (unused inlibmbgl-core.a
) when linking iOS tests.Inline Methods Hidden
intest/ios/ios-tests.xcodeproj
to fix linker warnings.TODO:
gcc-5 #2582 should be merged first forgcc-5
, necessary for compatibility with mason libraries build withclang-3.5
(Building mbgl-native with g++ against binary libs built with clang++ #2502)visibility-hidden
and tag a new release (v2.1.6.2).-fvisibility=hidden
geojson-vt-cpp release/cc @jfirebaugh @1ec5 @incanus @springmeyer