@@ -1010,6 +1010,31 @@ toolchains::Linux::constructInvocation(const LinkJobAction &job,
1010
1010
Arguments.push_back (context.Args .MakeArgString (LibProfile));
1011
1011
}
1012
1012
1013
+ if (getTriple ().isAndroid ()) {
1014
+ // FIXME: Android: hard-coded paths to arm; needs to fix for arm64, x86
1015
+ Arguments.push_back (" -target" );
1016
+ Arguments.push_back (" armv7-none-linux-androideabi" );
1017
+ // Arguments.push_back(context.Args.MakeArgString(getTriple().str()));
1018
+
1019
+ const char * ndkhome = getenv (" ANDROID_NDK_HOME" );
1020
+ assert (ndkhome && " ANDROID_NDK_HOME needs to be set to NDK "
1021
+ " install directory for linking" );
1022
+
1023
+ auto libgccpath = Twine (ndkhome) + " /toolchains/"
1024
+ " arm-linux-androideabi-4.8/prebuilt/linux-x86_64/"
1025
+ " lib/gcc/arm-linux-androideabi/4.8" ;
1026
+ Arguments.push_back (" -L" );
1027
+ Arguments.push_back (context.Args .MakeArgString (libgccpath));
1028
+
1029
+ auto libcxxpath = Twine (ndkhome) + " /sources/"
1030
+ " cxx-stl/llvm-libc++/libs/armeabi-v7a" ;
1031
+ Arguments.push_back (" -L" );
1032
+ Arguments.push_back (context.Args .MakeArgString (libcxxpath));
1033
+
1034
+ Arguments.push_back (" -lgcc" );
1035
+ Arguments.push_back (" -lc" );
1036
+ }
1037
+
1013
1038
// FIXME: We probably shouldn't be adding an rpath here unless we know ahead
1014
1039
// of time the standard library won't be copied.
1015
1040
Arguments.push_back (" -Xlinker" );
@@ -1032,7 +1057,8 @@ toolchains::Linux::constructInvocation(const LinkJobAction &job,
1032
1057
Arguments.push_back (" -Xlinker" );
1033
1058
Arguments.push_back (" -T" );
1034
1059
Arguments.push_back (
1035
- context.Args .MakeArgString (Twine (RuntimeLibPath) + " /x86_64/swift.ld" ));
1060
+ context.Args .MakeArgString (Twine (RuntimeLibPath) + " /" +
1061
+ getTriple ().getArchName () + " /swift.ld" ));
1036
1062
1037
1063
// This should be the last option, for convenience in checking output.
1038
1064
Arguments.push_back (" -o" );
0 commit comments