|
@@ -409,9 +409,15 @@ path_toolname() {
|
|
|
clang) toolname="clang";;
|
|
|
clang-*) toolname="clang";;
|
|
|
*/clang-*) toolname="clang";;
|
|
|
+ */emcc) toolname="emcc";;
|
|
|
+ emcc) toolname="emcc";;
|
|
|
+ */em++) toolname="emxx";;
|
|
|
+ em++) toolname="emxx";;
|
|
|
*-ar) toolname="ar";;
|
|
|
*/ar) toolname="ar";;
|
|
|
ar) toolname="ar";;
|
|
|
+ */emar) toolname="emar";;
|
|
|
+ emar) toolname="emar";;
|
|
|
cc) toolname="gcc";;
|
|
|
*/cc) toolname="gcc";;
|
|
|
c++) toolname="gxx";;
|
|
@@ -639,6 +645,8 @@ if is_host "msys"; then
|
|
|
_target_plat_default="mingw"
|
|
|
elif is_host "freebsd"; then
|
|
|
_target_plat_default="bsd"
|
|
|
+elif test_nz "${EMSDK}"; then
|
|
|
+ _target_plat_default="wasm"
|
|
|
fi
|
|
|
|
|
|
# set the default target architecture
|
|
@@ -940,6 +948,8 @@ _get_abstract_flags() {
|
|
|
gxx) _get_abstract_flag_for_gcc_clang "${toolkind}" "${toolname}" "${itemname}" "${value}"; flag="${_ret}";;
|
|
|
clang) _get_abstract_flag_for_gcc_clang "${toolkind}" "${toolname}" "${itemname}" "${value}"; flag="${_ret}";;
|
|
|
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}";;
|
|
|
*) raise "unknown toolname(${toolname})!" ;;
|
|
|
esac
|
|
|
if test_nz "${flag}"; then
|
|
@@ -1589,7 +1599,10 @@ _get_target_toolchain_flags() {
|
|
|
gxx) _get_target_toolchain_flags_for_gcc "${name}" "${toolkind}"; flags="${_ret}";;
|
|
|
clang) _get_target_toolchain_flags_for_clang "${name}" "${toolkind}"; flags="${_ret}";;
|
|
|
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}";;
|
|
|
ar) _get_target_toolchain_flags_for_ar "${name}" "${toolkind}"; flags="${_ret}";;
|
|
|
+ emar) _get_target_toolchain_flags_for_ar "${name}" "${toolkind}"; flags="${_ret}";;
|
|
|
*) raise "unknown toolname(${toolname})!" ;;
|
|
|
esac
|
|
|
_ret="${flags}"
|
|
@@ -2872,6 +2885,18 @@ toolchain "aarch64_linux_gnu"
|
|
|
set_toolset "ar" "aarch64-linux-gnu-ar" "ar"
|
|
|
toolchain_end
|
|
|
|
|
|
+# emcc toolchain (wasm32)
|
|
|
+toolchain "emcc"
|
|
|
+ set_toolset "as" "emcc"
|
|
|
+ set_toolset "cc" "emcc"
|
|
|
+ set_toolset "cxx" "emcc" "em++"
|
|
|
+ set_toolset "mm" "emcc"
|
|
|
+ set_toolset "mxx" "emcc" "em++"
|
|
|
+ set_toolset "ld" "em++" "emcc"
|
|
|
+ set_toolset "sh" "em++" "emcc"
|
|
|
+ set_toolset "ar" "emar" "ar"
|
|
|
+toolchain_end
|
|
|
+
|
|
|
# check platform
|
|
|
_check_platform() {
|
|
|
if test "x${_target_plat}" = "x"; then
|
|
@@ -2933,6 +2958,8 @@ _toolchain_compcmd() {
|
|
|
gxx) _toolchain_compcmd_for_gcc_clang "${program}" "${objectfile}" "${sourcefile}" "${flags}"; compcmd="${_ret}";;
|
|
|
clang) _toolchain_compcmd_for_gcc_clang "${program}" "${objectfile}" "${sourcefile}" "${flags}"; compcmd="${_ret}";;
|
|
|
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}";;
|
|
|
*) raise "unknown toolname(${toolname})!" ;;
|
|
|
esac
|
|
|
_ret="${compcmd}"
|
|
@@ -2951,7 +2978,10 @@ _toolchain_linkcmd() {
|
|
|
gxx) _toolchain_linkcmd_for_gcc_clang "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
|
|
|
clang) _toolchain_linkcmd_for_gcc_clang "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
|
|
|
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}";;
|
|
|
ar) _toolchain_linkcmd_for_ar "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
|
|
|
+ emar) _toolchain_linkcmd_for_ar "${toolkind}" "${program}" "${binaryfile}" "${objectfiles}" "${flags}"; linkcmd="${_ret}";;
|
|
|
*) raise "unknown toolname(${toolname})!" ;;
|
|
|
esac
|
|
|
_ret="${linkcmd}"
|
|
@@ -3086,7 +3116,10 @@ _toolchain_try_program() {
|
|
|
gxx) _toolchain_try_gxx "${kind}" "${program}" && ok=true;;
|
|
|
clang) _toolchain_try_clang "${kind}" "${program}" && ok=true;;
|
|
|
clangxx) _toolchain_try_clangxx "${kind}" "${program}" && ok=true;;
|
|
|
+ emcc) _toolchain_try_clang "${kind}" "${program}" && ok=true;;
|
|
|
+ emxx) _toolchain_try_clangxx "${kind}" "${program}" && ok=true;;
|
|
|
ar) _toolchain_try_ar "${kind}" "${program}" && ok=true;;
|
|
|
+ emar) _toolchain_try_ar "${kind}" "${program}" && ok=true;;
|
|
|
*) raise "unknown toolname(${toolname})!" ;;
|
|
|
esac
|
|
|
if ${ok}; then
|
|
@@ -3188,6 +3221,8 @@ _toolchain_detect() {
|
|
|
else
|
|
|
toolchains="x86_64_w64_mingw32"
|
|
|
fi
|
|
|
+ elif is_plat "wasm"; then
|
|
|
+ toolchains="emcc"
|
|
|
elif is_plat "linux" && ! is_arch "${os_arch}"; then
|
|
|
toolchains="envs"
|
|
|
if is_arch "arm64"; then
|
|
@@ -3815,6 +3850,8 @@ _gmake_add_build_object() {
|
|
|
gxx) _gmake_add_build_object_for_gcc_clang "${sourcekind}" "${sourcefile}" "${objectfile}" "${flagname}";;
|
|
|
clang) _gmake_add_build_object_for_gcc_clang "${sourcekind}" "${sourcefile}" "${objectfile}" "${flagname}";;
|
|
|
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}";;
|
|
|
*) raise "unknown toolname(${toolname})!" ;;
|
|
|
esac
|
|
|
echo "" >> "${xmake_sh_makefile}"
|
|
@@ -3893,7 +3930,10 @@ _gmake_add_build_target() {
|
|
|
gxx) _gmake_add_build_target_for_gcc_clang "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
|
|
|
clang) _gmake_add_build_target_for_gcc_clang "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
|
|
|
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}";;
|
|
|
ar) _gmake_add_build_target_for_ar "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
|
|
|
+ emar) _gmake_add_build_target_for_ar "${toolkind}" "${targetfile}" "${objectfiles}" "${flagname}";;
|
|
|
*) raise "unknown toolname(${toolname})!" ;;
|
|
|
esac
|
|
|
echo "" >> "${xmake_sh_makefile}"
|