Commit Graph

59 Commits

Author SHA1 Message Date
David Farler
91c64fdbb1 Stop re-exporting the Objective-C library
and link it properly. This is needed to embed LLVM bitcode sections
in the standard library and overlays. The linker doesn't support
embedded bitcode and reexport flags (among others).

rdar://problem/20750099

Swift SVN r28052
2015-05-01 22:24:14 +00:00
Justin Bogner
b0e7cbd9e0 CMake: Use the USES_TERMINAL option for tests
This allows `ninja check` to display the lit progress bar when using a
new enough cmake+ninja combination, as it does in LLVM these days.

Swift SVN r27923
2015-04-29 21:30:32 +00:00
John McCall
3546d03462 Fix the unified build with cmark. Thanks to David Farler for
pointing out where I needed to look.

Swift SVN r27829
2015-04-27 23:04:13 +00:00
David Farler
ca5876a866 swiftMarkup Library
Replace ReST-flavored documentation comments with Markdown.

rdar://problem/20180412

In addition to full Markdown support, the following extensions are
supported. These appear as lists at the top level of the comment's
"document". All of these extensions are matched without regard to
case.

Parameter Outlines
------------------

- Parameters:
  - x: ...
  - y: ...

Separate Parameters
-------------------

- parameter x: ...
- parameter y: ...

- Note:
Parameter documentation may be broken up across the entire comment,
with a mix of parameter documentation kinds - they'll be consolidated
in the end.

Returns
-------

- returns: ...

The following extensions are also list items at the top level, which
will also appear in Xcode QuickHelp as first-class citizens:

- Attention: ...
- Author: ...
- Authors: ...
- Bug: ...
- Complexity: ...
- Copyright: ...
- Date: ...
- Experiment: ...
- Important: ...
- Invariant: ...
- Note: ...
- Postcondition: ...
- Precondition: ...
- Remark: ...
- Remarks: ...
- See: ...
- Since: ...
- Todo: ...
- Version: ...
- Warning: ...

These match most of the extra fields in Doxygen, plus a few more per request.

Other changes
-------------
- Remove use of rawHTML for all markup AST nodes except for those
not representable by the Xcode QuickHelp XSLT - <h>, <hr/>, and of
course inline/block HTML itself.

- Update the doc comment RNG schema to more accurately reflect Xcode
QuickHelp.

- Clean up cmark CMake configuration.

- Rename "FullComment" to "DocComment"

- Update the Swift Standard Documentation (in a follow-up commit)

- Update SourceKit for minor changes and link against cmark
  (in a follow-up commit).

Swift SVN r27727
2015-04-26 00:07:15 +00:00
Doug Gregor
2c909b4d36 Remove Objective-C selector splitting options.
We're not going this way.

Swift SVN r27717
2015-04-25 03:59:00 +00:00
David Farler
33f9b07ff1 Enable watchOS Standard Library Builds
This change does not yet make installing the watchOS SDK mandatory,
but turns it on by default for related Xcode releases.

rdar://problem/20154542

Swift SVN r27389
2015-04-16 23:50:06 +00:00
Greg Parker
039ebc97d2 [build] Fix typo in SWIFT_SDK_*_VERSION.
Swift SVN r26937
2015-04-03 08:02:08 +00:00
Greg Parker
b855ee64d8 [build] Print Xcode and SDK build numbers during configuration.
Swift SVN r26936
2015-04-03 08:01:13 +00:00
David Farler
21bc454392 Remove unused library search path
This library search path option isn't needed yet for CMark and
is probably not in the right place. Remove it for now.

Swift SVN r26721
2015-03-30 17:46:13 +00:00
Jordan Rose
38752c2d92 [CMake] Move swift_llvm_config to SwiftSharedCMakeConfig (for SourceKit).
...and rename it to swift_common_llvm_config.

This is the function that acts like llvm_config but handles the LLVM build
being a different configuration from the Swift (or SourceKit) build, which
can be problematic for multi-configuration build schemes like Xcode.

There's also one fix here: LLVM dependencies for dylibs weren't being
properly added. (This is the "SHARED_LIBRARY" case near the bottom.)

Swift SVN r26631
2015-03-27 16:36:43 +00:00
Dmitri Hrybenko
27f0e7b46e CMake: adapt to upstream CMake changes
Swift SVN r26604
2015-03-26 22:28:15 +00:00
David Farler
654f74c4f4 Build armv7s for iOS, use architecture names in paths
Up to now we've been assuming that we have only one 32-bit target and
one 64-bit target per platform. There is a need to be able to build
armv7s for iOS, but assumptions abound in the organization of files per
architecture - tests, cmake targets, and installation.

