@@ -42,6 +42,9 @@ elsewhen ($OS_DARWIN) {
4242elsewhen ($OS_WINDOWS) {
4343 GO_TARG_OS=windows
4444}
45+ elsewhen ($OS_ANDROID) {
46+ GO_TARG_OS=android
47+ }
4548
4649# tag:go-specific
4750GO_TARG_ARCH=unknown
@@ -516,6 +519,9 @@ elsewhen ($OS_LINUX) {
516519elsewhen ($OS_WINDOWS) {
517520 _GO_TOOLCHAIN_ENV_GOOS=${env:"GOOS=windows"}
518521}
522+ elsewhen ($OS_ANDROID) {
523+ _GO_TOOLCHAIN_ENV_GOOS=${env:"GOOS=android"}
524+ }
519525_GO_TOOLCHAIN_ENV_PATH=
520526
521527# tag:go-specific
@@ -809,7 +815,12 @@ module _GO_BASE_UNIT: _BASE_UNIT {
809815
810816 _GO_PROCESS_SRCS()
811817
812- when ($CLANG == "yes") {
818+ when ($CLANG == "yes" && $OS_ANDROID && $PIE) {
819+ # TODO: _GO_EXTLD just clang?
820+ _GO_EXTLD=aarch64-linux-android$ANDROID_API-clang
821+ GO_TOOLCHAIN_ENV += ${env:"CC=clang"}
822+ }
823+ elsewhen ($CLANG == "yes") {
813824 _GO_EXTLD=clang
814825 GO_TOOLCHAIN_ENV += ${env:"CC=clang"}
815826 }
@@ -823,7 +834,7 @@ module _GO_BASE_UNIT: _BASE_UNIT {
823834 GO_EXTLD = ++extld $_GO_EXTLD ++extldflags $_GO_SONAME $LD_SDK_VERSION -undefined dynamic_lookup $C_FLAGS_PLATFORM --sysroot=$MACOS_SDK_RESOURCE_GLOBAL --start-wa ${rootrel;ext=.a:SRCS_GLOBAL} --end-wa ${rootrel;ext=.o:SRCS_GLOBAL} --cgo-peers $LDFLAGS $LDFLAGS_GLOBAL $OBJADDE $OBJADDE_LIB $OBJADDE_LIB_GLOBAL $GO_LDFLAGS_GLOBAL $C_LIBRARY_PATH $C_SYSTEM_LIBRARIES_INTERCEPT $C_SYSTEM_LIBRARIES $STRIP_FLAG
824835 CGO2_LDFLAGS_VALUE += $LD_SDK_VERSION -undefined dynamic_lookup -nodefaultlibs -lc
825836 }
826- elsewhen ($OS_LINUX) {
837+ elsewhen ($OS_LINUX || $OS_ANDROID ) {
827838 GO_EXTLD = ++extld $_GO_EXTLD ++extldflags $_GO_SONAME $C_FLAGS_PLATFORM --sysroot=$OS_SDK_ROOT_RESOURCE_GLOBAL -Wl,--whole-archive ${rootrel;ext=.a:SRCS_GLOBAL} -Wl,--no-whole-archive ${rootrel;ext=.o:SRCS_GLOBAL} --cgo-peers $LDFLAGS $LDFLAGS_GLOBAL $OBJADDE $OBJADDE_LIB $OBJADDE_LIB_GLOBAL $GO_LDFLAGS_GLOBAL $C_LIBRARY_PATH $C_SYSTEM_LIBRARIES_INTERCEPT $C_SYSTEM_LIBRARIES $STRIP_FLAG
828839 CGO2_LDFLAGS_VALUE += -Wl,--unresolved-symbols=ignore-all -nodefaultlibs -lc
829840 }
@@ -984,12 +995,12 @@ module _GO_DLL_BASE_UNIT: GO_PROGRAM {
984995 when ($OS_DARWIN) {
985996 _GO_SONAME=-Wl,-install_name,$SONAME
986997 }
987- elsewhen ($OS_LINUX) {
998+ elsewhen ($OS_LINUX || $OS_ANDROID ) {
988999 _GO_SONAME=-Wl,-soname,$SONAME
9891000 }
9901001
9911002 when ($MODULE_VERSION) {
992- when ($OS_LINUX || $OS_DARWIN) {
1003+ when ($OS_LINUX || $OS_DARWIN || $OS_ANDROID ) {
9931004 _GO_LINK_EXE_EXT_CMD+= && $LINK_OR_COPY_CMD $TARGET ${output;nopath;noext:SONAME}
9941005 }
9951006 }
0 commit comments