Commit Graph

433 Commits

Author SHA1 Message Date
Saleem Abdulrasool
3fa1d1fe3f runtime: ingest LLVMSupport into the runtime
This adds a new copy of LLVMSupport into the runtime.  This is the final
step before changing the inline namespace for the runtime support.  This
will allow us to avoid the ODR violations from the header definitions of
LLVMSupport.

LLVMSupport forked at: 22492eead218ec91d349c8c50439880fbeacf2b7
Changes made to LLVMSupport from that revision:
  process.inc forward declares `_beginthreadex` due to compilation issues due to custom flag handling

API changes required that we alter the `Deallocate` routine to account
for the alignment.

This is a temporary state, meant to simplify the process.  We do not use
the entire LLVMSupport library and there is no value in keeping the
entire library.  Subsequent commits will prune the library to the needs
for the runtime.
2020-05-15 09:55:36 -07:00
Max Desiatov
762079665e Add support for WebAssembly/WASI in CMake files 2020-05-10 11:32:04 +01:00
David Zarzycki
5dcc32f98f Remove all uses of -force-single-frontend-invocation
The `-force-single-frontend-invocation` flag predates WMO and is now an
alias for `-whole-module-optimization`. We should use the latter and let
the former fade into history.
2020-05-08 06:37:41 -04:00
Saleem Abdulrasool
923def217f Merge pull request #31544 from compnerd/runtime-defines
build: avoid redundant flag specification
2020-05-06 14:05:19 -07:00
Saleem Abdulrasool
a994d65b3e build: remove LLVM_LINK_COMPONENTS in the standard library (NFC)
The standard library does not use the LLVM components.  Remove the
unused parameter support.
2020-05-06 08:33:53 -07:00
Saleem Abdulrasool
198d091efe build: avoid redundant flag specification
Remove the flag being specified in multiple locations unnecessarily.
The flags flow downwards to all the subdirectories.  Use that to apply
the C/C++ flags from the root of the runtime repository.
2020-05-04 14:27:22 -07:00
Dario Rexin
6290d8c28d Merge pull request #31125 from compnerd/opt-flags
optimize flag computation
2020-05-01 10:16:34 -07:00
Brent Royal-Gordon
02d5e6650f Fix module triples for “ios-like” Mac Catalyst modules
The “ios-like” build flavor is used to build modules that do not exist on macOS for Mac Catalyst. Even though they are built for the “OSX” SDK, they need to have a “MACCATALYST”-style module triple; unfortunately, the transition to naming swiftmodules by module triple in #31170 did not handle this edge case correctly.

This commit handles that by piggybacking on a similar special case used to change the lib/swift subdirectory.
2020-04-28 18:39:30 -07:00
Doug Gregor
94e9153878 Merge pull request #31170 from DougGregor/build-module-triples
[CMake] Use proper module triples for the names of standard library modules
2020-04-23 23:57:50 -07:00
Doug Gregor
b27b4d4bb6 [CMake] Use proper module triples for the names of standard library modules.
The standard library (and other Swift modules built by our CMake build system)
has been building module files with an architecture only (e.g., x86_64.swiftmodule)
rather than a proper module triple (x86_86-apple-macosx10.15,
x86_64-apple-ios13.0-simulator, etc.), unlike every other build
system. There are hacks in the compiler and other tools to cope with
this unnecessary build difference. Fix the module file names so we'll
be able to remove the hacks later.

Fixes rdar://problem/49071536.
2020-04-20 21:16:14 -07:00
Saleem Abdulrasool
82cdf91512 Merge pull request #31033 from 3405691582/OpenBSD_Port_BuildfixDifferentiation
[stdlib] Buildfix differentiation for OpenBSD.
2020-04-20 08:12:50 -07:00
Saleem Abdulrasool
0bbc160a44 build: strength reduce add_dependencies usage
The two invocations here both had a single parameter passed to it.
Replace it with `add_dependencies` which already actually supports
multiple dependencies specified.  Sink the custom wrapper into the
usage location in `AddSwiftStdlib.cmake`.
2020-04-19 10:24:40 -07:00
Daniel Rodríguez Troitiño
6f4455812b Merge pull request #30235 from buttaface/rpath
[build][android] set INSTALL_RPATH properly for shared libraries
2020-04-18 15:38:23 -07:00
Dario Rexin
93da1a428d Merge pull request #30956 from buttaface/soname
[build] re-enable setting soname for Android shared libraries
2020-04-17 09:26:10 -07:00
3405691582
f32a6e2565 [stdlib] Buildfix differentiation for OpenBSD.
New files were added in #30875 which did not include os(OpenBSD), so add
this.

