diff options
Diffstat (limited to 'libs/litehtml/CMakeLists.txt')
-rw-r--r-- | libs/litehtml/CMakeLists.txt | 361 |
1 files changed, 159 insertions, 202 deletions
diff --git a/libs/litehtml/CMakeLists.txt b/libs/litehtml/CMakeLists.txt index 056bba6c9d..6759be7dfb 100644 --- a/libs/litehtml/CMakeLists.txt +++ b/libs/litehtml/CMakeLists.txt @@ -2,14 +2,9 @@ cmake_minimum_required(VERSION 3.11) project(litehtml LANGUAGES C CXX) +option(LITEHTML_BUILD_TESTING "enable testing for litehtml" OFF) -option(LITEHTML_BUILD_TESTING "enable testing for litehtml" ON) - -if(LITEHTML_BUILD_TESTING) - include(CTest) - enable_testing() -endif() - +if (NOT LITEHTML_BUILD_TESTING) # Soname # MAJOR is incremented when symbols are removed or changed in an incompatible way # MINOR is incremented when new symbols are added @@ -19,169 +14,168 @@ set(PROJECT_MINOR 0) option(EXTERNAL_GUMBO "Link against external gumbo instead of shipping a bundled copy" OFF) if(NOT EXTERNAL_GUMBO) - add_subdirectory(src/gumbo) + add_subdirectory(src/gumbo) endif() set(SOURCE_LITEHTML - src/codepoint.cpp - src/css_length.cpp - src/css_selector.cpp - src/document.cpp - src/document_container.cpp - src/el_anchor.cpp - src/el_base.cpp - src/el_before_after.cpp - src/el_body.cpp - src/el_break.cpp - src/el_cdata.cpp - src/el_comment.cpp - src/el_div.cpp - src/element.cpp - src/el_font.cpp - src/el_image.cpp - src/el_link.cpp - src/el_para.cpp - src/el_script.cpp - src/el_space.cpp - src/el_style.cpp - src/el_table.cpp - src/el_td.cpp - src/el_text.cpp - src/el_title.cpp - src/el_tr.cpp - src/html.cpp - src/html_tag.cpp - src/iterators.cpp - src/media_query.cpp - src/style.cpp - src/stylesheet.cpp - src/table.cpp - src/tstring_view.cpp - src/url.cpp - src/url_path.cpp - src/utf8_strings.cpp - src/web_color.cpp - src/num_cvt.cpp - src/strtod.cpp - src/string_id.cpp - src/css_properties.cpp - src/line_box.cpp - src/css_borders.cpp - src/render_item.cpp - src/render_block_context.cpp - src/render_block.cpp - src/render_inline_context.cpp - src/render_table.cpp - src/render_flex.cpp - src/render_image.cpp - src/formatting_context.cpp - src/flex_item.cpp - src/flex_line.cpp) - -set(HEADER_LITEHTML - include/litehtml.h - include/litehtml/background.h - include/litehtml/borders.h - include/litehtml/codepoint.h - include/litehtml/css_length.h - include/litehtml/css_margins.h - include/litehtml/css_offsets.h - include/litehtml/css_position.h - include/litehtml/css_selector.h - include/litehtml/document.h - include/litehtml/document_container.h - include/litehtml/el_anchor.h - include/litehtml/el_base.h - include/litehtml/el_before_after.h - include/litehtml/el_body.h - include/litehtml/el_break.h - include/litehtml/el_cdata.h - include/litehtml/el_comment.h - include/litehtml/el_div.h - include/litehtml/el_font.h - include/litehtml/el_image.h - include/litehtml/el_link.h - include/litehtml/el_para.h - include/litehtml/el_script.h - include/litehtml/el_space.h - include/litehtml/el_style.h - include/litehtml/el_table.h - include/litehtml/el_td.h - include/litehtml/el_text.h - include/litehtml/el_title.h - include/litehtml/el_tr.h - include/litehtml/element.h - include/litehtml/html.h - include/litehtml/html_tag.h - include/litehtml/iterators.h - include/litehtml/media_query.h - include/litehtml/os_types.h - include/litehtml/style.h - include/litehtml/stylesheet.h - include/litehtml/table.h - include/litehtml/tstring_view.h - include/litehtml/types.h - include/litehtml/url.h - include/litehtml/url_path.h - include/litehtml/utf8_strings.h - include/litehtml/web_color.h - include/litehtml/num_cvt.h - include/litehtml/css_properties.h - include/litehtml/line_box.h - include/litehtml/render_item.h - include/litehtml/render_flex.h - include/litehtml/render_image.h - include/litehtml/render_inline.h - include/litehtml/render_table.h - include/litehtml/render_inline_context.h - include/litehtml/render_block_context.h - include/litehtml/render_block.h - include/litehtml/master_css.h - include/litehtml/string_id.h - include/litehtml/formatting_context.h - include/litehtml/flex_item.h - include/litehtml/flex_line.h + src/codepoint.cpp + src/css_length.cpp + src/css_selector.cpp + src/css_tokenizer.cpp + src/css_parser.cpp + src/document.cpp + src/document_container.cpp + src/el_anchor.cpp + src/el_base.cpp + src/el_before_after.cpp + src/el_body.cpp + src/el_break.cpp + src/el_cdata.cpp + src/el_comment.cpp + src/el_div.cpp + src/element.cpp + src/el_font.cpp + src/el_image.cpp + src/el_link.cpp + src/el_para.cpp + src/el_script.cpp + src/el_space.cpp + src/el_style.cpp + src/el_table.cpp + src/el_td.cpp + src/el_text.cpp + src/el_title.cpp + src/el_tr.cpp + src/encodings.cpp + src/html.cpp + src/html_tag.cpp + src/html_microsyntaxes.cpp + src/iterators.cpp + src/media_query.cpp + src/style.cpp + src/stylesheet.cpp + src/table.cpp + src/tstring_view.cpp + src/url.cpp + src/url_path.cpp + src/utf8_strings.cpp + src/web_color.cpp + src/num_cvt.cpp + src/strtod.cpp + src/string_id.cpp + src/css_properties.cpp + src/line_box.cpp + src/css_borders.cpp + src/render_item.cpp + src/render_block_context.cpp + src/render_block.cpp + src/render_inline_context.cpp + src/render_table.cpp + src/render_flex.cpp + src/render_image.cpp + src/formatting_context.cpp + src/flex_item.cpp + src/flex_line.cpp + src/background.cpp + src/gradient.cpp ) -set(TEST_LITEHTML - test/cssTest.cpp - test/mediaQueryTest.cpp - test/codepoint_test.cpp - test/tstring_view_test.cpp - test/url_test.cpp - test/url_path_test.cpp - test/render_test.cpp - containers/test/test_container.cpp - containers/test/Font.cpp - containers/test/Bitmap.cpp - containers/test/lodepng.cpp +set(HEADER_LITEHTML + include/litehtml.h + include/litehtml/background.h + include/litehtml/borders.h + include/litehtml/codepoint.h + include/litehtml/css_length.h + include/litehtml/css_margins.h + include/litehtml/css_offsets.h + include/litehtml/css_position.h + include/litehtml/css_selector.h + include/litehtml/css_parser.h + include/litehtml/css_tokenizer.h + include/litehtml/document.h + include/litehtml/document_container.h + include/litehtml/el_anchor.h + include/litehtml/el_base.h + include/litehtml/el_before_after.h + include/litehtml/el_body.h + include/litehtml/el_break.h + include/litehtml/el_cdata.h + include/litehtml/el_comment.h + include/litehtml/el_div.h + include/litehtml/el_font.h + include/litehtml/el_image.h + include/litehtml/el_link.h + include/litehtml/el_para.h + include/litehtml/el_script.h + include/litehtml/el_space.h + include/litehtml/el_style.h + include/litehtml/el_table.h + include/litehtml/el_td.h + include/litehtml/el_text.h + include/litehtml/el_title.h + include/litehtml/el_tr.h + include/litehtml/element.h + include/litehtml/encodings.h + include/litehtml/html.h + include/litehtml/html_tag.h + include/litehtml/html_microsyntaxes.h + include/litehtml/iterators.h + include/litehtml/media_query.h + include/litehtml/os_types.h + include/litehtml/style.h + include/litehtml/stylesheet.h + include/litehtml/table.h + include/litehtml/tstring_view.h + include/litehtml/types.h + include/litehtml/url.h + include/litehtml/url_path.h + include/litehtml/utf8_strings.h + include/litehtml/web_color.h + include/litehtml/num_cvt.h + include/litehtml/css_properties.h + include/litehtml/line_box.h + include/litehtml/render_item.h + include/litehtml/render_flex.h + include/litehtml/render_image.h + include/litehtml/render_inline.h + include/litehtml/render_table.h + include/litehtml/render_inline_context.h + include/litehtml/render_block_context.h + include/litehtml/render_block.h + include/litehtml/master_css.h + include/litehtml/string_id.h + include/litehtml/formatting_context.h + include/litehtml/flex_item.h + include/litehtml/flex_line.h + include/litehtml/gradient.h ) set(PROJECT_LIB_VERSION ${PROJECT_MAJOR}.${PROJECT_MINOR}.0) set(PROJECT_SO_VERSION ${PROJECT_MAJOR}) if (MSVC) - # warning level 4 - add_compile_options(/W4) + # warning level 4 + add_compile_options(/W4) + add_compile_options(/permissive- /utf-8) else() - # additional warnings - add_compile_options(-Wall -Wextra -Wpedantic) + # additional warnings + add_compile_options(-Wall -Wextra -Wpedantic) endif() -add_library(${PROJECT_NAME} ${SOURCE_LITEHTML}) +add_library(${PROJECT_NAME} ${HEADER_LITEHTML} ${SOURCE_LITEHTML}) set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_LIB_VERSION} SOVERSION ${PROJECT_SO_VERSION}) set_target_properties(${PROJECT_NAME} PROPERTIES - CXX_STANDARD 11 - C_STANDARD 99 - PUBLIC_HEADER "${HEADER_LITEHTML}" + CXX_STANDARD 17 + C_STANDARD 99 + PUBLIC_HEADER "${HEADER_LITEHTML}" ) # Export litehtml includes. target_include_directories(${PROJECT_NAME} PUBLIC - $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src> - $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> - $<INSTALL_INTERFACE:include/${PROJECT_NAME}>) + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src> + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> + $<INSTALL_INTERFACE:include/${PROJECT_NAME}>) target_include_directories(${PROJECT_NAME} PRIVATE include/${PROJECT_NAME}) # Gumbo @@ -189,63 +183,26 @@ target_link_libraries(${PROJECT_NAME} PUBLIC gumbo) # install and export install(TARGETS ${PROJECT_NAME} - EXPORT litehtmlTargets - RUNTIME DESTINATION bin COMPONENT libraries - ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT libraries - LIBRARY DESTINATION lib${LIB_SUFFIX} COMPONENT libraries - PUBLIC_HEADER DESTINATION include/litehtml + EXPORT litehtmlTargets + RUNTIME DESTINATION bin COMPONENT libraries + ARCHIVE DESTINATION lib${LIB_SUFFIX} COMPONENT libraries + LIBRARY DESTINATION lib${LIB_SUFFIX} COMPONENT libraries + PUBLIC_HEADER DESTINATION include/litehtml ) install(FILES cmake/litehtmlConfig.cmake DESTINATION lib${LIB_SUFFIX}/cmake/litehtml) install(EXPORT litehtmlTargets FILE litehtmlTargets.cmake DESTINATION lib${LIB_SUFFIX}/cmake/litehtml) # Tests -if (LITEHTML_BUILD_TESTING) - option(EXTERNAL_GTEST "Use external GoogleTest instead of fetching from GitHub" OFF) - - if (EXTERNAL_GTEST) - link_libraries("-Wl,--copy-dt-needed-entries") - else() - include(FetchContent) - FetchContent_Declare( - googletest - URL https://github.com/google/googletest/archive/609281088cfefc76f9d0ce82e1ff6c30cc3591e5.zip - ) - # For Windows: Prevent overriding the parent project's compiler/linker settings - set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) - FetchContent_GetProperties(googletest) - if(NOT googletest_POPULATED) - FetchContent_Populate(googletest) - add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR}) - endif() - endif() - - enable_testing() - - set(TEST_NAME ${PROJECT_NAME}_tests) - - add_executable( - ${TEST_NAME} - ${TEST_LITEHTML} - ) - - set_target_properties(${TEST_NAME} PROPERTIES - CXX_STANDARD 11 - C_STANDARD 99 - PUBLIC_HEADER "${HEADER_LITEHTML}" - ) - - target_include_directories( - ${TEST_NAME} - PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/containers - ) - - target_link_libraries( - ${TEST_NAME} - ${PROJECT_NAME} - gtest_main - ) - - include(GoogleTest) - gtest_discover_tests(${TEST_NAME} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test) +else () + include(ExternalProject) + ExternalProject_Add( + litehtml-tests + GIT_REPOSITORY https://github.com/litehtml/litehtml-tests.git + GIT_TAG 1893e7b9f4f7a3e316c79795b29248fc0e761ef2 + SOURCE_DIR "${CMAKE_BINARY_DIR}/litehtml-tests-src" + BINARY_DIR "${CMAKE_BINARY_DIR}/litehtml-tests-build" + CMAKE_ARGS -DLITEHTML_PATH=${CMAKE_CURRENT_SOURCE_DIR} + INSTALL_COMMAND "" + ) endif() |