- Build armv7s when building for iOS
- Use the actual architecture name, not blank or "/32" in all paths
  related to architecture.

Testing: Clean buildbot incremental RA tests pass (requires a test
update in SourceKit as well).

rdar://problem/20206215

Swift SVN r26600
2015-03-26 20:25:32 +00:00
Ted Kremenek
333447edcc Add 'armv7s' to SwiftSetIfArchBitness.cmake.
Swift SVN r26574
2015-03-26 01:52:42 +00:00
David Farler
b60cf1efd4 Build iOS overlays for TVOS
SDK overlays built for iOS were guarded as iOS only. These are also
available in the tvOS SDK.

rdar://problem/20278575

Swift SVN r26499
2015-03-24 21:43:55 +00:00
David Farler
b60613458b cmark Build Support
<rdar://problem/20180372>

Build cmark alongside llvm and clang.
If the clone doesn't exist, build-script-impl will clone it in the
workspace. Also update the README and update-checkout scripts.

Swift SVN r26364
2015-03-20 22:32:19 +00:00
David Farler
544ef4002d Merge tvOS and watchOS Support
- Add frontend and standard library build support for tvOS.
- Add frontend support for watchOS.

watchOS standard library builds are still disabled during SDK bring-up.

To build for TVOS, specify --tvos to build-script.
To build for watchOS, specify --watchos to build-script (not yet supported).

This patch does not include turning on full tests for TVOS or watchOS, and
will be included in a follow-up patch.

Swift SVN r26278
2015-03-18 21:35:07 +00:00
Erik Eckstein
5526a938e0 cmake: _compile_swift_files now accepts multiple output files.
Swift SVN r26257
2015-03-18 09:58:05 +00:00
Jason Molenda
ee602ff4d2 Roll back r26203.
Swift SVN r26207
2015-03-17 00:54:25 +00:00
Jason Molenda
85bb13a770 Recognize armv7s and armv7k as 32-bit cpu types.
Swift SVN r26203
2015-03-17 00:28:17 +00:00
Erik Eckstein
5e6ec85b4c CMake: Support compiling without -wmo and allow explicit specification of module name.
Swift SVN r25979
2015-03-11 11:53:30 +00:00
Dmitri Hrybenko
af5cda1601 cmake: allow installing a copy of Swift dylibs into an additional directory
rdar://20080564

Swift SVN r25971
2015-03-11 05:46:07 +00:00
Dmitri Hrybenko
89d1d924bd CMake: unbreak the build on Linux after stdlib reorganization
Runtime should use LINK_LIBRARIES to link to ICU, since it is a static
archive, and we need this link dependency to be propagated to the
libswiftSwiftCore library.  I have no idea why it linked correctly
worked before.

Swift SVN r25881
2015-03-09 10:09:36 +00:00
Dmitri Hrybenko
350248dae5 Reorganize the directory structure under 'stdlib'
The standard library has grown significantly, and we need a new
directory structure that clearly reflects the role of the APIs, and
allows future growth.

See stdlib/{public,internal,private}/README.txt for more information.

Swift SVN r25876
2015-03-09 05:26:05 +00:00
Dmitri Hrybenko
71424c49bb cmake: unbreak the usecase of cross-compiling the compiler while
disabling the standard library

In almost all cases, CMake will happily operate on undefined variables,
treating them as empty, but for some reason list(REMOVE_ITEM) is an
exception.

Swift SVN r25835
2015-03-07 04:18:53 +00:00
Michael Gottesman
e16a050c8a [+0 self] Add a cmake flag to enable guaranteed self.
The reason why this is necessary is that I need to update parts of the runtime
for +0 self. I am going to use a -D flag to do this implying I need the build
system's help. Since I already have the flag I am also going to wire up the
emission of +0 self code from the compiler to be triggered off this as well.

It is of course disabled by default.

<rdar://problem/20080934>

Swift SVN r25833
2015-03-07 03:23:12 +00:00
Graham Batty
dd92de792f Use ICU to implement basic string functions.
Swift SVN r25803
2015-03-06 19:15:34 +00:00
Dmitri Hrybenko
bc5bd454bd cmake: fix the separate SDK overlay build
rdar://20051956

Swift SVN r25791
2015-03-05 23:13:56 +00:00
Graham Batty
d95d458634 Make SwiftUnstable build on linux.
Also in this is switching to using sysconf instead of sysctlbyname
to determine hardware concurrency, since it's more portable and
also works on OSX/iOS.

