diff options
author | Andreas Cord-Landwehr <cordlandwehr@kde.org> | 2016-06-13 18:27:24 +0200 |
---|---|---|
committer | Andreas Cord-Landwehr <cordlandwehr@kde.org> | 2016-06-15 15:40:34 +0200 |
commit | c6ae4fa9008b0805f4358012040e67577ba31791 (patch) | |
tree | 5d89cbb134678cfacd758a4c9943aa97421049c6 | |
parent | 2503481e4537b88d76b4a596f519cb3311e1ca2a (diff) | |
download | extra-cmake-modules-c6ae4fa9008b0805f4358012040e67577ba31791.tar.gz extra-cmake-modules-c6ae4fa9008b0805f4358012040e67577ba31791.tar.bz2 |
Integrate relative library paths to APKv5.24.0-rc1v5.24.0
Needed for many unit tests to add them to APK files.
REVIEW: 128175
-rw-r--r-- | tests/CMakeLists.txt | 3 | ||||
-rw-r--r-- | tests/ECMToolchainAndroidTest/CMakeLists.txt | 23 | ||||
-rw-r--r-- | tests/ECMToolchainAndroidTest/main.c | 4 | ||||
-rw-r--r-- | tests/ECMToolchainAndroidTest/testlinkfile/CMakeFiles/testtarget.dir/link.txt | 1 | ||||
-rw-r--r-- | tests/ECMToolchainAndroidTest/testlinkfile/outputfake.json | 1 | ||||
-rw-r--r-- | toolchain/specifydependencies.cmake | 6 |
6 files changed, 37 insertions, 1 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index a3fbe2e0..dd1350ad 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -40,6 +40,7 @@ add_subdirectory(ECMAddTests) add_subdirectory(ECMGenerateHeadersTest) add_subdirectory(ECMSetupVersionTest) add_subdirectory(ECMGeneratePkgConfigFile) +add_subdirectory(ECMToolchainAndroidTest) # a macro for tests that have a simple format where the name matches the # directory and project @@ -139,6 +140,8 @@ add_test_macro(ECMInstallIconsTest ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/ECMInstallIconsTest/check_tree.cmake" ) +add_test_macro(ECMToolchainAndroidTest dummy) + set(KDEPackageAppTemplatesTest_EXTRA_OPTIONS --build-target install --build-options diff --git a/tests/ECMToolchainAndroidTest/CMakeLists.txt b/tests/ECMToolchainAndroidTest/CMakeLists.txt new file mode 100644 index 00000000..eb2ae298 --- /dev/null +++ b/tests/ECMToolchainAndroidTest/CMakeLists.txt @@ -0,0 +1,23 @@ +project(AndroidToolchainTest) +cmake_minimum_required(VERSION 2.8.12) + +set(CMAKE_MODULE_PATH + ${CMAKE_CURRENT_SOURCE_DIR}/../../modules + ${CMAKE_CURRENT_SOURCE_DIR}/../../toolchain +) + +set(TARGET_DIR "${CMAKE_CURRENT_SOURCE_DIR}/testlinkfile") +set(TARGET_NAME "testtarget") +set(OUTPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/androidtest_output.txt") +set(INPUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/testlinkfile/outputfake.json") + +# test correct include resolution +include(specifydependencies) + +file(READ "${OUTPUT_FILE}" TEST_RESULT) +string(FIND ${TEST_RESULT} "libKF5Attica.so" CMP_RESULT) +if (${CMP_RESULT} EQUAL -1) + message(SEND_ERROR "Could not find relative library libKF5Attica.so") +endif() + +add_executable(dummy main.c) diff --git a/tests/ECMToolchainAndroidTest/main.c b/tests/ECMToolchainAndroidTest/main.c new file mode 100644 index 00000000..c13815ce --- /dev/null +++ b/tests/ECMToolchainAndroidTest/main.c @@ -0,0 +1,4 @@ +int main() +{ + return 0; +} diff --git a/tests/ECMToolchainAndroidTest/testlinkfile/CMakeFiles/testtarget.dir/link.txt b/tests/ECMToolchainAndroidTest/testlinkfile/CMakeFiles/testtarget.dir/link.txt new file mode 100644 index 00000000..17da75d2 --- /dev/null +++ b/tests/ECMToolchainAndroidTest/testlinkfile/CMakeFiles/testtarget.dir/link.txt @@ -0,0 +1 @@ +/usr/bin/c++ -pipe -DQT_STRICT_ITERATORS -DQURL_NO_CAST_FROM_STRING -DQT_NO_HTTP -DQT_NO_FTP -Wformat -Werror=format-security -Werror=return-type -Wno-variadic-macros -Wlogical-op -std=c++0x -fno-exceptions -Wall -Wextra -Wcast-align -Wchar-subscripts -Wformat-security -Wno-long-long -Wpointer-arith -Wundef -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type -pedantic -g -Wl,--enable-new-dtags CMakeFiles/persontest.dir/persontest.cpp.o CMakeFiles/persontest.dir/persontest_automoc.cpp.o -o testtarget -rdynamic /opt/qt5/qtbase/lib/libQt5Test.so.5.6.1 ../src/libKF5Attica.so.5.23.0 /opt/qt5/qtbase/lib/libQt5Network.so.5.6.1 /opt/qt5/qtbase/lib/libQt5Core.so.5.6.1 -Wl,-rpath,/opt/qt5/qtbase/lib:/opt/kde/build/frameworks/attica/src diff --git a/tests/ECMToolchainAndroidTest/testlinkfile/outputfake.json b/tests/ECMToolchainAndroidTest/testlinkfile/outputfake.json new file mode 100644 index 00000000..cf482d0c --- /dev/null +++ b/tests/ECMToolchainAndroidTest/testlinkfile/outputfake.json @@ -0,0 +1 @@ +##EXTRALIBS## diff --git a/toolchain/specifydependencies.cmake b/toolchain/specifydependencies.cmake index e01c61a7..65e875bf 100644 --- a/toolchain/specifydependencies.cmake +++ b/toolchain/specifydependencies.cmake @@ -2,13 +2,17 @@ file(READ "${TARGET_DIR}/CMakeFiles/${TARGET_NAME}.dir/link.txt" out) string(FIND "${out}" "-o ${TARGET_NAME}" POS) #we trim the initial arguments, we want the ones in the end. we find the target string(SUBSTRING "${out}" ${POS} -1 out) #we -string(REGEX MATCHALL " /.+\\.so" outout "${out}") +string(REGEX MATCHALL "(/|\\.\\./|\\./)[^ ]+\\.so" outout "${out}") string(STRIP "${outout}" outout) string(REPLACE " /" ";/" outout "${outout}") set(extralibs) foreach(lib IN LISTS outout) #now we filter Qt5 libraries, because Qt wants to take care about these itself if(NOT ${lib} MATCHES ".*/libQt5.*") + # resolve relative paths + if(${lib} MATCHES "^(\\.\\./|\\./)") + set(lib "${TARGET_DIR}/${lib}") + endif() if(extralibs) set(extralibs "${extralibs},${lib}") else() |