@@ -422,11 +422,17 @@ path_toolname() {
422
422
emcc) toolname=" emcc" ;;
423
423
* /em++) toolname=" emxx" ;;
424
424
em++) toolname=" emxx" ;;
425
+ * /cosmocc) toolname=" cosmocc" ;;
426
+ cosmocc) toolname=" cosmocc" ;;
427
+ * /cosmoc++) toolname=" cosmocxx" ;;
428
+ cosmoc++) toolname=" cosmocxx" ;;
425
429
* -ar) toolname=" ar" ;;
426
430
* /ar) toolname=" ar" ;;
427
431
ar) toolname=" ar" ;;
428
432
* /emar) toolname=" emar" ;;
429
433
emar) toolname=" emar" ;;
434
+ * /cosmoar) toolname=" cosmoar" ;;
435
+ cosmoar) toolname=" cosmoar" ;;
430
436
cc) toolname=" gcc" ;;
431
437
* /cc) toolname=" gcc" ;;
432
438
c++) toolname=" gxx" ;;
@@ -985,6 +991,8 @@ _get_abstract_flags() {
985
991
clangxx) _get_abstract_flag_for_gcc_clang " ${toolkind} " " ${toolname} " " ${itemname} " " ${value} " ; flag=" ${_ret} " ;;
986
992
emcc) _get_abstract_flag_for_gcc_clang " ${toolkind} " " ${toolname} " " ${itemname} " " ${value} " ; flag=" ${_ret} " ;;
987
993
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} " ;;
988
996
* ) raise " unknown toolname(${toolname} )!" ;;
989
997
esac
990
998
if test_nz " ${flag} " ; then
@@ -1702,8 +1710,11 @@ _get_target_toolchain_flags() {
1702
1710
clangxx) _get_target_toolchain_flags_for_clang " ${name} " " ${toolkind} " ; flags=" ${_ret} " ;;
1703
1711
emcc) _get_target_toolchain_flags_for_clang " ${name} " " ${toolkind} " ; flags=" ${_ret} " ;;
1704
1712
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} " ;;
1705
1715
ar) _get_target_toolchain_flags_for_ar " ${name} " " ${toolkind} " ; flags=" ${_ret} " ;;
1706
1716
emar) _get_target_toolchain_flags_for_ar " ${name} " " ${toolkind} " ; flags=" ${_ret} " ;;
1717
+ cosmoar) _get_target_toolchain_flags_for_ar " ${name} " " ${toolkind} " ; flags=" ${_ret} " ;;
1707
1718
* ) raise " unknown toolname(${toolname} )!" ;;
1708
1719
esac
1709
1720
_ret=" ${flags} "
@@ -2719,6 +2730,7 @@ Common options:
2719
2730
- mingw
2720
2731
- macosx
2721
2732
- linux
2733
+ - wasm
2722
2734
--arch=ARCH Compile for the given architecture. (default: ' " ${_target_arch_default} " ' )
2723
2735
- msys: i386 x86_64
2724
2736
- cross: i386 x86_64 arm arm64 mips mips64 riscv riscv64 loong64 s390x ppc ppc64 sh4
@@ -2736,6 +2748,8 @@ Common options:
2736
2748
--toolchain=TOOLCHAIN Set toolchain name.
2737
2749
- clang
2738
2750
- gcc
2751
+ - emcc
2752
+ - cosmocc
2739
2753
--buildir=DIR Set build directory. (default: ' " ${xmake_sh_buildir} " ' )
2740
2754
2741
2755
Autoconf options:
@@ -3027,6 +3041,18 @@ toolchain "emcc"
3027
3041
set_toolset " ar" " emar" " ar"
3028
3042
toolchain_end
3029
3043
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
+
3030
3056
# check platform
3031
3057
_check_platform () {
3032
3058
if test " x${_target_plat} " = " x" ; then
@@ -3093,6 +3119,8 @@ _toolchain_compcmd() {
3093
3119
clangxx) _toolchain_compcmd_for_gcc_clang " ${program} " " ${objectfile} " " ${sourcefile} " " ${flags} " ; compcmd=" ${_ret} " ;;
3094
3120
emcc) _toolchain_compcmd_for_gcc_clang " ${program} " " ${objectfile} " " ${sourcefile} " " ${flags} " ; compcmd=" ${_ret} " ;;
3095
3121
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} " ;;
3096
3124
* ) raise " unknown toolname(${toolname} )!" ;;
3097
3125
esac
3098
3126
_ret=" ${compcmd} "
@@ -3113,8 +3141,11 @@ _toolchain_linkcmd() {
3113
3141
clangxx) _toolchain_linkcmd_for_gcc_clang " ${toolkind} " " ${program} " " ${binaryfile} " " ${objectfiles} " " ${flags} " ; linkcmd=" ${_ret} " ;;
3114
3142
emcc) _toolchain_linkcmd_for_gcc_clang " ${toolkind} " " ${program} " " ${binaryfile} " " ${objectfiles} " " ${flags} " ; linkcmd=" ${_ret} " ;;
3115
3143
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} " ;;
3116
3146
ar) _toolchain_linkcmd_for_ar " ${toolkind} " " ${program} " " ${binaryfile} " " ${objectfiles} " " ${flags} " ; linkcmd=" ${_ret} " ;;
3117
3147
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} " ;;
3118
3149
* ) raise " unknown toolname(${toolname} )!" ;;
3119
3150
esac
3120
3151
_ret=" ${linkcmd} "
@@ -3237,6 +3268,24 @@ _toolchain_try_ar() {
3237
3268
return 1
3238
3269
}
3239
3270
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
+
3240
3289
# try program
3241
3290
_toolchain_try_program () {
3242
3291
local toolchain=" ${1} "
@@ -3251,8 +3300,11 @@ _toolchain_try_program() {
3251
3300
clangxx) _toolchain_try_clangxx " ${kind} " " ${program} " && ok=true;;
3252
3301
emcc) _toolchain_try_clang " ${kind} " " ${program} " && ok=true;;
3253
3302
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;;
3254
3305
ar) _toolchain_try_ar " ${kind} " " ${program} " && ok=true;;
3255
3306
emar) _toolchain_try_ar " ${kind} " " ${program} " && ok=true;;
3307
+ cosmoar) _toolchain_try_cosmoar " ${kind} " " ${program} " && ok=true;;
3256
3308
* ) raise " unknown toolname(${toolname} )!" ;;
3257
3309
esac
3258
3310
if ${ok} ; then
@@ -3982,6 +4034,8 @@ _gmake_add_build_object() {
3982
4034
clangxx) _gmake_add_build_object_for_gcc_clang " ${sourcekind} " " ${sourcefile} " " ${objectfile} " " ${flagname} " ;;
3983
4035
emcc) _gmake_add_build_object_for_gcc_clang " ${sourcekind} " " ${sourcefile} " " ${objectfile} " " ${flagname} " ;;
3984
4036
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} " ;;
3985
4039
* ) raise " unknown toolname(${toolname} )!" ;;
3986
4040
esac
3987
4041
echo " " >> " ${xmake_sh_makefile} "
@@ -4062,8 +4116,11 @@ _gmake_add_build_target() {
4062
4116
clangxx) _gmake_add_build_target_for_gcc_clang " ${toolkind} " " ${targetfile} " " ${objectfiles} " " ${flagname} " ;;
4063
4117
emcc) _gmake_add_build_target_for_gcc_clang " ${toolkind} " " ${targetfile} " " ${objectfiles} " " ${flagname} " ;;
4064
4118
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} " ;;
4065
4121
ar) _gmake_add_build_target_for_ar " ${toolkind} " " ${targetfile} " " ${objectfiles} " " ${flagname} " ;;
4066
4122
emar) _gmake_add_build_target_for_ar " ${toolkind} " " ${targetfile} " " ${objectfiles} " " ${flagname} " ;;
4123
+ cosmoar) _gmake_add_build_target_for_ar " ${toolkind} " " ${targetfile} " " ${objectfiles} " " ${flagname} " ;;
4067
4124
* ) raise " unknown toolname(${toolname} )!" ;;
4068
4125
esac
4069
4126
0 commit comments