Create XML_PARSER CMAKE switch for selecting parser PAL implementation.
Create USING_XERCES #define for use in ResultOf ABI boundary.
Make inclusion of Xerces-C project dependent on XML_PARSER setting.
This change contains the renaming from xPlatAppx to MSIX Packaging SDK
Binaries
- xPlatAppx.dll -> msix.dll
- MakexPlatAppx.exe -> makemsix.exe
Export rename
- UnpackAppx ->UnpackPackage
Related work items: #15704951
This change removes the size of the Android binary by around 5MB and decreases our build time for all platforms.
- Remove C++ runtime static dependency on Android by changing Xerces to be a subtree instead of a submodule.
- Subtree made from Xerces repo tag Xerces-C_3_2_0 commit dffc3028df8ea44985c92f2df28115860e39e344
- Changes to Xerces to avoid using mblen and use mbrlen to be able to compile for Android API level 19
- Adds switch to build Xerces tests and samples (OFF by default)
- Changes AOSP scripts to build for level 19
Related work items: #15424024
zlib 1.2.11 has a bug on its CMakeLists.txt file which is fix in a pull request opened 8 months ago which haven't been completed. It is possible to use git submodules to point to the commit of the pull request, but the build environment of VSO fails if we do this.
To fix this, zlib is now a git subtree instead of a git submodule. From git subtree --help "Subtrees allow subprojects to be included within a subdirectory of the main project... Subtrees are not to be confused with submodules, which are meant for the same task. Unlike submodules, subtrees do not need any special constructions (like .gitmodule files or gitlinks) be present in your repository, and do not force end-users of your repository to do anything special or to understand how subtrees work. A subtree is just a subdirectory that can be committed to, branched, and merged along with your project in any way you want." Git subtree basically copies the code in your repository, but we can commit the fix we require in our repo and later on do a git subtree pull and merge any subsequent version of zlib.
A bug on the CMakeLists.txt file that zlib provides makes zlib fail to compile when is used via add_subdirectory() by another project. For some reason, this issue only happens for Linux.
There's an already existing open PR since Feb 2017 with the fix (https://github.com/madler/zlib/pull/219). This PR changes the zlib submodule to point to that commit.
This change replaces the series of VS build solutions and one-off Xcode workspace/projects that had to constantly be kept in sync with each other with a single CMake-based build system. This new system has a single build authoring mechanism (CMakeLists.txt) that describes each logical sub-project of the entire project. Builds in VS2017, Xcode, VS NMake, and unix make have been confirmed as working. Automated continuous integration of this new build system is now turned-on, meaning that once this change goes live, you'll need to update your client view of the project. At a minimum, you'll need to run: git submodule update && git submodule init once this change is pulled into your branch. For those not entirely familiar with CMake, you can use https://cmake.org/Wiki/CMake as a good starting point for how to get up and running.
Related work items: #13953155, #13953165
Don't fail building if someone wants to build zlib with the ASMINF flag (we won't).
This requires running lib\zlib\contrib\masmx64\bld_ml64.bat and/or lib\zlib\contrib\masmx86\bld_ml32.bat