osxcross/wrapper/unittests/run.bats
Thomas Pöchtrager 5afdf2b471 Wrapper changes:
* Support for generating fat object files with gcc and '-foc-use-gcc-libstdc++'
  has been removed.

  This feature was not 100% correctly implemented; using multiple source files
  did not work, i.e.: 'o32-g++ -m32 -m64 a.cpp b.cpp' would have failed;
  And I refuse to implement that, instead I am removing all source file handling
  from the wrapper with this commit for simplicity.

  This feature should be implemented in the gcc driver instead.

  This does NOT affect clang's fat object file support, which is implemented in
  clang's darwin driver.

* '-oc-use-gcc-lib' has been renamed to '-foc-use-gcc-libstdc++'.

* Added support for '-stdc++' and '-gstdc++' compiler "shortcuts"

  o32-clang++ --> uses libstdc++ for <= 10.8 and libc++ for >= 10.9

  o32-clang++-libc++ --> uses the SDK's libc++
  o32-clang++-stdc++ --> uses the SDK's libstdc++
  o32-clang++-gstdc++ --> uses gcc's (build_gcc.sh) libstdc++

* Entirely rewrote the command line parser; the previous one wasn't very
  readable.

* Minor Readme Updates

* Added unit tests

* Removed OSXCROSS_C_STANDARD / OSXCROSS_CXX_STANDARD support

  I am no longer parsing -std=, so this feature has to be dropped.
  Setting the language standard via an env variable isn't a good idea anyway.

* Removed unneeded stuff

Other Changes:

* Version bump to 0.11
2015-08-22 23:15:27 +02:00

531 lines
17 KiB
Bash
Executable File

