Looks like it’s possible, but my script produces odd results:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
include $(LOCAL_PATH)/libos/Android.mk
include $(LOCAL_PATH)/libbase/Android.mk
include $(LOCAL_PATH)/utils/Android.mk
LOCAL_MODULE := native
include $(BUILD_SHARED_LIBRARY)
Only the first include is being parsed fine, other Android.mk files are being seacrhed at odd paths.
Suggestions?
Update: I have broken my building environment… It was OK in the office, but at home LOCAL_PATH:= $(call my-dir) defines LOCAL_PATH to NDK dir instead of project dir. This is my batch for building:
set BASHPATH=K:\cygwin\bin\bash
set PROJECTDIR=/cygdrive/h/Alex/Alex/Work/Android/remote-android
set NDKDIR=/cygdrive/h/Alex/Programming_Docs/Android/android-ndk-r6/ndk-build
set APP_BUILD_SCRIPT=/cygdrive/h/Alex/Alex/Work/Android/project/jni/Android.mk
set DEV_ROOT=h:/Alex/Alex/Work/Android/project
%BASHPATH% --login -c "cd %PROJECTDIR% && %NDKDIR%"
Update: I absolutely don’t understand how does this thing compose paths. I’m getting errors with paths like “/cygdrive/d/project/jni//cygdrive/d/Soft/project/jni/libos/src/libos.cpp’. This is after I decided to specify all files in the root Android.mk instead of including submodules.
Update 2: No luck, this doesn’t work either:
LOCAL_PATH:= $(call my-dir)
# Include makefiles here.
include $(LOCAL_PATH)/libos/Android.mk
include $(LOCAL_PATH)/libbase/Android.mk
include $(LOCAL_PATH)/utils/Android.mk
# Clear variables here.
include $(CLEAR_VARS)
Pretty late here, but in case somebody reads this question, one way to get past the problem of broken paths(pointing to the ndk insted of your files from the jni) is to have in your jni folder:
and then in every subfolder of it (libos, libbase and ustils inthe case of OP) an Android.mk of this form:
where this second Android.mk in with the one.c and two.c files in a subfolder found in the jni folder.
Note that trying something as
will lead again to a confused compiler looking for your source code where the ndk is.
So, use the LOCAL_PATH := $(call my-dir) EXACTLY in this form in every subdirectory of the jni and include $(call all-subdir-makefiles) in the jni itself and you shouldn’t have problems.
Hope this will help someone.
Edit: this behaviour happens because what is kept in LOCAL_PATH is not deleted by include $(CLEAR_VARS).