Skip to content

Commit 69facbc

Browse files
authored
[android][coreclr] Make coreclr build specify HOST_ANDROID and include Android logging APIs (#112677)
- Define `HOST_ANDROID` for coreclr builds and link to Android logging APIs - Make `jitprintf` use [Android logging APIs](https://developer.android.com/ndk/reference/group/logging) if printing to stdout - This allows us to get [JIT disassembly output](https://github.com/dotnet/runtime/blob/main/docs/design/coreclr/jit/viewing-jit-dumps.md#disassembly-output) via logcat
1 parent 8d3b245 commit 69facbc

File tree

4 files changed

+21
-0
lines changed

4 files changed

+21
-0
lines changed

eng/native/configurecompiler.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,8 @@ if (CLR_CMAKE_HOST_UNIX)
439439
message("Detected Haiku x86_64")
440440
elseif(CLR_CMAKE_HOST_BROWSER)
441441
add_definitions(-DHOST_BROWSER)
442+
elseif(CLR_CMAKE_HOST_ANDROID)
443+
add_definitions(-DHOST_ANDROID)
442444
endif()
443445
elseif(CLR_CMAKE_HOST_WASI)
444446
add_definitions(-DHOST_WASI)

src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,11 @@ target_sources(coreclr_static PUBLIC $<TARGET_OBJECTS:cee_wks_core>)
191191
target_link_libraries(coreclr_static PUBLIC ${CORECLR_LIBRARIES} clrjit_static cee_wks_mergeable ${FOUNDATION})
192192
target_compile_definitions(coreclr_static PUBLIC CORECLR_EMBEDDED)
193193

194+
if (CLR_CMAKE_HOST_ANDROID)
195+
target_link_libraries(coreclr PUBLIC log)
196+
target_link_libraries(coreclr_static PUBLIC log)
197+
endif()
198+
194199
if(CLR_CMAKE_TARGET_WIN32)
195200
set(CLRDEBUGINFO_RESOURCE_PATH ${CMAKE_CURRENT_BINARY_DIR}/clr_debug_resource.bin)
196201

src/coreclr/jit/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,10 @@ else()
560560
)
561561
endif(CLR_CMAKE_HOST_UNIX)
562562

563+
if (CLR_CMAKE_HOST_ANDROID)
564+
list(APPEND JIT_LINK_LIBRARIES log)
565+
endif()
566+
563567
# Shared function for generating JIT
564568
function(add_jit jitName)
565569

src/coreclr/jit/ee_il_dll.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
2929
#define DLLEXPORT
3030
#endif // !DLLEXPORT
3131

32+
#if defined(HOST_ANDROID)
33+
#include <android/log.h>
34+
#endif
35+
3236
/*****************************************************************************/
3337

3438
ICorJitHost* g_jitHost = nullptr;
@@ -148,7 +152,13 @@ int jitprintf(const char* fmt, ...)
148152
{
149153
va_list vl;
150154
va_start(vl, fmt);
155+
#if defined(HOST_ANDROID)
156+
int status = jitstdout() == procstdout()
157+
? __android_log_vprint(ANDROID_LOG_VERBOSE, MAIN_CLR_MODULE_NAME_A, fmt, vl)
158+
: vfprintf(jitstdout(), fmt, vl);
159+
#else
151160
int status = vfprintf(jitstdout(), fmt, vl);
161+
#endif
152162
va_end(vl);
153163
return status;
154164
}

0 commit comments

Comments
 (0)