When building CoreFoundation, we include ConccurrencySal.h. When
cross-compiling on a case sensitive filesystem, this fails due to the naming in
the SDK. Add an entry to repair the cross-compilation.
The SDK directory is now confusing as the Windows target also has a SDK
overlay. In order to make this more uniform, move the SDK directory to
Darwin which covers the fact that this covers the XNU family of OSes.
The Windows directory contains the SDK overlay for the Windows target.
Use the python library `difflib` which is part of a standard python
installation to generate the diff. This allows us to run the tool on
Windows wihtout needing external tools installed.
This adds a new mode where we always build the app with the new library,
and run it with the old and new library. This is used to test backward
deployment of code that uses weak-linked symbols.
To ensure that we properly crash if we reference an undefined symbol that
is not weak linked, also pass a linker flag to bind symbols eagerly.
Not all the tests are possible to run on Windows since they expect a
Unix-like shell environment. However, the rest of the tests can be
accommodated. This actually found an issue in the implementation.
Since the implementation assumes the target is POSIX/Unix-y, we should
use posixpath rather than os.path which uses the host's path style.
Build and install Foundation static. We now build Foundation using
CMake, which does not easily generate static and shared versions of
libraries. Create two builds to populate the toolchain
distribution.
build and install libdispatch static. We now build libdispatch using
CMake, which does not easily generate static and shared versions of
libraries. Create two builds to populate the toolchain distribution.
This is in preparation to make the code here more target agnostic for
porting to the Windows threading primitives. This is used pretty
extensively in the tests, so disabling tests would lose a chunk of
coverage.
A resilient change should not *remove* previously-public symbols.
Note that currently, the test_superclass_properties test does not
meet this critierion, because we always emit keypath property
descriptors, even when the property is an override. Fixing this
is a larger change that I'll address in a follow-on PR, so for now
I'm just going to disable the symbol check for this one test only.
Part of <rdar://problem/40432647>.
`#assert` is a new static assertion statement that will let us write
tests for the new constant evaluation infrastructure that we are working
on. `#assert` works by lowering to a `Builtin.poundAssert` SIL
instruction. The constant evaluation infrastructure will look for these
SIL instructions, const-evaluate their conditions, and emit errors if
the conditions are non-constant or false.
This commit implements parsing, typechecking and SILGen for `#assert`.