blob: cf2f53c4f9e859307857f0ce04075611e85cbf3b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
set(MAIN_CXX_PROGRAMS
qpdf
fix-qdf
pdf_from_scratch
sizes
test_driver
test_large_file
test_many_nulls
test_parsedoffset
test_pdf_doc_encoding
test_pdf_unicode
test_renumber
test_shell_glob
test_tokenizer
test_unicode_filenames
test_xref)
set(MAIN_C_PROGRAMS
qpdf-ctest
qpdfjob-ctest)
foreach(PROG ${MAIN_CXX_PROGRAMS})
add_executable(${PROG} ${PROG}.cc)
target_link_libraries(${PROG} libqpdf)
endforeach()
foreach(PROG ${MAIN_C_PROGRAMS})
add_executable(${PROG} ${PROG}.c)
target_link_libraries(${PROG} libqpdf)
set_property(TARGET ${PROG} PROPERTY LINKER_LANGUAGE CXX)
endforeach()
target_include_directories(qpdf-ctest PRIVATE ${CMAKE_BINARY_DIR}/libqpdf)
target_include_directories(sizes PRIVATE ${JPEG_INCLUDE})
set(needs_private_headers
test_large_file
test_driver
qpdf-ctest
qpdfjob-ctest
)
foreach(TARGET ${needs_private_headers})
target_include_directories(${TARGET} PRIVATE ${CMAKE_SOURCE_DIR}/libqpdf)
endforeach()
foreach(B qpdf test_unicode_filenames fix-qdf test_shell_glob)
if(WINDOWS_WMAIN_COMPILE)
target_compile_options(${B} PRIVATE ${WINDOWS_WMAIN_COMPILE})
endif()
if(WINDOWS_WMAIN_LINK)
target_link_options(${B} PRIVATE ${WINDOWS_WMAIN_LINK})
endif()
endforeach()
add_test(
NAME qpdf
COMMAND ${RUN_QTEST}
--top ${qpdf_SOURCE_DIR}
--bin $<TARGET_FILE_DIR:qpdf>
--bin $<TARGET_FILE_DIR:libqpdf> # for Windows to find DLL
--code ${qpdf_SOURCE_DIR}/qpdf
--color ${QTEST_COLOR}
--show-on-failure ${SHOW_FAILED_TEST_OUTPUT}
--tc "${qpdf_SOURCE_DIR}/qpdf/*.cc"
--tc "${qpdf_SOURCE_DIR}/qpdf/*.c"
--tc "${qpdf_SOURCE_DIR}/libqpdf/*.cc")
install(TARGETS qpdf fix-qdf
TYPE RUNTIME
COMPONENT ${COMPONENT_CLI})
if(MINGW)
# For MSVC, including InstallRequiredSystemLibraries in the
# top-level CMakeLists.txt is sufficient. For mingw, we have to copy
# mingw libraries in ourselves.
set(ONE_GNU_DLL extra-dlls/libstdc++-6.dll)
add_custom_command(OUTPUT ${ONE_GNU_DLL}
COMMAND
perl ${qpdf_SOURCE_DIR}/copy_dlls
qpdf.exe
${CMAKE_BINARY_DIR}/libqpdf
extra-dlls)
add_custom_target(extra_dlls ALL DEPENDS ${ONE_GNU_DLL})
add_dependencies(extra_dlls qpdf)
if(BUILD_SHARED_LIBS)
set(EXTRA_DLL_COMPONENT ${COMPONENT_LIB})
else()
set(EXTRA_DLL_COMPONENT ${COMPONENT_CLI})
endif()
# The trailing / prevents "extra-dlls" from being created in bin.
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/extra-dlls/
TYPE BIN
COMPONENT ${EXTRA_DLL_COMPONENT})
endif()
|