diff options
Diffstat (limited to 'CMakeScripts/DefineDependsandFlags.cmake')
| -rw-r--r-- | CMakeScripts/DefineDependsandFlags.cmake | 256 |
1 files changed, 146 insertions, 110 deletions
diff --git a/CMakeScripts/DefineDependsandFlags.cmake b/CMakeScripts/DefineDependsandFlags.cmake index ab197a7af..f2a6b5670 100644 --- a/CMakeScripts/DefineDependsandFlags.cmake +++ b/CMakeScripts/DefineDependsandFlags.cmake @@ -2,6 +2,7 @@ set(INKSCAPE_LIBS "") set(INKSCAPE_INCS "") set(INKSCAPE_INCS_SYS "") +set(INKSCAPE_CXX_FLAGS "") list(APPEND INKSCAPE_INCS ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/src @@ -13,40 +14,96 @@ list(APPEND INKSCAPE_INCS ${PROJECT_SOURCE_DIR} # ---------------------------------------------------------------------------- # Files we include # ---------------------------------------------------------------------------- - -find_package(GSL REQUIRED) -list(APPEND INKSCAPE_INCS_SYS ${GSL_INCLUDE_DIRS}) -list(APPEND INKSCAPE_LIBS ${GSL_LIBRARIES}) if(WIN32) - list(APPEND INKSCAPE_LIBS "-L$ENV{DEVLIBS_PATH}/lib") # FIXME - list(APPEND INKSCAPE_LIBS "-lpangocairo-1.0.dll") # FIXME - list(APPEND INKSCAPE_LIBS "-lpangoft2-1.0.dll") # FIXME - list(APPEND INKSCAPE_LIBS "-lpangowin32-1.0.dll") # FIXME - list(APPEND INKSCAPE_LIBS "-lgthread-2.0.dll") # FIXME -elseif(APPLE) - if(DEFINED ENV{CMAKE_PREFIX_PATH}) - # Adding the library search path explicitly seems not required - # if MacPorts is installed in default prefix ('/opt/local') - - # Cmake then can rely on the hard-coded paths in its modules. - # Only prepend search path if $CMAKE_PREFIX_PATH is defined: - list(APPEND INKSCAPE_LIBS "-L$ENV{CMAKE_PREFIX_PATH}/lib") # FIXME - endif() - list(APPEND INKSCAPE_LIBS "-lpangocairo-1.0") # FIXME - list(APPEND INKSCAPE_LIBS "-lpangoft2-1.0") # FIXME - list(APPEND INKSCAPE_LIBS "-lfontconfig") # FIXME +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 ----------------") +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}) +add_definitions(${INKSCAPE_DEP_CFLAGS_OTHER}) + +if(APPLE AND DEFINED ENV{CMAKE_PREFIX_PATH}) + list(APPEND INKSCAPE_LIBS "-L$ENV{CMAKE_PREFIX_PATH}/lib") +endif() +if(APPLE) if(${GTK+_2.0_TARGET} MATCHES "x11") - # only link X11 if using X11 backend of GTK2 - list(APPEND INKSCAPE_LIBS "-lX11") # FIXME + pkg_check_modules(x11 REQUIRED x11) + list(APPEND INKSCAPE_LIBS ${x11_LDFLAGS}) endif() +elseif(WIN32) +# X11 not available on windows else() - list(APPEND INKSCAPE_LIBS "-ldl") # FIXME - list(APPEND INKSCAPE_LIBS "-lpangocairo-1.0") # FIXME - list(APPEND INKSCAPE_LIBS "-lpangoft2-1.0") # FIXME - list(APPEND INKSCAPE_LIBS "-lfontconfig") # FIXME - list(APPEND INKSCAPE_LIBS "-lX11") # FIXME -endif() + pkg_check_modules(x11 REQUIRED x11) + list(APPEND INKSCAPE_LIBS ${x11_LDFLAGS}) -list(APPEND INKSCAPE_LIBS "-lgslcblas") # FIXME +endif() if(WITH_GNOME_VFS) find_package(GnomeVFS2) @@ -193,11 +250,13 @@ else(POTRACE_FOUND) endif() if(WITH_DBUS) - find_package(DBus REQUIRED) + pkg_check_modules(DBUS dbus-1 dbus-glib-1) if(DBUS_FOUND) - list(APPEND INKSCAPE_INCS_SYS ${DBUS_INCLUDE_DIR}) - list(APPEND INKSCAPE_INCS_SYS ${DBUS_ARCH_INCLUDE_DIR}) - list(APPEND INKSCAPE_LIBS ${DBUS_LIBRARIES}) + list(APPEND INKSCAPE_LIBS ${DBUS_LDFLAGS}) + list(APPEND INKSCAPE_INCS_SYS ${DBUS_INCLUDE_DIRS} ${CMAKE_BINARY_DIR}/src/extension/dbus/) + list(APPEND INKSCAPE_LIBS ${DBUS_LIBRARIES}) + add_definitions(${DBUS_CFLAGS_OTHER}) + else() set(WITH_DBUS OFF) endif() @@ -220,15 +279,16 @@ set(TRY_GTKSPELL 1) # use patched version until GTK2_CAIROMMCONFIG_INCLUDE_DIR is added if("${WITH_GTK3_EXPERIMENTAL}") pkg_check_modules( - GTK + GTK3 REQUIRED - gtkmm-3.0>=3.2 - gdkmm-3.0>=3.2 - gtk+-3.0>=3.2 - gdk-3.0>=3.2 - gdl-3.0>=3.3.5 + gtkmm-3.0>=3.8 + gdkmm-3.0>=3.8 + gtk+-3.0>=3.8 + gdk-3.0>=3.8 + gdl-3.0>=3.4 ) message("Using EXPERIMENTAL Gtkmm 3 build") + list(APPEND INKSCAPE_CXX_FLAGS ${GTK3_CFLAGS_OTHER}) set(WITH_GTKMM_3_0 1) message("Using external GDL") set(WITH_EXT_GDL 1) @@ -248,7 +308,7 @@ if("${WITH_GTK3_EXPERIMENTAL}") pkg_check_modules(GDL_3_6 gdl-3.0>=3.6) if("${GDL_3_6_FOUND}") - message("Using Gdl 3.6 or higher") + message("Using GDL 3.6 or higher") set (WITH_GDL_3_6 1) endif() @@ -256,65 +316,46 @@ if("${WITH_GTK3_EXPERIMENTAL}") pkg_check_modules(GTKSPELL3 gtkspell3-3.0) if("${GTKSPELL3_FOUND}") - message("Using GtkSpell3 3.0") + message("Using GtkSpell 3") set (WITH_GTKSPELL 1) + else() + unset(WITH_GTKSPELL) endif() + list(APPEND INKSCAPE_INCS_SYS - ${GTK_INCLUDE_DIRS} + ${GTK3_INCLUDE_DIRS} ${GTKSPELL3_INCLUDE_DIRS} ) list(APPEND INKSCAPE_LIBS - ${GTK_LIBRARIES} + ${GTK3_LIBRARIES} ${GTKSPELL3_LIBRARIES} ) else() - find_package(GTK2 COMPONENTS gtk gtkmm REQUIRED) + pkg_check_modules(GTK REQUIRED + gtkmm-2.4>=2.24 + gdkmm-2.4 + gtk+-2.0 + gdk-2.0 + ) + list(APPEND INKSCAPE_CXX_FLAGS ${GTK_CFLAGS_OTHER}) + pkg_check_modules(GTKSPELL2 gtkspell-2.0) + if("${GTKSPELL2_FOUND}") + message("Using GtkSpell 2") + add_definitions(${GTKSPELL2_CFLAGS_OTHER}) + set (WITH_GTKSPELL 1) + else() + unset(WITH_GTKSPELL) + endif() list(APPEND INKSCAPE_INCS_SYS - ${GTK2_GDK_INCLUDE_DIR} - ${GTK2_GDKMM_INCLUDE_DIR} - ${GTK2_GDK_PIXBUF_INCLUDE_DIR} - ${GTK2_GDKCONFIG_INCLUDE_DIR} - ${GTK2_GDKMMCONFIG_INCLUDE_DIR} - ${GTK2_GLIB_INCLUDE_DIR} - ${GTK2_GLIBCONFIG_INCLUDE_DIR} - ${GTK2_GLIBMM_INCLUDE_DIR} - ${GTK2_GLIBMMCONFIG_INCLUDE_DIR} - ${GTK2_GTK_INCLUDE_DIR} - ${GTK2_GTKMM_INCLUDE_DIR} - ${GTK2_GTKMMCONFIG_INCLUDE_DIR} - ${GTK2_ATK_INCLUDE_DIR} - ${GTK2_ATKMM_INCLUDE_DIR} - ${GTK2_PANGO_INCLUDE_DIR} - ${GTK2_PANGOMM_INCLUDE_DIR} - ${GTK2_PANGOMMCONFIG_INCLUDE_DIR} - ${GTK2_CAIRO_INCLUDE_DIR} - ${GTK2_CAIROMM_INCLUDE_DIR} - ${GTK2_CAIROMMCONFIG_INCLUDE_DIR} # <-- not in cmake 2.8.4 - ${GTK2_GIOMM_INCLUDE_DIR} - ${GTK2_GIOMMCONFIG_INCLUDE_DIR} - ${GTK2_SIGC++_INCLUDE_DIR} - ${GTK2_SIGC++CONFIG_INCLUDE_DIR} - ) + ${GTK_INCLUDE_DIRS} + ${GTKSPELL2_INCLUDE_DIRS} + ) list(APPEND INKSCAPE_LIBS - ${GTK2_GDK_LIBRARY} - ${GTK2_GDKMM_LIBRARY} - ${GTK2_GDK_PIXBUF_LIBRARY} - ${GTK2_GLIB_LIBRARY} - ${GTK2_GLIBMM_LIBRARY} - ${GTK2_GTK_LIBRARY} - ${GTK2_GTKMM_LIBRARY} - ${GTK2_ATK_LIBRARY} - ${GTK2_ATKMM_LIBRARY} - ${GTK2_PANGO_LIBRARY} - ${GTK2_PANGOMM_LIBRARY} - ${GTK2_CAIRO_LIBRARY} - ${GTK2_CAIROMM_LIBRARY} - ${GTK2_GIOMM_LIBRARY} - ${GTK2_SIGC++_LIBRARY} - ${GTK2_GOBJECT_LIBRARY} - ) + ${GTK_LIBRARIES} + ${GTKSPELL2_LIBRARIES} + ) endif() find_package(Freetype REQUIRED) @@ -333,17 +374,6 @@ if(ASPELL_FOUND) set(HAVE_ASPELL TRUE) endif() -if("${TRY_GTKSPELL}" AND "${WITH_GTKSPELL}") - find_package(GtkSpell) - if(GTKSPELL_FOUND) - list(APPEND INKSCAPE_INCS_SYS ${GTKSPELL_INCLUDE_DIR}) - list(APPEND INKSCAPE_LIBS ${GTKSPELL_LIBRARIES}) - add_definitions(${GTKSPELL_DEFINITIONS}) - else() - set(WITH_GTKSPELL OFF) - endif() -endif() - #find_package(OpenSSL) #list(APPEND INKSCAPE_INCS_SYS ${OPENSSL_INCLUDE_DIR}) #list(APPEND INKSCAPE_LIBS ${OPENSSL_LIBRARIES}) @@ -362,7 +392,7 @@ if(WITH_OPENMP) find_package(OpenMP) if(OPENMP_FOUND) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + list(APPEND INKSCAPE_CXX_FLAGS ${OpenMP_CXX_FLAGS}) if(APPLE AND ${CMAKE_GENERATOR} MATCHES "Xcode") set(CMAKE_XCODE_ATTRIBUTE_ENABLE_OPENMP_SUPPORT "YES") endif() @@ -383,19 +413,15 @@ list(APPEND INKSCAPE_INCS_SYS ${ZLIB_INCLUDE_DIRS}) list(APPEND INKSCAPE_LIBS ${ZLIB_LIBRARIES}) if(WITH_IMAGE_MAGICK) - find_package(ImageMagick COMPONENTS MagickCore Magick++) + pkg_check_modules(ImageMagick ImageMagick MagickCore Magick++ ) if(ImageMagick_FOUND) - # the component-specific paths apparently fail to get detected correctly - # on some linux distros (or with older Cmake versions). - # Use variables which list all include dirs and libraries instead: - list(APPEND INKSCAPE_INCS_SYS ${ImageMagick_INCLUDE_DIRS}) - list(APPEND INKSCAPE_LIBS ${ImageMagick_LIBRARIES}) - # TODO: Cmake's ImageMagick module misses required defines for newer - # versions of ImageMagick. See also: - # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776832 - #add_definitions(-DMAGICKCORE_HDRI_ENABLE=0) # FIXME (version check?) - #add_definitions(-DMAGICKCORE_QUANTUM_DEPTH=16) # FIXME (version check?) - else() + + list(APPEND INKSCAPE_LIBS ${ImageMagick_LDFLAGS}) + add_definitions(${ImageMagick_CFLAGS_OTHER}) + + list(APPEND INKSCAPE_INCS_SYS ${ImageMagick_INCLUDE_DIRS}) + list(APPEND INKSCAPE_LIBS ${ImageMagick_LIBRARIES}) + else() set(WITH_IMAGE_MAGICK OFF) # enable 'Extensions > Raster' endif() endif() @@ -411,8 +437,18 @@ if(WITH_NLS) endif(GETTEXT_FOUND) endif(WITH_NLS) +#sets c++11 for newer sigc++ if required when pkg-config does not detect it find_package(SigC++ REQUIRED) +pkg_check_modules(SIGC++ REQUIRED sigc++-2.0 ) +list(APPEND INKSCAPE_LIBS ${SIGC++_LDFLAGS}) + +list(APPEND INKSCAPE_CXX_FLAGS ${SIGC++_CFLAGS_OTHER}) + +list(REMOVE_DUPLICATES INKSCAPE_CXX_FLAGS) +foreach(flag ${INKSCAPE_CXX_FLAGS}) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}" CACHE STRING "" FORCE) +endforeach() # end Dependencies list(REMOVE_DUPLICATES INKSCAPE_LIBS) |
