@@ -1748,6 +1748,31 @@ _get_target_toolchain_flags_for_gcc() {
17481748 _ret=" ${flags} "
17491749}
17501750
1751+ # get macOS sysroot and target flags for clang
1752+ # usage: _get_macosx_sysroot_flags [quoted]
1753+ # if quoted is "quoted", the sysroot path will be wrapped in escaped quotes (for eval)
1754+ _get_macosx_sysroot_flags () {
1755+ local flags=" "
1756+ if is_plat " macosx" ; then
1757+ _os_iorunv " xcrun" " -sdk" " macosx" " --show-sdk-path" ; local sdkdir=" ${_ret} "
1758+ if test_nz " ${sdkdir} " ; then
1759+ if test_eq " ${1} " " quoted" ; then
1760+ flags=" ${flags} -isysroot \" ${sdkdir} \" "
1761+ else
1762+ flags=" ${flags} -isysroot ${sdkdir} "
1763+ fi
1764+ path_basename " ${sdkdir} " ; local basename=" ${_ret} "
1765+ if test_nz " ${basename} " && string_startswith " ${basename} " " MacOSX" ; then
1766+ string_replace " ${basename} " " MacOSX" " " ; local target_minver=" ${_ret} "
1767+ if test_nz " ${target_minver} " ; then
1768+ flags=" ${flags} -target ${_target_arch} -apple-macos${target_minver} "
1769+ fi
1770+ fi
1771+ fi
1772+ fi
1773+ _ret=" ${flags} "
1774+ }
1775+
17511776# get toolchain flags for clang in target
17521777_get_target_toolchain_flags_for_clang () {
17531778 local name=" ${1} "
@@ -1776,21 +1801,7 @@ _get_target_toolchain_flags_for_clang() {
17761801 fi
17771802 fi
17781803 # set target and sysroot
1779- if is_plat " macosx" ; then
1780- _os_iorunv " xcrun" " -sdk" " macosx" " --show-sdk-path" ; local sdkdir=" ${_ret} "
1781- if test_nz " ${sdkdir} " ; then
1782- flags=" ${flags} -isysroot \" ${sdkdir} \" "
1783-
1784- # get target minver and set target flags
1785- path_basename " ${sdkdir} " ; local basename=" ${_ret} "
1786- if test_nz " ${basename} " && string_startswith " ${basename} " " MacOSX" ; then
1787- string_replace " ${basename} " " MacOSX" " " ; local target_minver=" ${_ret} "
1788- if test_nz " ${target_minver} " ; then
1789- flags=" ${flags} -target ${arch} -apple-macos${target_minver} "
1790- fi
1791- fi
1792- fi
1793- fi
1804+ _get_macosx_sysroot_flags " quoted" ; flags=" ${flags}${_ret} "
17941805 _ret=" ${flags} "
17951806}
17961807
@@ -1822,21 +1833,7 @@ _get_target_toolchain_flags_for_tcc() {
18221833 fi
18231834 fi
18241835 # set target and sysroot
1825- if is_plat " macosx" ; then
1826- _os_iorunv " xcrun" " -sdk" " macosx" " --show-sdk-path" ; local sdkdir=" ${_ret} "
1827- if test_nz " ${sdkdir} " ; then
1828- flags=" ${flags} -isysroot \" ${sdkdir} \" "
1829-
1830- # get target minver and set target flags
1831- path_basename " ${sdkdir} " ; local basename=" ${_ret} "
1832- if test_nz " ${basename} " && string_startswith " ${basename} " " MacOSX" ; then
1833- string_replace " ${basename} " " MacOSX" " " ; local target_minver=" ${_ret} "
1834- if test_nz " ${target_minver} " ; then
1835- flags=" ${flags} -target ${arch} -apple-macos${target_minver} "
1836- fi
1837- fi
1838- fi
1839- fi
1836+ _get_macosx_sysroot_flags " quoted" ; flags=" ${flags}${_ret} "
18401837 _ret=" ${flags} "
18411838}
18421839
@@ -3754,19 +3751,7 @@ _check_cxsnippets() {
37543751 compflags=" ${compflags} ${CPPFLAGS} "
37553752 fi
37563753 # add -isysroot and -target on macOS to ensure system SDK headers are used for option checking
3757- if is_plat " macosx" ; then
3758- _os_iorunv " xcrun" " -sdk" " macosx" " --show-sdk-path" ; local _sdkdir=" ${_ret} "
3759- if test_nz " ${_sdkdir} " ; then
3760- compflags=" -isysroot ${_sdkdir} ${compflags} "
3761- path_basename " ${_sdkdir} " ; local _basename=" ${_ret} "
3762- if test_nz " ${_basename} " && string_startswith " ${_basename} " " MacOSX" ; then
3763- string_replace " ${_basename} " " MacOSX" " " ; local _target_minver=" ${_ret} "
3764- if test_nz " ${_target_minver} " ; then
3765- compflags=" -target ${_target_arch} -apple-macos${_target_minver} ${compflags} "
3766- fi
3767- fi
3768- fi
3769- fi
3754+ _get_macosx_sysroot_flags; compflags=" ${_ret} ${compflags} "
37703755 _toolchain_compcmd " ${sourcekind} " " ${objectfile} " " ${sourcefile} " " ${compflags} " ; local compcmd=" ${_ret} "
37713756 if ${xmake_sh_diagnosis} ; then
37723757 print " > ${compcmd} "
0 commit comments