Skip to content

Commit 5f8b442

Browse files
committed
get 43.SumAndCDFFilters example almost work, fix CFilePOSIX bugs and make sure our target doesn't need to rebuild each time when we want to update APK
1 parent 423d1ce commit 5f8b442

File tree

4 files changed

+41
-36
lines changed

4 files changed

+41
-36
lines changed

cmake/common.cmake

Lines changed: 27 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -386,37 +386,22 @@ macro(nbl_android_create_apk _TARGET)
386386
set(NBL_APK_BIN_DIR bin)
387387
set(NBL_APK_ASSETS_DIR assets)
388388

389-
add_custom_target(${TARGET_NAME}_apk_deps
390-
DEPENDS ${_TARGET}
391-
DEPENDS ${NBL_ANDROID_MANIFEST_FILE}
392-
DEPENDS ${NBL_ANDROID_LOADER_JAVA}
393-
DEPENDS ${KEYSTORE_FILE}
394-
DEPENDS ${NBL_ROOT_PATH}/android/Loader.java
395-
WORKING_DIRECTORY ${NBL_GEN_DIRECTORY}/$<CONFIG>
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
403-
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${_TARGET}> libs/lib/x86_64/$<TARGET_FILE_NAME:${_TARGET}>
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..."
411-
VERBATIM
412-
)
413-
414389
if(EXISTS ${ASSET_SOURCE_DIR})
415390
add_custom_command(
416391
OUTPUT ${APK_FILE}
417-
DEPENDS ${TARGET_NAME}_apk_deps
418-
WORKING_DIRECTORY ${NBL_GEN_DIRECTORY}/$<CONFIG>
419-
392+
DEPENDS ${_TARGET}
393+
DEPENDS ${NBL_ANDROID_MANIFEST_FILE}
394+
DEPENDS ${NBL_ANDROID_LOADER_JAVA}
395+
DEPENDS ${KEYSTORE_FILE}
396+
DEPENDS ${NBL_ROOT_PATH}/android/Loader.java
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+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${_TARGET}> libs/lib/x86_64/$<TARGET_FILE_NAME:${_TARGET}>
402+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:tbb> libs/lib/x86_64/$<TARGET_FILE_NAME:tbb>
403+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:tbbmalloc> libs/lib/x86_64/$<TARGET_FILE_NAME:tbbmalloc>
404+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:tbbmalloc_proxy> libs/lib/x86_64/$<TARGET_FILE_NAME:tbbmalloc_proxy>
420405
COMMAND ${CMAKE_COMMAND} -E copy_directory ${ASSET_SOURCE_DIR} ${NBL_APK_ASSETS_DIR}
421406
COMMAND ${ANDROID_BUILD_TOOLS}/aapt package -f -m -J src -M AndroidManifest.xml -I ${ANDROID_JAR}
422407
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}
@@ -426,24 +411,33 @@ macro(nbl_android_create_apk _TARGET)
426411
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}
427412
COMMAND ${CMAKE_COMMAND} -E copy ${APK_FILE_NAME} ${APK_FILE}
428413
COMMAND ${CMAKE_COMMAND} -E rm -rf ${NBL_APK_ASSETS_DIR}
429-
414+
WORKING_DIRECTORY ${NBL_GEN_DIRECTORY}/$<CONFIG>
430415
COMMENT "Creating ${APK_FILE_NAME}..."
431416
VERBATIM
432417
)
433418
else()
434419
add_custom_command(
435420
OUTPUT ${APK_FILE}
436-
DEPENDS ${TARGET_NAME}_apk_deps
437-
WORKING_DIRECTORY ${NBL_GEN_DIRECTORY}/$<CONFIG>
438-
421+
DEPENDS ${_TARGET}
422+
DEPENDS ${NBL_ANDROID_MANIFEST_FILE}
423+
DEPENDS ${NBL_ANDROID_LOADER_JAVA}
424+
DEPENDS ${KEYSTORE_FILE}
425+
DEPENDS ${NBL_ROOT_PATH}/android/Loader.java
426+
COMMAND ${CMAKE_COMMAND} -E make_directory ${NBL_APK_LIBRARY_DIR}
427+
COMMAND ${CMAKE_COMMAND} -E make_directory ${NBL_APK_OBJ_DIR}
428+
COMMAND ${CMAKE_COMMAND} -E make_directory ${NBL_APK_BIN_DIR}
429+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${_TARGET}> libs/lib/x86_64/$<TARGET_FILE_NAME:${_TARGET}>
430+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:tbb> libs/lib/x86_64/$<TARGET_FILE_NAME:tbb>
431+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:tbbmalloc> libs/lib/x86_64/$<TARGET_FILE_NAME:tbbmalloc>
432+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:tbbmalloc_proxy> libs/lib/x86_64/$<TARGET_FILE_NAME:tbbmalloc_proxy>
439433
COMMAND ${ANDROID_BUILD_TOOLS}/aapt package -f -m -J src -M AndroidManifest.xml -I ${ANDROID_JAR}
440434
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}
441435
COMMAND ${DEX_COMMAND}
442436
COMMAND ${ANDROID_BUILD_TOOLS}/aapt package -f -M AndroidManifest.xml -I ${ANDROID_JAR} -F ${TARGET_NAME}-unaligned.apk bin libs
443437
COMMAND ${ANDROID_BUILD_TOOLS}/zipalign -f 4 ${TARGET_NAME}-unaligned.apk ${APK_FILE_NAME}
444438
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}
445439
COMMAND ${CMAKE_COMMAND} -E copy ${APK_FILE_NAME} ${APK_FILE}
446-
440+
WORKING_DIRECTORY ${NBL_GEN_DIRECTORY}/$<CONFIG>
447441
COMMENT "Creating ${APK_FILE_NAME}..."
448442
VERBATIM
449443
)

