X-Git-Url: http://nitlanguage.org diff --git a/src/platform/android.nit b/src/platform/android.nit index db28b7f..f4b04a6 100644 --- a/src/platform/android.nit +++ b/src/platform/android.nit @@ -34,6 +34,10 @@ end class AndroidPlatform super Platform + redef fun name do return "android" + + redef fun supports_libgc do return true + redef fun supports_libunwind do return false redef fun supports_linker_script do return false @@ -136,23 +140,32 @@ class AndroidToolchain end end - ## Generate delagating makefile + ## Generate delegating makefile dir = "{android_project_root}/jni/" """ include $(call all-subdir-makefiles) """.write_to_file("{dir}/Android.mk") + # Gather ldflags for Android + var ldflags = new Array[String] + var platform_name = "android" + for mmodule in compiler.mainmodule.in_importation.greaters do + if mmodule.ldflags.keys.has(platform_name) then + ldflags.add_all mmodule.ldflags[platform_name] + end + end + ### generate makefile into "{compile_dir}/Android.mk" dir = compile_dir """ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) -LOCAL_CFLAGS := -D ANDROID +LOCAL_CFLAGS := -D ANDROID -D WITH_LIBGC LOCAL_MODULE := main LOCAL_SRC_FILES := \\ {{{cfiles.join(" \\\n")}}} -LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM -lz +LOCAL_LDLIBS := {{{ldflags.join(" ")}}} libgc.a LOCAL_STATIC_LIBRARIES := android_native_app_glue png include $(BUILD_SHARED_LIBRARY) @@ -222,6 +235,15 @@ $(call import-module,android/native_app_glue) toolcontext.exec_and_check(["ln", "-s", "{share_dir}/png/", target_png_dir], "Android project error") end + # Ensure that android-setup-libgc.sh has been executed + if not "{share_dir}/libgc/lib".file_exists then + toolcontext.exec_and_check(["{share_dir}/libgc/android-setup-libgc.sh"], "Android project error") + end + + # Copy GC files + toolcontext.exec_and_check(["cp", "{share_dir}/libgc/lib/libgc.a", "{android_project_root}/libgc.a"], "Android project error") + toolcontext.exec_and_check(["ln", "-s", "{share_dir}/libgc/include/gc/", "{android_project_root}/jni/nit_compile/gc"], "Android project error") + ### Link to assets (for mnit and others) # This will be accessed from `android_project_root` var assets_dir