summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2024-08-20 23:53:26 +0800
committerruki <[email protected]>2024-08-20 23:53:26 +0800
commite6195512cadcb7394cf787da38147dbbf11ddc7c (patch)
treec890684bf8faea65eb9f84afbf75e12e6576faed
parent4a647b14f86e336e178ba71b7c45c6a5e9e289d8 (diff)
support for cosmocc
-rwxr-xr-xconfigure57
-rwxr-xr-xcore/src/tbox/inc/linux/tbox.config.h21
m---------core/src/tbox/tbox0
3 files changed, 74 insertions, 4 deletions
diff --git a/configure b/configure
index da16d81fe..2ca2da6f8 100755
--- a/configure
+++ b/configure
@@ -422,11 +422,17 @@ path_toolname() {
emcc) toolname="emcc";;
*/em++) toolname="emxx";;
em++) toolname="emxx";;
+ */cosmocc) toolname="cosmocc";;
+ cosmocc) toolname="cosmocc";;
+ */cosmoc++) toolname="cosmocxx";;
+ cosmoc++) toolname="cosmocxx";;
*-ar) toolname="ar";;
*/ar) toolname="ar";;
ar) toolname="ar";;
*/emar) toolname="emar";;
emar) toolname="emar";;
+ */cosmoar) toolname="cosmoar";;
+ cosmoar) toolname="cosmoar";;
cc) toolname="gcc";;
*/cc) toolname="gcc";;
c++) toolname="gxx";;
@@ -985,6 +991,8 @@ _get_abstract_flags() {
clangxx) _get_abstract_flag_for_gcc_clang "${toolkind}" "${toolname}" "${itemname}" "${value}"; flag="${_ret}";;
emcc) _get_abstract_flag_for_gcc_clang "${toolkind}" "${toolname}" "${itemname}" "${value}"; flag="${_ret}";;
emxx) _get_abstract_flag_for_gcc_clang "${toolkind}" "${toolname}" "${itemname}" "${value}"; flag="${_ret}";;
+ cosmocc) _get_abstract_flag_for_gcc_clang "${toolkind}" "${toolname}" "${itemname}" "${value}"; flag="${_ret}";;
+ cosmocxx) _get_abstract_flag_for_gcc_clang "${toolkind}" "${toolname}" "${itemname}" "${value}"; flag="${_ret}";;
*) raise "unknown toolname(${toolname})!" ;;
esac
if test_nz "${flag}"; then
@@ -1702,8 +1710,11 @@ _get_target_toolchain_flags() {
clangxx) _get_target_toolchain_flags_for_clang "${name}" "${toolkind}"; flags="${_ret}";;
emcc) _get_target_toolchain_flags_for_clang "${name}" "${toolkind}"; flags="${_ret}";;
emxx) _get_target_toolchain_flags_for_clang "${name}" "${toolkind}"; flags="${_ret}";;
+ cosmocc) _get_target_toolchain_flags_for_gcc "${name}" "${toolkind}"; flags="${_ret}";;
+ cosmocxx) _get_target_toolchain_flags_for_gcc "${name}" "${toolkind}"; flags="${_ret}";;
ar) _get_target_toolchain_flags_for_ar "${name}" "${toolkind}"; flags="${_ret}";;
emar) _get_target_toolchain_flags_for_ar "${name}" "${toolkind}"; flags="${_ret}";;
+ cosmoar) _get_target_toolchain_flags_for_ar "${name}" "${toolkind}"; flags="${_ret}";;
*) raise "unknown toolname(${toolname})!" ;;
esac
_ret="${flags}"
@@ -2719,6 +2730,7 @@ Common options:
- mingw
- macosx
- linux
+ - wasm
--arch=ARCH Compile for the given architecture. (default: '"${_target_arch_default}"')
- msys: i386 x86_64
- cross: i386 x86_64 arm arm64 mips mips64 riscv riscv64 loong64 s390x ppc ppc64 sh4
@@ -2736,6 +2748,8 @@ Common options:
--toolchain=TOOLCHAIN Set toolchain name.
- clang
- gcc
+ - emcc
+ - cosmocc
--buildir=DIR Set build directory. (default: '"${xmake_sh_buildir}"')
Autoconf options:
@@ -3027,6 +3041,18 @@ toolchain "emcc"
set_toolset "ar" "emar" "ar"
toolchain_end
+# cosmocc toolchain, e.g. ./configure --plat=linux --toolchain=cosmocc
+toolchain "cosmocc"
+ set_toolset "as" "cosmocc"
+ set_toolset "cc" "cosmocc"
+ set_toolset "cxx" "cosmocc" "cosmoc++"
+ set_toolset "mm" "cosmocc"
+ set_toolset "mxx" "cosmocc" "cosmoc++"
+ set_toolset "ld" "cosmoc++" "cosmocc"
+ set_toolset "sh" "cosmoc++" "cosmocc"
+ set_toolset "ar" "cosmoar"
+toolchain_end
+
# check platform
_check_platform() {
if test "x${_target_plat}" = "x"; then
@@ -3093,6 +3119,8 @@ _toolchain_compcmd() {
clangxx) _toolchain_compcmd_for_gcc_clang "${program}" "${objectfile}" "${sourcefile}" "${flags}"; compcmd="${_ret}";;
emcc) _toolchain_compcmd_for_gcc_clang "${program}" "${objectfile}" "${sourcefile}" "${flags}"; compcmd="${_ret}";;
emxx) _toolchain_compcmd_for_gcc_clang "${program}" "${objectfile}" "${sourcefile}" "${flags}"; compcmd="${_ret}";;
+ cosmocc) _toolchain_compcmd_for_gcc_clang "${program}" "${objectfile}" "${sourcefile}" "${flags}"; compcmd="${_ret}";;
+ cosmocxx) _toolchain_compcmd_for_gcc_clang "${program}" "${objectfile}" "${sourcefile}" "${flags}"; compcmd="${_ret}";;
*) raise "unknown toolname(${toolname})!" ;;
esac
_ret="${compcmd}"
@@ -3113,8 +3141,11 @@ _toolchain_linkcmd() {
clangxx) _toolchain_linkcmd_for_gcc_clang "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
emcc) _toolchain_linkcmd_for_gcc_clang "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
emxx) _toolchain_linkcmd_for_gcc_clang "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
+ cosmocc) _toolchain_linkcmd_for_gcc_clang "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
+ cosmocxx) _toolchain_linkcmd_for_gcc_clang "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
ar) _toolchain_linkcmd_for_ar "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
emar) _toolchain_linkcmd_for_ar "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
+ cosmoar) _toolchain_linkcmd_for_ar "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
*) raise "unknown toolname(${toolname})!" ;;
esac
_ret="${linkcmd}"
@@ -3237,6 +3268,24 @@ _toolchain_try_ar() {
return 1
}
+# try cosmoar
+_toolchain_try_cosmoar() {
+ if test "x${_toolchain_try_cosmoar_result}" = "xok"; then
+ return 0
+ elif test "x${_toolchain_try_cosmoar_result}" = "xno"; then
+ return 1
+ fi
+
+ local kind="${1}"
+ local program="${2}"
+ if _os_runv "${program}" "--version"; then
+ _toolchain_try_cosmoar_result="ok"
+ return 0
+ fi
+ _toolchain_try_cosmoar_result="no"
+ return 1
+}
+
# try program
_toolchain_try_program() {
local toolchain="${1}"
@@ -3251,8 +3300,11 @@ _toolchain_try_program() {
clangxx) _toolchain_try_clangxx "${kind}" "${program}" && ok=true;;
emcc) _toolchain_try_clang "${kind}" "${program}" && ok=true;;
emxx) _toolchain_try_clangxx "${kind}" "${program}" && ok=true;;
+ cosmocc) _toolchain_try_gcc "${kind}" "${program}" && ok=true;;
+ cosmocxx) _toolchain_try_gxx "${kind}" "${program}" && ok=true;;
ar) _toolchain_try_ar "${kind}" "${program}" && ok=true;;
emar) _toolchain_try_ar "${kind}" "${program}" && ok=true;;
+ cosmoar) _toolchain_try_cosmoar "${kind}" "${program}" && ok=true;;
*) raise "unknown toolname(${toolname})!" ;;
esac
if ${ok}; then
@@ -3982,6 +4034,8 @@ _gmake_add_build_object() {
clangxx) _gmake_add_build_object_for_gcc_clang "${sourcekind}" "${sourcefile}" "${objectfile}" "${flagname}";;
emcc) _gmake_add_build_object_for_gcc_clang "${sourcekind}" "${sourcefile}" "${objectfile}" "${flagname}";;
emxx) _gmake_add_build_object_for_gcc_clang "${sourcekind}" "${sourcefile}" "${objectfile}" "${flagname}";;
+ cosmocc) _gmake_add_build_object_for_gcc_clang "${sourcekind}" "${sourcefile}" "${objectfile}" "${flagname}";;
+ cosmocxx) _gmake_add_build_object_for_gcc_clang "${sourcekind}" "${sourcefile}" "${objectfile}" "${flagname}";;
*) raise "unknown toolname(${toolname})!" ;;
esac
echo "" >> "${xmake_sh_makefile}"
@@ -4062,8 +4116,11 @@ _gmake_add_build_target() {
clangxx) _gmake_add_build_target_for_gcc_clang "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
emcc) _gmake_add_build_target_for_gcc_clang "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
emxx) _gmake_add_build_target_for_gcc_clang "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
+ cosmocc) _gmake_add_build_target_for_gcc_clang "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
+ cosmocxx) _gmake_add_build_target_for_gcc_clang "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
ar) _gmake_add_build_target_for_ar "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
emar) _gmake_add_build_target_for_ar "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
+ cosmoar) _gmake_add_build_target_for_ar "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
*) raise "unknown toolname(${toolname})!" ;;
esac
diff --git a/core/src/tbox/inc/linux/tbox.config.h b/core/src/tbox/inc/linux/tbox.config.h
index fb8c99830..ec06d847b 100755
--- a/core/src/tbox/inc/linux/tbox.config.h
+++ b/core/src/tbox/inc/linux/tbox.config.h
@@ -171,8 +171,13 @@
#define TB_CONFIG_POSIX_HAVE_FDATASYNC 1
/* #undef TB_CONFIG_POSIX_HAVE_COPYFILE */
#define TB_CONFIG_POSIX_HAVE_SENDFILE 1
-#define TB_CONFIG_POSIX_HAVE_EPOLL_CREATE 1
-#define TB_CONFIG_POSIX_HAVE_EPOLL_WAIT 1
+#ifdef __COSMOPOLITAN__
+/* #undef TB_CONFIG_POSIX_HAVE_EPOLL_CREATE */
+/* #undef TB_CONFIG_POSIX_HAVE_EPOLL_WAIT */
+#else
+# define TB_CONFIG_POSIX_HAVE_EPOLL_CREATE 1
+# define TB_CONFIG_POSIX_HAVE_EPOLL_WAIT 1
+#endif
#if defined(__ANDROID__)
/* #undef TB_CONFIG_POSIX_HAVE_POSIX_SPAWNP */
#else
@@ -196,7 +201,11 @@
#define TB_CONFIG_POSIX_HAVE_FCNTL 1
#define TB_CONFIG_POSIX_HAVE_PIPE 1
/* #undef TB_CONFIG_POSIX_HAVE_PIPE2 */
-#define TB_CONFIG_POSIX_HAVE_MKFIFO 1
+#ifdef __COSMOPOLITAN__
+/* #undef TB_CONFIG_POSIX_HAVE_MKFIFO */
+#else
+# define TB_CONFIG_POSIX_HAVE_MKFIFO 1
+#endif
#define TB_CONFIG_POSIX_HAVE_FUTIMENS 1
#define TB_CONFIG_POSIX_HAVE_UTIMENSAT 1
@@ -211,6 +220,10 @@
/* #undef TB_CONFIG_SYSTEMV_HAVE_VALGRIND_STACK_REGISTER */
// linux functions
-#define TB_CONFIG_LINUX_HAVE_INOTIFY_INIT 1
+#ifdef __COSMOPOLITAN__
+/* #undef TB_CONFIG_LINUX_HAVE_INOTIFY_INIT */
+#else
+# define TB_CONFIG_LINUX_HAVE_INOTIFY_INIT 1
+#endif
#endif
diff --git a/core/src/tbox/tbox b/core/src/tbox/tbox
-Subproject 8ada0ab7f7eb98fa5eb4928b61b7701b0126a72
+Subproject f825b1e3a2181bdb6ef4b52ebbb5115be1d573e