Hello,

Am 28.12.2015 um 18:51 schrieb Albert Astals Cid:
> El Friday 25 December 2015, a les 14:23:50, Adam Reichold va escriure:
>> 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.)
> 
> The patch has conflicts in cmake/modules/FindLIBOPENJPEG.cmake:23 can you 
> rebase it?

I am sorry about that, I thought I branched from the latest master. I
did pull and rebased on b3425dd3261679958cd56c0f71995c15d2124433, newly
formatted patch attached.

> Cheers,
>   Albert

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 | 50 +++++++++++++++++++++++-------------------------
 5 files changed, 48 insertions(+), 52 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}\")
 
@@ -37,9 +35,9 @@ macro(QT5_ADD_QTEST exe source)
       ${source}
     )
     poppler_add_unittest(${exe} BUILD_QT5_TESTS ${${test_name}_SOURCES})
-	target_link_libraries(${exe} poppler-qt5 ${Qt5Widgets_LIBRARIES} ${Qt5Test_LIBRARIES} ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES})
+    target_link_libraries(${exe} poppler-qt5 ${Qt5Widgets_LIBRARIES} ${Qt5Test_LIBRARIES} ${Qt5Core_LIBRARIES} ${Qt5Gui_LIBRARIES})
     if(MSVC)
-		target_link_libraries(${exe} poppler ${poppler_LIBS})
+      target_link_libraries(${exe} poppler ${poppler_LIBS})
     endif(MSVC)
   endif (Qt5Test_FOUND)
 endmacro(QT5_ADD_QTEST)
@@ -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 | 37 +++++++++++++++++++++++--------------
 2 files changed, 23 insertions(+), 15 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,31 +23,40 @@ else (LIBOPENJPEG_LIBRARIES AND LIBOPENJPEG_INCLUDE_DIR)
   set(LIBOPENJPEG_LIBRARIES)
   set(LIBOPENJPEG_INCLUDE_DIR)
 
-  find_path (LIBOPENJPEG_INCLUDE_DIR openjpeg.h PATH_SUFFIXES openjpeg)
-  find_library(LIBOPENJPEG_LIBRARIES openjpeg)
-  if(LIBOPENJPEG_INCLUDE_DIR AND LIBOPENJPEG_LIBRARIES)
+  find_package(PkgConfig REQUIRED)
+  pkg_check_modules(LIBOPENJPEG libopenjpeg)
 
-  set(CMAKE_REQUIRED_INCLUDES ${LIBOPENJPEG_INCLUDE_DIR})
-  set(CMAKE_REQUIRED_LIBRARIES ${LIBOPENJPEG_LIBRARIES})
+  if(LIBOPENJPEG_FOUND)
+    add_definitions(-DUSE_OPENJPEG1)
+    set(LIBOPENJPEG_INCLUDE_DIR ${LIBOPENJPEG_INCLUDE_DIRS})
+  else(LIBOPENJPEG_FOUND)
 
-check_cxx_source_compiles("
+    find_path (LIBOPENJPEG_INCLUDE_DIR openjpeg.h PATH_SUFFIXES openjpeg)
+    find_library(LIBOPENJPEG_LIBRARIES openjpeg)
+    if(LIBOPENJPEG_INCLUDE_DIR AND LIBOPENJPEG_LIBRARIES)
+
+      set(CMAKE_REQUIRED_INCLUDES ${LIBOPENJPEG_INCLUDE_DIR})
+      set(CMAKE_REQUIRED_LIBRARIES ${LIBOPENJPEG_LIBRARIES})
+
+      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)
+      set(CMAKE_REQUIRED_INCLUDES)
+      set(CMAKE_REQUIRED_LIBRARIES)
 
-    set(LIBOPENJPEG_FOUND TRUE)
-  endif(LIBOPENJPEG_INCLUDE_DIR AND LIBOPENJPEG_LIBRARIES)
+      set(LIBOPENJPEG_FOUND TRUE)
+    endif(LIBOPENJPEG_INCLUDE_DIR AND LIBOPENJPEG_LIBRARIES)
 
-  include(FindPackageHandleStandardArgs)
-  find_package_handle_standard_args(LibOpenJPEG DEFAULT_MSG LIBOPENJPEG_LIBRARIES LIBOPENJPEG_INCLUDE_DIR)
+    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