Hello,

after a recent upgrade of either CMake or Ninja, building with both the
Qt4 and Qt5 tests enabled started to fail. This seems to be caused by
CMake's automoc feature being broken due to the test targets being
present twice which Ninja does also complain about.

The attached patch tries to:
* Fix this by making the test target names unique for their Qt4 and Qt5
variants.
* Fix the warning on CMake policy 0022 by making use of the LINK_PRIVATE
flag.
* Make it possible to find OpenJPEG using pkg-config as well, i.e.
prefer a pkg-config manifest if one exits. (This is necessary for
example to build using CMake and OpenJPEG on Arch Linux.)

Best regards, Adam.
From 1402835ed05a2ce4e6190473170c8556d10f246b Mon Sep 17 00:00:00 2001
From: Adam Reichold <[email protected]>
Date: Fri, 25 Dec 2015 14:10:03 +0100
Subject: [PATCH 1/3] Make target names for Qt4 and Qt5 builds unique so they
 can be built at the same time using recent CMake and Ninja versions.

---
 qt4/tests/CMakeLists.txt | 44 ++++++++++++++++++++++----------------------
 qt5/CMakeLists.txt       |  2 ++
 qt5/demos/CMakeLists.txt |  2 --
 qt5/src/CMakeLists.txt   |  2 --
 qt5/tests/CMakeLists.txt | 46 ++++++++++++++++++++++------------------------
 5 files changed, 46 insertions(+), 50 deletions(-)

diff --git a/qt4/tests/CMakeLists.txt b/qt4/tests/CMakeLists.txt
index 4f16f24..bba868f 100644
--- a/qt4/tests/CMakeLists.txt
+++ b/qt4/tests/CMakeLists.txt
@@ -38,30 +38,30 @@ endmacro(QT4_ADD_QTEST)
 
 qt4_add_simpletest(test-poppler-qt4 test-poppler-qt4.cpp)
 qt4_add_simpletest(test-password-qt4 test-password-qt4.cpp)
-qt4_add_simpletest(test-render-to-file test-render-to-file.cpp)
-qt4_add_simpletest(poppler-forms poppler-forms.cpp)
-qt4_add_simpletest(poppler-fonts poppler-fonts.cpp)
-qt4_add_simpletest(poppler_attachments poppler-attachments.cpp)
+qt4_add_simpletest(test-render-to-file-qt4 test-render-to-file.cpp)
+qt4_add_simpletest(poppler-qt4-forms poppler-forms.cpp)
+qt4_add_simpletest(poppler-qt4-fonts poppler-fonts.cpp)
+qt4_add_simpletest(poppler-qt4-attachments poppler-attachments.cpp)
 qt4_add_simpletest(stress-poppler-qt4 stress-poppler-qt4.cpp)
-qt4_add_simpletest(stress-poppler-dir stress-poppler-dir.cpp)
+qt4_add_simpletest(stress-poppler-dir-qt4 stress-poppler-dir.cpp)
 qt4_add_simpletest(stress-threads-qt4 stress-threads-qt4.cpp)
-qt4_add_simpletest(poppler-texts poppler-texts.cpp)
+qt4_add_simpletest(poppler-qt4-texts poppler-texts.cpp)
 
-qt4_add_qtest(check_attachments check_attachments.cpp)
-qt4_add_qtest(check_dateConversion check_dateConversion.cpp)
-qt4_add_qtest(check_fonts check_fonts.cpp)
-qt4_add_qtest(check_links check_links.cpp)
-qt4_add_qtest(check_metadata check_metadata.cpp)
-qt4_add_qtest(check_optcontent check_optcontent.cpp)
-qt4_add_qtest(check_pagelayout check_pagelayout.cpp)
-qt4_add_qtest(check_pagemode check_pagemode.cpp)
-qt4_add_qtest(check_password check_password.cpp)
-qt4_add_qtest(check_permissions check_permissions.cpp)
-qt4_add_qtest(check_search check_search.cpp)
-qt4_add_qtest(check_actualtext check_actualtext.cpp)
-qt4_add_qtest(check_lexer check_lexer.cpp)
-qt4_add_qtest(check_pagelabelinfo check_pagelabelinfo.cpp)
-qt4_add_qtest(check_goostring check_goostring.cpp)
+qt4_add_qtest(check_qt4_attachments check_attachments.cpp)
+qt4_add_qtest(check_qt4_dateConversion check_dateConversion.cpp)
+qt4_add_qtest(check_qt4_fonts check_fonts.cpp)
+qt4_add_qtest(check_qt4_links check_links.cpp)
+qt4_add_qtest(check_qt4_metadata check_metadata.cpp)
+qt4_add_qtest(check_qt4_optcontent check_optcontent.cpp)
+qt4_add_qtest(check_qt4_pagelayout check_pagelayout.cpp)
+qt4_add_qtest(check_qt4_pagemode check_pagemode.cpp)
+qt4_add_qtest(check_qt4_password check_password.cpp)
+qt4_add_qtest(check_qt4_permissions check_permissions.cpp)
+qt4_add_qtest(check_qt4_search check_search.cpp)
+qt4_add_qtest(check_qt4_actualtext check_actualtext.cpp)
+qt4_add_qtest(check_qt4_lexer check_lexer.cpp)
+qt4_add_qtest(check_qt4_pagelabelinfo check_pagelabelinfo.cpp)
+qt4_add_qtest(check_qt4_goostring check_goostring.cpp)
 if (NOT WIN32)
