Changeset View
Changeset View
Standalone View
Standalone View
toolchain/ECMAndroidDeployQt.cmake
1 | cmake_minimum_required (VERSION 3.7 FATAL_ERROR) | ||||
---|---|---|---|---|---|
1 | find_package(Qt5Core REQUIRED) | 2 | find_package(Qt5Core REQUIRED) | ||
2 | 3 | | |||
3 | function(ecm_androiddeployqt QTANDROID_EXPORTED_TARGET ECM_ADDITIONAL_FIND_ROOT_PATH) | 4 | function(ecm_androiddeployqt QTANDROID_EXPORTED_TARGET ECM_ADDITIONAL_FIND_ROOT_PATH) | ||
4 | set(EXPORT_DIR "${CMAKE_BINARY_DIR}/${QTANDROID_EXPORTED_TARGET}_build_apk/") | 5 | set(EXPORT_DIR "${CMAKE_BINARY_DIR}/${QTANDROID_EXPORTED_TARGET}_build_apk/") | ||
5 | set(EXECUTABLE_DESTINATION_PATH "${EXPORT_DIR}/libs/${CMAKE_ANDROID_ARCH_ABI}/lib${QTANDROID_EXPORTED_TARGET}.so") | 6 | set(EXECUTABLE_DESTINATION_PATH "${EXPORT_DIR}/libs/${CMAKE_ANDROID_ARCH_ABI}/lib${QTANDROID_EXPORTED_TARGET}.so") | ||
6 | set(QML_IMPORT_PATHS "") | 7 | set(QML_IMPORT_PATHS "") | ||
7 | foreach(prefix ${ECM_ADDITIONAL_FIND_ROOT_PATH}) | 8 | foreach(prefix ${ECM_ADDITIONAL_FIND_ROOT_PATH}) | ||
8 | # qmlimportscanner chokes on symlinks, so we need to resolve those first | 9 | # qmlimportscanner chokes on symlinks, so we need to resolve those first | ||
Show All 24 Lines | 33 | file(GENERATE OUTPUT "${CMAKE_BINARY_DIR}/${QTANDROID_EXPORTED_TARGET}-deployment.json.in2" | |||
33 | INPUT "${CMAKE_BINARY_DIR}/${QTANDROID_EXPORTED_TARGET}-deployment.json.in1") | 34 | INPUT "${CMAKE_BINARY_DIR}/${QTANDROID_EXPORTED_TARGET}-deployment.json.in1") | ||
34 | 35 | | |||
35 | if (CMAKE_GENERATOR STREQUAL "Unix Makefiles") | 36 | if (CMAKE_GENERATOR STREQUAL "Unix Makefiles") | ||
36 | set(arguments "\\$(ARGS)") | 37 | set(arguments "\\$(ARGS)") | ||
37 | endif() | 38 | endif() | ||
38 | 39 | | |||
39 | function(havestl var access VALUE) | 40 | function(havestl var access VALUE) | ||
40 | if (NOT VALUE STREQUAL "") | 41 | if (NOT VALUE STREQUAL "") | ||
41 | string(FIND "${VALUE}" ".so\"" OUT) | 42 | # look for ++ and .so as in libc++.so | ||
42 | math(EXPR OUT "${OUT}+4") | 43 | string (REGEX MATCH "\"[^ ]+\\+\\+[^ ]*\.so\"" OUT ${VALUE}) | ||
apol: This looks quite awful. Why do you prefer using regex to string(FIND)? It could be something… | |||||
Because string (FIND ..) doesn't work if libc++.so isn't added first to CMAKE_CXX_STANDARD_LIBRARIES In my case this is the original value of CMAKE_CXX_STANDARD_LIBRARIES: -latomic -lm "/home/sh_zam/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a/libunwind.a" "/home/sh_zam/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a/libc++_shared.so" and the value written to stl file is the same thing as above, which down the line causes androidqtdeploy to fail. sh-zam: Because `string (FIND ..)` doesn't work if `libc++.so` isn't added first to… | |||||
43 | string(SUBSTRING "${VALUE}" 0 ${OUT} OUTSTR) | 44 | file(WRITE ${CMAKE_BINARY_DIR}/stl "${OUT}") | ||
44 | file(WRITE ${CMAKE_BINARY_DIR}/stl "${OUTSTR}") | | |||
45 | endif() | 45 | endif() | ||
46 | endfunction() | 46 | endfunction() | ||
47 | function(haveranlib var access VALUE) | 47 | function(haveranlib var access VALUE) | ||
48 | if (NOT VALUE STREQUAL "") | 48 | if (NOT VALUE STREQUAL "") | ||
49 | file(WRITE ${CMAKE_BINARY_DIR}/ranlib "${VALUE}") | 49 | file(WRITE ${CMAKE_BINARY_DIR}/ranlib "${VALUE}") | ||
50 | endif() | 50 | endif() | ||
51 | endfunction() | 51 | endfunction() | ||
52 | variable_watch(CMAKE_CXX_STANDARD_LIBRARIES havestl) | 52 | variable_watch(CMAKE_CXX_STANDARD_LIBRARIES havestl) | ||
Show All 22 Lines |
This looks quite awful. Why do you prefer using regex to string(FIND)? It could be something like
string(FIND "${VALUE}" "c++.so\"" OUT) if you want to be more specific.