Swift SVN r25782
2015-03-05 16:35:17 +00:00
Michael Gottesman
3ffe8eca7c Search for dtrace in SwiftHandleDTraceSources.cmake instead of the root CMakeLists.txt.
Swift SVN r25648
2015-03-01 00:26:00 +00:00
Greg Parker
26d80cf470 [build] Fix 16K segment alignment on iOS.
Swift SVN r25628
2015-02-28 00:30:12 +00:00
Argyrios Kyrtzidis
7262217319 [CMake] Move the KEYWORD-for-target_link_libraries workaround into SwiftSharedCMakeConfig.cmake
so SourceKit can also automatically use it.

Thanks to Dmitri for the tip!

Swift SVN r25527
2015-02-25 02:53:34 +00:00
Dmitri Hrybenko
fe5d88ad20 CMake: prevent LLVM's CMake files from overriding Swift's assertion
configuration

rdar://19723473 rdar://19722119

Swift SVN r25413
2015-02-20 03:26:02 +00:00
Michael Gottesman
186f03346a Forgot to include the .cmake for r25264.
Swift SVN r25265
2015-02-13 06:47:37 +00:00
Michael Gottesman
6ff94330ae Add SwiftRuntime dtrace provider with probes for retain, release, allocateObject, deallocateObject.
Now if you want to get these dynamic metrics from the runtime all you
need to do is:

1. Configure Swift with -DSWIFT_RUNTIME_ENABLE_DTRACE=YES
2. Run your routine with the command:

sudo dtrace -s ./utils/runtime_statistics.d -c "$MY_COMMAND_LINE"

After your app finishes running, it will dump out the counts. This is a
much more efficient and low maintenance way to get such statistics than
custom instrumenting the code.

Nothing is changed if -DSWIFT_RUNTIME_ENABLE_DTRACE is not set.

Swift SVN r25264
2015-02-13 06:42:37 +00:00
Greg Parker
6aa98d9c10 [build] Fix __TEXT,__info_plist and -Wl,-application_extension settings.
Swift SVN r25160
2015-02-11 02:58:57 +00:00
Dmitri Hrybenko
6058d291ca CMake: allow the SDK overlay to be built separately from the compiler
and the stdandard library

rdar://19703353

Swift SVN r25139
2015-02-10 21:57:03 +00:00
John McCall
2ff77a9cd1 Only import *Ref typedefs as CF types if they have a bridging
attribute or appear in a whitelist.

The initial whitelist is based on an audit I performed of our current
public SDKs.  If there are CF types which appear only in our internal
SDKs, and somebody urgently needs to use them from Swift, they can
adopt the bridging attributes.  The goal is to eventually eliminate
the whitelist and rely solely on bridging attributes anyway.

