diff options
Diffstat (limited to 'src/CMakeLists.txt')
-rw-r--r-- | src/CMakeLists.txt | 445 |
1 files changed, 445 insertions, 0 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..635c5af --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,445 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# ----------------------------------------------------------------------------- +# Define the main source +# ----------------------------------------------------------------------------- + +set(inkscape_SRC + alignment-snapper.cpp + attribute-rel-css.cpp + attribute-rel-svg.cpp + attribute-rel-util.cpp + attribute-sort-util.cpp + attributes.cpp + auto-save.cpp + axis-manip.cpp + hsluv.cpp + color.cpp + composite-undo-stack-observer.cpp + conditions.cpp + conn-avoid-ref.cpp + console-output-undo-observer.cpp + context-fns.cpp + desktop-events.cpp + desktop-style.cpp + desktop.cpp + device-manager.cpp + distribution-snapper.cpp + document-subset.cpp + document-undo.cpp + document.cpp + ege-color-prof-tracker.cpp + event-log.cpp + extract-uri.cpp + file.cpp + file-update.cpp + filter-chemistry.cpp + filter-enums.cpp + gc-anchored.cpp + gc-finalized.cpp + gradient-chemistry.cpp + gradient-drag.cpp + guide-snapper.cpp + id-clash.cpp + inkscape.cpp + inkscape-version-info.cpp + layer-manager.cpp + line-geometry.cpp + line-snapper.cpp + media.cpp + message-context.cpp + message-stack.cpp + mod360.cpp + object-hierarchy.cpp + object-snapper.cpp + page-manager.cpp + path-chemistry.cpp + path-prefix.cpp + perspective-line.cpp + preferences.cpp + print.cpp + profile-manager.cpp + proj_pt.cpp + pure-transform.cpp + rdf.cpp + rubberband.cpp + selcue.cpp + selection-chemistry.cpp + selection-describer.cpp + selection.cpp + seltrans-handles.cpp + seltrans.cpp + snap-preferences.cpp + snap.cpp + snapped-curve.cpp + snapped-line.cpp + snapped-point.cpp + snapper.cpp + style-internal.cpp + style.cpp + text-chemistry.cpp + text-editing.cpp + transf_mat_3x4.cpp + unicoderange.cpp + vanishing-point.cpp + version.cpp + + # ------- + # Headers + alignment-snapper.h + attribute-rel-css.h + attribute-rel-svg.h + attribute-rel-util.h + attribute-sort-util.h + attributes.h + auto-save.h + axis-manip.h + bad-uri-exception.h + cms-color-types.h + cms-system.h + color-profile-cms-fns.h + color-rgba.h + hsluv.h + color.h + colorspace.h + composite-undo-stack-observer.h + conditions.h + conn-avoid-ref.h + console-output-undo-observer.h + context-fns.h + desktop-events.h + desktop-style.h + desktop.h + device-manager.h + distribution-snapper.h + document-subset.h + document-undo.h + document.h + ege-color-prof-tracker.h + enums.h + event-log.h + event.h + extract-uri.h + file.h + fill-or-stroke.h + filter-chemistry.h + filter-enums.h + gc-anchored.h + gc-finalized.h + gradient-chemistry.h + gradient-drag.h + guide-snapper.h + helper-fns.h + id-clash.h + inkscape-version.h + inkscape-version-info.h + inkscape.h + layer-manager.h + line-geometry.h + line-snapper.h + media.h + message-context.h + message-stack.h + message.h + mod360.h + number-opt-number.h + object-hierarchy.h + object-snapper.h + page-manager.h + path-chemistry.h + path-prefix.h + perspective-line.h + preferences-skeleton.h + preferences.h + print.h + profile-manager.h + proj_pt.h + pure-transform.h + rdf.h + rubberband.h + selcue.h + selection-chemistry.h + selection-describer.h + selection.h + seltrans-handles.h + seltrans.h + snap-candidate.h + snap-enums.h + snap-preferences.h + snap.h + snapped-curve.h + snapped-line.h + snapped-point.h + snapper.h + streq.h + strneq.h + style-enums.h + style-internal.h + style.h + syseq.h + text-chemistry.h + text-editing.h + text-tag-attributes.h + transf_mat_3x4.h + undo-stack-observer.h + unicoderange.h + vanishing-point.h + version.h + + # TEMP Need to detangle inkscape-view from ui/interface.cpp + inkscape-window.h + inkscape-window.cpp + + inkscape-application.h + inkscape-application.cpp + actions/actions-effect-data.h + actions/actions-effect-data.cpp + actions/actions-extra-data.h + actions/actions-extra-data.cpp + actions/actions-hint-data.h + actions/actions-hint-data.cpp + + actions/actions-base.h + actions/actions-base.cpp + actions/actions-canvas-mode.h + actions/actions-canvas-mode.cpp + actions/actions-canvas-snapping.h + actions/actions-canvas-snapping.cpp + actions/actions-canvas-transform.h + actions/actions-canvas-transform.cpp + actions/actions-dialogs.cpp + actions/actions-dialogs.h + actions/actions-edit-document.h + actions/actions-edit-document.cpp + actions/actions-edit-window.h + actions/actions-edit-window.cpp + actions/actions-edit.h + actions/actions-edit.cpp + actions/actions-effect.h + actions/actions-effect.cpp + actions/actions-element-a.h + actions/actions-element-a.cpp + actions/actions-element-image.h + actions/actions-element-image.cpp + actions/actions-file-window.h + actions/actions-file-window.cpp + actions/actions-file.h + actions/actions-file.cpp + actions/actions-helper.h + actions/actions-helper.cpp + actions/actions-help-url.h + actions/actions-help-url.cpp + actions/actions-hide-lock.h + actions/actions-hide-lock.cpp + actions/actions-layer.h + actions/actions-layer.cpp + actions/actions-node-align.h + actions/actions-node-align.cpp + actions/actions-object.h + actions/actions-object.cpp + actions/actions-object-align.h + actions/actions-object-align.cpp + actions/actions-output.h + actions/actions-output.cpp + actions/actions-paths.h + actions/actions-paths.cpp + actions/actions-selection-object.h + actions/actions-selection-object.cpp + actions/actions-selection-window.h + actions/actions-selection-window.cpp + actions/actions-selection.h + actions/actions-selection.cpp + actions/actions-text.h + actions/actions-text.cpp + actions/actions-tools.h + actions/actions-tools.cpp + actions/actions-tutorial.h + actions/actions-tutorial.cpp + actions/actions-transform.h + actions/actions-transform.cpp + actions/actions-undo-document.h + actions/actions-undo-document.cpp + actions/actions-view-mode.h + actions/actions-view-mode.cpp + actions/actions-view-window.h + actions/actions-view-window.cpp + actions/actions-window.h + actions/actions-window.cpp + actions/actions-pages.h + actions/actions-pages.cpp + + inkview-application.h + inkview-application.cpp + inkview-window.h + inkview-window.cpp +) + +# ----------------------------------------------------------------------------- +# Generate version file +# ----------------------------------------------------------------------------- + +# configure with values known at configure time +configure_file(inkscape-version.cpp.in ${CMAKE_BINARY_DIR}/src/inkscape-version.cpp.in @ONLY) + +# configure further at build time (always built as run_always.txt is never actually created) +add_custom_command( + OUTPUT inkscape-version.cpp run_always.txt + COMMAND ${CMAKE_COMMAND} + -DINKSCAPE_SOURCE_DIR=${CMAKE_SOURCE_DIR} + -DINKSCAPE_BINARY_DIR=${CMAKE_BINARY_DIR} + -P ${CMAKE_SOURCE_DIR}/CMakeScripts/inkscape-version.cmake + COMMENT "Generating inkscape-version.cpp") + +list(APPEND inkscape_SRC + ${CMAKE_BINARY_DIR}/src/inkscape-version.cpp +) + + +# ----------------------------------------------------------------------------- +# Load in subdirectories +# ----------------------------------------------------------------------------- + +# All folders for internal inkscape +# these call add_inkscape_source +add_subdirectory(actions) +add_subdirectory(debug) +add_subdirectory(display) +add_subdirectory(extension) +add_subdirectory(helper) +add_subdirectory(include) +add_subdirectory(io) +add_subdirectory(live_effects) +add_subdirectory(object) +add_subdirectory(path) +add_subdirectory(svg) +add_subdirectory(trace) +add_subdirectory(ui) +add_subdirectory(util) +add_subdirectory(widgets) +add_subdirectory(xml) + +# Directories containing lists files that describe building internal libraries +add_subdirectory(3rdparty) +add_subdirectory(inkgc) +add_subdirectory(livarot) +add_subdirectory(libnrtype) +include_directories("3rdparty/adaptagrams") + +get_property(inkscape_global_SRC GLOBAL PROPERTY inkscape_global_SRC) + +set(inkscape_SRC + ${inkscape_global_SRC} + ${inkscape_SRC} +) + +# ----------------------------------------------------------------------------- +# Setup the executable +# ----------------------------------------------------------------------------- +set(main_SRC + inkscape-main.cpp +) +set(view_SRC + inkview-main.cpp +) + +if(WIN32) + # Configure and add the platform specific resource files (enabling the app icon). + string(TIMESTAMP COPYRIGHT_YEAR %Y) + + set(FILE_NAME inkscape) + set(PROGRAM_NAME Inkscape) + set(PROGRAM_DESCRIPTION "Inkscape vector graphics editor") + configure_file(inkscape.rc ${CMAKE_BINARY_DIR}/src/inkscape.rc) + configure_file(inkscape-manifest.xml ${CMAKE_BINARY_DIR}/src/inkscape-manifest.xml) + list(APPEND main_SRC ${CMAKE_BINARY_DIR}/src/inkscape.rc) + + set(FILE_NAME inkview) + set(PROGRAM_NAME Inkview) + set(PROGRAM_DESCRIPTION "Inkview vector graphics viewer") + configure_file(inkscape.rc ${CMAKE_BINARY_DIR}/src/inkview.rc) + configure_file(inkscape-manifest.xml ${CMAKE_BINARY_DIR}/src/inkview-manifest.xml) + list(APPEND view_SRC ${CMAKE_BINARY_DIR}/src/inkview.rc) +endif() + +# make executables for inkscape and inkview +add_executable(inkscape ${main_SRC}) +add_executable(inkview ${view_SRC}) +if(WIN32) + # Make the same executables again, but this time as console application (GUI applications can't print to the console) + add_executable(inkscape_com ${main_SRC}) + set_target_properties(inkscape_com + PROPERTIES + LINK_FLAGS "-mconsole" + OUTPUT_NAME "inkscape" + SUFFIX ".com") + add_executable(inkview_com ${view_SRC}) + set_target_properties(inkview_com + PROPERTIES + LINK_FLAGS "-mconsole" + OUTPUT_NAME "inkview" + SUFFIX ".com") +endif() + + +set(INKSCAPE_TARGET_LIBS + # order from automake + #sp_LIB + #nrtype_LIB + #inkscape_LIB + #sp_LIB # annoying, we need both! + nrtype_LIB # annoying, we need both! + croco_LIB + avoid_LIB + cola_LIB + vpsc_LIB + livarot_LIB + uemf_LIB + depixelize_LIB + autotrace_LIB + util_LIB + gc_LIB +) + +# Build everything except main and inkview.c in a shared library. +add_library(inkscape_base ${inkscape_SRC} ${sp_SRC}) + +# added so that locally installed inkscape can find lib2geom if it's not installed systemwide +if(NOT APPLE) + set_target_properties(inkscape_base PROPERTIES INSTALL_RPATH "$ORIGIN/..") +else() + set_target_properties(inkscape_base PROPERTIES INSTALL_RPATH "@loader_path/..") +endif() + +if(WITH_INTERNAL_CAIRO) +add_dependencies(inkscape_base cairo_ext) +endif() + +target_link_libraries(inkscape_base PUBLIC Boost::filesystem) + +# Link the inkscape_base library against all external dependencies +target_link_libraries(inkscape_base + PRIVATE + ${INKSCAPE_TARGET_LIBS} + 2Geom::2geom + PUBLIC + ${INKSCAPE_LIBS} + ) +target_include_directories(inkscape_base INTERFACE ${2Geom_INCLUDE_DIRS}) + +# Link inkscape and inkview against inkscape_base +target_link_libraries(inkscape inkscape_base) +target_link_libraries(inkview inkscape_base) +if(WIN32) + target_link_libraries(inkscape_com inkscape_base) + target_link_libraries(inkview_com inkscape_base) +endif() + + + +#Define the installation +install(TARGETS inkscape inkview RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +if(WIN32) + install(TARGETS inkscape_com inkview_com) +endif() +if(BUILD_SHARED_LIBS) + install(TARGETS inkscape_base LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/inkscape") +endif() |