#!/usr/bin/env bats
#
# Requirements:
# * bats (https://github.com/sstephenson/bats)
# * OSXCRoss >= 0.11 must be in PATH
#
export OSXCROSS_UNIT_TEST=2
export OCDEBUG=1
unset OSXCROSS_NO_EXTENSION_WARNINGS
unset OSXCROSS_NO_X86_64H_DEPLOYMENT_TARGET_WARNING
unset OSXCROSS_GCC_NO_STATIC_RUNTIME
unset MACOSX_DEPLOYMENT_TARGET
unset OSXCROSS_SDKROOT
GCC_INSTALLED=1
command -v o64-clang++ >/dev/null 2>&1 || { echo "OSXCross must be in PATH" 1>&2; exit 1; }
command -v o64-g++ >/dev/null 2>&1 || GCC_INSTALLED=0
if [ $GCC_INSTALLED -eq 1 ]; then
if [ "$(o64-clang++ -foc-run-prog=osxcross-conf 2>/dev/null)" != \
"$(o64-g++ -foc-run-prog=osxcross-conf 2>/dev/null)" ]; then
true
#echo "warning: o64-clang++ and o64-g++ come from different installations; aborting unit testing" 1>&2
GCC_INSTALLED=0
fi
fi
eval $(osxcross-conf)
@test "osxcross-cmp" {
run osxcross-cmp
[ "$status" -ne 0 ]
run osxcross-cmp 10.5 '>' 10.6
[ "$status" -eq 0 ]
[ "$output" = "0" ]
run osxcross-cmp 10.11 '>' 10.10
[ "$status" -eq 0 ]
[ "$output" = "1" ]
run osxcross-cmp 10.11 '>=' 10.12
[ "$status" -eq 0 ]
[ "$output" = "0" ]
run osxcross-cmp 10.11 '<=' 10.12
[ "$status" -eq 0 ]
[ "$output" = "1" ]
run osxcross-cmp 10.10 '==' 10.10
[ "$status" -eq 0 ]
[ "$output" = "1" ]
run osxcross-cmp 10.10 '!=' 10.10
[ "$status" -eq 0 ]
[ "$output" = "0" ]
run osxcross-cmp 10.10 '?' 10.10
[ "$status" -ne 0 ]
run osxcross-cmp 10.10 '>'
[ "$status" -ne 0 ]
}
@test "cross compiler arguments" {
run o64-clang++
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ *clang*\ \(clang++\)\ * ]]
[[ "${lines[0]}" == *\ -target\ x86_64-apple-darwin*\ * ]]
[[ "${lines[0]}" == *\ -mlinker-version=$OSXCROSS_LINKER_VERSION\ * ]]
[[ "${lines[0]}" == *\ -isystem\ */clang/*.*/include\ * ]]
[[ "${lines[0]}" == *\ -isysroot\ */MacOSX10.*.sdk\ * ]]
[[ "${lines[0]}" == *\ -stdlib=*++*\ * ]]
[[ "${lines[0]}" == *\ -mmacosx-version-min=10.* ]]
[[ "${lines[0]}" == *\ -arch\ x86_64\ * ]]
[[ "${lines[0]}" != *\ -Wl,-no_compact_unwind\ * ]]
run o32-clang
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ *clang*\ \(clang\)\ * ]]
[[ "${lines[0]}" == *\ -target\ i386-apple-darwin*\ * ]]
if [ $GCC_INSTALLED -eq 1 ]; then
run o64-g++
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ *x86_64-apple-darwin*-base-g++*\ \(x86_64-apple-darwin*-g++\)\ * ]]
[[ "${lines[0]}" != *\ -target\ x86_64-apple-darwin*\ * ]]
[[ "${lines[0]}" != *\ -mlinker-version=*\ * ]]
[[ "${lines[0]}" != *\ -isystem\ */clang/*.*/include\ * ]]
[[ "${lines[0]}" != *\ -isysroot\ */MacOSX10.*.sdk\ * ]]
[[ "${lines[0]}" != *\ -stdlib=*++*\ * ]]
[[ "${lines[0]}" == *\ -mmacosx-version-min=10.* ]]
[[ "${lines[0]}" == *\ -m64\ * ]]
[[ "${lines[0]}" == *\ -Wl,-no_compact_unwind\ * ]]
run o32-g++
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ *i386-apple-darwin*-base-g++*\ \(i386-apple-darwin*-g++\)\ * ]]
fi
}
@test "OCDEBUG=2" {
OCDEBUG=2 run o64-clang++
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *debug:\ detected\ target\ triple:\ *-apple-darwin* ]]
[[ "${lines[1]}" == *debug:\ detected\ compiler:\ * ]]
[[ "${lines[2]}" == *debug:\ detected\ stdlib:\ * ]]
}
@test "argv[0] parsing" {
OSXCROSS_PROG_NAME=x86_64-apple-darwin999999-clang++ run o64-clang++
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *warning:\ this\ wrapper\ was\ built\ for\ target\ \'darwin*\' ]]
[[ "${lines[1]}" == *error:\ cannot\ find\ Mac\ OS\ X\ SDK\ \(expected\ in:\ */SDK/MacOSX10.999995.sdk\) ]]
OSXCROSS_PROG_NAME=x86_64-apple-$OSXCROSS_TARGET-gcc run o64-clang++
[ "$status" -eq 0 ]
[[ -z "$OUTPUT" ]]
OSXCROSS_PROG_NAME=x86_64-apple-$OSXCROSS_TARGET-g++ run o64-clang++
[ "$status" -eq 0 ]
[[ -z "$OUTPUT" ]]
OSXCROSS_PROG_NAME=x86_64-apple-$OSXCROSS_TARGET-cc run o64-clang++
[ "$status" -eq 0 ]
[[ -z "$OUTPUT" ]]
OSXCROSS_PROG_NAME=x86_64-apple-$OSXCROSS_TARGET-c++ run o64-clang++
[ "$status" -eq 0 ]
[[ -z "$OUTPUT" ]]
OSXCROSS_PROG_NAME=i386-apple-$OSXCROSS_TARGET-clang++ run o64-clang++
[ "$status" -eq 0 ]
OSXCROSS_PROG_NAME=i486-apple-$OSXCROSS_TARGET-clang++ run o64-clang++
[ "$status" -eq 0 ]
OSXCROSS_PROG_NAME=i586-apple-$OSXCROSS_TARGET-clang++ run o64-clang++
[ "$status" -eq 0 ]
OSXCROSS_PROG_NAME=i686-apple-$OSXCROSS_TARGET-clang++ run o64-clang++
[ "$status" -eq 0 ]
OSXCROSS_PROG_NAME=i786-apple-$OSXCROSS_TARGET-clang++ run o64-clang++
[ "$status" -ne 0 ]
OSXCROSS_PROG_NAME=armv6-apple-$OSXCROSS_TARGET-clang++ run o64-clang++
[ "$status" -ne 0 ]
OSXCROSS_PROG_NAME=x86_64-mapple-$OSXCROSS_TARGET-clang++ run o64-clang++
[ "$status" -ne 0 ]
OSXCROSS_PROG_NAME=x86_64-apple-ddarwin13-clang++ run o64-clang++
[ "$status" -ne 0 ]
OSXCROSS_PROG_NAME=x86_64-apple--clang++ run o64-clang++
[ "$status" -ne 0 ]
OSXCROSS_PROG_NAME=x86_64-apple-$OSXCROSS_TARGET-foo run o64-clang++
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *warning:\ unknown\ compiler\ \'foo\' ]]
OSXCROSS_PROG_NAME= run o64-clang++
[ "$status" -ne 0 ]
OSXCROSS_PROG_NAME=? run o64-clang++
[ "$status" -ne 0 ]
}
@test "command line parsing" {
run o64-clang++ -mmacosx-version-min=10.4 -g -I test1 -march=native -Itest2 -O2 -stdlib=libstdc++ -stdlib=default -stdlib=libstdc++ -otest1 -o test2 foo.cpp -c
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ -mmacosx-version-min=10.4*\ * ]]
[[ "${lines[0]}" == *\ -g\ *\ * ]]
[[ "${lines[0]}" == *\ -I\ test1\ * ]]
[[ "${lines[0]}" == *\ -march=native\ * ]]
[[ "${lines[0]}" == *\ -Itest2\ * ]]
[[ "${lines[0]}" == *\ -O2\ * ]]
[[ "${lines[0]}" != *\ -stdlib=default\ * ]]
[[ "${lines[0]}" == *\ -otest1\ * ]]
[[ "${lines[0]}" == *\ -o\ test2\ * ]]
[[ "${lines[0]}" == *\ foo.cpp\ * ]]
[[ "${lines[0]}" == *\ -c\ * ]]
}
@test "-mmacosx-version-min/MACOSX_DEPLOYMENT_TARGET" {
run o64-clang++ -mmacosx-version-min=10.10000
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *error:\ targeted\ OS\ X\ version\ must\ be\ \<=\ 10.*.0\ \(SDK\) ]]
run o64-clang++ -mmacosx-version-min=abc
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *warning:\ \'-mmacosx-version-min=\'\ \(0.0.0\ !=\ abc\) ]]
[[ "${lines[1]}" != *\ -mmacosx-version-min=abc\ * ]]
[[ "${lines[1]}" != *\ -mmacosx-version-min=0.0*\ * ]]
run o64-clang++ -mmacosx-version-min=10.0
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *targeted\ OS\ X\ version\ must\ be\ \>=\ 10.4 ]]
run o64-clang++ -mmacosx-version-min=10.0 -mmacosx-version-min=$OSXCROSS_SDK_VERSION
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ -mmacosx-version-min=$OSXCROSS_SDK_VERSION.*\ * ]]
MACOSX_DEPLOYMENT_TARGET=10.4 run o64-clang++ -mmacosx-version-min=10.0 -mmacosx-version-min=10.4
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ -mmacosx-version-min=10.4.*\ * ]]
MACOSX_DEPLOYMENT_TARGET=10.4 run o64-clang++
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ -mmacosx-version-min=10.4.*\ * ]]
}
@test "-stdlib/-stdc++/-gstdc++/-foc-use-gcc-libstdc++/-libc++" {
function libcxx()
{
run $@
if [[ "$@" == *-mmacosx-version-min=10.4* ]]; then
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *error:\ libc++\ requires\ \'-mmacosx-version-min=10.7\'\ \(or\ later\) ]]
else
[ "$status" -eq 0 ]
if [[ $1 == *clang++* ]]; then
[[ "${lines[0]}" == *\ -cxx-isystem\ */SDK/MacOSX10.*.sdk/usr/include/c++/v1\ * ]]
[[ "${lines[0]}" == *\ -stdlib=libc++\ * ]]
[[ "${lines[0]}" != *\ -stdlib=libstdc++\ * ]]
else
if [[ "$@" == *-stdlib* ]]; then
[[ "${lines[0]}" == *warning:\ \'-stdlib=\'\ is\ an\ osxcross\ extension* ]]
else
[[ "${lines[0]}" == *\ -nostdinc++\ -nodefaultlibs\ -lc\ -lc++\ -lgcc_s.10.5\ * ]]
[[ "${lines[0]}" == *\ -isystem\ */SDK/MacOSX10.*.sdk/usr/include/c++/v1\ * ]]
fi
fi
fi
}
if [ $(osxcross-cmp $OSXCROSS_SDK_VERSION '>=' 10.7) -eq 1 ]; then
libcxx "o64-clang++" "-stdlib=libc++"
libcxx "o64-clang++-libc++"
libcxx "o64-clang++-libc++" "-mmacosx-version-min=10.4"
if [ $GCC_INSTALLED -eq 1 ]; then
libcxx "o64-g++-libc++"
libcxx "o64-g++" "-stdlib=libc++"
libcxx "o64-g++" "-stdlib=libc++"
fi
fi
function stdcxx()
{
run $@
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ -stdlib=libstdc++\ * ]]
[[ "${lines[0]}" != *\ -stdlib=libc++\ * ]]
[[ "${lines[0]}" != *\ -cxx-isystem\ */SDK/MacOSX10.*.sdk/usr/include/c++/v1\ * ]]
[[ "${lines[0]}" == *\ -cxx-isystem\ */SDK/MacOSX10.*.sdk/usr/include/c++/4.*\ * ]]
[[ "${lines[0]}" == *\ -cxx-isystem\ */SDK/MacOSX10.*.sdk/usr/include/c++/4.*/*-apple-darwin*\ * ]]
[[ "${lines[0]}" == *\ -cxx-isystem\ */SDK/MacOSX10.*.sdk/usr/include/c++/4.*/backward\ * ]]
}
stdcxx "o64-clang++" "-stdlib=libstdc++"
stdcxx "o64-clang++-stdc++"
run o64-clang++-stdc++ -stdlib=libc++
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *warning:\ ignoring\ \'-stdlib=libc++\' ]]
function gstdcxx()
{
run $@
if [[ "${lines[0]}" == *error:\ \'-foc-use-gcc-libstdc++\'\ requires\ gcc\ to\ be\ installed\ \(./build_gcc.sh\) ]];
then
[ "$status" -ne 0 ]
else
[ "$status" -eq 0 ]
if [[ $1 == *clang++* ]]; then
[[ "${lines[0]}" == *\ -Qunused-arguments\ * ]]
fi
[[ "${lines[0]}" == *\ -cxx-isystem\ */x86_64-apple-darwin*/include/c++/*.*\ * ]]
[[ "${lines[0]}" == *\ -cxx-isystem\ */x86_64-apple-darwin*/include/c++/*.*/x86_64-apple-darwin*\ * ]]
[[ "${lines[0]}" == *\ -cxx-isystem\ */x86_64-apple-darwin*/include/c++/*.*/backward\ * ]]
if [[ $1 == *++ ]]; then
[[ "${lines[0]}" == *\ -nostdinc++\ * ]]
[[ "${lines[0]}" == *\ -stdlib=libstdc++\ * ]]
[[ "${lines[0]}" == *\ -nodefaultlibs\ * ]]
[[ "${lines[0]}" == *\ -Wl,-no_compact_unwind\ * ]]
if [ -n "$OSXCROSS_GCC_NO_STATIC_RUNTIME" ]; then
[[ "${lines[0]}" == *\ -L\ */lib/gcc/x86_64-apple-darwin*/*.*\ * ]]
[[ "${lines[0]}" == *\ -L\ */x86_64-apple-darwin*/lib*\ * ]]
[[ "${lines[0]}" == *\ -l\ stdc++\ * ]]
[[ "${lines[0]}" == *\ -l\ supc++\ * ]]
[[ "${lines[0]}" == *\ -l\ gcc\ * ]]
[[ "${lines[0]}" == *\ -l\ gcc_eh\ * ]]
else
[[ "${lines[0]}" == *\ */x86_64-apple-darwin*/lib*/libstdc++.a\ * ]]
[[ "${lines[0]}" == *\ */x86_64-apple-darwin*/lib*/libsupc++.a\ * ]]
[[ "${lines[0]}" == *\ */lib/gcc/x86_64-apple-darwin*/*.*/libgcc.a\ * ]]
[[ "${lines[0]}" == *\ */lib/gcc/x86_64-apple-darwin*/*.*/libgcc_eh.a\ * ]]
fi
else
[[ "${lines[0]}" != *\ -l\ stdc++\ * ]]
[[ "${lines[0]}" != *\ -l\ supc++\ * ]]
[[ "${lines[0]}" != *\ *libstdc++.a\ * ]]
[[ "${lines[0]}" != *\ *libsupc++.a\ * ]]
fi
fi
}
gstdcxx "o64-clang++" "-foc-use-gcc-libstdc++"
gstdcxx "o64-clang" "-foc-use-gcc-libstdc++"
gstdcxx "o64-clang++-gstdc++" "-foc-use-gcc-libstdc++"
gstdcxx "o32-clang++-gstdc++" "-foc-use-gcc-libstdc++"
OSXCROSS_GCC_NO_STATIC_RUNTIME=1 gstdcxx "o64-clang++" "-foc-use-gcc-libstdc++"
OSXCROSS_GCC_NO_STATIC_RUNTIME=1 gstdcxx "o64-clang++" "-foc-use-gcc-libstdc++" "-m32"
if [ $GCC_INSTALLED -eq 1 ]; then
run o64-g++
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ -static-libgcc\ * ]]
[[ "${lines[0]}" == *\ -static-libstdc++\ * ]]
OSXCROSS_GCC_NO_STATIC_RUNTIME=1 run o64-g++
[[ "${lines[0]}" != *\ -static-libgcc\ * ]]
[[ "${lines[0]}" != *\ -static-libstdc++\ * ]]
fi
run o64-clang++ -stdlib=default
[ "$status" -eq 0 ]
[[ "${lines[0]}" != *\ -stdlib=default\ * ]]
run o64-clang++ -stdlib=foo
[ "$status" -eq 1 ]
[[ "${lines[0]}" == *error:\ value\ of\ \'-stdlib=\'\ must\ be\ \'default\',\ \'libc++\'\ or\ \'libstdc++\' ]]
}
@test "-arch/-m32/-m64/-m16/-mx32" {
run o64-clang++ -arch x86_64 -arch i386 -arch x86_64 -arch i386
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ -arch\ x86_64\ \-arch\ i386\ * ]]
run o64-clang++ -m16
[ "$status" -eq 1 ]
run o64-clang++ -mx32
[ "$status" -eq 1 ]
run o64-clang++ -arch x86_64h
[ "$status" -eq 0 ] || [[ "${lines[0]}" == *error:\ \'x86_64\'\ requires\ Mac\ OS\ X\ SDK\ 10.8\ \(or\ later\) ]]
run o64-clang++ -arch foo
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *warning:\ \'-arch\':\ \unknown\ architecture\ \'foo\' ]]
[[ "${lines[1]}" == *warning:\ \'-arch\':\ \'foo\'\ !=\ \'unknown\' ]]
[[ "${lines[2]}" == *error:\ unsupported\ architecture:\ \'unknown\' ]]
run o64-clang++ -arch armv7
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *error:\ unsupported\ architecture:\ \'armv7\' ]]
run o64-clang++ -arch i386
[ "$status" -eq 0 ]
[[ "${lines[0]}" != *\ -arch\ x86_64\ * ]]
run o64-clang++ -m32
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ -arch\ i386\ * ]]
if [ $(osxcross-cmp $OSXCROSS_SDK_VERSION '>=' 10.8) -eq 1 ]; then
run o64-clang++ -arch x86_64h -mmacosx-version-min=10.7
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *warning:\ \'-mmacosx-version-min=\'\ should\ be\ \'\>=\ 10.8\'\ for\ architecture\ \'x86_64h\' ]]
OSXCROSS_NO_X86_64H_DEPLOYMENT_TARGET_WARNING=1 run o64-clang++ -arch x86_64h -mmacosx-version-min=10.7
[ "$status" -eq 0 ]
[[ "${lines[0]}" != *warning:\ * ]]
fi
if [ $GCC_INSTALLED -eq 1 ]; then
run o64-g++ -arch x86_64 -arch i386 -arch x86_64 -arch i386
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ -m32\ * ]]
[[ "${lines[0]}" != *\ -m64\ * ]]
[[ "${lines[0]}" != *\ -arch\ * ]]
run o64-g++ -arch x86_64h
[ "$status" -eq 1 ]
[[ "${lines[0]}" == *error:\ gcc\ does\ not\ support\ architecture\ \'x86_64h\' ]]
fi
}
@test "bad include path warning" {
if [ $(uname -s) == "Darwin" ]; then
skip "Not supported"
fi
run o64-clang++ -I/usr/..////////usr//include
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *warning:\ possibly\ dangerous\ include\ path\ specified:\ \'-I\ /usr/..////////usr//include\'\ \(/usr/include\) ]]
[[ "${lines[1]}" == *info:\ you\ can\ silence\ this\ warning\ via\ \'OSXCROSS_NO_INCLUDE_PATH_WARNINGS=1\'\ \(env\)* ]]
[[ "${lines[2]}" == *\ -I/usr/..////////usr//include\ * ]]
if [ $GCC_INSTALLED -eq 1 ]; then
OSXCROSS_NO_INCLUDE_PATH_WARNINGS=1 run o64-g++ -I/usr/include
[ "$status" -eq 0 ]
[[ "${lines[0]}" != *warning:\ * ]]
fi
}
@test "OSXCROSS_MP_INC" {
if [ -d "${OSXCROSS_TARGET_DIR}/macports" ]; then
function macports()
{
run $@
[ "$status" -eq 0 ]
if [ -d "${OSXCROSS_TARGET_DIR}/macports/pkgs/opt/local/include" ]; then
[[ "${lines[0]}" == *\ -isystem\ */macports/pkgs/opt/local/include\ * ]]
fi
if [ -d "${OSXCROSS_TARGET_DIR}/macports/pkgs/opt/local/lib" ]; then
[[ "${lines[0]}" == *\ -L\ */macports/pkgs/opt/local/lib\ * ]]
fi
if [ -d "${OSXCROSS_TARGET_DIR}/macports/pkgs/opt/local/Library/Frameworks" ]; then
[[ "${lines[0]}" == *\ -iframework\ */macports/pkgs/opt/local/Library/Frameworks\ * ]]
fi
if [[ $1 == *clang++* ]]; then
[[ "${lines[0]}" == *\ -Qunused-arguments\ * ]]
fi
}
OSXCROSS_MP_INC=1 macports o64-clang++
if [ $GCC_INSTALLED -eq 1 ]; then
OSXCROSS_MP_INC=1 macports o64-g++
fi
fi
}
@test "OSXCROSS_SDKROOT" {
OSXCROSS_SDKROOT=/dev/null/MacOSX10.10.sdk run o64-clang++
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *error:\ cannot\ find\ Mac\ OS\ X\ SDK\ \(expected\ in:\ /dev/null/MacOSX10.10.sdk\) ]]
OSXCROSS_SDKROOT=$OSXCROSS_SDK run o64-clang++
[ "$status" -eq 0 ]
}
@test "xcrun" {
run xcrun -sdk
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *error:\ too\ few\ arguments\ for\ \'-sdk\' ]]
run xcrun -sdk /
[ "$status" -eq 0 ]
run xcrun -sdk /dev/null
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *error:\ xcrun:\ \'-sdk\':\ expected\ Mac\ OS\ X\ SDK ]]
OSXCROSS_SDKROOT=/dev/null/MacOSX10.9.sdk SDKROOT=/dev/null/MacOSX10.10.sdk run xcrun
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *error:\ xcrun:\ \'-sdk\':\ directory\ \'/dev/null/MacOSX10.10.sdk\'\ does\ not\ exist ]]
run xcrun -sdk $OSXCROSS_SDK clang
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *debug:\ \<--\ * ]]
run xcrun -f clang
[ "$status" -eq 0 ]
[[ "${lines[0]}" == */bin/x86_64-apple-darwin*-clang ]]
run xcrun -find /usr/bin/ld
[ "$status" -eq 0 ]
[[ "${lines[0]}" == */bin/x86_64-apple-darwin*-ld ]]
run xcrun -show-sdk-path -show-sdk-version
[ "$status" -eq 0 ]
[ "${lines[0]}" == "$OSXCROSS_SDK" ]
[ "${lines[1]}" == "$OSXCROSS_SDK_VERSION" ]
xcrun_log=1 run xcrun clang
[ "$status" -eq 0 ]
[[ "${lines[0]}" == */bin/x86_64-apple-darwin*-clang ]]
run xcrun -log -l clang
[ "$status" -eq 0 ]
[[ "${lines[1]}" == *debug:\ \<--\ * ]]
run xcrun -run clang
[ "$status" -eq 0 ]
run xcrun -r clang
[ "$status" -eq 0 ]
run xcrun -foo
[ "$status" -ne 0 ]
run xcrun -k -kill-cache -n -no-cache -toolchain / -v -verbose -h -help
[ "$status" -eq 0 ]
}
@test "sw_vers" {
run sw_vers
[ "$status" -eq 0 ]
[ "${lines[0]}" == "ProductName: Mac OS X" ]
[ "${lines[1]}" == "ProductVersion: $OSXCROSS_OSX_VERSION_MIN" ]
[[ "${lines[2]}" == BuildVersion:\ \ \ * ]]
run sw_vers -productName
[ "$status" -eq 0 ]
[ "${lines[0]}" == "Mac OS X" ]
OSXCROSS_SW_VERS_OSX_VERSION=10.15 MACOSX_DEPLOYMENT_TARGET=10.16 run sw_vers -productVersion
[ "$status" -eq 0 ]
[ "${lines[0]}" == "10.15" ]
MACOSX_DEPLOYMENT_TARGET=10.16 run sw_vers -productVersion
[ "$status" -eq 0 ]
[ "${lines[0]}" == "10.16" ]
run sw_vers -buildVersion
[ "$status" -eq 0 ]
[[ "${lines[0]}" == * ]]
run sw_vers -foo
[ "$status" -ne 0 ]
}