-  qt4_add_qtest(check_strings check_strings.cpp)
+  qt4_add_qtest(check_qt4_strings check_strings.cpp)
 endif (NOT WIN32)
diff --git a/qt5/CMakeLists.txt b/qt5/CMakeLists.txt
index a364abf..6bd7a6b 100644
--- a/qt5/CMakeLists.txt
+++ b/qt5/CMakeLists.txt
@@ -1,3 +1,5 @@
+set(CMAKE_AUTOMOC ON)
+
 add_subdirectory(src)
 add_subdirectory(tests)
 add_subdirectory(demos)
diff --git a/qt5/demos/CMakeLists.txt b/qt5/demos/CMakeLists.txt
index 6861e1d..060ff16 100644
--- a/qt5/demos/CMakeLists.txt
+++ b/qt5/demos/CMakeLists.txt
@@ -1,5 +1,3 @@
-set(CMAKE_AUTOMOC ON)
-
 add_definitions(${QT5_DEFINITIONS})
 add_definitions(${Qt5Core_DEFINITIONS})
 add_definitions(${Qt5Gui_DEFINITIONS})
diff --git a/qt5/src/CMakeLists.txt b/qt5/src/CMakeLists.txt
index 1eef04a..091a71f 100644
--- a/qt5/src/CMakeLists.txt
+++ b/qt5/src/CMakeLists.txt
@@ -1,8 +1,6 @@
 add_definitions(${QT5_DEFINITIONS})
 add_definitions(${Qt5Core_DEFINITIONS})
 