Sadly, CoreCooling was not included in my SDK audit and must be
explicitly annotated. :(

I've left the main database organized by framework, but I wanted
a quasi-lexicographically sorted version to permit efficient lookup.
We generate that copy automatically with gyb.  I ended up having
to tweak handle_gyb_sources to allow it to drop the result in
CMAKE_CURRENT_BINARY_DIR instead of CMAKE_CURRENT_BINARY_DIR/{4,8}
if an architecture is not provided.  I think this is abstractly
reasonable for generated includes, which have independent ability
to detect the target word size.  But just between you and me,
I did it because I couldn't figure out how to add
"-I${CMAKE_CURRENT_BINARY_DIR/{4,8}" as a compile flag;
the obvious thing didn't work.  Anyway, I'd appreciate it if
someone double-checked my cmake hackery here.

Swift SVN r24850
2015-01-30 18:39:07 +00:00
Dmitri Hrybenko
df2b4bb488 CMake: more precise dependencies for gyb'ed files
Swift SVN r24730
2015-01-26 09:37:00 +00:00
Sonny Falk
6743b8e83c [CMake] Fix unified build
Make sure SWIFT_NATIVE_LLVM_TOOLS_PATH and SWIFT_NATIVE_CLANG_TOOLS_PATH
are set even when not building standalone.

Swift SVN r24726
2015-01-26 06:52:32 +00:00
Sonny Falk
1c63eeee65 [CMake] CMake script refactoring for better code sharing between Swift and SourceKit.
Swift SVN r24713
2015-01-25 01:36:40 +00:00
Sonny Falk
f190c2de81 [CMake, build-script] Add support for cross-compiling tools.
This adds support to build-script and cmake scripts for cross-compiling the host tools in addition to stdlib.

To cross-compile, build-script-impl now accepts --cross-compile-tools-deployment-targets with a space separated list of targets to cross compile host Swift tools for.

For example: $ build-script ...other-args... -- --cross-compile-tools-deployment-targets="iphoneos-arm64 iphoneos-armv7".

When installing cross-compiled tools, it now also merges and runs lipo to produce fat binaries by merging the cross-compiled target architectures.

Swift SVN r24712
2015-01-25 01:36:02 +00:00
Dmitri Hrybenko
cb2870c230 Update Unicode data files to 7.0.0
rdar://17561742

Swift SVN r24692
2015-01-23 22:17:45 +00:00
Dmitri Hrybenko
458640ef2a CMake: don't rely on autolinking when building Swift code
Autolinking is only available on Apple platforms.

Swift SVN r24685
2015-01-23 08:33:32 +00:00
Erik Eckstein
7446cee72b Re-enable SLPVectorizer in stdlib build (revert r24342 and r24345)
The SLPVectorizer is now faster (rdar://problem/19430955): it needs 2.5% of stdlib compile time.
Related radar: rdar://problem/19433841



Swift SVN r24511
2015-01-19 15:22:33 +00:00
Dmitri Hrybenko
72a26f2371 CMake: simplify passing swift driver parameters
Swift SVN r24440
2015-01-15 04:44:58 +00:00
Mark Lacey
387418d034 Document the need to reenable the SLP vectorizer for the stdlib.
Swift SVN r24345
2015-01-10 01:09:31 +00:00
Mark Lacey
211cc83e4e Disable the LLVM SLP vectorizer for the stdlib build.
This shaves around 5 seconds off the stdlib build if you're using a
release/no-assert LLVM (so around 12.5% of total time if you're also
using a release/no-assert swift, or around 4% of total time if you're
using a debug/assert swift).

The underlying LLVM issue is tracked by rdar://problem/19430955.

I saw no significant reproducible performance loss due to this change.

Resolves rdar://problem/19431821.

Swift SVN r24342
2015-01-10 00:51:08 +00:00
Greg Parker
6c6863e342 [cmake] Remove a reference to a dead variable.
Swift SVN r24289
2015-01-09 00:18:04 +00:00
Michael Gottesman
9243f82d08 [cmake] Add new option --extra-swift-options that enables one to pass cmake flags to specific libraries by pattern matching a regexp upon their name.
Often times one wants to pass certain flags to swift when building
specific libraries and not others. This has in the past required
manually modifying the cmake system. This new option allows one to use
string regexps based on the module_name of a library to enable and
disable various flags. The way this works is you pass the following into
build-script:

--extra-swift-options="${REGEX1};${FLAGS1_WITH_SEMICOLONS_ESCAPED}"
--extra-swift-options="${REGEX2};${FLAGS2_WITH_SEMICOLONS_ESCAPED}"
--extra-swift-options="${REGEX3};${FLAGS3_WITH_SEMICOLONS_ESCAPED}"
--extra-swift-options="${REGEX4};${FLAGS4_WITH_SEMICOLONS_ESCAPED}"
--extra-swift-options="${REGEX5};${FLAGS5_WITH_SEMICOLONS_ESCAPED}"

Every library that matches REGEPN will have FLAGSN_... appended to their
swift flags. For instance if I did the following:

build-script --extra-swift-options="Swift;-Xfrontend\;-sil-print-pass-name" --extra-swift-options='^Swift$;-Xllvm\;-debug-only=sil-arc-opts" ...

CMake will output the following:

-- Matched 'Swift' to module 'Swift'. Compiling Swift with special flags: -Xfrontend;-sil-print-pass-name
-- Matched '^Swift$' to module 'Swift'. Compiling Swift with special flags: -Xllvm;-debug-only=sil-arc-opts
-- Matched 'Swift' to module 'SwiftExperimental'. Compiling SwiftExperimental with special flags: -Xfrontend;-sil-print-pass-name
-- Matched 'Swift' to module 'SwiftStructures'. Compiling SwiftStructures with special flags: -Xfrontend;-sil-print-pass-name
-- Matched 'Swift' to module 'SwiftStructuresGraphBFS'. Compiling SwiftStructuresGraphBFS with special flags: -Xfrontend;-sil-print-pass-name

stating which regexp was matched, the module it was matched to and the
added flags. This ensures that one only gets matches for what one wants.

Swift SVN r24271
2015-01-08 06:33:09 +00:00
Arnold Schwaighofer
292ecc49ca Revert "Readd SWIFT_STDLIB_CORE_EXTRA_FLAGS added in r24055"
This reverts commit r24248.

The flag was just renamed to SWIFT_EXTRA_EXPERIMENTAL_FLAGS_STDLIB_CORE.

Swift SVN r24251
2015-01-08 00:03:49 +00:00