Skip to content

Commit e619551

Browse files
committed
support for cosmocc
1 parent 4a647b1 commit e619551

File tree

3 files changed

+75
-5
lines changed

3 files changed

+75
-5
lines changed

configure

+57
Original file line numberDiff line numberDiff line change
@@ -422,11 +422,17 @@ path_toolname() {
422422
emcc) toolname="emcc";;
423423
*/em++) toolname="emxx";;
424424
em++) toolname="emxx";;
425+
*/cosmocc) toolname="cosmocc";;
426+
cosmocc) toolname="cosmocc";;
427+
*/cosmoc++) toolname="cosmocxx";;
428+
cosmoc++) toolname="cosmocxx";;
425429
*-ar) toolname="ar";;
426430
*/ar) toolname="ar";;
427431
ar) toolname="ar";;
428432
*/emar) toolname="emar";;
429433
emar) toolname="emar";;
434+
*/cosmoar) toolname="cosmoar";;
435+
cosmoar) toolname="cosmoar";;
430436
cc) toolname="gcc";;
431437
*/cc) toolname="gcc";;
432438
c++) toolname="gxx";;
@@ -985,6 +991,8 @@ _get_abstract_flags() {
985991
clangxx) _get_abstract_flag_for_gcc_clang "${toolkind}" "${toolname}" "${itemname}" "${value}"; flag="${_ret}";;
986992
emcc) _get_abstract_flag_for_gcc_clang "${toolkind}" "${toolname}" "${itemname}" "${value}"; flag="${_ret}";;
987993
emxx) _get_abstract_flag_for_gcc_clang "${toolkind}" "${toolname}" "${itemname}" "${value}"; flag="${_ret}";;
994+
cosmocc) _get_abstract_flag_for_gcc_clang "${toolkind}" "${toolname}" "${itemname}" "${value}"; flag="${_ret}";;
995+
cosmocxx) _get_abstract_flag_for_gcc_clang "${toolkind}" "${toolname}" "${itemname}" "${value}"; flag="${_ret}";;
988996
*) raise "unknown toolname(${toolname})!" ;;
989997
esac
990998
if test_nz "${flag}"; then
@@ -1702,8 +1710,11 @@ _get_target_toolchain_flags() {
17021710
clangxx) _get_target_toolchain_flags_for_clang "${name}" "${toolkind}"; flags="${_ret}";;
17031711
emcc) _get_target_toolchain_flags_for_clang "${name}" "${toolkind}"; flags="${_ret}";;
17041712
emxx) _get_target_toolchain_flags_for_clang "${name}" "${toolkind}"; flags="${_ret}";;
1713+
cosmocc) _get_target_toolchain_flags_for_gcc "${name}" "${toolkind}"; flags="${_ret}";;
1714+
cosmocxx) _get_target_toolchain_flags_for_gcc "${name}" "${toolkind}"; flags="${_ret}";;
17051715
ar) _get_target_toolchain_flags_for_ar "${name}" "${toolkind}"; flags="${_ret}";;
17061716
emar) _get_target_toolchain_flags_for_ar "${name}" "${toolkind}"; flags="${_ret}";;
1717+
cosmoar) _get_target_toolchain_flags_for_ar "${name}" "${toolkind}"; flags="${_ret}";;
17071718
*) raise "unknown toolname(${toolname})!" ;;
17081719
esac
17091720
_ret="${flags}"
@@ -2719,6 +2730,7 @@ Common options:
27192730
- mingw
27202731
- macosx
27212732
- linux
2733+
- wasm
27222734
--arch=ARCH Compile for the given architecture. (default: '"${_target_arch_default}"')
27232735
- msys: i386 x86_64
27242736
- cross: i386 x86_64 arm arm64 mips mips64 riscv riscv64 loong64 s390x ppc ppc64 sh4
@@ -2736,6 +2748,8 @@ Common options:
27362748
--toolchain=TOOLCHAIN Set toolchain name.
27372749
- clang
27382750
- gcc
2751+
- emcc
2752+
- cosmocc
27392753
--buildir=DIR Set build directory. (default: '"${xmake_sh_buildir}"')
27402754
27412755
Autoconf options:
@@ -3027,6 +3041,18 @@ toolchain "emcc"
30273041
set_toolset "ar" "emar" "ar"
30283042
toolchain_end
30293043

