Use CMAKE_SYSROOT to manage the sysroot automatically when cross-compiling instead of adding the '--sysroot' flag manually everywhere. We only need to add it manually in places where CMake does not, like in our custom GCC/Clang response file for PCH.
Differentiate between setting up header search path for system headers and for application headers so that GCC/Clang may suppress compilation warnings from the former, if any.
When cross-compiling we have already defined '--sysroot' to find the direct library dependencies. However when a shared library has its own dependencies (DT_NEEDED) then we need to supply extra linker flags to help the linker to find those indirect library dependecies in the sysroot.
Actually we also had this problem for 32-bit ARM cross-compiling, but we cheated in the earlier CI build jobs by using Linaro/Raspbian compiler toolchain. Somehow the Raspbian's linker simply "ignores" those indirect library dependencies or it uses other mean to locate them (but I doubt that), and so it does not have linker issues with libreadline.so (depends on tinfo), libGLESv2.so (depends on glapi), etc. The other ARM compiler toolchains from Linaro seem to be more strict in this regard. Most likely the raspbian's linker is a gold linker.
This commit could also potentially fix a known issue in our FindUrho3D.cmake module where we have to hardcode the library dependencies that libUrho3D.so in turn depends on (to be investigated later).
- Close issue #67, Urho3D iOS library should be built correctly now (either as single arch or as multiple archs Mach-O universal binary). Urho3D library build for Mac OS X and iOS platforms do not rely on CMake hack 'object-collecting' approach anymore. It uses Apple static linker 'ld' tool to merge all objects from third-party *.a directly.
- Add new custom target (Urho3D_universal) for iOS platform to build a single Mach-O universal binary library consists of both iphoneos (universal ARM archs) and iphonesimulator (i386 arch).
- Introduce PLATFORM_PREFIX (ios-, raspi-, android-) to prefix the build and output directories (Build, Bin, Lib).
- Correct Xcode-specific build setting for Mac OS X desktop build to use the latest OS X SDK but set deployment target to current OS X of the build system, unless CMAKE_OSX_DEPLOYMENT_TARGET is set explicitly to build for other target.
- Temporary workaround for CMake/Xcode generator bug where it always appends '/build' path element to SYMROOT attribute and as such the items in Products are always rendered as red as if they are not yet built.
- Change Assimp target to use setup_library() macro so that it gets the same settings (and workaround) as all other targets.
- Add a conditional check to prevent MSVC to build 'buildvm-android' target as it is not supported at this moment.
- Prevent 'make clean' or its equivalent to remove the generated ScriptAPI.dox and LuaScriptAPI.dox in the 'Docs' subdirectory.
- Always refresh the generated API Doxygen files before building 'doc' target when the tools are available.
- Move document-build binary directory into the respective project main binary directory.