## CMakeLists.txt ## ## Copyright (C) 2015-2024 Christian Schenk ## ## This file is free software; the copyright holder gives ## unlimited permission to copy and/or distribute it, with or ## without modifications, as long as this notice is preserved. include(component.cmake) set(MIKTEX_CURRENT_FOLDER "${MIKTEX_IDE_DVIWARE_FOLDER}/dvisvgm") include_directories(BEFORE source/libs/boost source/libs/brotli/include source/libs/clipper source/libs/potrace source/libs/variant/include source/libs/woff2/include source/libs/xxHash ) include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ) if(MIKTEX_NATIVE_WINDOWS) add_definitions( -DUNICODE -D_UNICODE ) endif() if(CMAKE_CL_64) add_definitions( -D_WIN64 ) endif() add_definitions( -DHAVE_CONFIG_H ) set(HAVE_CXX11 1) set(VERSION ${MIKTEX_COMP_ORIG_VERSION_STR}) configure_file( miktex-dvisvgm-version.h.in ${CMAKE_CURRENT_BINARY_DIR}/miktex-dvisvgm-version.h ) configure_file( config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h ) configure_file( source/src/version.hpp.in ${CMAKE_CURRENT_BINARY_DIR}/version.hpp ) set(libclipper_sources source/libs/clipper/clipper.cpp source/libs/clipper/clipper.hpp ) set(libxxhash_sources source/libs/xxHash/xxhash.c source/libs/xxHash/xxhash.h ) set(libbrotli_sources ${CMAKE_CURRENT_BINARY_DIR}/version.hpp source/libs/brotli/common/constants.c source/libs/brotli/common/constants.h source/libs/brotli/common/context.c source/libs/brotli/common/context.h source/libs/brotli/common/dictionary.c source/libs/brotli/common/dictionary.h source/libs/brotli/common/platform.c source/libs/brotli/common/platform.h source/libs/brotli/common/shared_dictionary_internal.h source/libs/brotli/common/transform.c source/libs/brotli/common/transform.h source/libs/brotli/common/version.h source/libs/brotli/enc/backward_references.c source/libs/brotli/enc/backward_references.h source/libs/brotli/enc/backward_references_hq.c source/libs/brotli/enc/backward_references_hq.h source/libs/brotli/enc/backward_references_inc.h source/libs/brotli/enc/bit_cost.c source/libs/brotli/enc/bit_cost.h source/libs/brotli/enc/bit_cost_inc.h source/libs/brotli/enc/block_encoder_inc.h source/libs/brotli/enc/block_splitter.c source/libs/brotli/enc/block_splitter.h source/libs/brotli/enc/block_splitter_inc.h source/libs/brotli/enc/brotli_bit_stream.c source/libs/brotli/enc/brotli_bit_stream.h source/libs/brotli/enc/cluster.c source/libs/brotli/enc/cluster.h source/libs/brotli/enc/cluster_inc.h source/libs/brotli/enc/command.c source/libs/brotli/enc/command.h source/libs/brotli/enc/compound_dictionary.c source/libs/brotli/enc/compound_dictionary.h source/libs/brotli/enc/compress_fragment.c source/libs/brotli/enc/compress_fragment.h source/libs/brotli/enc/compress_fragment_two_pass.c source/libs/brotli/enc/compress_fragment_two_pass.h source/libs/brotli/enc/dictionary_hash.c source/libs/brotli/enc/dictionary_hash.h source/libs/brotli/enc/encode.c source/libs/brotli/enc/encoder_dict.c source/libs/brotli/enc/encoder_dict.h source/libs/brotli/enc/entropy_encode.c source/libs/brotli/enc/entropy_encode.h source/libs/brotli/enc/entropy_encode_static.h source/libs/brotli/enc/fast_log.c source/libs/brotli/enc/fast_log.h source/libs/brotli/enc/find_match_length.h source/libs/brotli/enc/hash.h source/libs/brotli/enc/hash_composite_inc.h source/libs/brotli/enc/hash_forgetful_chain_inc.h source/libs/brotli/enc/hash_longest_match64_inc.h source/libs/brotli/enc/hash_longest_match_inc.h source/libs/brotli/enc/hash_longest_match_quickly_inc.h source/libs/brotli/enc/hash_rolling_inc.h source/libs/brotli/enc/hash_to_binary_tree_inc.h source/libs/brotli/enc/histogram.c source/libs/brotli/enc/histogram.h source/libs/brotli/enc/histogram_inc.h source/libs/brotli/enc/literal_cost.c source/libs/brotli/enc/literal_cost.h source/libs/brotli/enc/memory.c source/libs/brotli/enc/memory.h source/libs/brotli/enc/metablock.c source/libs/brotli/enc/metablock.h source/libs/brotli/enc/metablock_inc.h source/libs/brotli/enc/params.h source/libs/brotli/enc/prefix.h source/libs/brotli/enc/quality.h source/libs/brotli/enc/ringbuffer.h source/libs/brotli/enc/state.h source/libs/brotli/enc/static_dict.c source/libs/brotli/enc/static_dict.h source/libs/brotli/enc/static_dict_lut.h source/libs/brotli/enc/utf8_util.c source/libs/brotli/enc/utf8_util.h source/libs/brotli/enc/write_bits.h source/libs/brotli/include/brotli/decode.h source/libs/brotli/include/brotli/encode.h source/libs/brotli/include/brotli/port.h source/libs/brotli/include/brotli/shared_dictionary.h source/libs/brotli/include/brotli/types.h ) set(libwoff2_sources source/libs/woff2/include/woff2/decode.h source/libs/woff2/include/woff2/encode.h source/libs/woff2/include/woff2/output.h source/libs/woff2/include/woff2/version.h source/libs/woff2/src/buffer.h source/libs/woff2/src/font.cc source/libs/woff2/src/font.h source/libs/woff2/src/glyph.cc source/libs/woff2/src/glyph.h source/libs/woff2/src/normalize.cc source/libs/woff2/src/normalize.h source/libs/woff2/src/port.h source/libs/woff2/src/round.h source/libs/woff2/src/store_bytes.h source/libs/woff2/src/table_tags.cc source/libs/woff2/src/table_tags.h source/libs/woff2/src/transform.cc source/libs/woff2/src/transform.h source/libs/woff2/src/variable_length.cc source/libs/woff2/src/variable_length.h source/libs/woff2/src/woff2_common.cc source/libs/woff2/src/woff2_common.h source/libs/woff2/src/woff2_enc.cc source/libs/woff2/src/woff2_out.cc ) set(potrace_sources source/libs/potrace/auxiliary.h source/libs/potrace/bitmap.h source/libs/potrace/config.h source/libs/potrace/curve.c source/libs/potrace/curve.h source/libs/potrace/decompose.c source/libs/potrace/decompose.h source/libs/potrace/lists.h source/libs/potrace/potracelib.c source/libs/potrace/potracelib.h source/libs/potrace/progress.h source/libs/potrace/trace.c source/libs/potrace/trace.h ) set(libbase14fonts_source source/src/fonts/Base14Fonts.cpp source/src/fonts/Base14Fonts.hpp source/src/fonts/Dingbats.cff.cpp source/src/fonts/NimbusMonoPS-Bold.cff.cpp source/src/fonts/NimbusMonoPS-BoldItalic.cff.cpp source/src/fonts/NimbusMonoPS-Italic.cff.cpp source/src/fonts/NimbusMonoPS-Regular.cff.cpp source/src/fonts/NimbusRoman-Bold.cff.cpp source/src/fonts/NimbusRoman-BoldItalic.cff.cpp source/src/fonts/NimbusRoman-Italic.cff.cpp source/src/fonts/NimbusRoman-Regular.cff.cpp source/src/fonts/NimbusSans-Bold.cff.cpp source/src/fonts/NimbusSans-BoldItalic.cff.cpp source/src/fonts/NimbusSans-Italic.cff.cpp source/src/fonts/NimbusSans-Regular.cff.cpp source/src/fonts/StandardSymbolsPS.cff.cpp ) set(liboptimizer_sources source/src/optimizer/AttributeExtractor.cpp source/src/optimizer/AttributeExtractor.hpp source/src/optimizer/ClipPathReassigner.cpp source/src/optimizer/ClipPathReassigner.hpp source/src/optimizer/DependencyGraph.hpp source/src/optimizer/GroupCollapser.cpp source/src/optimizer/GroupCollapser.hpp source/src/optimizer/OptimizerModule.hpp source/src/optimizer/RedundantElementRemover.cpp source/src/optimizer/RedundantElementRemover.hpp source/src/optimizer/SVGOptimizer.cpp source/src/optimizer/SVGOptimizer.hpp source/src/optimizer/TextSimplifier.cpp source/src/optimizer/TextSimplifier.hpp source/src/optimizer/TransformSimplifier.cpp source/src/optimizer/TransformSimplifier.hpp source/src/optimizer/WSNodeRemover.cpp source/src/optimizer/WSNodeRemover.hpp ) set(libttf_sources source/src/ttf/CmapTable.cpp source/src/ttf/CmapTable.hpp source/src/ttf/GlyfTable.cpp source/src/ttf/GlyfTable.hpp source/src/ttf/HeadTable.cpp source/src/ttf/HeadTable.hpp source/src/ttf/HheaTable.cpp source/src/ttf/HheaTable.hpp source/src/ttf/HmtxTable.cpp source/src/ttf/HmtxTable.hpp source/src/ttf/LocaTable.hpp source/src/ttf/MaxpTable.cpp source/src/ttf/MaxpTable.hpp source/src/ttf/NameTable.cpp source/src/ttf/NameTable.hpp source/src/ttf/OS2Table.cpp source/src/ttf/OS2Table.hpp source/src/ttf/PostTable.cpp source/src/ttf/PostTable.hpp source/src/ttf/TTFAutohint.cpp source/src/ttf/TTFAutohint.hpp source/src/ttf/TTFTable.cpp source/src/ttf/TTFTable.hpp source/src/ttf/TTFWriter.cpp source/src/ttf/TTFWriter.hpp source/src/ttf/VheaTable.cpp source/src/ttf/VheaTable.hpp source/src/ttf/VmtxTable.cpp source/src/ttf/VmtxTable.hpp ) set(libdvisvgm_sources source/src/AGLTable.hpp source/src/BasicDVIReader.cpp source/src/BasicDVIReader.hpp source/src/Bezier.cpp source/src/Bezier.hpp source/src/BgColorSpecialHandler.cpp source/src/BgColorSpecialHandler.hpp source/src/Bitmap.cpp source/src/Bitmap.hpp source/src/BoundingBox.cpp source/src/BoundingBox.hpp source/src/CLCommandLine.cpp source/src/CLCommandLine.hpp source/src/CLOption.hpp source/src/CMap.cpp source/src/CMap.hpp source/src/CMapManager.cpp source/src/CMapManager.hpp source/src/CMapReader.cpp source/src/CMapReader.hpp source/src/Calculator.cpp source/src/Calculator.hpp source/src/CharMapID.cpp source/src/CharMapID.hpp source/src/Character.hpp source/src/Color.cpp source/src/Color.hpp source/src/ColorSpecialHandler.cpp source/src/ColorSpecialHandler.hpp source/src/CommandLine.hpp source/src/DLLoader.cpp source/src/DLLoader.hpp source/src/DVIActions.hpp source/src/DVIReader.cpp source/src/DVIReader.hpp source/src/DVIToSVG.cpp source/src/DVIToSVG.hpp source/src/DVIToSVGActions.cpp source/src/DVIToSVGActions.hpp source/src/Directory.cpp source/src/Directory.hpp source/src/DvisvgmSpecialHandler.cpp source/src/DvisvgmSpecialHandler.hpp source/src/EPSFile.cpp source/src/EPSFile.hpp source/src/EPSToSVG.hpp source/src/EllipticalArc.cpp source/src/EllipticalArc.hpp source/src/EmSpecialHandler.cpp source/src/EmSpecialHandler.hpp source/src/EncFile.cpp source/src/EncFile.hpp source/src/FileFinder.cpp source/src/FileFinder.hpp source/src/FilePath.cpp source/src/FilePath.hpp source/src/FileSystem.cpp source/src/FileSystem.hpp source/src/FixWord.hpp source/src/Font.cpp source/src/Font.hpp source/src/FontCache.cpp source/src/FontCache.hpp source/src/FontEncoding.cpp source/src/FontEncoding.hpp source/src/FontEngine.cpp source/src/FontEngine.hpp source/src/FontManager.cpp source/src/FontManager.hpp source/src/FontMap.cpp source/src/FontMap.hpp source/src/FontMetrics.cpp source/src/FontMetrics.hpp source/src/FontStyle.hpp source/src/FontWriter.cpp source/src/FontWriter.hpp source/src/GFGlyphTracer.cpp source/src/GFGlyphTracer.hpp source/src/GFReader.cpp source/src/GFReader.hpp source/src/GFTracer.cpp source/src/GFTracer.hpp source/src/Ghostscript.cpp source/src/Ghostscript.hpp source/src/Glyph.hpp source/src/GlyphTracerMessages.hpp source/src/GraphicsPath.hpp source/src/GraphicsPathParser.hpp source/src/HashFunction.cpp source/src/HashFunction.hpp source/src/HtmlSpecialHandler.cpp source/src/HtmlSpecialHandler.hpp source/src/HyperlinkManager.cpp source/src/HyperlinkManager.hpp source/src/ImageToSVG.cpp source/src/ImageToSVG.hpp source/src/InputBuffer.cpp source/src/InputBuffer.hpp source/src/InputReader.cpp source/src/InputReader.hpp source/src/JFM.cpp source/src/JFM.hpp source/src/Length.cpp source/src/Length.hpp source/src/MD5HashFunction.hpp source/src/MapLine.cpp source/src/MapLine.hpp source/src/Matrix.cpp source/src/Matrix.hpp source/src/Message.cpp source/src/Message.hpp source/src/MessageException.hpp source/src/MetafontWrapper.cpp source/src/MetafontWrapper.hpp source/src/NoPsSpecialHandler.cpp source/src/NoPsSpecialHandler.hpp source/src/NumericRanges.hpp source/src/OFM.cpp source/src/OFM.hpp source/src/Opacity.cpp source/src/Opacity.hpp source/src/PDFHandler.cpp source/src/PDFHandler.hpp source/src/PDFParser.cpp source/src/PDFParser.hpp source/src/PDFToSVG.cpp source/src/PDFToSVG.hpp source/src/PSInterpreter.cpp source/src/PSInterpreter.hpp source/src/PSPattern.cpp source/src/PSPattern.hpp source/src/PSPreviewHandler.cpp source/src/PSPreviewHandler.hpp source/src/PageRanges.cpp source/src/PageRanges.hpp source/src/PageSize.cpp source/src/PageSize.hpp source/src/Pair.hpp source/src/PapersizeSpecialHandler.cpp source/src/PapersizeSpecialHandler.hpp source/src/PathClipper.cpp source/src/PathClipper.hpp source/src/PdfSpecialHandler.cpp source/src/PdfSpecialHandler.hpp source/src/PreScanDVIReader.cpp source/src/PreScanDVIReader.hpp source/src/Process.cpp source/src/Process.hpp source/src/PsSpecialHandler.cpp source/src/PsSpecialHandler.hpp source/src/PsSpecialHandlerProxy.cpp source/src/PsSpecialHandlerProxy.hpp source/src/RangeMap.cpp source/src/RangeMap.hpp source/src/SVGCharHandler.cpp source/src/SVGCharHandler.hpp source/src/SVGCharHandlerFactory.cpp source/src/SVGCharHandlerFactory.hpp source/src/SVGCharPathHandler.cpp source/src/SVGCharPathHandler.hpp source/src/SVGCharTspanTextHandler.cpp source/src/SVGCharTspanTextHandler.hpp source/src/SVGElement.cpp source/src/SVGElement.hpp source/src/SVGOutput.cpp source/src/SVGOutput.hpp source/src/SVGSingleCharTextHandler.cpp source/src/SVGSingleCharTextHandler.hpp source/src/SVGTree.cpp source/src/SVGTree.hpp source/src/ShadingPatch.cpp source/src/ShadingPatch.hpp source/src/SignalHandler.cpp source/src/SignalHandler.hpp source/src/SourceInput.cpp source/src/SourceInput.hpp source/src/SpecialActions.cpp source/src/SpecialActions.hpp source/src/SpecialHandler.hpp source/src/SpecialManager.cpp source/src/SpecialManager.hpp source/src/StreamReader.cpp source/src/StreamReader.hpp source/src/StreamWriter.cpp source/src/StreamWriter.hpp source/src/Subfont.cpp source/src/Subfont.hpp source/src/System.cpp source/src/System.hpp source/src/TFM.cpp source/src/TFM.hpp source/src/TensorProductPatch.cpp source/src/TensorProductPatch.hpp source/src/Terminal.cpp source/src/Terminal.hpp source/src/ToUnicodeMap.cpp source/src/ToUnicodeMap.hpp source/src/TpicSpecialHandler.cpp source/src/TpicSpecialHandler.hpp source/src/TriangularPatch.cpp source/src/TriangularPatch.hpp source/src/Unicode.cpp source/src/Unicode.hpp source/src/VFActions.hpp source/src/VFReader.cpp source/src/VFReader.hpp source/src/VectorIterator.hpp source/src/XMLDocument.cpp source/src/XMLDocument.hpp source/src/XMLNode.cpp source/src/XMLNode.hpp source/src/XMLParser.cpp source/src/XMLParser.hpp source/src/XMLString.cpp source/src/XMLString.hpp source/src/XXHashFunction.hpp source/src/ZLibOutputStream.hpp source/src/macros.hpp source/src/psdefs.cpp source/src/utility.cpp source/src/utility.hpp source/src/windows.hpp ) set(dvisvgm_c_sources source/src/dvisvgm.cpp ) set(dvisvgm_sources ${CMAKE_CURRENT_BINARY_DIR}/config.h ${CMAKE_CURRENT_BINARY_DIR}/miktex-dvisvgm-version.h ${MIKTEX_LIBRARY_WRAPPER} ${dvisvgm_c_sources} ${libbase14fonts_source} ${libbrotli_sources} ${libclipper_sources} ${libdvisvgm_sources} ${liboptimizer_sources} ${libttf_sources} ${libwoff2_sources} ${libxxhash_sources} ${potrace_sources} ) if(MIKTEX_NATIVE_WINDOWS) configure_file( windows/miktex-dvisvgm.rc.in ${CMAKE_CURRENT_BINARY_DIR}/miktex-dvisvgm.rc ) list(APPEND dvisvgm_sources ${CMAKE_CURRENT_BINARY_DIR}/miktex-dvisvgm.rc ${MIKTEX_COMMON_MANIFEST} ) endif() set_source_files_properties(${MIKTEX_LIBRARY_WRAPPER} PROPERTIES COMPILE_FLAGS "-DCPLUSPLUSMAIN -DBEQUIET" ) add_executable(${MIKTEX_PREFIX}dvisvgm ${dvisvgm_sources}) set_property(TARGET ${MIKTEX_PREFIX}dvisvgm PROPERTY FOLDER ${MIKTEX_CURRENT_FOLDER}) if(USE_SYSTEM_FREETYPE2) target_link_libraries(${MIKTEX_PREFIX}dvisvgm MiKTeX::Imported::FREETYPE2) else() target_link_libraries(${MIKTEX_PREFIX}dvisvgm ${freetype2_dll_name}) endif() if(USE_SYSTEM_ZLIB) target_link_libraries(${MIKTEX_PREFIX}dvisvgm MiKTeX::Imported::ZLIB) else() target_link_libraries(${MIKTEX_PREFIX}dvisvgm ${zlib_dll_name}) endif() target_link_libraries(${MIKTEX_PREFIX}dvisvgm ${app_dll_name} ${core_dll_name} ${kpsemu_dll_name} ${texmf_dll_name} ) if(MIKTEX_NATIVE_WINDOWS) target_link_libraries(${MIKTEX_PREFIX}dvisvgm ${unxemu_dll_name} ${utf8wrap_dll_name} ) else() target_link_libraries(${MIKTEX_PREFIX}dvisvgm ${CMAKE_DL_LIBS} ) endif() install(TARGETS ${MIKTEX_PREFIX}dvisvgm DESTINATION ${MIKTEX_BINARY_DESTINATION_DIR})