[PATCH] D17469: [libcxx] Add deployment knobs to tests (for Apple platforms)

Duncan P. N. Exon Smith via cfe-commits cfe-commits at lists.llvm.org
Thu Mar 10 13:57:06 PST 2016


Does anyone have a problem with this direction?  I have commits to
follow that get tests green when run against various releases of OSX
but I need this in place first.

> On 2016-Feb-19, at 17:59, Duncan P. N. Exon Smith via cfe-commits <cfe-commits at lists.llvm.org> wrote:
> 
> dexonsmith created this revision.
> dexonsmith added reviewers: EricWF, mclow.lists.
> dexonsmith added a subscriber: cfe-commits.
> 
> The tests for libc++ specify `-target` on the command-line to the
> compiler, but this is problematic for a few reasons.
> 
> Firstly, the `-target` option isn't supported on Apple platforms.  Parts
> of the triple get dropped and ignored.  Instead, software should be
> compiled with a combination of the `-arch` and `-m<name>-version-min`
> options.
> 
> Secondly, the generic "darwin" target references a kernel version
> instead of a platform version.  Each platform has its own independent
> versions (with different versions of libc++.1.dylib), independent of the
> version of the Darwin kernel.
> 
> This commit adds support to the LIT infrastructure for testing against
> Apple platforms using `-arch` and `-platform` options.
> 
> - If the host is not on OS X, or the compiler type is not `clang` or
>  `apple-clang`, then this commit has NFC.
> 
> - If the host is on OS X and `--param=target_triple=...` is specified,
>  then a warning is emitted to use arch and platform instead.  Besides
>  the warning, there's NFC.
> 
> - If the host is on OS X and *no* target-triple is specified, then use
>  the new deployment target logic.  This uses two new lit parameters,
>  `--param=arch=<arch>` and `--param=platform=<platform>`.  `<platform>`
>  has the form `<name>[<version>]`.
> 
>    - By default, arch is auto-detected from `clang -dumpmachine`, and
>      platform is "macosx".
>    - If the platform doesn't have a version:
>        - For "macosx", the version is auto-detected from the host
>          system using `sw_vers`.  This may give a different version
>          than the SDK, since new SDKs can be installed on older hosts.
>        - Otherwise, the version is auto-detected from the SDK version
>          using `xcrun --show-sdk-path`.
>    - `-arch <arch> -m<name>-version-min=<version>` is added to the
>      compiler flags.
>    - The target triple is computed as `<arch>-apple-<platform>`.  It is
>      *not* passed to clang, but it is available for XFAIL and
>      UNSUPPORTED (as is `with_system_cxx_lib=<target>`).
>    - For convenience, `apple-darwin` and `<arch>-apple-darwin` are
>      added to the set of available features.
> 
> There were a number of tests marked to XFAIL on `x86_64-apple-darwin11`
> and `x86_64-apple-darwin12`.  I updated these to
> `x86_64-apple-macosx10.7` and `x86_64-apple-macosx10.8`.
> 
> 
> http://reviews.llvm.org/D17469
> 
> Files:
>  test/libcxx/test/config.py
>  test/libcxx/test/target_info.py
>  test/std/localization/locale.categories/category.ctype/ctype_base.pass.cpp
>  test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_1.pass.cpp
>  test/std/localization/locale.categories/category.ctype/locale.ctype.byname/tolower_many.pass.cpp
>  test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_1.pass.cpp
>  test/std/localization/locale.categories/category.ctype/locale.ctype.byname/toupper_many.pass.cpp
>  test/std/localization/locale.categories/category.monetary/locale.moneypunct/types.pass.cpp
>  test/std/localization/locale.categories/category.numeric/locale.num.get/facet.num.get.members/get_double.pass.cpp
>  test/std/localization/locales/locale/locale.types/locale.category/category.pass.cpp
>  test/std/re/re.traits/translate_nocase.pass.cpp
>  test/std/strings/string.conversions/stof.pass.cpp
>  test/std/strings/string.conversions/stol.pass.cpp
>  test/std/strings/string.conversions/stoll.pass.cpp
>  test/std/strings/string.conversions/stoul.pass.cpp
>  test/std/strings/string.conversions/stoull.pass.cpp
>  test/std/thread/futures/futures.future_error/what.pass.cpp
>  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong.pass.cpp
>  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_strong_explicit.pass.cpp
>  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak.pass.cpp
>  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_compare_exchange_weak_explicit.pass.cpp
>  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange.pass.cpp
>  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_exchange_explicit.pass.cpp
>  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load.pass.cpp
>  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_load_explicit.pass.cpp
>  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store.pass.cpp
>  test/std/utilities/memory/util.smartptr/util.smartptr.shared.atomic/atomic_store_explicit.pass.cpp
>  test/std/utilities/time/time.clock/time.clock.hires/consistency.pass.cpp
>  test/std/utilities/time/time.clock/time.clock.steady/consistency.pass.cpp
>  test/std/utilities/time/time.clock/time.clock.system/consistency.pass.cpp
> 
> <D17469.48565.patch>_______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list