Skip to content

Commit 67463f1

Browse files
committed
Correct another piece of CMake code, reorganize APK target creation, add custom install target for deps
1 parent 1403c2f commit 67463f1

File tree

2 files changed

+73
-50
lines changed

2 files changed

+73
-50
lines changed

cmake/common.cmake

Lines changed: 72 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -363,70 +363,93 @@ macro(nbl_android_create_apk _TARGET)
363363
COMMAND ${ANDROID_JAVA_BIN}/keytool -genkey -keystore ${KEYSTORE_FILE} -storepass android -alias ${KEY_ENTRY_ALIAS} -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=, OU=, O=, L=, S=, C="
364364
)
365365

366-
set(D8_SCRIPT "${ANDROID_BUILD_TOOLS}/d8.bat")
367-
if(NOT EXISTS ${D8_SCRIPT})
368-
set(DEX_COMMAND ${ANDROID_BUILD_TOOLS}/d8 ./obj/eu/devsh/${TARGET_NAME}/Loader.class --output ./bin/)
369-
else()
370-
set(DEX_COMMAND ${D8_SCRIPT} --output ./bin/ ./obj/eu/devsh/${TARGET_NAME}/*.class)
371-
endif()
372-
#message(FATAL_ERROR "ANDROID_BUILD_TOOLS: ${ANDROID_BUILD_TOOLS}")
373-
#message(FATAL_ERROR "ANDROID_ANDROID_JAR_LOCATION: ${ANDROID_ANDROID_JAR_LOCATION}")
374-
#set(ANDROID_JAVA_RT_JAR "C:/Program Files (x86)/Java/jre1.8.0_301/lib/rt.jar")
375-
#message(FATAL_ERROR "ANDROID_JAR: ${ANDROID_JAR}")
366+
if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
367+
set(D8_SCRIPT "${ANDROID_BUILD_TOOLS}/d8.bat")
368+
369+
if(EXISTS ${D8_SCRIPT})
370+
set(DEX_COMMAND ${D8_SCRIPT} --output ./bin/ ./obj/eu/devsh/${TARGET_NAME}/*.class)
371+
else()
372+
message(FATAL_ERROR "ANDROID_BUILD_TOOLS path doesn't contain D8 (DEX) bat file!")
373+
endif()
374+
else()
375+
set(D8_SCRIPT "${ANDROID_BUILD_TOOLS}/d8")
376+
377+
if(EXISTS ${D8_SCRIPT})
378+
set(DEX_COMMAND ${D8_SCRIPT} ./obj/eu/devsh/${TARGET_NAME}/Loader.class --output ./bin/)
379+
else()
380+
message(FATAL_ERROR "ANDROID_BUILD_TOOLS path doesn't contain D8 (DEX) script file!")
381+
endif()
382+
endif()
376383

377-
if(EXISTS ${ASSET_SOURCE_DIR})
378-
add_custom_command(
379-
OUTPUT ${APK_FILE}
384+
set(NBL_APK_LIBRARY_DIR libs/lib/x86_64)
385+
set(NBL_APK_OBJ_DIR obj)
386+
set(NBL_APK_BIN_DIR bin)
387+
set(NBL_APK_ASSETS_DIR assets)
388+
389+
add_custom_target(${TARGET_NAME}_apk_deps
380390
DEPENDS ${_TARGET}
381391
DEPENDS ${NBL_ANDROID_MANIFEST_FILE}
382392
DEPENDS ${NBL_ANDROID_LOADER_JAVA}
383393
DEPENDS ${KEYSTORE_FILE}
384394
DEPENDS ${NBL_ROOT_PATH}/android/Loader.java
385395
WORKING_DIRECTORY ${NBL_GEN_DIRECTORY}/$<CONFIG>
386-
COMMENT "Creating ${APK_FILE_NAME} ..."
387-
COMMAND ${CMAKE_COMMAND} -E make_directory libs/lib/x86_64
388-
COMMAND ${CMAKE_COMMAND} -E make_directory obj
389-
COMMAND ${CMAKE_COMMAND} -E make_directory bin
390-
COMMAND ${CMAKE_COMMAND} -E make_directory assets
396+
397+
COMMAND ${CMAKE_COMMAND} -E make_directory ${NBL_APK_LIBRARY_DIR}
398+
COMMAND ${CMAKE_COMMAND} -E make_directory ${NBL_APK_OBJ_DIR}
399+
COMMAND ${CMAKE_COMMAND} -E make_directory ${NBL_APK_BIN_DIR}
400+
COMMAND ${CMAKE_COMMAND} -E make_directory ${NBL_APK_ASSETS_DIR}
401+
402+
# main library
391403
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${_TARGET}> libs/lib/x86_64/$<TARGET_FILE_NAME:${_TARGET}>
392-
COMMAND ${CMAKE_COMMAND} -E copy_directory ${ASSET_SOURCE_DIR} assets
393-
COMMAND ${ANDROID_BUILD_TOOLS}/aapt package -f -m -J src -M AndroidManifest.xml -I ${ANDROID_JAR}
394-
COMMAND ${ANDROID_JAVA_BIN}/javac -d ./obj -source 1.7 -target 1.7 -bootclasspath ${ANDROID_JAVA_RT_JAR} -classpath "${ANDROID_JAR}" -sourcepath src ${NBL_ANDROID_LOADER_JAVA}
395-
COMMAND ${DEX_COMMAND}
396-
COMMAND ${ANDROID_BUILD_TOOLS}/aapt package -f -M AndroidManifest.xml -A assets -I ${ANDROID_JAR} -F ${TARGET_NAME}-unaligned.apk bin libs
397-
COMMAND ${ANDROID_BUILD_TOOLS}/zipalign -f 4 ${TARGET_NAME}-unaligned.apk ${APK_FILE_NAME}
398-
COMMAND ${ANDROID_BUILD_TOOLS}/apksigner sign --ks ${KEYSTORE_FILE} --ks-pass pass:android --key-pass pass:android --ks-key-alias ${KEY_ENTRY_ALIAS} ${APK_FILE_NAME}
399-
COMMAND ${CMAKE_COMMAND} -E copy ${APK_FILE_NAME} ${APK_FILE}
400-
COMMAND ${CMAKE_COMMAND} -E rm -rf assets
404+
405+
# dependencies
406+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:tbb> libs/lib/x86_64/$<TARGET_FILE_NAME:tbb>
407+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:tbbmalloc> libs/lib/x86_64/$<TARGET_FILE_NAME:tbbmalloc>
408+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:tbbmalloc_proxy> libs/lib/x86_64/$<TARGET_FILE_NAME:tbbmalloc_proxy>
409+
410+
COMMENT "Preparing for ${APK_FILE_NAME} creation..."
401411
VERBATIM
402412
)
413+
414+
if(EXISTS ${ASSET_SOURCE_DIR})
415+
add_custom_command(
416+
OUTPUT ${APK_FILE}
417+
DEPENDS ${TARGET_NAME}_apk_deps
418+
WORKING_DIRECTORY ${NBL_GEN_DIRECTORY}/$<CONFIG>
419+
420+
COMMAND ${CMAKE_COMMAND} -E copy_directory ${ASSET_SOURCE_DIR} ${NBL_APK_ASSETS_DIR}
421+
COMMAND ${ANDROID_BUILD_TOOLS}/aapt package -f -m -J src -M AndroidManifest.xml -I ${ANDROID_JAR}
422+
COMMAND ${ANDROID_JAVA_BIN}/javac -d ./obj -source 1.7 -target 1.7 -bootclasspath ${ANDROID_JAVA_RT_JAR} -classpath "${ANDROID_JAR}" -sourcepath src ${NBL_ANDROID_LOADER_JAVA}
423+
COMMAND ${DEX_COMMAND}
424+
COMMAND ${ANDROID_BUILD_TOOLS}/aapt package -f -M AndroidManifest.xml -A ${NBL_APK_ASSETS_DIR} -I ${ANDROID_JAR} -F ${TARGET_NAME}-unaligned.apk bin libs
425+
COMMAND ${ANDROID_BUILD_TOOLS}/zipalign -f 4 ${TARGET_NAME}-unaligned.apk ${APK_FILE_NAME}
426+
COMMAND ${ANDROID_BUILD_TOOLS}/apksigner sign --ks ${KEYSTORE_FILE} --ks-pass pass:android --key-pass pass:android --ks-key-alias ${KEY_ENTRY_ALIAS} ${APK_FILE_NAME}
427+
COMMAND ${CMAKE_COMMAND} -E copy ${APK_FILE_NAME} ${APK_FILE}
428+
COMMAND ${CMAKE_COMMAND} -E rm -rf ${NBL_APK_ASSETS_DIR}
429+
430+
COMMENT "Creating ${APK_FILE_NAME}..."
431+
VERBATIM
432+
)
403433
else()
404434
add_custom_command(
405-
OUTPUT ${APK_FILE}
406-
DEPENDS ${_TARGET}
407-
DEPENDS ${NBL_ANDROID_MANIFEST_FILE}
408-
DEPENDS ${NBL_ANDROID_LOADER_JAVA}
409-
DEPENDS ${KEYSTORE_FILE}
410-
DEPENDS ${NBL_ROOT_PATH}/android/Loader.java
411-
WORKING_DIRECTORY ${NBL_GEN_DIRECTORY}/$<CONFIG>
412-
COMMENT "Creating ${APK_FILE_NAME} ..."
413-
COMMAND ${CMAKE_COMMAND} -E make_directory libs/lib/x86_64
414-
COMMAND ${CMAKE_COMMAND} -E make_directory obj
415-
COMMAND ${CMAKE_COMMAND} -E make_directory bin
416-
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${_TARGET}> libs/lib/x86_64/$<TARGET_FILE_NAME:${_TARGET}>
417-
COMMAND ${ANDROID_BUILD_TOOLS}/aapt package -f -m -J src -M AndroidManifest.xml -I ${ANDROID_JAR}
418-
COMMAND ${ANDROID_JAVA_BIN}/javac -d ./obj -source 1.7 -target 1.7 -bootclasspath ${ANDROID_JAVA_RT_JAR} -classpath "${ANDROID_JAR}" -sourcepath src ${NBL_ANDROID_LOADER_JAVA}
419-
COMMAND ${DEX_COMMAND}
420-
COMMAND ${ANDROID_BUILD_TOOLS}/aapt package -f -M AndroidManifest.xml -I ${ANDROID_JAR} -F ${TARGET_NAME}-unaligned.apk bin libs
421-
COMMAND ${ANDROID_BUILD_TOOLS}/zipalign -f 4 ${TARGET_NAME}-unaligned.apk ${APK_FILE_NAME}
422-
COMMAND ${ANDROID_BUILD_TOOLS}/apksigner sign --ks ${KEYSTORE_FILE} --ks-pass pass:android --key-pass pass:android --ks-key-alias ${KEY_ENTRY_ALIAS} ${APK_FILE_NAME}
423-
COMMAND ${CMAKE_COMMAND} -E copy ${APK_FILE_NAME} ${APK_FILE}
424-
VERBATIM
425-
)
435+
OUTPUT ${APK_FILE}
436+
DEPENDS ${TARGET_NAME}_apk_deps
437+
WORKING_DIRECTORY ${NBL_GEN_DIRECTORY}/$<CONFIG>
438+
439+
COMMAND ${ANDROID_BUILD_TOOLS}/aapt package -f -m -J src -M AndroidManifest.xml -I ${ANDROID_JAR}
440+
COMMAND ${ANDROID_JAVA_BIN}/javac -d ./obj -source 1.7 -target 1.7 -bootclasspath ${ANDROID_JAVA_RT_JAR} -classpath "${ANDROID_JAR}" -sourcepath src ${NBL_ANDROID_LOADER_JAVA}
441+
COMMAND ${DEX_COMMAND}
442+
COMMAND ${ANDROID_BUILD_TOOLS}/aapt package -f -M AndroidManifest.xml -I ${ANDROID_JAR} -F ${TARGET_NAME}-unaligned.apk bin libs
443+
COMMAND ${ANDROID_BUILD_TOOLS}/zipalign -f 4 ${TARGET_NAME}-unaligned.apk ${APK_FILE_NAME}
444+
COMMAND ${ANDROID_BUILD_TOOLS}/apksigner sign --ks ${KEYSTORE_FILE} --ks-pass pass:android --key-pass pass:android --ks-key-alias ${KEY_ENTRY_ALIAS} ${APK_FILE_NAME}
445+
COMMAND ${CMAKE_COMMAND} -E copy ${APK_FILE_NAME} ${APK_FILE}
446+
447+
COMMENT "Creating ${APK_FILE_NAME}..."
448+
VERBATIM
449+
)
426450
endif()
427451
endmacro()
428452

429-
430453
function(nbl_android_create_media_storage_apk)
431454
set(TARGET_NAME android_media_storage)
432455
string(MAKE_C_IDENTIFIER ${TARGET_NAME} TARGET_NAME_IDENTIFIER)

cmake/toolchains/android/build.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ if(NBL_BUILD_ANDROID)
104104
endif()
105105

106106
string(LENGTH ${Java_JAVA_EXECUTABLE} Java_JAVA_EXECUTABLE_LENGTH)
107-
if(WIN32)
107+
if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
108108
set(Java_JAVA_EXE_BIN_LENGTH 13)
109109
else()
110110
set(Java_JAVA_EXE_BIN_LENGTH 9)

0 commit comments

Comments
 (0)