aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/CMakeLists.txt3
-rw-r--r--tests/ECMToolchainAndroidTest/CMakeLists.txt23
-rw-r--r--tests/ECMToolchainAndroidTest/main.c4
-rw-r--r--tests/ECMToolchainAndroidTest/testlinkfile/CMakeFiles/testtarget.dir/link.txt1
-rw-r--r--tests/ECMToolchainAndroidTest/testlinkfile/outputfake.json1
-rw-r--r--toolchain/specifydependencies.cmake6
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()