Code

88a95636d8ab73970488925939cf566f463d045c
[inkscape.git] / CMakeScripts / ConfigInkscapeDepends.cmake
1 SET(INKSCAPE_DEPENDS\r
2     gtk+-2.0\r
3     gtkmm-2.4\r
4     cairo\r
5     cairomm-1.0\r
6     sigc++-2.0\r
7     lcms\r
8     libgc1c2\r
9     libpng\r
10     glib-2.0\r
11     glibmm-2.4\r
12     libxml-2.0\r
13     libxslt\r
14     ImageMagick++\r
15     libpopt\r
16     freetype2)\r
17 SET(INKSCAPE_OPTIONAL\r
18     gnome-vfs-2.0\r
19     libwpg-0.1\r
20     libssl)\r
21 \r
22 include(UsePkgConfig)\r
23 \r
24 # Dependencies Packages\r
25 message(STATUS "")\r
26 message(STATUS "")\r
27 message(STATUS "Checking For REQUIRED Libraries for Building Inkscape.")\r
28 SET(INKSCAPE_LINK_FLAGS "")\r
29 FOREACH(dep ${INKSCAPE_DEPENDS})\r
30     # This is a hack due to a bug in Cmake vars system, Uncomment if using a version older than 2.4 //verbalshadow\r
31 #    IF("${dep}" MATCHES "gtk\\+-2.0")\r
32 #        SET(dep_name "GTK2")\r
33 #    ELSE("${dep}" MATCHES "gtk\\+-2.0")\r
34        SET(dep_name "${dep}")\r
35 #    ENDIF("${dep}" MATCHES "gtk\\+-2.0")\r
36 \r
37     PKGCONFIG_FOUND(${dep} "${dep}_FOUND")\r
38     PKGCONFIG(${dep} "${dep_name}_INCLUDE_DIR" "${dep_name}_LINK_DIR" "${dep_name}_LINK_FLAGS" "${dep_name}_CFLAGS")\r
39 #    PKGCONFIG_VERSION(${dep} "${dep}_VERSION")\r
40     IF("${dep}_FOUND")\r
41         message(STATUS "${dep}: FOUND")\r
42         # Set Compiler Flags\r
43         SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${${dep_name}_CFLAGS}")\r
44         SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${${dep_name}_CFLAGS}")\r
45         SET(INKSCAPE_LINK_FLAGS "${INKSCAPE_LINK_FLAGS} ${${dep_name}_LINK_FLAGS}")\r
46     ELSE("${dep}_FOUND")\r
47         message(STATUS "${dep}: NOT FOUND")\r
48     ENDIF("${dep}_FOUND")\r
49 ENDFOREACH(dep)\r
50 # Include non pkg-config dependencies:\r
51 INCLUDE(FindBoost)\r
52 INCLUDE(FindGC)\r
53 INCLUDE(IncludeJava)\r
54 # end Dependencies\r
55 \r
56 # Optional Dependencies Packages\r
57 message(STATUS "")\r
58 message(STATUS "")\r
59 message(STATUS "Checking For OPTIONAL Libraries for Building Inkscape.")\r
60 message(STATUS "These add additional functionality to Inkscape.")\r
61 FOREACH(opt ${INKSCAPE_OPTIONAL})\r
62     SET(opt_name "${opt}")\r
63     PKGCONFIG_FOUND(${opt} "${opt}_FOUND")\r
64     PKGCONFIG(${opt} "${opt_name}_INCLUDE_DIR" "${opt_name}_LINK_DIR" "${opt_name}_LINK_FLAGS" "${opt_name}_CFLAGS")\r
65 #    PKGCONFIG_VERSION(${opt} "${opt}_VERSION")\r
66     IF("${opt}_FOUND")\r
67         message(STATUS "${opt}: FOUND")\r
68         SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${${dep_name}_CFLAGS}")\r
69         SET(INKSCAPE_LINK_FLAGS "${INKSCAPE_LINK_FLAGS} ${${dep_name}_LINK_FLAGS}")\r
70     ELSE("${opt}_FOUND")\r
71         message(STATUS "${opt}: NOT FOUND")\r
72     ENDIF("${opt}_FOUND")\r
73 ENDFOREACH(opt)\r
74 # end Optional Dependencies\r
75 message(STATUS "")\r
76 message(STATUS "")\r
77 \r
78 SET(CMAKE_MAKE_PROGRAM "${CMAKE_MAKE_PROGRAM} -j2")\r
79 \r
80 #---------------\r
81 # From here on:\r
82 # Set all HAVE_XXX variables, to correctly set all defines in config.h\r
83 \r
84 INCLUDE (CheckIncludeFiles)\r
85 INCLUDE (CheckFunctionExists)\r
86 INCLUDE (CheckStructMember)\r
87 # usage: CHECK_INCLUDE_FILES (<header> <RESULT_VARIABLE> )\r
88 # usage: CHECK_FUNCTION_EXISTS (<function name> <RESULT_VARIABLE> )\r
89 # usage: CHECK_STRUCT_MEMBER (<struct> <member> <header> <RESULT_VARIABLE>)\r
90 \r
91 CHECK_INCLUDE_FILES (boost/concept_check.hpp HAVE_BOOST_CONCEPT_CHECK_HPP)\r
92 CHECK_INCLUDE_FILES (cairo-pdf.h HAVE_CAIRO_PDF)\r
93 CHECK_FUNCTION_EXISTS(floor HAVE_FLOOR)\r
94 CHECK_FUNCTION_EXISTS(fpsetmask HAVE_FPSETMASK)\r
95 CHECK_INCLUDE_FILES (gc/gc.h HAVE_GC_GC_H)\r
96 CHECK_INCLUDE_FILES (gc.h HAVE_GC_H)\r
97 CHECK_INCLUDE_FILES (getopt.h HAVE_GETOPT_H)\r
98 CHECK_FUNCTION_EXISTS(gettext HAVE_GETTEXT)\r
99 CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY)\r
100 CHECK_FUNCTION_EXISTS(gtk_window_fullscreen HAVE_GTK_WINDOW_FULLSCREEN)\r
101 CHECK_FUNCTION_EXISTS(gtk_window_set_default_icon_from_file HAVE_GTK_WINDOW_SET_DEFAULT_ICON_FROM_FILE)\r
102 CHECK_INCLUDE_FILES (ieeefp.h HAVE_IEEEFP_H)\r
103 CHECK_INCLUDE_FILES (inttypes.h HAVE_INTTYPES_H)\r
104 CHECK_INCLUDE_FILES (locale.h HAVE_LC_MESSAGES)\r
105 CHECK_INCLUDE_FILES (locale.h HAVE_LOCALE_H)\r
106 CHECK_INCLUDE_FILES (libintl.h HAVE_LIBINTL_H)\r
107 CHECK_INCLUDE_FILES (fcntl.h HAVE_FCNTL_H)\r
108 CHECK_FUNCTION_EXISTS(mallinfo HAVE_MALLINFO)\r
109 CHECK_INCLUDE_FILES (malloc.h HAVE_MALLOC_H)\r
110 CHECK_FUNCTION_EXISTS(memmove HAVE_MEMMOVE)\r
111 CHECK_INCLUDE_FILES (memory.h HAVE_MEMORY_H)\r
112 CHECK_FUNCTION_EXISTS(memset HAVE_MEMSET)\r
113 CHECK_FUNCTION_EXISTS(mkdir HAVE_MKDIR)\r
114 CHECK_FUNCTION_EXISTS(pow HAVE_POW)\r
115 CHECK_FUNCTION_EXISTS(sqrt HAVE_SQRT)\r
116 CHECK_INCLUDE_FILES (stddef.h HAVE_STDDEF_H)\r
117 CHECK_INCLUDE_FILES (stdint.h HAVE_STDINT_H)\r
118 CHECK_INCLUDE_FILES (stdlib.h HAVE_STDLIB_H)\r
119 CHECK_INCLUDE_FILES (strings.h HAVE_STRINGS_H)\r
120 CHECK_INCLUDE_FILES (string.h HAVE_STRING_H)\r
121 CHECK_FUNCTION_EXISTS(strncasecmp HAVE_STRNCASECMP)\r
122 CHECK_FUNCTION_EXISTS(strpbrk HAVE_STRPBRK)\r
123 CHECK_FUNCTION_EXISTS(strrchr HAVE_STRRCHR)\r
124 CHECK_FUNCTION_EXISTS(strspn HAVE_STRSPN)\r
125 CHECK_FUNCTION_EXISTS(strstr HAVE_STRSTR)\r
126 CHECK_FUNCTION_EXISTS(strtoul HAVE_STRTOUL)\r
127 CHECK_STRUCT_MEMBER(fordblks mallinfo malloc.h HAVE_STRUCT_MALLINFO_FORDBLKS)\r
128 CHECK_STRUCT_MEMBER(fsmblks mallinfo malloc.h HAVE_STRUCT_MALLINFO_FSMBLKS)\r
129 CHECK_STRUCT_MEMBER(hblkhd mallinfo malloc.h HAVE_STRUCT_MALLINFO_HBLKHD)\r
130 CHECK_STRUCT_MEMBER(uordblks mallinfo malloc.h HAVE_STRUCT_MALLINFO_UORDBLKS)\r
131 CHECK_STRUCT_MEMBER(usmblks mallinfo malloc.h HAVE_STRUCT_MALLINFO_USMBLKS)\r
132 CHECK_INCLUDE_FILES (sys/filio.h HAVE_SYS_FILIO_H)\r
133 CHECK_INCLUDE_FILES (sys/stat.h HAVE_SYS_STAT_H)\r
134 CHECK_INCLUDE_FILES (sys/time.h HAVE_SYS_TIME_H)\r
135 CHECK_INCLUDE_FILES (sys/types.h HAVE_SYS_TYPES_H)\r
136 CHECK_INCLUDE_FILES (unistd.h HAVE_UNISTD_H)\r
137 CHECK_INCLUDE_FILES (zlib.h HAVE_ZLIB_H)\r
138 \r
139 # Enable pango defines, necessary for compilation on Win32, how about Linux?\r
140 IF (HAVE_CAIRO_PDF)\r
141     SET(PANGO_ENABLE_ENGINE TRUE)\r
142     SET(RENDER_WITH_PANGO_CAIRO TRUE)\r
143 ENDIF(HAVE_CAIRO_PDF)\r
144 \r
145 # Create the two configuration files: config.h and inkscape_version.h\r
146 # Create them in the binary root dir\r
147 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/config.h.cmake ${CMAKE_BINARY_DIR}/config.h)\r
148 FILE(WRITE ${CMAKE_BINARY_DIR}/inkscape_version.h "#define INKSCAPE_VERSION \"${INKSCAPE_VERSION}\"\n")\r
149 INCLUDE_DIRECTORIES ("${CMAKE_BINARY_DIR}")  # Include base dir, so other files can refer to the generated files.\r
150 # CMAKE_INCLUDE_CURRENT_DIR is not enough as it only includes the current dir and not the basedir with config.h in it