diff options
| author | IllusionMan1212 <hisham.abourgheba@gmail.com> | 2025-04-07 13:02:14 +0200 |
|---|---|---|
| committer | IllusionMan1212 <hisham.abourgheba@gmail.com> | 2025-04-07 13:02:14 +0200 |
| commit | 7d2a8dc8eeda63d639f53f9c6d3089d849b9d33c (patch) | |
| tree | d7655170cc97d73fda49230f1acb4bc3a86582e9 /src/linker.cpp | |
| parent | 9a2b6c01aa2853a87ac5cff2f9981ffce39a2293 (diff) | |
fix: use the clang binary that's provided by the android NDK
always link against libandroid because it's needed by the glue code.
Diffstat (limited to 'src/linker.cpp')
| -rw-r--r-- | src/linker.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/linker.cpp b/src/linker.cpp index 3ed924ac3..cfd09dd32 100644 --- a/src/linker.cpp +++ b/src/linker.cpp @@ -643,9 +643,10 @@ try_cross_linking:; android_glue_object = concatenate4_strings(temporary_allocator(), temp_dir, str_lit("android_native_app_glue-"), hash, str_lit(".o")); android_glue_static_lib = concatenate4_strings(permanent_allocator(), temp_dir, str_lit("libandroid_native_app_glue-"), hash, str_lit(".a")); - gbString glue = gb_string_make(heap_allocator(), clang_path); + gbString glue = gb_string_make_length(heap_allocator(), ODIN_ANDROID_NDK_TOOLCHAIN.text, ODIN_ANDROID_NDK_TOOLCHAIN.len); defer (gb_string_free(glue)); + glue = gb_string_append_fmt(glue, "bin/clang"); glue = gb_string_append_fmt(glue, " --target=aarch64-linux-android%d ", ODIN_ANDROID_API_LEVEL); glue = gb_string_appendc(glue, "-c \""); glue = gb_string_append_length(glue, ODIN_ANDROID_NDK.text, ODIN_ANDROID_NDK.len); @@ -808,6 +809,8 @@ try_cross_linking:; platform_lib_str = gb_string_append_length(platform_lib_str, ODIN_ANDROID_NDK_TOOLCHAIN_LIB_LEVEL.text, ODIN_ANDROID_NDK_TOOLCHAIN_LIB_LEVEL.len); platform_lib_str = gb_string_appendc(platform_lib_str, "\" "); + platform_lib_str = gb_string_appendc(platform_lib_str, "-landroid "); + platform_lib_str = gb_string_appendc(platform_lib_str, "\"--sysroot="); platform_lib_str = gb_string_append_length(platform_lib_str, ODIN_ANDROID_NDK_TOOLCHAIN_SYSROOT.text, ODIN_ANDROID_NDK_TOOLCHAIN_SYSROOT.len); platform_lib_str = gb_string_appendc(platform_lib_str, "\" "); @@ -840,12 +843,16 @@ try_cross_linking:; } } - gbString link_command_line = gb_string_make(heap_allocator(), clang_path); + gbString link_command_line = gb_string_make(heap_allocator(), ""); defer (gb_string_free(link_command_line)); if (is_android) { + gbString ndk_bin_directory = gb_string_make_length(temporary_allocator(), ODIN_ANDROID_NDK_TOOLCHAIN.text, ODIN_ANDROID_NDK_TOOLCHAIN.len); + link_command_line = gb_string_appendc(link_command_line, ndk_bin_directory); + link_command_line = gb_string_appendc(link_command_line, "bin/clang"); link_command_line = gb_string_append_fmt(link_command_line, " --target=aarch64-linux-android%d ", ODIN_ANDROID_API_LEVEL); - link_command_line = gb_string_appendc(link_command_line, " -nodefaultlibs"); + } else { + link_command_line = gb_string_appendc(link_command_line, clang_path); } link_command_line = gb_string_appendc(link_command_line, " -Wno-unused-command-line-argument "); link_command_line = gb_string_appendc(link_command_line, object_files); |