Support both short and full SDK version naming (e.g., 14 and 14.0) (closes #377)

Remove troublesome libc++ IWYU mapping file which may cause compiler errors (https://github.com/include-what-you-use/include-what-you-use/tree/master)
Update build_compiler_rt.sh
This commit is contained in:
Thomas Pöchtrager 2023-08-17 21:52:37 +02:00
parent d291cb7b31
commit 96a651cfa7
5 changed files with 32 additions and 10 deletions

View File

@ -40,20 +40,20 @@ case $SDK_VERSION in
10.14*) TARGET=darwin18; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=0; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.9; ;;
10.15*) TARGET=darwin19; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=0; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.9; ;;
10.16*) TARGET=darwin20; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=1; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.9; ;;
11.0*) TARGET=darwin20.1; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=1; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.9; ;;
11|11.0*) TARGET=darwin20.1; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=1; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.9; ;;
11.1*) TARGET=darwin20.2; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=1; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.9; ;;
11.2*) TARGET=darwin20.3; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=1; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.9; ;;
11.3*) TARGET=darwin20.4; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=1; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.9; ;;
12.0*) TARGET=darwin21.1; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=1; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.9; ;;
12|12.0*) TARGET=darwin21.1; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=1; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.9; ;;
12.1*) TARGET=darwin21.2; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=1; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.9; ;;
12.2*) TARGET=darwin21.3; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=1; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.9; ;;
12.3*) TARGET=darwin21.4; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=1; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.9; ;;
12.4*) TARGET=darwin21.5; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=1; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.9; ;;
13.0*) TARGET=darwin22; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=1; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.9; ;;
13|13.0*) TARGET=darwin22; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=1; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.9; ;;
13.1*) TARGET=darwin22.2; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=1; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.9; ;;
13.2*) TARGET=darwin22.3; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=1; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.9; ;;
13.3*) TARGET=darwin22.4; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=1; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.9; ;;
14.0*) TARGET=darwin23; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=1; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.13; ;;
14|14.0*) TARGET=darwin23; X86_64H_SUPPORTED=1; I386_SUPPORTED=0; ARM_SUPPORTED=1; NEED_TAPI_SUPPORT=1; OSX_VERSION_MIN_INT=10.13; ;;
*) echo "Unsupported SDK"; exit 1 ;;
esac
@ -185,7 +185,12 @@ popd &>/dev/null
## Extract SDK and move it to $SDK_DIR ##
SDK=$(ls $TARBALL_DIR/MacOSX$SDK_VERSION*)
if [[ $SDK_VERSION == *.* ]]; then
SDK=$(ls $TARBALL_DIR/MacOSX$SDK_VERSION*)
else
SDK=$(ls $TARBALL_DIR/MacOSX$SDK_VERSION.*| grep -v "\.0")
fi
echo ""
extract $SDK
@ -198,7 +203,10 @@ fi
## Fix broken SDKs ##
pushd $SDK_DIR/MacOSX$SDK_VERSION.sdk &>/dev/null
pushd $SDK_DIR/MacOSX$SDK_VERSION*.sdk &>/dev/null
# Remove troublesome libc++ IWYU mapping file that may cause compiler errors
# https://github.com/include-what-you-use/include-what-you-use/blob/master/docs/IWYUMappings.md
rm -f usr/include/c++/v1/libcxx.imp
set +e
files=$(echo $BASE_DIR/oclang/quirks/*.h)
for file in $files; do

View File

@ -57,7 +57,8 @@ case $CLANG_VERSION in
15.* ) BRANCH=release/15.x; USE_CMAKE=1; ;;
16.* ) BRANCH=release/16.x; USE_CMAKE=1; ;;
17.* ) BRANCH=main; USE_CMAKE=1; ;;
* ) echo "Unsupported Clang version, must be >= 3.2 and <= 15.0" 1>&2; exit 1;
18.* ) BRANCH=main; USE_CMAKE=1; ;;
* ) echo "Unsupported Clang version, must be >= 3.2 and <= 18.0" 1>&2; exit 1;
esac
if [ $(osxcross-cmp $CLANG_VERSION ">=" 3.5) -eq 1 ]; then

View File

@ -140,7 +140,7 @@ void Target::overrideDefaultSDKPath(const char *SDKSearchDir) {
}
}
bool Target::getSDKPath(std::string &path, bool MacOSX10_16Fix) const {
bool Target::getSDKPath(std::string &path, bool MacOSX10_16Fix, bool majorVersionOnly) const {
OSVersion SDKVer = getSDKOSNum();
if (SDK) {
@ -150,7 +150,11 @@ bool Target::getSDKPath(std::string &path, bool MacOSX10_16Fix) const {
SDKVer = OSVersion(10, 16);
path = execpath;
path += "/../SDK/MacOSX";
path += SDKVer.shortStr();
if (majorVersionOnly) {
path += SDKVer.majorStr();
} else {
path += SDKVer.shortStr();
}
if (SDKVer <= OSVersion(10, 4))
path += "u";
path += ".sdk";
@ -161,6 +165,9 @@ bool Target::getSDKPath(std::string &path, bool MacOSX10_16Fix) const {
if (SDKVer == OSVersion(11, 0) && !MacOSX10_16Fix)
return getSDKPath(path, true);
if (SDKVer.minor == 0 && !majorVersionOnly)
return getSDKPath(path, false, true);
err << "cannot find macOS SDK (expected in: " << path << ")"
<< err.endl();

View File

@ -96,7 +96,7 @@ struct Target {
OSVersion getSDKOSNum() const;
void overrideDefaultSDKPath(const char *SDKSearchDir);
bool getSDKPath(std::string &path, bool MacOSX10_16Fix = false) const;
bool getSDKPath(std::string &path, bool MacOSX10_16Fix = false, bool majorVersionOnly = false) const;
bool getMacPortsDir(std::string &path) const;
bool getMacPortsSysRootDir(std::string &path) const;

View File

@ -326,6 +326,12 @@ struct OSVersion {
return tmp.str();
}
std::string majorStr() const {
std::stringstream tmp;
tmp << major;
return tmp.str();
}
int major;
int minor;
int patch;