1
0
mirror of https://github.com/pdf2htmlEX/pdf2htmlEX.git synced 2024-12-22 04:50:09 +00:00
pdf2htmlEX/CMakeLists.txt

235 lines
7.8 KiB
CMake
Raw Normal View History

# leave this above project(pdf2htmlEX)
# set default build type to Release
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build configuration (Debug, Release, RelWithDebInfo, MinSizeRel)")
project(pdf2htmlEX)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
2012-08-04 18:03:53 +00:00
cmake_minimum_required(VERSION 2.6.0 FATAL_ERROR)
option(ENABLE_SVG "Enable SVG support, for generating SVG background images and converting Type 3 fonts" ON)
2013-09-18 08:16:40 +00:00
2012-11-29 09:28:05 +00:00
include_directories(${CMAKE_SOURCE_DIR}/src)
2012-09-05 09:44:25 +00:00
set(PDF2HTMLEX_VERSION "0.18.0")
2012-09-16 16:52:02 +00:00
set(ARCHIVE_NAME pdf2htmlex-${PDF2HTMLEX_VERSION})
add_custom_target(dist
COMMAND git archive --prefix=${ARCHIVE_NAME}/ HEAD
| bzip2 > ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.bz2
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
2012-08-04 18:03:53 +00:00
find_package(PkgConfig)
pkg_check_modules(POPPLER REQUIRED poppler>=0.25.0)
2012-08-04 18:03:53 +00:00
include_directories(${POPPLER_INCLUDE_DIRS})
2012-09-05 11:03:23 +00:00
link_directories(${POPPLER_LIBRARY_DIRS})
2012-09-16 16:52:02 +00:00
set(PDF2HTMLEX_LIBS ${PDF2HTMLEX_LIBS} ${POPPLER_LIBRARIES})
2012-09-05 10:43:37 +00:00
2013-09-18 08:16:40 +00:00
if(ENABLE_SVG)
pkg_check_modules(CAIRO REQUIRED cairo>=1.10.0)
message("Trying to locate cairo-svg...")
find_path(CAIRO_SVG_INCLUDE_PATH cairo-svg.h PATHS ${CAIRO_INCLUDE_DIRS} NO_DEFAULT_PATH)
if(CAIRO_SVG_INCLUDE_PATH)
include_directories(${CAIRO_INCLUDE_DIRS})
link_directories(${CAIRO_LIBRARY_DIRS})
set(PDF2HTMLEX_LIBS ${PDF2HTMLEX_LIBS} ${CAIRO_LIBRARIES})
set(ENABLE_SVG 1)
set(CAIROOUTPUTDEV_PATH 3rdparty/poppler/git)
2013-09-23 08:37:02 +00:00
include_directories(${CAIROOUTPUTDEV_PATH})
2013-09-18 08:16:40 +00:00
set(PDF2HTMLEX_SRC ${PDF2HTMLEX_SRC}
2013-09-23 08:37:02 +00:00
${CAIROOUTPUTDEV_PATH}/CairoFontEngine.h
${CAIROOUTPUTDEV_PATH}/CairoFontEngine.cc
${CAIROOUTPUTDEV_PATH}/CairoRescaleBox.h
${CAIROOUTPUTDEV_PATH}/CairoRescaleBox.cc
${CAIROOUTPUTDEV_PATH}/CairoOutputDev.h
${CAIROOUTPUTDEV_PATH}/CairoOutputDev.cc
2013-09-18 08:16:40 +00:00
)
else()
message(FATAL_ERROR "Error: no SVG support found in Cairo")
endif()
2013-09-18 07:49:18 +00:00
find_package(Freetype REQUIRED)
include_directories(${FREETYPE_INCLUDE_DIRS})
link_directories(${FREETYPE_LIBRARY_DIRS})
set(PDF2HTMLEX_LIBS ${PDF2HTMLEX_LIBS} ${FREETYPE_LIBRARIES})
endif()
2012-10-02 12:41:39 +00:00
# fontforge starts using pkg-config 'correctly' since 2.0.0
pkg_check_modules(FONTFORGE REQUIRED libfontforge>=2.0.0)
include_directories(${FONTFORGE_INCLUDE_DIRS})
link_directories(${FONTFORGE_LIBRARY_DIRS})
set(PDF2HTMLEX_LIBS ${PDF2HTMLEX_LIBS} ${FONTFORGE_LIBRARIES})
2012-08-04 18:03:53 +00:00
# debug build flags (overwrite default cmake debug flags)
2013-03-12 16:43:49 +00:00
set(CMAKE_C_FLAGS_DEBUG "-ggdb -pg")
set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -pg")
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "-pg")
# release build flags (overwrite default cmake release flags)
set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
# generic flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Woverloaded-virtual")
# clang compiler need c++11 flag
#if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
#endif()
2012-08-04 18:03:53 +00:00
2012-09-17 09:35:16 +00:00
# CYGWIN or GCC 4.5.x bug
2012-09-10 16:45:00 +00:00
if(CYGWIN)
2013-05-11 10:42:50 +00:00
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")
2012-09-10 16:45:00 +00:00
else()
New master (#2) * Show header in font map files * fix a usage of unique_ptr with array * Added '--quiet' argument to hide progress messages (resolves #503) * Revert cout messages to cerr (see #622) * bump version * fix build; fix some coverity warnings * Many bug fixes and improvements, including: - Incorporated latest Cairo files from cairo-0.15.2 - Moved build to out-of-source - Added clean script - Rewritten correct_text_visibility option to improve accuracy - Transparent characters drawn on background layer - Improved bad unicode detection * Many bug fixes and improvements, including: - Incorporated latest Cairo files from cairo-0.15.2 - Moved build to out-of-source - Added clean script - Rewritten correct_text_visibility option to improve accuracy - Transparent characters drawn on background layer - Improved bad unicode detection * Rationlise DPI to single number. Implement actual_dpi - clamp maximum background image size in cases of huge PDF pages * DPI fixes - increase DPI when partially covered text to covered-text-dpi Add font-style italic for oblique fonts Reduce char bbox for occlusion tests * Don't shrink bbox - not required if zoom=25 used * Ignore occlusion from stroke/fill with opacity < 0.5 Better compute char bbox for occlusion Use 10% inset for char bbox for occlusion Back out adding font-weight: bold to potentially bold fonts Fix bug to ensure CID ascent/descent matches subfont values * Removed zero char logging * Remove forced italic - missing italic is due to fontforge bug which needs fixing * Typos fixed, readme updated * Typos * Increase maximum background image width Fix private use range to avoid stupid mobile safari switching to emoji font * included -pthread switch to link included 3rdparty poppler files. * Updated files from poppler 0.59.0 and adjusted includes. * Support updated "Object" class from poppler 0.59.0
2018-01-10 19:31:38 +00:00
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -pthread")
2012-09-10 16:45:00 +00:00
endif()
2014-11-17 14:53:42 +00:00
# check the C++11 features we need
include(CheckCXXSourceCompiles)
check_cxx_source_compiles("
#include <vector>
int main()
{
char * ptr = nullptr;
std::vector<int> v;
auto f = [&](){ for(auto & i : v) ++i; };
f();
}
" CXX0X_SUPPORT)
2012-10-12 14:39:58 +00:00
if(NOT CXX0X_SUPPORT)
2014-11-17 14:53:42 +00:00
message(FATAL_ERROR "Error: your compiler does not support C++0x/C++11, please update it.")
2012-10-12 14:39:58 +00:00
endif()
2012-11-29 09:28:05 +00:00
configure_file (${CMAKE_SOURCE_DIR}/src/pdf2htmlEX-config.h.in ${CMAKE_SOURCE_DIR}/src/pdf2htmlEX-config.h)
2012-09-12 16:56:18 +00:00
configure_file (${CMAKE_SOURCE_DIR}/pdf2htmlEX.1.in ${CMAKE_SOURCE_DIR}/pdf2htmlEX.1)
2012-08-04 18:03:53 +00:00
2013-02-27 18:11:34 +00:00
include(${CMAKE_SOURCE_DIR}/src/css_class_names.cmakelists.txt)
configure_file (${CMAKE_SOURCE_DIR}/src/util/css_const.h.in ${CMAKE_SOURCE_DIR}/src/util/css_const.h)
configure_file (${CMAKE_SOURCE_DIR}/share/base.css.in ${CMAKE_SOURCE_DIR}/share/base.css)
2013-05-01 09:14:29 +00:00
configure_file (${CMAKE_SOURCE_DIR}/share/fancy.css.in ${CMAKE_SOURCE_DIR}/share/fancy.css)
2013-10-30 07:50:07 +00:00
configure_file (${CMAKE_SOURCE_DIR}/share/pdf2htmlEX.js.in ${CMAKE_SOURCE_DIR}/share/pdf2htmlEX.js)
2013-02-27 18:11:34 +00:00
2013-09-18 08:16:40 +00:00
set(PDF2HTMLEX_SRC ${PDF2HTMLEX_SRC}
2012-11-29 09:28:05 +00:00
src/Param.h
src/pdf2htmlEX.cc
2013-09-27 11:48:40 +00:00
src/pdf2htmlEX-config.h
src/HTMLRenderer/HTMLRenderer.h
2012-11-29 09:28:05 +00:00
src/HTMLRenderer/draw.cc
src/HTMLRenderer/general.cc
2012-08-14 08:23:15 +00:00
src/HTMLRenderer/image.cc
2013-02-05 14:00:23 +00:00
src/HTMLRenderer/font.cc
2014-08-11 14:36:35 +00:00
src/HTMLRenderer/form.cc
2012-11-29 09:28:05 +00:00
src/HTMLRenderer/link.cc
2013-01-28 13:01:02 +00:00
src/HTMLRenderer/outline.cc
2012-11-29 09:28:05 +00:00
src/HTMLRenderer/state.cc
src/HTMLRenderer/text.cc
src/BackgroundRenderer/BackgroundRenderer.h
2013-09-18 10:01:56 +00:00
src/BackgroundRenderer/BackgroundRenderer.cc
src/BackgroundRenderer/SplashBackgroundRenderer.h
src/BackgroundRenderer/SplashBackgroundRenderer.cc
src/BackgroundRenderer/CairoBackgroundRenderer.h
src/BackgroundRenderer/CairoBackgroundRenderer.cc
2012-11-29 09:45:26 +00:00
src/util/const.h
src/util/const.cc
2013-02-27 18:11:34 +00:00
src/util/css_const.h
2013-02-15 05:07:00 +00:00
src/util/encoding.h
src/util/encoding.cc
2012-11-29 09:28:05 +00:00
src/util/ffw.h
src/util/ffw.c
2012-11-29 10:16:05 +00:00
src/util/math.h
src/util/math.cc
2012-11-29 10:28:07 +00:00
src/util/misc.h
src/util/misc.cc
2012-11-29 09:45:26 +00:00
src/util/namespace.h
2012-11-29 10:16:05 +00:00
src/util/path.h
src/util/path.cc
2012-11-29 09:45:26 +00:00
src/util/unicode.h
src/util/unicode.cc
2014-01-15 13:29:46 +00:00
src/util/mingw.h
src/util/mingw.cc
2013-04-06 08:45:01 +00:00
src/ArgParser.h
src/ArgParser.cc
2013-04-06 15:41:58 +00:00
src/Base64Stream.h
src/Base64Stream.cc
2013-04-06 08:45:01 +00:00
src/Color.h
src/Color.cc
src/CoveredTextDetector.h
src/CoveredTextDetector.cc
src/DrawingTracer.h
src/DrawingTracer.cc
src/HTMLState.h
2013-04-06 15:51:33 +00:00
src/HTMLTextLine.h
src/HTMLTextLine.cc
src/HTMLTextPage.h
src/HTMLTextPage.cc
2013-04-06 08:45:01 +00:00
src/Preprocessor.h
src/Preprocessor.cc
src/StringFormatter.h
src/StringFormatter.cc
src/TmpFiles.h
src/TmpFiles.cc
2012-09-10 05:08:47 +00:00
)
2013-09-18 08:16:40 +00:00
add_executable(pdf2htmlEX ${PDF2HTMLEX_SRC})
2012-09-16 16:52:02 +00:00
target_link_libraries(pdf2htmlEX ${PDF2HTMLEX_LIBS})
2012-08-14 05:56:41 +00:00
add_custom_target(pdf2htmlEX_resources ALL DEPENDS
2013-10-30 07:50:07 +00:00
${CMAKE_SOURCE_DIR}/share/base.min.css
${CMAKE_SOURCE_DIR}/share/fancy.min.css
${CMAKE_SOURCE_DIR}/share/pdf2htmlEX.min.js
)
2013-10-22 07:03:07 +00:00
add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/share/pdf2htmlEX.min.js
2013-10-30 07:50:07 +00:00
COMMAND ${CMAKE_SOURCE_DIR}/share/build_js.sh
DEPENDS
${CMAKE_SOURCE_DIR}/share/build_js.sh
2013-10-30 07:50:07 +00:00
${CMAKE_SOURCE_DIR}/share/pdf2htmlEX.js
)
add_custom_command(OUTPUT
2013-10-30 07:50:07 +00:00
${CMAKE_SOURCE_DIR}/share/base.min.css
${CMAKE_SOURCE_DIR}/share/fancy.min.css
COMMAND ${CMAKE_SOURCE_DIR}/share/build_css.sh
DEPENDS
${CMAKE_SOURCE_DIR}/share/build_css.sh
2013-10-30 07:50:07 +00:00
${CMAKE_SOURCE_DIR}/share/base.css
${CMAKE_SOURCE_DIR}/share/fancy.css
2013-10-20 08:35:31 +00:00
)
2013-10-19 07:06:32 +00:00
2012-08-15 03:15:33 +00:00
install (TARGETS pdf2htmlEX DESTINATION bin)
2013-10-21 01:33:38 +00:00
set(PDF2HTMLEX_RESOURCE
2013-11-05 20:53:28 +00:00
${CMAKE_SOURCE_DIR}/3rdparty/PDF.js/compatibility.js
2013-11-06 08:33:15 +00:00
${CMAKE_SOURCE_DIR}/3rdparty/PDF.js/compatibility.min.js
2013-10-19 07:06:32 +00:00
${CMAKE_SOURCE_DIR}/share/base.css
2013-11-05 20:53:28 +00:00
${CMAKE_SOURCE_DIR}/share/base.min.css
2013-10-19 07:06:32 +00:00
${CMAKE_SOURCE_DIR}/share/fancy.css
2013-11-05 20:53:28 +00:00
${CMAKE_SOURCE_DIR}/share/fancy.min.css
2013-10-19 07:06:32 +00:00
${CMAKE_SOURCE_DIR}/share/LICENSE
${CMAKE_SOURCE_DIR}/share/manifest
2013-11-05 20:53:28 +00:00
${CMAKE_SOURCE_DIR}/share/pdf2htmlEX.js
2013-10-22 07:03:07 +00:00
${CMAKE_SOURCE_DIR}/share/pdf2htmlEX.min.js
2013-10-19 07:06:32 +00:00
${CMAKE_SOURCE_DIR}/share/pdf2htmlEX-64x64.png
2012-09-22 14:47:44 +00:00
)
2013-10-21 01:33:38 +00:00
install (FILES ${PDF2HTMLEX_RESOURCE} DESTINATION share/pdf2htmlEX)
2012-09-01 17:22:40 +00:00
install (FILES pdf2htmlEX.1 DESTINATION share/man/man1)
2013-06-06 17:15:14 +00:00
## tests:
set(PDF2HTMLEX_PATH ${CMAKE_BINARY_DIR}/pdf2htmlEX)
set(PDF2HTMLEX_TMPDIR /tmp/pdf2htmlEX/tmp)
set(PDF2HTMLEX_DATDIR /tmp/pdf2htmlEX/dat)
set(PDF2HTMLEX_PNGDIR /tmp/pdf2htmlEX/png)
set(PDF2HTMLEX_OUTDIR /tmp/pdf2htmlEX/out)
file(MAKE_DIRECTORY ${PDF2HTMLEX_TMPDIR})
file(MAKE_DIRECTORY ${PDF2HTMLEX_DATDIR})
file(MAKE_DIRECTORY ${PDF2HTMLEX_PNGDIR})
file(MAKE_DIRECTORY ${PDF2HTMLEX_OUTDIR})
configure_file(${CMAKE_SOURCE_DIR}/test/test.py.in ${CMAKE_SOURCE_DIR}/test/test.py)
include(CTest)
add_test(test_basic python ${CMAKE_SOURCE_DIR}/test/test_output.py)
add_test(test_browser python ${CMAKE_SOURCE_DIR}/test/test_local_browser.py)