diff options
| author | Marc Jeanmougin <marc@jeanmougin.fr> | 2016-07-06 19:47:53 +0000 |
|---|---|---|
| committer | Marc Jeanmougin <marcjeanmougin@free.fr> | 2016-07-06 19:47:53 +0000 |
| commit | da913d5ff40e9947eb9d2815eac3c20436711f7b (patch) | |
| tree | c6a943e982fd716f22b53bd4410c582c12c687b3 | |
| parent | Translations. French translations update. (diff) | |
| parent | Fixing build for Linux. (diff) | |
| download | inkscape-da913d5ff40e9947eb9d2815eac3c20436711f7b.tar.gz inkscape-da913d5ff40e9947eb9d2815eac3c20436711f7b.zip | |
CMake build on windows (merge Sebastian's branch)
(bzr r15011)
| -rw-r--r-- | AUTHORS | 2 | ||||
| -rw-r--r-- | CMakeLists.txt | 124 | ||||
| -rw-r--r-- | CMakeScripts/ConfigEnv.cmake | 54 | ||||
| -rw-r--r-- | CMakeScripts/ConfigPaths.cmake | 34 | ||||
| -rw-r--r-- | CMakeScripts/DefineDependsandFlags.cmake | 88 | ||||
| -rw-r--r-- | CMakeScripts/Install.cmake | 259 | ||||
| -rw-r--r-- | config.h.cmake | 4 | ||||
| -rw-r--r-- | configure.bat | 9 | ||||
| -rwxr-xr-x | mingwenv.bat | 38 | ||||
| -rw-r--r-- | mingwenv.cmake | 184 | ||||
| -rw-r--r-- | src/CMakeLists.txt | 913 | ||||
| -rw-r--r-- | touch.bat | 1 |
12 files changed, 1092 insertions, 618 deletions
@@ -172,3 +172,5 @@ Gellule Xg Daniel Yacob David Yip Masatake Yamato +Moritz Eberl +Sebastian Faubel
\ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 94dbf60df..910ed4e20 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,8 @@ message("------------------------------") message("Source Dir: ${CMAKE_CURRENT_SOURCE_DIR}") message("Binary Dir: ${CMAKE_CURRENT_BINARY_DIR}") +include(CMakeScripts/ConfigEnv.cmake) + # ----------------------------------------------------------------------------- # CMake Configuration # ----------------------------------------------------------------------------- @@ -19,6 +21,7 @@ project(inkscape) set(INKSCAPE_VERSION 0.92pre1) set(PROJECT_NAME inkscape) set(CMAKE_INCLUDE_CURRENT_DIR TRUE) + if(APPLE) SET(CMAKE_MACOSX_RPATH TRUE) SET(CMAKE_INSTALL_RPATH "@loader_path/../lib/inkscape") @@ -26,7 +29,6 @@ else() SET(CMAKE_INSTALL_RPATH "$ORIGIN/../lib/inkscape") endif() - cmake_policy(SET CMP0003 NEW) # don't be prolific with library paths cmake_policy(SET CMP0005 NEW) # proper define quoting cmake_policy(SET CMP0009 NEW) # don't follow symbolic links when using GLOB @@ -41,29 +43,6 @@ endif() include(CMakeScripts/HelperFunctions.cmake) # ----------------------------------------------------------------------------- -# Set platform defaults (originally copied from darktable) -# ----------------------------------------------------------------------------- -if(APPLE) - message("-- Mac OS X build detected, setting default features") - # prefer macports and/or user-installed libraries over system ones - #LIST(APPEND CMAKE_PREFIX_PATH /opt/local /usr/local) - set(CMAKE_FIND_FRAMEWORK "LAST") - - # test and display relevant env variables - if(DEFINED ENV{CMAKE_PREFIX_PATH}) - message("CMAKE_PREFIX_PATH: $ENV{CMAKE_PREFIX_PATH}") - endif() - if(DEFINED ENV{GTKMM_BASEPATH}) - message("GTKMM_BASEPATH: $ENV{GTKMM_BASEPATH}") - endif() - - # detect current GTK+ backend - pkg_check_variable(gtk+-2.0 target) - message("GTK2 backend: ${GTK+_2.0_TARGET}") - -endif(APPLE) - -# ----------------------------------------------------------------------------- # Redirect output files # ----------------------------------------------------------------------------- set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL "" ) @@ -104,7 +83,6 @@ else() message("No gmock/gtest found! Perhaps you wish to run 'bash download-gtest.sh' to download it.") endif() -include(CMakeScripts/ConfigPaths.cmake) # Installation Paths include(CMakeScripts/DefineDependsandFlags.cmake) # Includes, Compiler Flags, and Link Libraries include(CMakeScripts/HelperMacros.cmake) # Misc Utility Macros @@ -148,54 +126,51 @@ add_custom_target(uninstall # Subdirs (on only 1 atm), but a lot happens here # ----------------------------------------------------------------------------- add_subdirectory(src) + if(ENABLE_NLS) add_subdirectory(po) endif(ENABLE_NLS) - # ----------------------------------------------------------------------------- # Man pages # ----------------------------------------------------------------------------- -include("CMakeScripts/Pod2man.cmake") - -# Load AUTHORS file contents into $INKSCAPE_AUTHORS -file(READ ${CMAKE_CURRENT_SOURCE_DIR}/AUTHORS content) -string(REGEX REPLACE "^([^\n#]+)\n" "\\1;\n" content_list "${content}") -join(INKSCAPE_AUTHORS "," "${content_list}") - -foreach(podfile - man/inkscape.pod - man/inkscape.de.pod - man/inkscape.el.pod - man/inkscape.fr.pod - man/inkscape.ja.pod - man/inkscape.sk.pod - man/inkscape.zh_TW.pod - man/inkview.pod) - set(POD_IN ${CMAKE_CURRENT_SOURCE_DIR}/${podfile}.in) - set(POD_OUT ${CMAKE_CURRENT_BINARY_DIR}/${podfile}) - configure_file(${POD_IN} ${POD_OUT}) - pod2man(${POD_OUT} ${INKSCAPE_VERSION} 1 "Inkscape Commands Manual") -endforeach() +if(NOT WIN32) + include("CMakeScripts/Pod2man.cmake") + + # Load AUTHORS file contents into $INKSCAPE_AUTHORS + file(READ ${CMAKE_CURRENT_SOURCE_DIR}/AUTHORS content) + string(REGEX REPLACE "^([^\n#]+)\n" "\\1;\n" content_list "${content}") + + join(INKSCAPE_AUTHORS "," "${content_list}") + + foreach(podfile + man/inkscape.pod + man/inkscape.de.pod + man/inkscape.el.pod + man/inkscape.fr.pod + man/inkscape.ja.pod + man/inkscape.sk.pod + man/inkscape.zh_TW.pod + man/inkview.pod) + + set(POD_IN ${CMAKE_CURRENT_SOURCE_DIR}/${podfile}.in) + set(POD_OUT ${CMAKE_CURRENT_BINARY_DIR}/${podfile}) + + configure_file(${POD_IN} ${POD_OUT}) + + pod2man(${POD_OUT} ${INKSCAPE_VERSION} 1 "Inkscape Commands Manual") + endforeach() +endif() # ----------------------------------------------------------------------------- # Installation # ----------------------------------------------------------------------------- -if(UNIX) - #The install directive for the binaries and libraries are found in src/CMakeList.txt - - install( - FILES ${CMAKE_BINARY_DIR}/inkscape.desktop - DESTINATION ${CMAKE_INSTALL_PREFIX}/${SHARE_INSTALL}/applications - ) - - # this should probably be done no matter what the platform is, just set SHARE_INSTALL first - add_subdirectory(share) - -else() - # TODO, WIN32, APPLE/OSX, MinGW - +if(NOT WIN32) + # this should probably be done no matter what the platform is, just set SHARE_INSTALL first + add_subdirectory(share) endif() + +include(CMakeScripts/Install.cmake) # ----------------------------------------------------------------------------- # Clean @@ -239,6 +214,8 @@ message("") # cmake info message("CMAKE_BINARY_DIR: ${CMAKE_BINARY_DIR}") +message("CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}") +message("PACKAGE_LOCALE_DIR ${PACKAGE_LOCALE_DIR}") message("CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}") message("CMAKE_SYSTEM_VERSION: ${CMAKE_SYSTEM_VERSION}") message("CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}") @@ -247,6 +224,13 @@ message("CMAKE_CXX_COMPILER: ${CMAKE_CXX_COMPILER}") message("CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") message("") +if(WIN32) +message("CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH}") +message("CMAKE_FIND_LIBRARY_PREFIXES: ${CMAKE_FIND_LIBRARY_PREFIXES}") +message("CMAKE_FIND_LIBRARY_SUFFIXES: ${CMAKE_FIND_LIBRARY_SUFFIXES}") +message("") +endif() + # dependency info message("ENABLE_LCMS: ${ENABLE_LCMS}") message("ENABLE_POPPLER: ${ENABLE_POPPLER}") @@ -263,4 +247,22 @@ message("WITH_LIBWPG: ${WITH_LIBWPG}") message("WITH_NLS: ${WITH_NLS}") message("WITH_OPENMP: ${WITH_OPENMP}") message("WITH_PROFILING: ${WITH_PROFILING}") + +if(WIN32) +message("") +message("HAVE_MINGW: ${HAVE_MINGW}") +message("HAVE_MINGW64: ${HAVE_MINGW64}") +message("MINGW_PATH: ${MINGW_PATH}") +message("MINGW_ARCH: ${MINGW_ARCH}") +message("MINGW_ARCH_PATH: ${MINGW_ARCH_PATH}") +message("MINGW64_INCLUDE: ${MINGW64_INCLUDE}") +message("MINGW64_LIB: ${MINGW64_LIB}") +message("DEVLIBS_PATH: ${DEVLIBS_PATH}") +message("DEVLIBS_LIB: ${DEVLIBS_LIB}") +message("DEVLIBS_BIN: ${DEVLIBS_BIN}") +message("PKG_CONFIG_PATH: ${PKG_CONFIG_PATH}") +message("GS_PATH ${GS_PATH}") +message("GS_BIN ${GS_BIN}") +endif() + message("------------------------------------------------------------------------") diff --git a/CMakeScripts/ConfigEnv.cmake b/CMakeScripts/ConfigEnv.cmake new file mode 100644 index 000000000..ebd005cb3 --- /dev/null +++ b/CMakeScripts/ConfigEnv.cmake @@ -0,0 +1,54 @@ +# -----------------------------------------------------------------------------
+# Set platform defaults (originally copied from darktable)
+# -----------------------------------------------------------------------------
+if(WIN32)
+ message("-- Windows build detected, setting default features")
+
+ include(mingwenv.cmake)
+
+ list(INSERT CMAKE_SYSTEM_INCLUDE_PATH 0 ${DEVLIBS_PATH})
+ list(INSERT CMAKE_SYSTEM_LIBRARY_PATH 0 ${DEVLIBS_PATH})
+
+ set(CMAKE_C_COMPILER "${MINGW_BIN}/gcc.exe")
+ set(CMAKE_C_LINK_EXECUTABLE "${MINGW_BIN}/gcc.exe")
+ set(CMAKE_CXX_COMPILER "${MINGW_BIN}/g++.exe")
+ set(CMAKE_CXX_LINK_EXECUTABLE "${MINGW_BIN}/g++.exe")
+ set(CMAKE_CXX_STANDARD 11)
+
+ # Setup Windows resource files compiler.
+ set(CMAKE_RC_COMPILER "${MINGW_BIN}/windres.exe")
+ set(CMAKE_RC_COMPILER_INIT windres)
+ enable_language(RC)
+ set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> -O coff -i <SOURCE> -o <OBJECT>")
+
+ # These options are required for having i18n support on Windows.
+ option(ENABLE_NLS "Compile with Native Language Support (using gettext)" ON)
+ option(HAVE_BIND_TEXTDOMAIN_CODESET "Compile with 'bind_textdomain_codeset' function" ON)
+
+ # Does not compile on Windows with these options.
+ option(BR_PTHREADS "Use binreloc thread support" OFF)
+ option(ENABLE_BINRELOC "Use AutoPackage" OFF)
+endif()
+
+if(APPLE)
+ message("-- Mac OS X build detected, setting default features")
+
+ # prefer macports and/or user-installed libraries over system ones
+ #LIST(APPEND CMAKE_PREFIX_PATH /opt/local /usr/local)
+ set(CMAKE_FIND_FRAMEWORK "LAST")
+
+ # test and display relevant env variables
+ if(DEFINED ENV{CMAKE_PREFIX_PATH})
+ message("CMAKE_PREFIX_PATH: $ENV{CMAKE_PREFIX_PATH}")
+ endif()
+
+ if(DEFINED ENV{GTKMM_BASEPATH})
+ message("GTKMM_BASEPATH: $ENV{GTKMM_BASEPATH}")
+ endif()
+
+ # detect current GTK+ backend
+ pkg_check_variable(gtk+-2.0 target)
+ message("GTK2 backend: ${GTK+_2.0_TARGET}")
+endif()
+
+include(CMakeScripts/ConfigPaths.cmake)
\ No newline at end of file diff --git a/CMakeScripts/ConfigPaths.cmake b/CMakeScripts/ConfigPaths.cmake index 3b13a7734..9489ba047 100644 --- a/CMakeScripts/ConfigPaths.cmake +++ b/CMakeScripts/ConfigPaths.cmake @@ -1,16 +1,28 @@ message(STATUS "Creating build files in: ${CMAKE_CURRENT_BINARY_DIR}") if(WIN32) - set(PACKAGE_LOCALE_DIR "locale") + set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/inkscape") + + set(INKSCAPE_LIBDIR "\\\\lib") + set(INKSCAPE_DATADIR "") + + set(PACKAGE_LOCALE_DIR "\\\\share\\\\locale") + + set(SHARE_INSTALL "share" CACHE STRING "Data file install path. Must be a relative path (from CMAKE_INSTALL_PREFIX), with no trailing slash.") + + mark_as_advanced(SHARE_INSTALL) +else() + set(INKSCAPE_LIBDIR "${CMAKE_INSTALL_PREFIX}/lib") + set(INKSCAPE_DATADIR "${CMAKE_INSTALL_PREFIX}/share") + + # TODO: check and change this to correct value: + if(NOT PACKAGE_LOCALE_DIR) + set(PACKAGE_LOCALE_DIR "${CMAKE_INSTALL_PREFIX}/share/locale") # packagers might overwrite this + endif(NOT PACKAGE_LOCALE_DIR) + + if(NOT SHARE_INSTALL) set(SHARE_INSTALL "share" CACHE STRING "Data file install path. Must be a relative path (from CMAKE_INSTALL_PREFIX), with no trailing slash.") -else(WIN32) - # TODO: check and change this to correct value: - if(NOT PACKAGE_LOCALE_DIR) - set(PACKAGE_LOCALE_DIR "${CMAKE_INSTALL_PREFIX}/share/locale") # packagers might overwrite this - endif(NOT PACKAGE_LOCALE_DIR) + endif(NOT SHARE_INSTALL) - if(NOT SHARE_INSTALL) - set(SHARE_INSTALL "share" CACHE STRING "Data file install path. Must be a relative path (from CMAKE_INSTALL_PREFIX), with no trailing slash.") - endif(NOT SHARE_INSTALL) - mark_as_advanced(SHARE_INSTALL) -endif(WIN32) + mark_as_advanced(SHARE_INSTALL) +endif()
\ No newline at end of file diff --git a/CMakeScripts/DefineDependsandFlags.cmake b/CMakeScripts/DefineDependsandFlags.cmake index 706860a00..b708484af 100644 --- a/CMakeScripts/DefineDependsandFlags.cmake +++ b/CMakeScripts/DefineDependsandFlags.cmake @@ -15,75 +15,31 @@ list(APPEND INKSCAPE_INCS ${PROJECT_SOURCE_DIR} # Files we include # ---------------------------------------------------------------------------- if(WIN32) -message("---------------- BEGIN: Win32 ----------------") - - # The name of the target operating system - set(CMAKE_SYSTEM_NAME Windows) - - message("CMAKE_SYSTEM_NAME: " ${CMAKE_SYSTEM_NAME}) - - set(CMAKE_C_COMPILER gcc) - set(CMAKE_CXX_COMPILER g++) - set(CMAKE_RC_COMPILER windres) - - # Adjust the command line parameters for windres to the verion of MinGW. - set(CMAKE_RC_COMPILER_INIT windres) - enable_language(RC) - set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> -O coff -i <SOURCE> -o <OBJECT>") - - # Here is the target environment located - set(CMAKE_FIND_ROOT_PATH $ENV{MINGW_PATH}/) - - message("CMAKE_FIND_ROOT_PATH: " ${CMAKE_FIND_ROOT_PATH}) - - # Tweak CMake into using Unix-style library names. - set(CMAKE_FIND_LIBRARY_PREFIXES "lib") - set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".dll") - - message("CMAKE_FIND_LIBRARY_PREFIXES: " ${CMAKE_FIND_LIBRARY_PREFIXES}) - message("CMAKE_FIND_LIBRARY_SUFFIXES: " ${CMAKE_FIND_LIBRARY_SUFFIXES}) - - set(SDL_INCLUDE_DIR ${CMAKE_FIND_ROOT_PATH}x86_64-w64-mingw32/include/c++) - - message("SDL_INCLUDE_DIR: " ${SDL_INCLUDE_DIR}) - - #if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^amd64") - link_directories($ENV{MINGW_PATH}/lib) - link_directories($ENV{DEVLIBS_PATH}/lib) - link_directories($ENV{MINGW_PATH}/x86_64-w64-mingw32/lib) - link_directories($ENV{WINDIR}/system32) - - include_directories($ENV{MINGW_PATH}/include) - - include_directories($ENV{MINGW_PATH}/x86_64-w64-mingw32/include) - include_directories($ENV{MINGW_PATH}/x86_64-w64-mingw32/include/c++) - #endif () - - get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES) - - foreach(dir ${dirs}) - message("CMAKE_INCLUDE_DIR:" ${dir}) - endforeach() - - add_definitions(-DFLT_EPSILON=1e-9) - add_definitions(-DFLT_MAX=1e+37) - add_definitions(-DFLT_MIN=1e-37) - - list(APPEND INKSCAPE_LIBS "-lgomp") - list(APPEND INKSCAPE_LIBS "-lwinpthread") - list(APPEND INKSCAPE_LIBS "-lmscms") - - list(APPEND INKSCAPE_CXX_FLAGS "-mwindows") - list(APPEND INKSCAPE_CXX_FLAGS "-mthreads") - list(APPEND INKSCAPE_CXX_FLAGS "-m64") - - # Try to compile using C++ 11. - set(CMAKE_CXX_STANDARD 11) - - message("---------------- END: Win32 ----------------") + # Set the link and include directories + get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES) + + # MinGW supplied STL does not define these floating point constants.. :/ + add_definitions(-DFLT_EPSILON=1e-9) + add_definitions(-DFLT_MAX=1e+37) + add_definitions(-DFLT_MIN=1e-37) + + list(APPEND INKSCAPE_LIBS "-lmscms") + + list(APPEND INKSCAPE_CXX_FLAGS "-mwindows") + list(APPEND INKSCAPE_CXX_FLAGS "-mthreads") + + if(HAVE_MINGW64) + list(APPEND INKSCAPE_LIBS "-lgomp") + list(APPEND INKSCAPE_LIBS "-lwinpthread") + + list(APPEND INKSCAPE_CXX_FLAGS "-m64") + else() + list(APPEND INKSCAPE_CXX_FLAGS "-m32") + endif() endif() pkg_check_modules(INKSCAPE_DEP REQUIRED pangocairo pangoft2 fontconfig gthread-2.0 gsl gmodule-2.0) + list(APPEND INKSCAPE_LIBS ${INKSCAPE_DEP_LDFLAGS}) list(APPEND INKSCAPE_INCS_SYS ${INKSCAPE_DEP_INCLUDE_DIRS}) list(APPEND INKSCAPE_LIBS ${INKSCAPE_DEP_LIBRARIES}) diff --git a/CMakeScripts/Install.cmake b/CMakeScripts/Install.cmake new file mode 100644 index 000000000..aee0444de --- /dev/null +++ b/CMakeScripts/Install.cmake @@ -0,0 +1,259 @@ +if(UNIX)
+ #The install directive for the binaries and libraries are found in src/CMakeList.txt
+ install(FILES
+ ${CMAKE_BINARY_DIR}/inkscape.desktop
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/${SHARE_INSTALL}/applications)
+endif()
+
+if(WIN32)
+ install(PROGRAMS
+ ${EXECUTABLE_OUTPUT_PATH}/inkscape.exe
+ ${EXECUTABLE_OUTPUT_PATH}/inkview.exe
+ DESTINATION ${CMAKE_INSTALL_PREFIX}
+ )
+
+ install(FILES
+ ${LIBRARY_OUTPUT_PATH}/libinkscape_base.dll
+ ${LIBRARY_OUTPUT_PATH}/libgrid2.dll
+ DESTINATION ${CMAKE_INSTALL_PREFIX}
+ )
+
+ # devlibs and mingw dlls
+ install(FILES
+ AUTHORS
+ COPYING
+ NEWS
+ README
+ TRANSLATORS
+ DESTINATION ${CMAKE_INSTALL_PREFIX})
+
+ # There are differences in the devlibs for 64-Bit and 32-Bit build environments.
+ if(HAVE_MINGW64)
+ install(FILES
+ ${DEVLIBS_BIN}/bz2-1.dll
+ ${DEVLIBS_BIN}/icudt56.dll
+ ${DEVLIBS_BIN}/icuin56.dll
+ ${DEVLIBS_BIN}/icuuc56.dll
+ ${DEVLIBS_BIN}/libMagick++-6.Q16-6.dll
+ ${DEVLIBS_BIN}/libMagickCore-6.Q16-2.dll
+ ${DEVLIBS_BIN}/libMagickWand-6.Q16-2.dll
+ ${DEVLIBS_BIN}/libaspell-15.dll
+ ${DEVLIBS_BIN}/libatk-1.0-0.dll
+ ${DEVLIBS_BIN}/libatkmm-1.6-1.dll
+ ${DEVLIBS_BIN}/libcairo-2.dll
+ ${DEVLIBS_BIN}/libcairomm-1.0-1.dll
+ ${DEVLIBS_BIN}/libcdr-0.1.dll
+ ${DEVLIBS_BIN}/libcurl-4.dll
+ ${DEVLIBS_BIN}/libexif-12.dll
+ ${DEVLIBS_BIN}/libexpat-1.dll
+ ${DEVLIBS_BIN}/libexslt-0.dll
+ ${DEVLIBS_BIN}/libffi-6.dll
+ ${DEVLIBS_BIN}/libfontconfig-1.dll
+ ${DEVLIBS_BIN}/libfreetype-6.dll
+ ${DEVLIBS_BIN}/libgc-1.dll
+ ${DEVLIBS_BIN}/libgdk-win32-2.0-0.dll
+ ${DEVLIBS_BIN}/libgdk_pixbuf-2.0-0.dll
+ ${DEVLIBS_BIN}/libgdkmm-2.4-1.dll
+ ${DEVLIBS_BIN}/libgio-2.0-0.dll
+ ${DEVLIBS_BIN}/libgiomm-2.4-1.dll
+ ${DEVLIBS_BIN}/libglib-2.0-0.dll
+ ${DEVLIBS_BIN}/libglibmm-2.4-1.dll
+ ${DEVLIBS_BIN}/libgmodule-2.0-0.dll
+ ${DEVLIBS_BIN}/libgobject-2.0-0.dll
+ ${DEVLIBS_BIN}/libgsl-19.dll
+ ${DEVLIBS_BIN}/libgslcblas-0.dll
+ ${DEVLIBS_BIN}/libgthread-2.0-0.dll
+ ${DEVLIBS_BIN}/libgtk-win32-2.0-0.dll
+ ${DEVLIBS_BIN}/libgtkmm-2.4-1.dll
+ ${DEVLIBS_BIN}/libharfbuzz-0.dll
+ ${DEVLIBS_BIN}/libiconv-2.dll
+ ${DEVLIBS_BIN}/libintl-8.dll
+ ${DEVLIBS_BIN}/libjpeg-9.dll
+ ${DEVLIBS_BIN}/liblcms2-2.dll
+ ${DEVLIBS_BIN}/liblzma-5.dll
+ ${DEVLIBS_BIN}/libpango-1.0-0.dll
+ ${DEVLIBS_BIN}/libpangocairo-1.0-0.dll
+ ${DEVLIBS_BIN}/libpangoft2-1.0-0.dll
+ ${DEVLIBS_BIN}/libpangomm-1.4-1.dll
+ ${DEVLIBS_BIN}/libpangowin32-1.0-0.dll
+ ${DEVLIBS_BIN}/libpixman-1-0.dll
+ ${DEVLIBS_BIN}/libpng16-16.dll
+ ${DEVLIBS_BIN}/libpoppler-58.dll
+ ${DEVLIBS_BIN}/libpoppler-glib-8.dll
+ ${DEVLIBS_BIN}/libpopt-0.dll
+ ${DEVLIBS_BIN}/libpotrace-0.dll
+ ${DEVLIBS_BIN}/librevenge-0.0.dll
+ ${DEVLIBS_BIN}/librevenge-stream-0.0.dll
+ ${DEVLIBS_BIN}/libsigc-2.0-0.dll
+ ${DEVLIBS_BIN}/libtiff-5.dll
+ ${DEVLIBS_BIN}/libvisio-0.1.dll
+ ${DEVLIBS_BIN}/libwpd-0.10.dll
+ ${DEVLIBS_BIN}/libwpg-0.3.dll
+ ${DEVLIBS_BIN}/libxml2-2.dll
+ ${DEVLIBS_BIN}/libxslt-1.dll
+ ${DEVLIBS_BIN}/zlib1.dll
+ ${MINGW_BIN}/libstdc++-6.dll
+ ${MINGW_BIN}/libwinpthread-1.dll
+ ${MINGW_BIN}/libgcc_s_seh-1.dll
+ ${MINGW_BIN}/libgomp-1.dll
+ DESTINATION ${CMAKE_INSTALL_PREFIX})
+ else()
+ install(FILES
+ ${DEVLIBS_BIN}/bzip2.dll
+ ${DEVLIBS_BIN}/freetype6.dll
+ ${DEVLIBS_BIN}/iconv.dll
+ ${DEVLIBS_BIN}/icudata50.dll
+ ${DEVLIBS_BIN}/icui18n50.dll
+ ${DEVLIBS_BIN}/icuuc50.dll
+ ${DEVLIBS_BIN}/intl.dll
+ ${DEVLIBS_BIN}/libMagick++-3.dll
+ ${DEVLIBS_BIN}/libMagickCore-3.dll
+ ${DEVLIBS_BIN}/libMagickWand-3.dll
+ ${DEVLIBS_BIN}/libatk-1.0-0.dll
+ ${DEVLIBS_BIN}/libatkmm-1.6-1.dll
+ ${DEVLIBS_BIN}/libcairo-2.dll
+ ${DEVLIBS_BIN}/libcairomm-1.0-1.dll
+ ${DEVLIBS_BIN}/libcdr-0.1.dll
+ ${DEVLIBS_BIN}/libexif-12.dll
+ ${DEVLIBS_BIN}/libexpat-1.dll
+ ${DEVLIBS_BIN}/libexslt.dll
+ ${DEVLIBS_BIN}/libfontconfig-1.dll
+ ${DEVLIBS_BIN}/libgcc_s_sjlj-1.dll
+ ${DEVLIBS_BIN}/libgdk-win32-2.0-0.dll
+ ${DEVLIBS_BIN}/libgdk_pixbuf-2.0-0.dll
+ ${DEVLIBS_BIN}/libgdkmm-2.4-1.dll
+ ${DEVLIBS_BIN}/libgio-2.0-0.dll
+ ${DEVLIBS_BIN}/libgiomm-2.4-1.dll
+ ${DEVLIBS_BIN}/libglib-2.0-0.dll
+ ${DEVLIBS_BIN}/libglibmm-2.4-1.dll
+ ${DEVLIBS_BIN}/libgmodule-2.0-0.dll
+ ${DEVLIBS_BIN}/libgobject-2.0-0.dll
+ ${DEVLIBS_BIN}/libgthread-2.0-0.dll
+ ${DEVLIBS_BIN}/libgtk-win32-2.0-0.dll
+ ${DEVLIBS_BIN}/libgtkmm-2.4-1.dll
+ ${DEVLIBS_BIN}/libintl-8.dll
+ ${DEVLIBS_BIN}/libjpeg-7.dll
+ ${DEVLIBS_BIN}/liblcms-1.dll
+ ${DEVLIBS_BIN}/liblcms2-2.dll
+ ${DEVLIBS_BIN}/libopenjpeg-2.dll
+ ${DEVLIBS_BIN}/libpango-1.0-0.dll
+ ${DEVLIBS_BIN}/libpangocairo-1.0-0.dll
+ ${DEVLIBS_BIN}/libpangoft2-1.0-0.dll
+ ${DEVLIBS_BIN}/libpangomm-1.4-1.dll
+ ${DEVLIBS_BIN}/libpangowin32-1.0-0.dll
+ ${DEVLIBS_BIN}/libpixman-1-0.dll
+ ${DEVLIBS_BIN}/libpng12-0.dll
+ ${DEVLIBS_BIN}/libpng14-14.dll
+ ${DEVLIBS_BIN}/libpoppler-58.dll
+ ${DEVLIBS_BIN}/libpoppler-glib-8.dll
+ ${DEVLIBS_BIN}/libpopt-0.dll
+ ${DEVLIBS_BIN}/librevenge-0.0.dll
+ ${DEVLIBS_BIN}/librevenge-stream-0.0.dll
+ ${DEVLIBS_BIN}/libsigc-2.0-0.dll
+ ${DEVLIBS_BIN}/libtiff-3.dll
+ ${DEVLIBS_BIN}/libvisio-0.1.dll
+ ${DEVLIBS_BIN}/libwpd-0.9.dll
+ ${DEVLIBS_BIN}/libwpd-stream-0.9.dll
+ ${DEVLIBS_BIN}/libwpg-0.2.dll
+ ${DEVLIBS_BIN}/libxml2.dll
+ ${DEVLIBS_BIN}/libxslt.dll
+ ${DEVLIBS_BIN}/msvcr70.dll
+ ${DEVLIBS_BIN}/msvcr71.dll
+ ${DEVLIBS_BIN}/pthreadGC2.dll
+ ${DEVLIBS_BIN}/zlib1.dll
+ ${MINGW_BIN}/mingwm10.dll
+ ${MINGW_BIN}/libgomp-1.dll
+ DESTINATION ${CMAKE_INSTALL_PREFIX})
+ endif()
+
+ # Setup application data directories, poppler files, locales, icons and themes
+ file(MAKE_DIRECTORY
+ data
+ doc
+ modules
+ plugins)
+
+ install(DIRECTORY
+ data
+ doc
+ modules
+ plugins
+ share
+ DESTINATION ${CMAKE_INSTALL_PREFIX}
+ PATTERN Adwaita EXCLUDE # NOTE: The theme is not used on Windows.
+ PATTERN hicolor/index.theme EXCLUDE # NOTE: Empty index.theme in hicolor icon theme causes SIGSEGV.
+ PATTERN CMakeLists.txt EXCLUDE
+ PATTERN *.am EXCLUDE)
+
+ install(DIRECTORY ${DEVLIBS_PATH}/share/themes
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/share)
+
+ install(DIRECTORY ${DEVLIBS_PATH}/share/locale
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/share)
+
+ install(DIRECTORY ${DEVLIBS_PATH}/share/poppler
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/share)
+
+ install(DIRECTORY ${DEVLIBS_PATH}/etc/fonts
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/etc)
+
+ install(DIRECTORY ${DEVLIBS_PATH}/etc/gtk-2.0
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/etc)
+
+ # GTK 2.0
+ install(DIRECTORY ${DEVLIBS_LIB}/gtk-2.0
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
+ FILES_MATCHING
+ PATTERN "*.dll"
+ PATTERN "*.cache")
+
+ install(DIRECTORY ${DEVLIBS_LIB}/gdk-pixbuf-2.0
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
+ FILES_MATCHING
+ PATTERN "*.dll"
+ PATTERN "*.cache")
+
+ # Aspell dictionaries
+ install(DIRECTORY ${DEVLIBS_LIB}/aspell-0.60
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
+
+ # Necessary to run extensions on windows if it is not in the path
+ if (HAVE_MINGW64)
+ install(FILES
+ ${DEVLIBS_BIN}/gspawn-win64-helper.exe
+ ${DEVLIBS_BIN}/gspawn-win64-helper-console.exe
+ DESTINATION ${CMAKE_INSTALL_PREFIX})
+ else()
+ install(FILES
+ ${DEVLIBS_BIN}/gspawn-win32-helper.exe
+ ${DEVLIBS_BIN}/gspawn-win32-helper-console.exe
+ DESTINATION ${CMAKE_INSTALL_PREFIX})
+ endif()
+
+ # Perl
+ install(FILES
+ ${DEVLIBS_PATH}/perl/bin/perl58.dll
+ DESTINATION ${CMAKE_INSTALL_PREFIX})
+
+ # Python
+ install(FILES
+ ${DEVLIBS_PATH}/python/python.exe
+ ${DEVLIBS_PATH}/python/pythonw.exe
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/python)
+
+ if(HAVE_MINGW64)
+ install(FILES
+ ${DEVLIBS_PATH}/python/python27.dll
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/python)
+ else()
+ install(FILES
+ ${DEVLIBS_PATH}/python/python26.dll
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/python)
+ endif()
+
+ install(DIRECTORY ${DEVLIBS_PATH}/python/lib
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/python)
+
+ install(DIRECTORY ${DEVLIBS_PATH}/python/dlls
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/python)
+endif()
\ No newline at end of file diff --git a/config.h.cmake b/config.h.cmake index eae54fd03..00d6fb8b3 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -232,10 +232,10 @@ #cmakedefine HAVE_ZLIB_H 1 /* Base data directory -- only path-prefix.h should use it! */ -#define INKSCAPE_DATADIR "${CMAKE_INSTALL_PREFIX}/share" +#define INKSCAPE_DATADIR "${INKSCAPE_DATADIR}" /* Base library directory -- only path-prefix.h should use it! */ -#define INKSCAPE_LIBDIR "${CMAKE_INSTALL_PREFIX}/lib" +#define INKSCAPE_LIBDIR "${INKSCAPE_LIBDIR}" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ diff --git a/configure.bat b/configure.bat deleted file mode 100644 index 11adb9445..000000000 --- a/configure.bat +++ /dev/null @@ -1,9 +0,0 @@ -REM Set the MinGW environment variables.
-if "%MINGW_BIN%"=="" call mingwenv.bat
-
-REM Delete the CMake cache. Needed when changes on the CMakeLists should be applied in a consistent way.
-del CMakeCache.txt
-rmdir /s /q CMakeFiles
-
-REM Configure using the MinGW compiler chain.
-cmake -D"CMAKE_SYSTEM_PREFIX_PATH:PATH=C:\MinGW64\mingw64\x86_64-w64-mingw32" -G "MinGW Makefiles" ..
diff --git a/mingwenv.bat b/mingwenv.bat index 126f3703c..054e5dcc6 100755 --- a/mingwenv.bat +++ b/mingwenv.bat @@ -1,9 +1,29 @@ -@echo Setting environment variables for MinGw build of Inkscape -IF "%DEVLIBS_PATH%"=="" set DEVLIBS_PATH=c:\devlibs -IF "%MINGW_PATH%"=="" set MINGW_PATH=c:\mingw -set MINGW_BIN=%MINGW_PATH%\bin -set PKG_CONFIG_PATH=%DEVLIBS_PATH%\lib\pkgconfig -set GS_BIN=C:\latex\gs\gs8.61\bin -set PATH=%DEVLIBS_PATH%\bin;%DEVLIBS_PATH%\python;%MINGW_BIN%;%PATH%;%GS_BIN% -set CMAKE_PREFIX_PATH=%DEVLIBS_PATH% -set GTKMM_BASEPATH=%DEVLIBS_PATH% +@echo off + +REM ----------------------------------------------------------------------------- +REM The paths in this file are used if you want to build Inkscape from the +REM the Windows built-in command line (i.e. MSYS). +REM ----------------------------------------------------------------------------- + +REM Directory containing the precompiled Inkscape libraries. Usually c:\devlibs or c:\devlibs64 +if "%DEVLIBS_PATH%"=="" set DEVLIBS_PATH=c:\devlibs64 + +REM Directory containing the MinGW instance used for compilation. Usually c:\mingw or c:\mingw64 +REM Note: Make sure there are no whitespaces in the path. MinGW doesn't like that.. ;) +if "%MINGW_PATH%"=="" set MINGW_PATH=c:\mingw64 + +REM Directory containing the (optional) Ghostscript installation. +if "%GS_PATH%"=="" set GS_PATH=C:\latex\gs\gs8.61 + +REM ----------------------------------------------------------------------------- +@echo Setting environment variables for MinGW build of Inkscape.. + +@echo DEVLIBS_PATH: %DEVLIBS_PATH% +@echo MINGW_PATH: %MINGW_PATH% +@echo GS_PATH: %GS_PATH% + +REM Include the MinGW environment in the path to prevent error messages during CMake configure. +set PATH=%DEVLIBS_PATH%\bin;%DEVLIBS_PATH%\python;%MINGW_PATH%\bin;%PATH%;%GS_PATH%\bin + +REM Also set the pkgconfig path to prevent error messages during CMake configure. +set PKG_CONFIG_PATH=%DEVLIBS_PATH%\lib\pkgconfig
\ No newline at end of file diff --git a/mingwenv.cmake b/mingwenv.cmake new file mode 100644 index 000000000..ab96541d8 --- /dev/null +++ b/mingwenv.cmake @@ -0,0 +1,184 @@ +# -----------------------------------------------------------------------------
+# Set the paths in this file if you want to build Inkscape from a shell other than the
+# Windows built-in command line (i.e. MSYS) or IDEs such as CodeLite. These variables
+# will be used as default if no environment variables are set.
+# -----------------------------------------------------------------------------
+
+# Directory containing the precompiled Inkscape libraries. Usually c:\devlibs or c:\devlibs64
+set(ENV_DEVLIBS_PATH C:/devlibs64)
+
+# Directory containing the MinGW instance used for compilation. Usually c:\mingw or c:\mingw64
+set(ENV_MINGW_PATH C:/mingw64)
+
+# Directory containing the (optional) Ghostscript installation.
+set(ENV_GS_PATH C:/latex/gs/gs8.61)
+
+# -----------------------------------------------------------------------------
+# MinGW Configuration
+# -----------------------------------------------------------------------------
+message(STATUS "Configuring MinGW environment:")
+
+if("$ENV{DEVLIBS_PATH}" STREQUAL "")
+ message(STATUS " Setting path to development libraries from mingwenv.cmake: ${ENV_DEVLIBS_PATH}")
+ set(DEVLIBS_PATH ${ENV_DEVLIBS_PATH})
+else()
+ message(STATUS " Setting path to development libraries from environment: $ENV{DEVLIBS_PATH}")
+ set(DEVLIBS_PATH $ENV{DEVLIBS_PATH})
+endif()
+
+if("$ENV{MINGW_PATH}" STREQUAL "")
+ message(STATUS " Setting path to MinGW from mingwenv.cmake: ${ENV_MINGW_PATH}")
+ set(MINGW_PATH ${ENV_MINGW_PATH})
+else()
+ message(STATUS " Setting path to MinGW from environment: $ENV{MINGW_PATH}")
+ set(MINGW_PATH $ENV{MINGW_PATH})
+endif()
+
+if("$ENV{GS_PATH}" STREQUAL "")
+ message(STATUS " Setting path to Ghostscript from mingwenv.cmake: ${ENV_GS_PATH}")
+ set(GS_PATH ${ENV_GS_PATH})
+else()
+ message(STATUS " Setting path to Ghostscript from environment: $ENV{GS_PATH}")
+ set(GS_PATH $ENV{GS_PATH})
+endif()
+
+# Normalize directory separator slashes.
+string(REGEX REPLACE "\\\\" "/" DEVLIBS_PATH ${DEVLIBS_PATH})
+string(REGEX REPLACE "\\\\" "/" MINGW_PATH ${MINGW_PATH})
+string(REGEX REPLACE "\\\\" "/" GS_PATH ${GS_PATH})
+
+# -----------------------------------------------------------------------------
+# DEVLIBS CHECKS
+# -----------------------------------------------------------------------------
+
+# Directory containing the compile time .dll.a and .a files.
+set(DEVLIBS_LIB "${DEVLIBS_PATH}/lib")
+
+if(NOT EXISTS "${DEVLIBS_LIB}")
+ message(FATAL_ERROR "Inkscape development libraries directory does not exist: ${DEVLIBS_LIB}")
+endif()
+
+# Add devlibs libraries to linker path.
+link_directories(${DEVLIBS_LIB})
+
+set(DEVLIBS_INCLUDE ${DEVLIBS_PATH}/include)
+
+if(NOT EXISTS ${DEVLIBS_INCLUDE})
+ message(FATAL_ERROR "Inkscape development libraries directory does not exist: ${DEVLIBS_INCLUDE}")
+endif()
+
+# Add general MinGW headers to compiler include path.
+#include_directories(${DEVLIBS_INCLUDE})
+
+# Directory containing the precompiled .dll files.
+set(DEVLIBS_BIN ${DEVLIBS_PATH}/bin)
+
+if(NOT EXISTS ${DEVLIBS_BIN})
+ message(FATAL_ERROR "Inkscape development binaries directory does not exist: ${DEVLIBS_BIN}")
+endif()
+
+# Directory containing the pkgconfig .pc files.
+set(PKG_CONFIG_PATH "${DEVLIBS_PATH}/lib/pkgconfig")
+
+if(NOT EXISTS "${PKG_CONFIG_PATH}")
+ message(FATAL_ERROR "pkgconfig directory does not exist: ${PKG_CONFIG_PATH}")
+endif()
+
+# Add the devlibs directories to the paths used to find libraries and programs.
+list(APPEND CMAKE_PREFIX_PATH ${DEVLIBS_PATH})
+
+# Eliminate error messages when not having mingw in the environment path variable.
+list(APPEND CMAKE_PROGRAM_PATH ${DEVLIBS_BIN})
+
+# -----------------------------------------------------------------------------
+# MINGW CHECKS
+# -----------------------------------------------------------------------------
+
+# We are in a MinGW environment.
+set(HAVE_MINGW ON)
+
+# Try to determine the MinGW processor architecture.
+if(EXISTS "${MINGW_PATH}/mingw32")
+ set(HAVE_MINGW64 OFF)
+ set(MINGW_ARCH mingw32)
+elseif(EXISTS "${MINGW_PATH}/x86_64-w64-mingw32")
+ set(HAVE_MINGW64 ON)
+ set(MINGW_ARCH x86_64-w64-mingw32)
+else()
+ message(FATAL_ERROR "Unable to determine MinGW processor architecture. Are you using an unsupported MinGW version?")
+endif()
+
+# Path to processor architecture specific binaries and libs.
+set(MINGW_ARCH_PATH "${MINGW_PATH}/${MINGW_ARCH}")
+
+set(MINGW_BIN "${MINGW_PATH}/bin")
+
+if(NOT EXISTS ${MINGW_BIN})
+ message(FATAL_ERROR "MinGW binary directory does not exist: ${MINGW_BIN}")
+endif()
+
+# Eliminate error messages when not having mingw in the environment path variable.
+list(APPEND CMAKE_PROGRAM_PATH ${MINGW_BIN})
+
+set(MINGW_LIB "${MINGW_PATH}/lib")
+
+if(NOT EXISTS ${MINGW_LIB})
+ message(FATAL_ERROR "MinGW library directory does not exist: ${MINGW_LIB}")
+endif()
+
+# Add MinGW libraries to linker path.
+link_directories(${MINGW_LIB})
+
+set(MINGW_INCLUDE "${MINGW_PATH}/include")
+
+if(NOT EXISTS ${MINGW_INCLUDE})
+ message(FATAL_ERROR "MinGW include directory does not exist: ${MINGW_INCLUDE}")
+endif()
+
+# Add general MinGW headers to compiler include path.
+include_directories(SYSTEM ${MINGW_INCLUDE})
+
+if(HAVE_MINGW64)
+ set(MINGW64_LIB "${MINGW_ARCH_PATH}/lib")
+
+ if(NOT EXISTS ${MINGW64_LIB})
+ message(FATAL_ERROR "MinGW 64-Bit libraries directory does not exist: ${MINGW64_LIB}")
+ endif()
+
+ # Add 64-Bit libraries to linker path.
+ link_directories(${MINGW64_LIB})
+
+ set(MINGW64_INCLUDE "${MINGW_ARCH_PATH}/include")
+
+ if(NOT EXISTS ${MINGW64_INCLUDE})
+ message(FATAL_ERROR "MinGW 64-Bit include directory does not exist: ${MINGW64_INCLUDE}")
+ endif()
+
+ # Add 64-Bit MinGW headers to compiler include path.
+ include_directories(${MINGW64_INCLUDE})
+endif()
+
+# -----------------------------------------------------------------------------
+# GHOSTSCRIPT CHECKS
+# -----------------------------------------------------------------------------
+
+# Check for Ghostscript.
+set(GS_BIN "${GS_PATH}/bin")
+
+if(EXISTS "${GS_BIN}")
+ set(HAVE_GS_BIN ON)
+else()
+ set(HAVE_GS_BIN OFF)
+endif()
+
+# -----------------------------------------------------------------------------
+# LIBRARY AND LINKER SETTINGS
+# -----------------------------------------------------------------------------
+
+# Tweak CMake into using Unix-style library names.
+set(CMAKE_FIND_LIBRARY_PREFIXES "lib")
+set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".dll")
+
+if(NOT HAVE_MINGW64)
+ list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+endif()
\ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 66f16b7fb..d4ba9b1f0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -2,461 +2,442 @@ # Define the main source # ----------------------------------------------------------------------------- -set(main_SRC - main.cpp -) - set(sp_SRC - attribute-rel-css.cpp - attribute-rel-svg.cpp - attribute-rel-util.cpp - attribute-sort-util.cpp - sp-anchor.cpp - sp-clippath.cpp - sp-conn-end-pair.cpp - sp-conn-end.cpp - sp-cursor.cpp - sp-defs.cpp - sp-desc.cpp - sp-ellipse.cpp - sp-factory.cpp - sp-filter-primitive.cpp - sp-filter-reference.cpp - sp-filter.cpp - sp-flowdiv.cpp - sp-flowregion.cpp - sp-flowtext.cpp - sp-font-face.cpp - sp-font.cpp - sp-glyph-kerning.cpp - sp-glyph.cpp - sp-gradient-reference.cpp - sp-gradient.cpp - sp-guide.cpp - sp-hatch-path.cpp - sp-hatch.cpp - sp-image.cpp - sp-item-group.cpp - sp-item-notify-moveto.cpp - sp-item-rm-unsatisfied-cns.cpp - sp-item-transform.cpp - sp-item-update-cns.cpp - sp-item.cpp - sp-line.cpp - sp-linear-gradient.cpp - sp-lpe-item.cpp - sp-marker.cpp - sp-mask.cpp - sp-mesh-array.cpp - sp-mesh-patch.cpp - sp-mesh-row.cpp - sp-mesh.cpp - sp-metadata.cpp - sp-missing-glyph.cpp - sp-namedview.cpp - sp-object-group.cpp - sp-object.cpp - sp-offset.cpp - sp-paint-server.cpp - sp-path.cpp - sp-pattern.cpp - sp-polygon.cpp - sp-polyline.cpp - sp-radial-gradient.cpp - sp-rect.cpp - sp-root.cpp - sp-script.cpp - sp-shape.cpp - sp-solid-color.cpp - sp-spiral.cpp - sp-star.cpp - sp-stop.cpp - sp-string.cpp - sp-style-elem.cpp - sp-switch.cpp - sp-symbol.cpp - sp-tag-use-reference.cpp - sp-tag-use.cpp - sp-tag.cpp - sp-text.cpp - sp-title.cpp - sp-tref-reference.cpp - sp-tref.cpp - sp-tspan.cpp - sp-use-reference.cpp - sp-use.cpp - splivarot.cpp - viewbox.cpp - - # ------- - # Headers - attribute-rel-css.h - attribute-rel-svg.h - attribute-rel-util.h - attribute-sort-util.h - sp-anchor.h - sp-clippath.h - sp-conn-end-pair.h - sp-conn-end.h - sp-cursor.h - sp-defs.h - sp-desc.h - sp-ellipse.h - sp-factory.h - sp-filter-primitive.h - sp-filter-reference.h - sp-filter-units.h - sp-filter.h - sp-flowdiv.h - sp-flowregion.h - sp-flowtext.h - sp-font-face.h - sp-font.h - sp-glyph-kerning.h - sp-glyph.h - sp-gradient-reference.h - sp-gradient-spread.h - sp-gradient-test.h - sp-gradient-units.h - sp-gradient-vector.h - sp-gradient.h - sp-guide-attachment.h - sp-guide-constraint.h - sp-guide.h - sp-hatch-path.h - sp-hatch.h - sp-image.h - sp-item-group.h - sp-item-notify-moveto.h - sp-item-rm-unsatisfied-cns.h - sp-item-transform.h - sp-item-update-cns.h - sp-item.h - sp-line.h - sp-linear-gradient.h - sp-lpe-item.h - sp-marker-loc.h - sp-marker.h - sp-mask.h - sp-mesh-array.h - sp-mesh-patch.h - sp-mesh-row.h - sp-mesh.h - sp-metadata.h - sp-missing-glyph.h - sp-namedview.h - sp-object-group.h - sp-object.h - sp-offset.h - sp-paint-server-reference.h - sp-paint-server.h - sp-path.h - sp-pattern.h - sp-polygon.h - sp-polyline.h - sp-radial-gradient.h - sp-rect.h - sp-root.h - sp-script.h - sp-shape.h - sp-solid-color.h - sp-spiral.h - sp-star.h - sp-stop.h - sp-string.h - sp-style-elem-test.h - sp-style-elem.h - sp-switch.h - sp-symbol.h - sp-tag.h - sp-tag-use.h - sp-tag-use-reference.h - sp-text.h - sp-textpath.h - sp-title.h - sp-tref-reference.h - sp-tref.h - sp-tspan.h - sp-use-reference.h - sp-use.h - viewbox.h + attribute-rel-css.cpp + attribute-rel-svg.cpp + attribute-rel-util.cpp + attribute-sort-util.cpp + sp-anchor.cpp + sp-clippath.cpp + sp-conn-end-pair.cpp + sp-conn-end.cpp + sp-cursor.cpp + sp-defs.cpp + sp-desc.cpp + sp-ellipse.cpp + sp-factory.cpp + sp-filter-primitive.cpp + sp-filter-reference.cpp + sp-filter.cpp + sp-flowdiv.cpp + sp-flowregion.cpp + sp-flowtext.cpp + sp-font-face.cpp + sp-font.cpp + sp-glyph-kerning.cpp + sp-glyph.cpp + sp-gradient-reference.cpp + sp-gradient.cpp + sp-guide.cpp + sp-hatch-path.cpp + sp-hatch.cpp + sp-image.cpp + sp-item-group.cpp + sp-item-notify-moveto.cpp + sp-item-rm-unsatisfied-cns.cpp + sp-item-transform.cpp + sp-item-update-cns.cpp + sp-item.cpp + sp-line.cpp + sp-linear-gradient.cpp + sp-lpe-item.cpp + sp-marker.cpp + sp-mask.cpp + sp-mesh-array.cpp + sp-mesh-patch.cpp + sp-mesh-row.cpp + sp-mesh.cpp + sp-metadata.cpp + sp-missing-glyph.cpp + sp-namedview.cpp + sp-object-group.cpp + sp-object.cpp + sp-offset.cpp + sp-paint-server.cpp + sp-path.cpp + sp-pattern.cpp + sp-polygon.cpp + sp-polyline.cpp + sp-radial-gradient.cpp + sp-rect.cpp + sp-root.cpp + sp-script.cpp + sp-shape.cpp + sp-solid-color.cpp + sp-spiral.cpp + sp-star.cpp + sp-stop.cpp + sp-string.cpp + sp-style-elem.cpp + sp-switch.cpp + sp-symbol.cpp + sp-tag-use-reference.cpp + sp-tag-use.cpp + sp-tag.cpp + sp-text.cpp + sp-title.cpp + sp-tref-reference.cpp + sp-tref.cpp + sp-tspan.cpp + sp-use-reference.cpp + sp-use.cpp + splivarot.cpp + viewbox.cpp + + # ------- + # Headers + attribute-rel-css.h + attribute-rel-svg.h + attribute-rel-util.h + attribute-sort-util.h + sp-anchor.h + sp-clippath.h + sp-conn-end-pair.h + sp-conn-end.h + sp-cursor.h + sp-defs.h + sp-desc.h + sp-ellipse.h + sp-factory.h + sp-filter-primitive.h + sp-filter-reference.h + sp-filter-units.h + sp-filter.h + sp-flowdiv.h + sp-flowregion.h + sp-flowtext.h + sp-font-face.h + sp-font.h + sp-glyph-kerning.h + sp-glyph.h + sp-gradient-reference.h + sp-gradient-spread.h + sp-gradient-test.h + sp-gradient-units.h + sp-gradient-vector.h + sp-gradient.h + sp-guide-attachment.h + sp-guide-constraint.h + sp-guide.h + sp-hatch-path.h + sp-hatch.h + sp-image.h + sp-item-group.h + sp-item-notify-moveto.h + sp-item-rm-unsatisfied-cns.h + sp-item-transform.h + sp-item-update-cns.h + sp-item.h + sp-line.h + sp-linear-gradient.h + sp-lpe-item.h + sp-marker-loc.h + sp-marker.h + sp-mask.h + sp-mesh-array.h + sp-mesh-patch.h + sp-mesh-row.h + sp-mesh.h + sp-metadata.h + sp-missing-glyph.h + sp-namedview.h + sp-object-group.h + sp-object.h + sp-offset.h + sp-paint-server-reference.h + sp-paint-server.h + sp-path.h + sp-pattern.h + sp-polygon.h + sp-polyline.h + sp-radial-gradient.h + sp-rect.h + sp-root.h + sp-script.h + sp-shape.h + sp-solid-color.h + sp-spiral.h + sp-star.h + sp-stop.h + sp-string.h + sp-style-elem-test.h + sp-style-elem.h + sp-switch.h + sp-symbol.h + sp-tag.h + sp-tag-use.h + sp-tag-use-reference.h + sp-text.h + sp-textpath.h + sp-title.h + sp-tref-reference.h + sp-tref.h + sp-tspan.h + sp-use-reference.h + sp-use.h + viewbox.h ) set(inkscape_SRC - attributes.cpp - axis-manip.cpp - box3d-side.cpp - box3d.cpp - color-profile.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 - dir-util.cpp - document-subset.cpp - document-undo.cpp - document.cpp - ege-color-prof-tracker.cpp - event-log.cpp - extract-uri.cpp - file.cpp - filter-chemistry.cpp - filter-enums.cpp - gc-anchored.cpp - gc-finalized.cpp - gradient-chemistry.cpp - gradient-drag.cpp - graphlayout.cpp - guide-snapper.cpp - help.cpp - id-clash.cpp - inkscape.cpp - knot-holder-entity.cpp - knot-ptr.cpp - knot.cpp - knotholder.cpp - layer-fns.cpp - layer-manager.cpp - layer-model.cpp - line-geometry.cpp - line-snapper.cpp - main-cmdlineact.cpp - media.cpp - message-context.cpp - message-stack.cpp - mod360.cpp - object-hierarchy.cpp - object-snapper.cpp - path-chemistry.cpp - persp3d-reference.cpp - persp3d.cpp - perspective-line.cpp - preferences.cpp - prefix.cpp - print.cpp - profile-manager.cpp - proj_pt.cpp - pure-transform.cpp - rdf.cpp - removeoverlap.cpp - resource-manager.cpp - rubberband.cpp - satisfied-guide-cns.cpp - selcue.cpp - selection-chemistry.cpp - selection-describer.cpp - selection.cpp - seltrans-handles.cpp - seltrans.cpp - shortcuts.cpp - snap-preferences.cpp - snap.cpp - snapped-curve.cpp - snapped-line.cpp - snapped-point.cpp - snapper.cpp - style-internal.cpp - style.cpp - svg-view-widget.cpp - svg-view.cpp - text-chemistry.cpp - text-editing.cpp - transf_mat_3x4.cpp - unclump.cpp - unicoderange.cpp - uri-references.cpp - uri.cpp - vanishing-point.cpp - verbs.cpp - version.cpp - - # ------- - # Headers - MultiPrinter.h - PylogFormatter.h - TRPIFormatter.h - attributes-test.h - attributes.h - axis-manip.h - bad-uri-exception.h - box3d-side.h - box3d.h - cms-color-types.h - cms-system.h - color-profile-cms-fns.h - color-profile-test.h - color-profile.h - color-rgba.h - color.h - colorspace.h - composite-undo-stack-observer.h - conditions.h - conn-avoid-ref.h - console-output-undo-observer.h - context-fns.h - decimal-round.h - desktop-events.h - desktop-style.h - desktop.h - device-manager.h - dir-util-test.h - dir-util.h - document-private.h - document-subset.h - document-undo.h - document.h - ege-color-prof-tracker.h - enums.h - event-log.h - event.h - extract-uri-test.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 - graphlayout.h - guide-snapper.h - help.h - helper-fns.h - icon-size.h - id-clash.h - inkscape-version.h - inkscape.h - isinf.h - knot-enums.h - knot-holder-entity.h - knot-ptr.h - knot.h - knotholder.h - layer-fns.h - layer-manager.h - layer-model.h - line-geometry.h - line-snapper.h - macros.h - main-cmdlineact.h - marker-test.h - media.h - menus-skeleton.h - message-context.h - message-stack.h - message.h - mod360-test.h - mod360.h - number-opt-number.h - object-hierarchy.h - object-snapper.h - object-test.h - path-chemistry.h - path-prefix.h - persp3d-reference.h - persp3d.h - perspective-line.h - preferences-skeleton.h - preferences-test.h - preferences.h - prefix.h - print.h - profile-manager.h - proj_pt.h - pure-transform.h - rdf.h - remove-last.h - removeoverlap.h - require-config.h - resource-manager.h - round-test.h - round.h - rubberband.h - satisfied-guide-cns.h - selcue.h - selection-chemistry.h - selection-describer.h - selection.h - seltrans-handles.h - seltrans.h - shortcuts.h - snap-candidate.h - snap-enums.h - snap-preferences.h - snap.h - snapped-curve.h - snapped-line.h - snapped-point.h - snapper.h - splivarot.h - streq.h - strneq.h - style-enums.h - style-internal.h - style-test.h - style.h - svg-profile.h - svg-view-widget.h - svg-view.h - syseq.h - test-helpers.h - text-chemistry.h - text-editing.h - text-tag-attributes.h - transf_mat_3x4.h - unclump.h - undo-stack-observer.h - unicoderange.h - uri-references.h - uri-test.h - uri.h - vanishing-point.h - verbs-test.h - verbs.h - version.h + attributes.cpp + axis-manip.cpp + box3d-side.cpp + box3d.cpp + color-profile.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 + dir-util.cpp + document-subset.cpp + document-undo.cpp + document.cpp + ege-color-prof-tracker.cpp + event-log.cpp + extract-uri.cpp + file.cpp + filter-chemistry.cpp + filter-enums.cpp + gc-anchored.cpp + gc-finalized.cpp + gradient-chemistry.cpp + gradient-drag.cpp + graphlayout.cpp + guide-snapper.cpp + help.cpp + id-clash.cpp + inkscape.cpp + knot-holder-entity.cpp + knot-ptr.cpp + knot.cpp + knotholder.cpp + layer-fns.cpp + layer-manager.cpp + layer-model.cpp + line-geometry.cpp + line-snapper.cpp + main-cmdlineact.cpp + media.cpp + message-context.cpp + message-stack.cpp + mod360.cpp + object-hierarchy.cpp + object-snapper.cpp + path-chemistry.cpp + persp3d-reference.cpp + persp3d.cpp + perspective-line.cpp + preferences.cpp + prefix.cpp + print.cpp + profile-manager.cpp + proj_pt.cpp + pure-transform.cpp + rdf.cpp + removeoverlap.cpp + resource-manager.cpp + rubberband.cpp + satisfied-guide-cns.cpp + selcue.cpp + selection-chemistry.cpp + selection-describer.cpp + selection.cpp + seltrans-handles.cpp + seltrans.cpp + shortcuts.cpp + snap-preferences.cpp + snap.cpp + snapped-curve.cpp + snapped-line.cpp + snapped-point.cpp + snapper.cpp + style-internal.cpp + style.cpp + svg-view-widget.cpp + svg-view.cpp + text-chemistry.cpp + text-editing.cpp + transf_mat_3x4.cpp + unclump.cpp + unicoderange.cpp + uri-references.cpp + uri.cpp + vanishing-point.cpp + verbs.cpp + version.cpp + + # ------- + # Headers + MultiPrinter.h + PylogFormatter.h + TRPIFormatter.h + attributes-test.h + attributes.h + axis-manip.h + bad-uri-exception.h + box3d-side.h + box3d.h + cms-color-types.h + cms-system.h + color-profile-cms-fns.h + color-profile-test.h + color-profile.h + color-rgba.h + color.h + colorspace.h + composite-undo-stack-observer.h + conditions.h + conn-avoid-ref.h + console-output-undo-observer.h + context-fns.h + decimal-round.h + desktop-events.h + desktop-style.h + desktop.h + device-manager.h + dir-util-test.h + dir-util.h + document-private.h + document-subset.h + document-undo.h + document.h + ege-color-prof-tracker.h + enums.h + event-log.h + event.h + extract-uri-test.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 + graphlayout.h + guide-snapper.h + help.h + helper-fns.h + icon-size.h + id-clash.h + inkscape-version.h + inkscape.h + isinf.h + knot-enums.h + knot-holder-entity.h + knot-ptr.h + knot.h + knotholder.h + layer-fns.h + layer-manager.h + layer-model.h + line-geometry.h + line-snapper.h + macros.h + main-cmdlineact.h + marker-test.h + media.h + menus-skeleton.h + message-context.h + message-stack.h + message.h + mod360-test.h + mod360.h + number-opt-number.h + object-hierarchy.h + object-snapper.h + object-test.h + path-chemistry.h + path-prefix.h + persp3d-reference.h + persp3d.h + perspective-line.h + preferences-skeleton.h + preferences-test.h + preferences.h + prefix.h + print.h + profile-manager.h + proj_pt.h + pure-transform.h + rdf.h + remove-last.h + removeoverlap.h + require-config.h + resource-manager.h + round-test.h + round.h + rubberband.h + satisfied-guide-cns.h + selcue.h + selection-chemistry.h + selection-describer.h + selection.h + seltrans-handles.h + seltrans.h + shortcuts.h + snap-candidate.h + snap-enums.h + snap-preferences.h + snap.h + snapped-curve.h + snapped-line.h + snapped-point.h + snapper.h + splivarot.h + streq.h + strneq.h + style-enums.h + style-internal.h + style-test.h + style.h + svg-profile.h + svg-view-widget.h + svg-view.h + syseq.h + test-helpers.h + text-chemistry.h + text-editing.h + text-tag-attributes.h + transf_mat_3x4.h + unclump.h + undo-stack-observer.h + unicoderange.h + uri-references.h + uri-test.h + uri.h + vanishing-point.h + verbs-test.h + verbs.h + version.h ) -if(WIN32) - list(APPEND inkscape_SRC - inkscape.rc - registrytool.cpp - #deptool.cpp - winconsole.cpp - winmain.cpp - - # ------- - # Headers - registrytool.h - ) -endif() - - # ----------------------------------------------------------------------------- # Generate version file # ----------------------------------------------------------------------------- # a custom target that is always built add_custom_target( - inkscape_version ALL - COMMAND ${CMAKE_COMMAND} - -DINKSCAPE_SOURCE_DIR=${CMAKE_SOURCE_DIR} - -DINKSCAPE_BINARY_DIR=${CMAKE_BINARY_DIR} - -P ${CMAKE_SOURCE_DIR}/CMakeScripts/inkscape-version.cmake) + inkscape_version ALL + COMMAND ${CMAKE_COMMAND} + -DINKSCAPE_SOURCE_DIR=${CMAKE_SOURCE_DIR} + -DINKSCAPE_BINARY_DIR=${CMAKE_BINARY_DIR} + -P ${CMAKE_SOURCE_DIR}/CMakeScripts/inkscape-version.cmake) # buildinfo.h is a generated file set_source_files_properties( - ${CMAKE_BINARY_DIR}/src/inkscape-version.cpp - PROPERTIES GENERATED TRUE) + ${CMAKE_BINARY_DIR}/src/inkscape-version.cpp + PROPERTIES GENERATED TRUE) list(APPEND inkscape_SRC - ${CMAKE_BINARY_DIR}/src/inkscape-version.cpp + ${CMAKE_BINARY_DIR}/src/inkscape-version.cpp ) @@ -481,7 +462,6 @@ add_subdirectory(widgets) add_subdirectory(xml) add_subdirectory(2geom) - # Directories containing lists files that describe building internal libraries add_subdirectory(libavoid) add_subdirectory(libcola) @@ -494,12 +474,11 @@ add_subdirectory(livarot) add_subdirectory(libnrtype) add_subdirectory(libdepixelize) - get_property(inkscape_global_SRC GLOBAL PROPERTY inkscape_global_SRC) set(inkscape_SRC - ${inkscape_global_SRC} - ${inkscape_SRC} + ${inkscape_global_SRC} + ${inkscape_SRC} ) # ----------------------------------------------------------------------------- @@ -508,12 +487,32 @@ set(inkscape_SRC #add_inkscape_lib(sp_LIB "${sp_SRC}") #add_inkscape_lib(inkscape_LIB "${inkscape_SRC}") +if(WIN32) + # Sources for the inkscape executable on Windows. + set(main_SRC + registrytool.h + registrytool.cpp + main.cpp + winmain.cpp + #winconsole.cpp + ) + + # Add the platform specific resource files (enabling the app icon). + if(${HAVE_MINGW64}) + list(APPEND main_SRC inkscape-x64.rc) + else() + list(APPEND main_SRC inkscape.rc) + endif() +else() + set(main_SRC main.cpp) +endif() + # Build everything except main and inkview.c in a shared library. add_library(inkscape_base SHARED ${inkscape_SRC} ${sp_SRC}) # make executables for inkscape and inkview -add_executable(inkscape ${main_SRC} ) -add_executable(inkview inkview.cpp ) +add_executable(inkscape ${main_SRC}) +add_executable(inkview inkview.cpp) add_dependencies(inkscape inkscape_version) @@ -525,11 +524,9 @@ 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 @@ -548,22 +545,20 @@ if (NOT "${WITH_EXT_GDL}") list (INSERT INKSCAPE_TARGET_LIBS 0 "gdl_LIB") endif() - - - # Link the inkscape_base library against all external dependencies target_link_libraries(inkscape_base ${INKSCAPE_TARGET_LIBS}) # Link inkscape and inkview against inkscape_base -target_link_libraries(inkscape inkscape_base ) +target_link_libraries(inkscape inkscape_base) target_link_libraries(inkview inkscape_base) -#Define the installation -install( - TARGETS inkscape_base inkscape inkview - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib/inkscape - ARCHIVE DESTINATION lib/inkscape - ) - - +if(NOT WIN32) + #Define the installation + install(TARGETS + inkscape_base + inkscape + inkview + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib/inkscape + ARCHIVE DESTINATION lib/inkscape) +endif() diff --git a/touch.bat b/touch.bat deleted file mode 100644 index 043b3eb99..000000000 --- a/touch.bat +++ /dev/null @@ -1 +0,0 @@ -forfiles /s /m *.obj /c "cmd /c copy /b @path +,,"
\ No newline at end of file |
