Initial support for Mac Catalyst for mono subset. This enables building runtime packs and working jobs, but right now the `tests` subset needs some work to allow library test runs in CI
* System.Net.Security.Native
* System.Native
* fix for OSX
* fix for wasm
* fix for IOS
* Fix for FreeBSD
* System.Security.Cryptography.Native.OpenSsl
* fix OSX
* Add script to validate entrypoints.c against dll entries
* add missing CryptoNative entries
* Added verification in more projects
* Add missing entries in other files
* System.Security.Cryptography.Native.Apple
* fix for IOS/TVOS
* Change .py verification script to bash
* Update the verify_entrypoints.sh to not to use awk and work on macOS
* PR feedback
* reduce exports of System.IO.Compression.Native.dll on Windows to what is actually used and to match Unix.
* unixexports for System.IO.Compression.Native
* trying to fix IOS/TVOS
* move awk and linker flavor detection to configuretools.cmake
Co-authored-by: Jan Vorlicek <janvorli@microsoft.com>
* from prototype
* fix OSX
* fix for Android
* treat "libSystem.Globalization.Native" as QCall in mono too (for now).
* fix for wasm
* fix pedantic errors on GCC
* delete gPalGlobalizationNative
* pass overrider from the host
* default override
* default PInvoke override runs after optional host-provided overrider.
* Some PR feedback (mostly related to code, not the CMake stuff).
* more coding PR feedback
* Deleted "libraries-native" folder.
* unifying tryrun.cmake into 1 common file
* factor out adding lib-specific dependencies into one place (per native library)
* cleanup: entirely remove tryrun.cmake propagation in eng, gen-buildsys, build-commons, and build scripts
* remove "clrcompression.dll" and "libSystem.IO.Compression.Native.dylib" from single-file host packaging
* mono: refactor Globalization lookup into `default_resolve_dllimport`.
* set FEATURE_DISTRO_AGNOSTIC_SSL according to __PortableBuild
* CORECLR_CALLING_CONVENTION for the host callback types
* refactor common parts of entrypoints.c into entrypoints.h
* rename OverrideEntry --> DllImportEntry
* extra libs as CMake functions
* use macros instead of functions in extra_libs.cmake
* mono formatting style in src/mono/mono/metadata/native-library.c
Co-authored-by: Ryan Lucia <ryan@luciaonline.net>
* mono: Remaining stylistic nits.
Co-authored-by: Ryan Lucia <ryan@luciaonline.net>
* do not set DFEATURE_DISTRO_AGNOSTIC_SSL on iOS, Android, tvOS
Co-authored-by: Ryan Lucia <ryan@luciaonline.net>
* Move DacTableGen out of the CMake build and into tools-local.
* Attempt: usenmakefiles means ninja.
* Make changes to Windows build to support non-VS generators like ninja.
* Use CMake 3.16 PCHs.
* Remove explicit process count.
* Build and run DacTableGen via the .NET CLI we pull down for the build instead of via CMake.
* Update configurecompiler.cmake to specify language (needed for Ninja).
Signed-off-by: Jeremy Koritzinsky <jekoritz@microsoft.com>
* Get Ninja build working again.
* Pass configuration to cmake configure step for Ninja build.
* Rename flag
* Fix configure step for cross-arch native build
Signed-off-by: Jeremy Koritzinsky <jekoritz@microsoft.com>
* Support building via Ninja for coreclr via an MSBuild property
Signed-off-by: Jeremy Koritzinsky <jekoritz@microsoft.com>
* Implement support for opening the CoreCLR solution in VS via the -vs flag.
* Fix setting generator to Ninja.
* Merge libraries gen-buildsys-win.bat with runtime gen-buildsys.cmd to share windows cmake configure infra.
* Enable building libraries native build with ninja.
* Centralize setting CMAKE_SYSTEM_VERSION for windows builds.
Signed-off-by: Jeremy Koritzinsky <jekoritz@microsoft.com>
* Update host build to use shared gen-buildsys.cmd
* Fix multi-config generator detection.
Signed-off-by: Jeremy Koritzinsky <jekoritz@microsoft.com>
* Exit with success when we build successfully.
Signed-off-by: Jeremy Koritzinsky <jekoritz@microsoft.com>
* Enable and fix up Ninja build for hosts.
Signed-off-by: Jeremy Koritzinsky <jekoritz@microsoft.com>
* Only link delayimp.lib on Windows
Signed-off-by: Jeremy Koritzinsky <jekoritz@microsoft.com>
* Remove "overriding /W3 with /W1" warning in Ninja build of hosts by turning on /W3 and disabling any new warnings we hit.
* Reduce command line override warnings by adopting the MSVC_RUNTIME_LIBRARY abstraction feature in CMake 3.14+ (below the minimum requirement on Windows).
* Use the delayed expansion syntax to correctly pass in the config to cmake.
* Move all usages of MSVC runtime library selection to the CMake abstraction to reduce console spew about overridden flags.
Signed-off-by: Jeremy Koritzinsky <jekoritz@microsoft.com>
* Condition the rest of the compiler options correctly so they don't show up as invalid parameter warnings for assembly builds.
* Correctly build DIALib and DacTableGen as AnyCPU
* Fix WRITE_BARRIER_CHECK define
Signed-off-by: Jeremy Koritzinsky <jekoritz@microsoft.com>
* Fix passing arch for MSBuild build.
Signed-off-by: Jeremy Koritzinsky <jekoritz@microsoft.com>
* Configure ASM compiler command line format in configurecompiler.cmake and use CMake's assembly compilation step to build ASM files for ARM/ARM64 instead of manually building them and adding the generated files as additional sources.
* Cleanup after fixing ARM/ARM64 support.
* Rename variable
* Condition PCH's for C++-only as needed to fix using them on non-Windows (where we compile C as C instead of as C++).
* Fix CoreCLR native test build on windows to point to new gen-buildsys location.
* Add missing compilation options in Ninja build that are implicitly defined in the MSBuild build.
* Disable analyzers for DacTableGen. Remove /MAP linker flag (that's for local testing).
* Upgrade to CMake 3.16.4
* Don't warn on unused variables in CMake (these usually vary on platform/config)
Signed-off-by: Jeremy Koritzinsky <jekoritz@microsoft.com>
* Manually compile ARM and ARM64 asm files when using the VS generator since it doesn't support emitting MARMASM item types in projects (and as a result cannot compile ARM or ARM64 asm without assistance).
* Enable CMake policy in test build to use CMAKE_MSVC_RUNTIME_LIBRARY variable.
* Update initially disabled warnings in host.
* Add -ninja arg to root scripts to enable using Ninja.
* Enable using Ninja in CoreCLR CI.
* Try to fix passing the -ninja arg in yaml.
Signed-off-by: Jeremy Koritzinsky <jekoritz@microsoft.com>
* Add ninja to the Windows invocation
* Fix 2-phase cross targeting to do one phase at a time and initialize the VC++ environment for the correct build tools each time instead of interleaving them and relying on Visual Studio to handle the differing targets.
* Restore old /Ox optimization setting for Release.
* Fix typos, don't pass exception flags to C files.
* Remove unneeded pragma.
* Fix .pgd file installation.
Signed-off-by: Jeremy Koritzinsky <jekoritz@microsoft.com>
* Add mention of the `-ninja` flag in the Building CoreCLR documentation.
Signed-off-by: Jeremy Koritzinsky <jekoritz@microsoft.com>
* Mention installation locations for Ninja and warn while building if CMake is older than 3.16.0.
* Update docs/workflow/requirements/windows-requirements.md
Build fails with libjitinterface_armel.so and libclrjit_unix_armel_x64.so was not found after #41126.
Signed-off-by: Timur <t.mustafin@partner.samsung.com>
* Enable implicit fallthrough warning
This change enables warnings for implicit fallthrough in
switch cases and fixes all the cases where the warning
was reported.
It also fixes some places where the fall through was incorrect.
Fortunately, these places were not causing functional issues.
This change is part of a larger effort to enable crossgen2 to perform general purpose cross compilation from any architecture to any other architecture. This portion of the change is to begin generating cross targeting jits with a consistent naming scheme with a minimal amount of code change.
The practical output of this change is replacement of the current practice of building protojit/protononjit/etc. with `clrjit_<targetos>_<target_arch>_<host_arch>` binaries.
In addition I've defined a couple of new subsets so that this can be less impactful to the inner dev loop.
clr.alljits, which will build all of the jits.
clr.jit, which will build only non-cross targeting jits.
clr.runtime which has been enhanced to not trigger the alljits build.
Current restrictions of the change:
1. This change does not support 32bit to 64bit compilation. I've built a larger change that includes the necessary work for that, but the changes are more disruptive, and I would prefer to scope this work to make it reviewable.
2. This work builds different compilers for the unix targetting and windows targetting compilers. This is due to the different ABIs that the architectures support. Upon investigation, I've determined that the actual product differences in these cases is small for ARM and ARM64. In the future, once we have testing, I believe it would be reasonable to unify the generated compiler binaries.
3. These changes do not build an armel targeting compiler for all scenarios, but it does build one with the current naming scheme as was done before. Again, like in condition 2, I believe we can make a single arm targetting compiler that will work.
4. These changes include changes to crossgen2 to use the new compiler binaries. However, there is no expanded testing to cover test the newly available cross compilation capabilities. That will appear in follow-on work.
* First fixes to print hex without silencing warning 4477.
* After the previous commit, dasm.cpp started showing abnormalities.
* Warning 4302 reenable iteration 1
* Warning 4302 reenable iteration 2
* Warning 4312 reenable: Iteration 1
* Warning 4312 reenable: Iteration 2
* Updated configurecompiler.cmake comments with newly reenabled warnings.
* Fixed a comment.
* Fixed a 32-bit issue with printing formats as well as a scope issue on Linux.
* Warning 4302/4311/4477 reenable: Fixed Checked Builds.
* Warning 4302/4311/4477 iteration 3
* Warning 4477 reenable iteration 4: ToString of bits.
* Fixed an unsigned long long for x86.
* Fixed 4477 on x86 for real this time.
* Changed two bitness checks for size_t usage instead.
* add support for FreeBSD cross-compilation
* feedback from review
* update detection
* add openssl to docs
* feedback from reviews
* feedback from reviews
* final cleanup
* feedback from reviews
* simplify detection of route.h
* correct __CrossBuild detection
* use TargetOS for installer
* Switch back to only handling synchronous exceptions in host components
Add native hosting tests for components with unhandled exceptions.
* Switch setting /EHa to be for coreclr instead of shared default
https://github.com/dotnet/runtime/pull/33716 set TARGET_DARWIN for iOS too but most of the logic is really OSX-specific.
Unset TARGET_DARWIN for iOS and rename the rest of the occurrences to TARGET_OSX.