add_swift_target_library in AddSwiftStdlib subsequently required
modification. _add_target_variant_link_flags likely needs modification as
well, but this is better suited to a separate PR.
2020-04-15 00:32:54 -04:00
Saleem Abdulrasool
41958f95fc Merge pull request #30992 from compnerd/the-impossible-future
build: explicitly execute `line-directive-tool` with Python3
2020-04-13 17:11:19 -07:00
Saleem Abdulrasool
cba8723d61 build: explicitly execute line-directive-tool with Python3
The `line-directive-tool` is Python3 compliant.  Use the Python3
interpreter to execute this tool.
2020-04-13 09:53:50 -07:00
Saleem Abdulrasool
87cbb3132d build: duplicate and rename the _add_variant_* functions
This allows us to start splitting up the swift and C/C++ specific paths.
2020-04-11 13:24:31 -07:00
Butta
8b4dadcda1 [build] re-enable setting soname for Android shared libraries, as in #30020 2020-04-10 22:23:45 +05:30
Xi Ge
516b4d4ca5 Revert "[build] Don't reset 'swiftlib_link_flags_all' unnecessarily" 2020-04-06 21:18:07 -07:00
Saleem Abdulrasool
905341321b Merge pull request #30020 from buttaface/link_flags
[build] Don't reset 'swiftlib_link_flags_all' unnecessarily
2020-04-06 15:47:36 -07:00
Eric Miotto
d8de5bafb0 [build] set linker parameters in a single way (for stdlib) (#30596)
Match the same fix as #30339 for `AddSwiftStdlib.cmake`.

Addresses rdar://problem/60791444
2020-03-24 06:51:44 -07:00
Butta
4bfbfe935f [build][android] set INSTALL_RPATH properly for shared libraries
Host libraries will likely all need ORIGIN set, whereas only set it for
target libraries that will be packaged with a native toolchain on Android.
2020-03-18 10:32:49 +05:30
Dario Rexin
6dc4329398 Move SwiftSource.cmake to stdlib 2020-03-08 12:48:34 -07:00
Butta
c2a73c88ce [build] Don't reset 'swiftlib_link_flags_all' unnecessarily 2020-02-28 03:11:44 +05:30
Saleem Abdulrasool
fc67fc74fb build: shuffle around some functions
This is a purely code motion change.  It moves the functions that are
specific to `SwiftSource.cmake` into `SwiftSource.cmake`.  Target
functions are moved to `stdlib/cmake/modules/AddSwiftStdlib.cmake`.
2020-02-26 12:47:43 -08:00
Saleem Abdulrasool
2e2e886832 build: bifurcate _add_swift_executable_single 2020-02-23 14:20:12 -08:00
Saleem Abdulrasool
c5c7ed17b8 build: hoist LINK_LIBRARIES out of _add_swift_executable_single
Hoist the responsibility for adding the linked libraries out of
`_add_swift_executable_single` to the invoker.  This impacts only
`swift_add_target_executable`.  This continues to bring the computation
of the properties nearer the site of definition.
2020-02-02 08:58:41 -08:00
Saleem Abdulrasool
183de849d4 build: begin rooting out EXCLUDE_FROM_ALL
`EXCLUDE_FROM_ALL` should be discouraged.  `ALL` should build *all*
targets.  If a subset of targets are desired to be built, we should
provide targets which make sense.  Sink the single use of this flag
into the standard library setup.  The custom cross-compilation was
the reason that the flag was plumbed all the way through.  Cleaning
up the macros that have been built up is needed to migrate towards
proper cross-compilation support.
2020-01-24 22:20:07 -08:00
Saleem Abdulrasool
b94ea98516 build: remove SWIFT_BUILD_STDLIB check (NFC)
The `add_swift_target_executable` is used in a single case, where it is
already being built in a standard library only build.  This removes the
unnecessary condition in the build path.
2020-01-23 11:14:42 -08:00
Saleem Abdulrasool
218b37e1bb build: rename LLVM_COMPONENT_DEPENDS
This is not a target dependency but a target link.  Name the parameter
to be less misleading.  This also makes the name identical to the LLVM
parameter.
2019-05-04 19:58:28 -07:00
Saleem Abdulrasool
4b9e9d3164 build: excise the concept of fat libraries
This was used for the swift-reflection-test tool.  Instead of using fat
binaries, use the target binary itself.  This simplifies the build logic
as well as paves the road to sub-builds for each target rather than a
monolithic build as we have today.

Originally, the swift-reflection-test was a host tool that linked
against the target libraries since it was testing the target layout.
Now that the tool has been split into a host and target component
(5ea5bb06a3) and we have target and host
libraries that we can link against appropriately, we do not need to link
against the FAT binary.  Since there was exactly one use of this
functionality, switching that from fat linking to regular linking allows
us to remove this functionality entirely.  Switch to regular linking and
remove the option.
2019-03-12 22:30:20 -07:00
Michael Gottesman
b2ae3a8b2c [cmake] Move add_swift_target_executable into the new stdlib cmake directory.
This will ensure that additional target executables can not be added to the rest
of the swift project without anyone noticing since the non-stdlib parts of
Swift's cmake will not have visibility of the declaration unless they change the
cmake lookup paths.
2018-12-11 16:43:49 -08:00