3044+
# cosmocc toolchain, e.g. ./configure --plat=linux --toolchain=cosmocc
3045+
toolchain "cosmocc"
3046+
set_toolset "as" "cosmocc"
3047+
set_toolset "cc" "cosmocc"
3048+
set_toolset "cxx" "cosmocc" "cosmoc++"
3049+
set_toolset "mm" "cosmocc"
3050+
set_toolset "mxx" "cosmocc" "cosmoc++"
3051+
set_toolset "ld" "cosmoc++" "cosmocc"
3052+
set_toolset "sh" "cosmoc++" "cosmocc"
3053+
set_toolset "ar" "cosmoar"
3054+
toolchain_end
3055+
30303056
# check platform
30313057
_check_platform() {
30323058
if test "x${_target_plat}" = "x"; then
@@ -3093,6 +3119,8 @@ _toolchain_compcmd() {
30933119
clangxx) _toolchain_compcmd_for_gcc_clang "${program}" "${objectfile}" "${sourcefile}" "${flags}"; compcmd="${_ret}";;
30943120
emcc) _toolchain_compcmd_for_gcc_clang "${program}" "${objectfile}" "${sourcefile}" "${flags}"; compcmd="${_ret}";;
30953121
emxx) _toolchain_compcmd_for_gcc_clang "${program}" "${objectfile}" "${sourcefile}" "${flags}"; compcmd="${_ret}";;
3122+
cosmocc) _toolchain_compcmd_for_gcc_clang "${program}" "${objectfile}" "${sourcefile}" "${flags}"; compcmd="${_ret}";;
3123+
cosmocxx) _toolchain_compcmd_for_gcc_clang "${program}" "${objectfile}" "${sourcefile}" "${flags}"; compcmd="${_ret}";;
30963124
*) raise "unknown toolname(${toolname})!" ;;
30973125
esac
30983126
_ret="${compcmd}"
@@ -3113,8 +3141,11 @@ _toolchain_linkcmd() {
31133141
clangxx) _toolchain_linkcmd_for_gcc_clang "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
31143142
emcc) _toolchain_linkcmd_for_gcc_clang "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
31153143
emxx) _toolchain_linkcmd_for_gcc_clang "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
3144+
cosmocc) _toolchain_linkcmd_for_gcc_clang "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
3145+
cosmocxx) _toolchain_linkcmd_for_gcc_clang "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
31163146
ar) _toolchain_linkcmd_for_ar "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
31173147
emar) _toolchain_linkcmd_for_ar "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
3148+
cosmoar) _toolchain_linkcmd_for_ar "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
31183149
*) raise "unknown toolname(${toolname})!" ;;
31193150
esac
31203151
_ret="${linkcmd}"
@@ -3237,6 +3268,24 @@ _toolchain_try_ar() {
32373268
return 1
32383269
}
32393270

