@@ -7,29 +7,48 @@ cmake_minimum_required(VERSION 3.10)
77
88project (jni_library VERSION 0.0.1 LANGUAGES C)
99
10- add_library (jni SHARED
11- "dartjni.c"
12- "third_party/global_jni_env.c"
13- "include/dart_api_dl.c"
14- )
15-
16- set_target_properties (jni PROPERTIES
17- PUBLIC_HEADER dartjni.h
18- OUTPUT_NAME "dartjni"
19- )
20-
21- target_compile_definitions (jni PUBLIC DART_SHARED_LIB)
22-
23- if (WIN32 )
24- set_target_properties (${TARGET_NAME} PROPERTIES
25- LINK_FLAGS "/DELAYLOAD:jvm.dll" )
26- endif ()
27-
10+ set (JNI_AVAILABLE FALSE )
2811if (ANDROID)
29- target_link_libraries (jni log )
30- target_link_options (jni PRIVATE "-Wl,-z,max-page-size=16384" )
12+ set (JNI_AVAILABLE TRUE )
3113else ()
32- find_package (JNI REQUIRED COMPONENTS JVM)
33- include_directories (${JNI_INCLUDE_DIRS} )
34- target_link_libraries (jni ${JNI_LIBRARIES} )
14+ if (REQUIRE_JNI)
15+ # Standalone Dart Build: Fail strictly if JNI is missing
16+ find_package (JNI REQUIRED COMPONENTS JVM)
17+ set (JNI_AVAILABLE TRUE )
18+ else ()
19+ # Flutter Plugin Build: Try to find JNI, but don't fail if missing
20+ find_package (JNI COMPONENTS JVM)
21+ if (JNI_FOUND)
22+ set (JNI_AVAILABLE TRUE )
23+ endif ()
24+ endif ()
25+ endif ()
26+
27+ if (JNI_AVAILABLE)
28+ add_library (jni SHARED
29+ "dartjni.c"
30+ "third_party/global_jni_env.c"
31+ "include/dart_api_dl.c"
32+ )
33+
34+ set_target_properties (jni PROPERTIES
35+ PUBLIC_HEADER dartjni.h
36+ OUTPUT_NAME "dartjni"
37+ )
38+
39+ target_compile_definitions (jni PUBLIC DART_SHARED_LIB)
40+
41+ if (WIN32 )
42+ set_target_properties (${TARGET_NAME} PROPERTIES
43+ LINK_FLAGS "/DELAYLOAD:jvm.dll" )
44+ endif ()
45+
46+ if (ANDROID)
47+ target_link_libraries (jni log )
48+ target_link_options (jni PRIVATE "-Wl,-z,max-page-size=16384" )
49+ else ()
50+ find_package (JNI REQUIRED COMPONENTS JVM)
51+ include_directories (${JNI_INCLUDE_DIRS} )
52+ target_link_libraries (jni ${JNI_LIBRARIES} )
53+ endif ()
3554endif ()
0 commit comments