examples_tests/43.SumAndCDFFilters/main.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ class SumAndCDFFilterSampleApp : public NonGraphicalApplicationBase
251251
auto cpuImageView = ICPUImageView::create(std::move(viewParams));
252252
assert(cpuImageView.get()); // The imageView didn't pass creation validation!
253253

254-
auto writeSATandGetItsOutputName = [&]() -> std::string
254+
auto writeSATandGetItsOutputName = [&]() -> std::string //! Writes asset and returns file name without full path
255255
{
256256
std::string outputFileName;
257257

@@ -326,10 +326,11 @@ class SumAndCDFFilterSampleApp : public NonGraphicalApplicationBase
326326

327327
{
328328
const std::string satFileName = writeSATandGetItsOutputName();
329+
const auto satFilePath = localOutputCWD / satFileName;
329330
const std::string convolutedSatFileName = "CONVOLUTED_" + satFileName;
330331
const auto convolutedSatFilePath = localOutputCWD / convolutedSatFileName;
331332

332-
auto bundle = assetManager->getAsset(satFileName, loadParams);
333+
auto bundle = assetManager->getAsset(satFilePath.string(), loadParams);
333334
#ifdef IMAGE_VIEW
334335
auto cpuImageViewFetched = core::smart_refctd_ptr_static_cast<asset::ICPUImageView>(bundle.getContents().begin()[0]);
335336
auto cpuImage = getDisConvolutedImage(cpuImageViewFetched->getCreationParameters().image);

include/nbl/ui/CGraphicalApplicationAndroid.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ namespace nbl::ui
4949
system::path sharedInputCWD = system::path(app->activity->externalDataPath).parent_path().parent_path() / "eu.devsh.mediaunpackingonandroid/files/media";
5050
system::path APKResourcesPath = "asset"; // an archive alias to recognize this path as an apk resource
5151
system::path sharedOutputCWD = system::path(app->activity->externalDataPath).parent_path().parent_path();
52-
system::path privateOutputCWD = system::path(app->activity->internalDataPath);
52+
system::path privateOutputCWD = system::path(app->activity->externalDataPath);
5353

5454
if constexpr (std::is_base_of_v<nbl::ui::CGraphicalApplicationAndroid, android_app_class>)
5555
{

src/nbl/system/CFilePOSIX.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,16 @@ namespace nbl::system
4141
}
4242
else m_openedProperly = false;
4343
}
44+
else
45+
{
46+
if (std::filesystem::exists(_filename.parent_path()))
47+
{
48+
m_native = creat(name_c_str, S_IRUSR | S_IRGRP | S_IROTH);//open(name_c_str, createFlags, S_IRUSR | S_IRGRP | S_IROTH);
49+
}
50+
else
51+
m_openedProperly = false;
52+
}
53+
std::string error = strerror(errno);
4454
m_openedProperly = m_native >= 0;
4555
if(m_openedProperly)
4656
{

0 commit comments

Comments
 (0)