Skip to content
GitLab
菜单
项目
群组
代码片段
帮助
帮助
支持
社区论坛
快捷键
?
提交反馈
登录/注册
切换导航
菜单
打开侧边栏
Panda
TinyCC
提交
cca4ece0
提交
cca4ece0
编辑于
7月 06, 2021
作者:
Sushant Pandurangi
浏览文件
macOS: get active SDK path from xcode-select
上级
d5e4b258
变更
2
Hide whitespace changes
Inline
Side-by-side
libtcc.c
浏览文件 @
cca4ece0
...
...
@@ -855,6 +855,29 @@ LIBTCCAPI void tcc_delete(TCCState *s1)
#endif
}
/* Looks for the active developer SDK set by xcode-select (or the default
one set during installation.) */
#define SZPAIR(s) s "", sizeof(s)-1
ST_FUNC
int
tcc_add_macos_sdkpath
(
TCCState
*
s
)
{
char
*
sdkroot
=
NULL
,
*
pos
=
NULL
;
void
*
xcs
=
dlopen
(
"libxcselect.dylib"
,
RTLD_GLOBAL
|
RTLD_LAZY
);
CString
path
=
{};
int
(
*
f
)(
unsigned
int
,
char
**
)
=
dlsym
(
xcs
,
"xcselect_host_sdk_path"
);
if
(
f
)
f
(
1
,
&
sdkroot
);
if
(
!
sdkroot
)
return
-
1
;
pos
=
strstr
(
sdkroot
,
"SDKs/MacOSX"
);
if
(
!
pos
)
return
-
1
;
cstr_cat
(
&
path
,
sdkroot
,
pos
-
sdkroot
);
cstr_cat
(
&
path
,
SZPAIR
(
"SDKs/MacOSX.sdk/usr/lib
\0
"
)
);
tcc_add_library_path
(
s
,
(
char
*
)
path
.
data
);
cstr_free
(
&
path
);
tcc_free
(
sdkroot
);
return
0
;
}
#undef SZPAIR
LIBTCCAPI
int
tcc_set_output_type
(
TCCState
*
s
,
int
output_type
)
{
s
->
output_type
=
output_type
;
...
...
@@ -881,7 +904,11 @@ LIBTCCAPI int tcc_set_output_type(TCCState *s, int output_type)
}
tcc_add_library_path
(
s
,
CONFIG_TCC_LIBPATHS
);
#ifdef TCC_TARGET_MACHO
if
(
tcc_add_macos_sdkpath
(
s
)
!=
0
)
{
tcc_add_library_path
(
s
,
CONFIG_OSX_SDK_FALLBACK
);
}
#endif
#ifdef TCC_TARGET_PE
# ifdef _WIN32
if
(
!
s
->
nostdlib
&&
output_type
!=
TCC_OUTPUT_OBJ
)
...
...
tcc.h
浏览文件 @
cca4ece0
...
...
@@ -247,12 +247,6 @@ extern long double strtold (const char *__nptr, char **__endptr);
# define ALSO_TRIPLET(s) s
#endif
/* FIXME: do this at runtime instead; check output of `xcode-select -p`. libxcselect provides this stuff */
#ifndef CONFIG_OSX_SDK1
# define CONFIG_OSX_SDK1 "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk"
# define CONFIG_OSX_SDK2 "/Applications/Xcode.app/Developer/SDKs/MacOSX.sdk"
#endif
/* path to find crt1.o, crti.o and crtn.o */
#ifndef CONFIG_TCC_CRTPREFIX
# define CONFIG_TCC_CRTPREFIX USE_TRIPLET(CONFIG_SYSROOT "/usr/" CONFIG_LDDIR)
...
...
@@ -281,18 +275,18 @@ extern long double strtold (const char *__nptr, char **__endptr);
# ifdef TCC_TARGET_PE
# define CONFIG_TCC_LIBPATHS "{B}/lib"
# else
# ifdef TCC_TARGET_MACHO
# define CONFIG_TCC_LIBPATHS \
ALSO_TRIPLET(CONFIG_SYSROOT "/usr/" CONFIG_LDDIR) \
":" ALSO_TRIPLET(CONFIG_SYSROOT "/" CONFIG_LDDIR) \
":" ALSO_TRIPLET(CONFIG_SYSROOT "/usr/local/" CONFIG_LDDIR)\
":" ALSO_TRIPLET(CONFIG_OSX_SDK1 "/usr/" CONFIG_LDDIR) \
":" ALSO_TRIPLET(CONFIG_OSX_SDK2 "/usr/" CONFIG_LDDIR)
# else
# define CONFIG_TCC_LIBPATHS \
# define CONFIG_TCC_LIBPATHS \
ALSO_TRIPLET(CONFIG_SYSROOT "/usr/" CONFIG_LDDIR) \
":" ALSO_TRIPLET(CONFIG_SYSROOT "/" CONFIG_LDDIR) \
":" ALSO_TRIPLET(CONFIG_SYSROOT "/usr/local/" CONFIG_LDDIR)
# ifdef TCC_TARGET_MACHO
# define CONFIG_OSX_SDK1 \
"/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk"
# define CONFIG_OSX_SDK2 \
"/Applications/Xcode.app/Developer/SDKs/MacOSX.sdk"
# define CONFIG_OSX_SDK_FALLBACK \
ALSO_TRIPLET(CONFIG_OSX_SDK1 "/usr/" CONFIG_LDDIR) \
":" ALSO_TRIPLET(CONFIG_OSX_SDK2 "/usr/" CONFIG_LDDIR)
# endif
# endif
#endif
...
...
编辑
预览
Supports
Markdown
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录