-set(CMAKE_AUTOMOC ON)
-
 include_directories(
   ${CMAKE_CURRENT_SOURCE_DIR}
   ${Qt5Core_INCLUDE_DIRS}
diff --git a/qt5/tests/CMakeLists.txt b/qt5/tests/CMakeLists.txt
index ae0bd6c..b8f1926 100644
--- a/qt5/tests/CMakeLists.txt
+++ b/qt5/tests/CMakeLists.txt
@@ -1,5 +1,3 @@
-set(CMAKE_AUTOMOC ON)
-
 add_definitions(${Qt5Core_DEFINITIONS})
 add_definitions(-DTESTDATADIR=\"${TESTDATADIR}\")
 
@@ -47,30 +45,30 @@ endmacro(QT5_ADD_QTEST)
 
 qt5_add_simpletest(test-poppler-qt5 test-poppler-qt5.cpp)
 qt5_add_simpletest(test-password-qt5 test-password-qt5.cpp)
-qt5_add_simpletest(test-render-to-file test-render-to-file.cpp)
-qt5_add_simpletest(poppler-forms poppler-forms.cpp)
-qt5_add_simpletest(poppler-fonts poppler-fonts.cpp)
-qt5_add_simpletest(poppler_attachments poppler-attachments.cpp)
+qt5_add_simpletest(test-render-to-file-qt5 test-render-to-file.cpp)
+qt5_add_simpletest(poppler-qt5-forms poppler-forms.cpp)
+qt5_add_simpletest(poppler-qt5-fonts poppler-fonts.cpp)
+qt5_add_simpletest(poppler-qt5-attachments poppler-attachments.cpp)
 qt5_add_simpletest(stress-poppler-qt5 stress-poppler-qt5.cpp)
-qt5_add_simpletest(stress-poppler-dir stress-poppler-dir.cpp)
+qt5_add_simpletest(stress-poppler-dir-qt5 stress-poppler-dir.cpp)
 qt5_add_simpletest(stress-threads-qt5 stress-threads-qt5.cpp)
-qt5_add_simpletest(poppler-texts poppler-texts.cpp)
+qt5_add_simpletest(poppler-qt5-texts poppler-texts.cpp)
 
-qt5_add_qtest(check_attachments check_attachments.cpp)
-qt5_add_qtest(check_dateConversion check_dateConversion.cpp)
-qt5_add_qtest(check_fonts check_fonts.cpp)
-qt5_add_qtest(check_links check_links.cpp)
-qt5_add_qtest(check_metadata check_metadata.cpp)
-qt5_add_qtest(check_optcontent check_optcontent.cpp)
-qt5_add_qtest(check_pagelayout check_pagelayout.cpp)
-qt5_add_qtest(check_pagemode check_pagemode.cpp)
-qt5_add_qtest(check_password check_password.cpp)
-qt5_add_qtest(check_permissions check_permissions.cpp)
-qt5_add_qtest(check_search check_search.cpp)
-qt5_add_qtest(check_actualtext check_actualtext.cpp)
-qt5_add_qtest(check_lexer check_lexer.cpp)
-qt5_add_qtest(check_pagelabelinfo check_pagelabelinfo.cpp)
-qt5_add_qtest(check_goostring check_goostring.cpp)
+qt5_add_qtest(check_qt5_attachments check_attachments.cpp)
+qt5_add_qtest(check_qt5_dateConversion check_dateConversion.cpp)
+qt5_add_qtest(check_qt5_fonts check_fonts.cpp)
+qt5_add_qtest(check_qt5_links check_links.cpp)
+qt5_add_qtest(check_qt5_metadata check_metadata.cpp)
+qt5_add_qtest(check_qt5_optcontent check_optcontent.cpp)
+qt5_add_qtest(check_qt5_pagelayout check_pagelayout.cpp)
+qt5_add_qtest(check_qt5_pagemode check_pagemode.cpp)
+qt5_add_qtest(check_qt5_password check_password.cpp)
+qt5_add_qtest(check_qt5_permissions check_permissions.cpp)
+qt5_add_qtest(check_qt5_search check_search.cpp)
+qt5_add_qtest(check_qt5_actualtext check_actualtext.cpp)
+qt5_add_qtest(check_qt5_lexer check_lexer.cpp)
+qt5_add_qtest(check_qt5_pagelabelinfo check_pagelabelinfo.cpp)
+qt5_add_qtest(check_qt5_goostring check_goostring.cpp)
 if (NOT WIN32)
-  qt5_add_qtest(check_strings check_strings.cpp)
+  qt5_add_qtest(check_qt5_strings check_strings.cpp)
 endif (NOT WIN32)
-- 
2.6.4


From 6994479ac9cfb4d12c310e7e8ebb811dd5779f00 Mon Sep 17 00:00:00 2001
From: Adam Reichold <[email protected]>
Date: Fri, 25 Dec 2015 14:12:09 +0100
Subject: [PATCH 2/3] Make use of LINK_PRIVATE flag to fix warning on CMake
 policy 0022.

---
 CMakeLists.txt     | 3 +--
 cpp/CMakeLists.txt | 3 +--
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index a1412d8..8558564 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -479,8 +479,7 @@ else(MSVC)
 add_library(poppler SHARED ${poppler_SRCS})
 endif(MSVC)
 set_target_properties(poppler PROPERTIES VERSION 58.0.0 SOVERSION 58)
-target_link_libraries(poppler ${poppler_LIBS})
-target_link_libraries(poppler LINK_INTERFACE_LIBRARIES "")
+target_link_libraries(poppler LINK_PRIVATE ${poppler_LIBS})
 install(TARGETS poppler RUNTIME DESTINATION bin LIBRARY DESTINATION lib${LIB_SUFFIX} ARCHIVE DESTINATION lib${LIB_SUFFIX})
 
 if(ENABLE_XPDF_HEADERS)
diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt
index 5a94219..1128016 100644
--- a/cpp/CMakeLists.txt
+++ b/cpp/CMakeLists.txt
@@ -26,9 +26,8 @@ add_library(poppler-cpp SHARED ${poppler_cpp_SRCS})
 set_target_properties(poppler-cpp PROPERTIES VERSION 0.2.1 SOVERSION 0)
 target_link_libraries(poppler-cpp poppler ${ICONV_LIBRARIES})
 if(MSVC)
-target_link_libraries(poppler-cpp ${poppler_LIBS})
+target_link_libraries(poppler-cpp LINK_PRIVATE ${poppler_LIBS})
 endif(MSVC)
-target_link_libraries(poppler-cpp LINK_INTERFACE_LIBRARIES "")
 install(TARGETS poppler-cpp RUNTIME DESTINATION bin LIBRARY DESTINATION lib${LIB_SUFFIX} ARCHIVE DESTINATION lib${LIB_SUFFIX})
 
 install(FILES
-- 
2.6.4


From 59b2658a5f5722a8e4857743a797814cc8dc9d19 Mon Sep 17 00:00:00 2001
From: Adam Reichold <[email protected]>
Date: Fri, 25 Dec 2015 14:13:32 +0100
Subject: [PATCH 3/3] Make detection of version one of OpenJPEG prefer a
 pkg-config manifest if it exists.

---
 CMakeLists.txt                      |  1 -
 cmake/modules/FindLIBOPENJPEG.cmake | 15 ++++++++++++---
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8558564..4e8bcfd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -442,7 +442,6 @@ elseif (LIBOPENJPEG2_FOUND)
     poppler/JPEG2000Stream.cc
   )
   add_definitions(-DUSE_OPENJPEG2)
-MESSAGE(${LIBOPENJPEG2_LIBRARIES})
   set(poppler_LIBS ${poppler_LIBS} ${LIBOPENJPEG2_LIBRARIES})
 else ()
   set(poppler_SRCS ${poppler_SRCS}
diff --git a/cmake/modules/FindLIBOPENJPEG.cmake b/cmake/modules/FindLIBOPENJPEG.cmake
index d9c1369..8a49193 100644
--- a/cmake/modules/FindLIBOPENJPEG.cmake
+++ b/cmake/modules/FindLIBOPENJPEG.cmake
@@ -23,6 +23,14 @@ else (LIBOPENJPEG_LIBRARIES AND LIBOPENJPEG_INCLUDE_DIR)
   set(LIBOPENJPEG_LIBRARIES)
   set(LIBOPENJPEG_INCLUDE_DIR)
 
+  find_package(PkgConfig REQUIRED)
+  pkg_check_modules(LIBOPENJPEG libopenjpeg)
+
+  if(LIBOPENJPEG_FOUND)
+    add_definitions(-DUSE_OPENJPEG1)
+    set(LIBOPENJPEG_INCLUDE_DIR ${LIBOPENJPEG_INCLUDE_DIRS})
+  else(LIBOPENJPEG_FOUND)
+
     find_path (LIBOPENJPEG_INCLUDE_DIR openjpeg.h PATH_SUFFIXES openjpeg)
     find_library(LIBOPENJPEG_LIBRARIES openjpeg)
     if(LIBOPENJPEG_INCLUDE_DIR AND LIBOPENJPEG_LIBRARIES)
@@ -30,14 +38,14 @@ else (LIBOPENJPEG_LIBRARIES AND LIBOPENJPEG_INCLUDE_DIR)
       set(CMAKE_REQUIRED_INCLUDES ${LIBOPENJPEG_INCLUDE_DIR})
       set(CMAKE_REQUIRED_LIBRARIES ${LIBOPENJPEG_LIBRARIES})
 
-check_cxx_source_compiles("
+      check_cxx_source_compiles("
 #include <openjpeg.h>
 int main()
 {
   int foo = OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG;
   return 0;
-}
-" WITH_OPENJPEG_IGNORE_PCLR_CMAP_CDEF_FLAG)
+}"
+        WITH_OPENJPEG_IGNORE_PCLR_CMAP_CDEF_FLAG)
 
       set(CMAKE_REQUIRED_INCLUDES)
       set(CMAKE_REQUIRED_LIBRARIES)
@@ -48,6 +56,7 @@ int main()
     include(FindPackageHandleStandardArgs)
     find_package_handle_standard_args(LibOpenJPEG DEFAULT_MSG LIBOPENJPEG_LIBRARIES LIBOPENJPEG_INCLUDE_DIR)
 
+  endif (LIBOPENJPEG_FOUND)
 endif (LIBOPENJPEG_LIBRARIES AND LIBOPENJPEG_INCLUDE_DIR)
 
 set(LIBOPENJPEG_INCLUDE_DIRS ${LIBOPENJPEG_INCLUDE_DIR})
-- 
2.6.4

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
poppler mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/poppler

Reply via email to