Commit Graph

14 Commits

Author SHA1 Message Date
3405691582
f8d0174b85 Build system recognizes OpenBSD.
Commit for CMake and build scripts to recognize OpenBSD. To keep this
commit relatively short, this just deals with the rather simple and
uncontroversial changes to the build system.

Note that OpenBSD calls "x86_64" as "amd64", Since the Swift stdlib will
be put in a subdirectory named after ARCH, to ensure the standard
library is properly found later, we use the native architecture name for
OpenBSD in the build system rather than trying to deal with the
difference the other way around.
2020-04-03 13:34:17 -04:00
Shoaib Meenai
4b9a1b510c [cmake] Clean up FindICU.cmake
- Get rid of the singular (*_INCLUDE_DIR and *_LIBRARY) variables and
  standardize on the plural ones, since that's also what's used by
  CMake's FindICU module (which was added in 3.7).
- Use PKG_CONFIG_FOUND instead of PKGCONFIG_FOUND, since that's what's
  documented in CMake's FindPkgConfig module. (The latter will be set by
  the find_package call, so it's not incorrect, but it's clearer to use
  the documented variable.)
- Search for the headers and libraries even if pkg-config can't find the
  module, since e.g. we might have ICU somewhere in our CMake search
  path but might not have the pkg-config module for it. We're only using
  the pkg-config results as search hints anyway. (This might result in
  an empty HINTS argument to find_path and find_library, but CMake seems
  to handle that fine.) *This should be the only functional change.*
- Remove ICU_${MODULE}_DEFINITIONS, since it's never used anywhere.
- Don't add the *_INCLUDEDIR and *_LIBDIR variables to the hints, since
  they should be the same as the corresponding *_INCLUDE_DIRS and
  *_LIBRARY_DIRS variables (since we're only searching for a single
  module).

The only intended functional change, as mentioned above, is that we can
now successfully find ICU if its include and library directories are in
the CMake search path but its pkg-config module isn't, which might be
the case in certain cross-compilation or hermetic build scenarios. (It's
compounded by CMake only looking for pkg-config modules in
CMAKE_PREFIX_PATH and not CMAKE_SYSTEM_PREFIX_PATH, which I asked about
in https://cmake.org/pipermail/cmake/2018-August/068109.html).
2018-08-24 12:48:09 -07:00
Saleem Abdulrasool
e77d4c7c98 build: explicitly state arch for ICU
This is needed to support cross-compilation on targets which do not
support FAT binaries (i.e. non-MachO targets).  The primary user of this
functionality right now is Windows, but this support is needed for Linux
and android as well.
2018-02-19 23:27:54 -08:00
Calvin Hill
aee81d272f Add Initial platform support for Haiku. (#11583) 2017-09-22 21:06:56 -04:00
Hugh Bellamy
c66b72c5fa Simplify ICU package resolution not to require PkgConfig and to be more user configurable.
If you don't have PkgConfig, you'll need to pass the following to CMake:
```
 -DICU_UC_INCLUDE_DIRS="%swift_source_dir%/icu/include"^
 -DICU_UC_LIBRARY_DIRS="%swift_source_dir%/icu/lib64"^
 -DICU_I18N_INCLUDE_DIRS="%swift_source_dir%/icu/include"^
 -DICU_I18N_LIBRARY_DIRS="%swift_source_dir%/icu/lib64"^
 -DICU_UC_LIB_NAME="icuuc"^
 -DICU_I18N_LIB_NAME="icuin"
```

icu
2017-01-10 09:01:40 +00:00
K Staring
536c1ac6ce Merge branch 'master' of https://github.com/apple/swift 2016-10-31 07:10:16 +01:00
practicalswift
cc852042c9 [gardening] Fix accidental trailing whitespace. 2016-10-29 10:22:58 +02:00
Brian Gesiak
61868b5aec [CMake] Updates for Android NDK r13
Fixes the Android build, and makes some adjustments for Android NDK r13.

* Fix FindICU.cmake to properly set the `SWIFT_${sdk}_ICU_UC` and
  `SWIFT_${sdk}_ICU_I18N` values. These were not properly set because
  "uc" and "i18n" were lowercase.
* Adapt `add_swift_library` to parse `ICU_UC` and `ICU_I18N` for
  private link libraries and use the proper `SWIFT_${sdk}_ICU_*` values.
* NDK r13 removes a subdirectory from the llvm-libc++ includes path.
  Adapt to this change, and add a FIXME to address this issue before it
  may break again.
* Update the documentation to point to a new libicu download for NDK 13.
2016-10-24 15:17:20 -07:00
K Staring
97d3fbaffb change some variables to make it more clear - when comparing with swift/master - what exactly changed. In short: the first loop used ${MODULE} in uppercase when setting the INCLUDE paths, while the second loop used ${MODULE} in lowercase to retrieve the INCLUDE paths. This can't have worked. Also, there was a discrepancy for the first and second loop where *_INCLUDE_DIR vs *_INCLUDE_DIRS was used. Again, this cannot have worked (just try in the currenct swift/master code, surround the code with some message(STATUS ...) lines) 2016-10-24 08:23:22 +02:00
K Staring
22c0b4a9c8 fix ICU include paths. Please check this commit and verify that the previous solution simply coudn't have worked *at all*. The usage of slightly differently named variables (e.g. *LIB vs *LIBS) and lower-case module in the include for loop while a TOUPPER variable should have been used, caused the INCLUDE variables to never be filled. Apart from that, a find_package() was missing in the stubs CMakeFiles.txt . 2016-10-21 22:25:19 +02:00
Saleem Abdulrasool
5e170ebcb5 build: support cross-compiling to windows 2016-07-13 21:37:04 -07:00
Saleem Abdulrasool
4d2593fb95 build: support having more than one ICU in use
This allows us to cross-compile the standard library to foreign targets on a
single host.  The ICU dependencies can be specified on the command line on a
per-target basis.  If one is not specified, we fall back to the default search
path and use that for the other targets.

Special thanks to Dimitri Gribenko for the various hints in getting this wired
up.
2016-06-25 12:35:12 -07:00
Zhuowei Zhang
7c502b6344 Port to Android
This adds an Android target for the stdlib. It is also the first
example of cross-compiling outside of Darwin.

Mailing list discussions:

1. https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20151207/000171.html
2. https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20151214/000492.html

The Android variant of Swift may be built using the following `build-script`
invocation:

```
$ utils/build-script \
  -R \                                           # Build in ReleaseAssert mode.
  --android \                                    # Build for Android.
  --android-ndk ~/android-ndk-r10e \             # Path to an Android NDK.
  --android-ndk-version 21 \
  --android-icu-uc ~/libicu-android/armeabi-v7a/libicuuc.so \
  --android-icu-uc-include ~/libicu-android/armeabi-v7a/icu/source/common \
  --android-icu-i18n ~/libicu-android/armeabi-v7a/libicui18n.so \
  --android-icu-i18n-include ~/libicu-android/armeabi-v7a/icu/source/i18n/
```

Android builds have the following dependencies, as can be seen in
the build script invocation:

1. An Android NDK of version 21 or greater, available to download
   here: http://developer.android.com/ndk/downloads/index.html.
2. A libicu compatible with android-armv7.
2016-04-12 19:26:21 -04:00
Graham Batty
dd92de792f Use ICU to implement basic string functions.
Swift SVN r25803
2015-03-06 19:15:34 +00:00