3271+
# try cosmoar
3272+
_toolchain_try_cosmoar() {
3273+
if test "x${_toolchain_try_cosmoar_result}" = "xok"; then
3274+
return 0
3275+
elif test "x${_toolchain_try_cosmoar_result}" = "xno"; then
3276+
return 1
3277+
fi
3278+
3279+
local kind="${1}"
3280+
local program="${2}"
3281+
if _os_runv "${program}" "--version"; then
3282+
_toolchain_try_cosmoar_result="ok"
3283+
return 0
3284+
fi
3285+
_toolchain_try_cosmoar_result="no"
3286+
return 1
3287+
}
3288+
32403289
# try program
32413290
_toolchain_try_program() {
32423291
local toolchain="${1}"
@@ -3251,8 +3300,11 @@ _toolchain_try_program() {
32513300
clangxx) _toolchain_try_clangxx "${kind}" "${program}" && ok=true;;
32523301
emcc) _toolchain_try_clang "${kind}" "${program}" && ok=true;;
32533302
emxx) _toolchain_try_clangxx "${kind}" "${program}" && ok=true;;
3303+
cosmocc) _toolchain_try_gcc "${kind}" "${program}" && ok=true;;
3304+
cosmocxx) _toolchain_try_gxx "${kind}" "${program}" && ok=true;;
32543305
ar) _toolchain_try_ar "${kind}" "${program}" && ok=true;;
32553306
emar) _toolchain_try_ar "${kind}" "${program}" && ok=true;;
3307+
cosmoar) _toolchain_try_cosmoar "${kind}" "${program}" && ok=true;;
32563308
*) raise "unknown toolname(${toolname})!" ;;
32573309
esac
32583310
if ${ok}; then
@@ -3982,6 +4034,8 @@ _gmake_add_build_object() {
39824034
clangxx) _gmake_add_build_object_for_gcc_clang "${sourcekind}" "${sourcefile}" "${objectfile}" "${flagname}";;
39834035
emcc) _gmake_add_build_object_for_gcc_clang "${sourcekind}" "${sourcefile}" "${objectfile}" "${flagname}";;
39844036
emxx) _gmake_add_build_object_for_gcc_clang "${sourcekind}" "${sourcefile}" "${objectfile}" "${flagname}";;
4037+
cosmocc) _gmake_add_build_object_for_gcc_clang "${sourcekind}" "${sourcefile}" "${objectfile}" "${flagname}";;
4038+
cosmocxx) _gmake_add_build_object_for_gcc_clang "${sourcekind}" "${sourcefile}" "${objectfile}" "${flagname}";;
39854039
*) raise "unknown toolname(${toolname})!" ;;
39864040
esac
39874041
echo "" >> "${xmake_sh_makefile}"
@@ -4062,8 +4116,11 @@ _gmake_add_build_target() {
40624116
clangxx) _gmake_add_build_target_for_gcc_clang "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
40634117
emcc) _gmake_add_build_target_for_gcc_clang "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
40644118
emxx) _gmake_add_build_target_for_gcc_clang "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
4119+
cosmocc) _gmake_add_build_target_for_gcc_clang "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
4120+
cosmocxx) _gmake_add_build_target_for_gcc_clang "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
40654121
ar) _gmake_add_build_target_for_ar "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
40664122
emar) _gmake_add_build_target_for_ar "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
4123+
cosmoar) _gmake_add_build_target_for_ar "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
40674124
*) raise "unknown toolname(${toolname})!" ;;
40684125
esac
40694126

core/src/tbox/inc/linux/tbox.config.h

+17-4
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,13 @@
171171
#define TB_CONFIG_POSIX_HAVE_FDATASYNC 1
172172
/* #undef TB_CONFIG_POSIX_HAVE_COPYFILE */
173173
#define TB_CONFIG_POSIX_HAVE_SENDFILE 1
174-
#define TB_CONFIG_POSIX_HAVE_EPOLL_CREATE 1
175-
#define TB_CONFIG_POSIX_HAVE_EPOLL_WAIT 1
174+
#ifdef __COSMOPOLITAN__
175+
/* #undef TB_CONFIG_POSIX_HAVE_EPOLL_CREATE */
176+
/* #undef TB_CONFIG_POSIX_HAVE_EPOLL_WAIT */
177+
#else
178+
# define TB_CONFIG_POSIX_HAVE_EPOLL_CREATE 1
179+
# define TB_CONFIG_POSIX_HAVE_EPOLL_WAIT 1
180+
#endif
176181
#if defined(__ANDROID__)
177182
/* #undef TB_CONFIG_POSIX_HAVE_POSIX_SPAWNP */
178183
#else
@@ -196,7 +201,11 @@
196201
#define TB_CONFIG_POSIX_HAVE_FCNTL 1
197202
#define TB_CONFIG_POSIX_HAVE_PIPE 1
198203
/* #undef TB_CONFIG_POSIX_HAVE_PIPE2 */
199-
#define TB_CONFIG_POSIX_HAVE_MKFIFO 1
204+
#ifdef __COSMOPOLITAN__
205+
/* #undef TB_CONFIG_POSIX_HAVE_MKFIFO */
206+
#else
207+
# define TB_CONFIG_POSIX_HAVE_MKFIFO 1
208+
#endif
200209
#define TB_CONFIG_POSIX_HAVE_FUTIMENS 1
201210
#define TB_CONFIG_POSIX_HAVE_UTIMENSAT 1
202211

@@ -211,6 +220,10 @@
211220
/* #undef TB_CONFIG_SYSTEMV_HAVE_VALGRIND_STACK_REGISTER */
212221

213222
// linux functions
214-
#define TB_CONFIG_LINUX_HAVE_INOTIFY_INIT 1
223+
#ifdef __COSMOPOLITAN__
224+
/* #undef TB_CONFIG_LINUX_HAVE_INOTIFY_INIT */
225+
#else
226+
# define TB_CONFIG_LINUX_HAVE_INOTIFY_INIT 1
227+
#endif
215228

216229
#endif

0 commit comments

Comments
 (0)