2
#Require 2.4.2 for Qt finding
3
#Require 2.4.3 for moc change detection
4
#Require 2.4.3 for rpath updates for custom cairo install
5
CMAKE_MINIMUM_REQUIRED(VERSION 2.4.3 FATAL_ERROR)
7
SET(CMAKE_COLOR_MAKEFILE ON)
8
#SET(CMAKE_VERBOSE_MAKEFILE ON)
9
SET(CMAKE_INCLUDE_CURRENT_DIR TRUE)
10
SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
11
#SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
12
#SET(CMAKE_SKIP_RPATH:BOOL NO)
13
SET(CMAKE_SKIP_RULE_DEPENDENCY TRUE)
15
set(CMAKE_SKIP_BUILD_RPATH TRUE)
16
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
18
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
19
# SET(CMAKE_SHARED_MODULE_LINK_FLAGS "${CMAKE_SHARED_MODULE_LINK_FLAGS} -export-dynamic")
20
# SET(CMAKE_SHARED_MODULE_LINK_CXX_FLAGS "${CMAKE_SHARED_MODULE_LINK_CXX_FLAGS} -export-dynamic")
21
# SET(CMAKE_SHARED_LIBRARY_C_FLAGS "${CMAKE_SHARED_LIBRARY_C_FLAGS} -export-dynamic")
22
# SET(CMAKE_SHARED_LIBRARY_CXX_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} -export-dynamic")
23
# MESSAGE(STATUS ${CMAKE_SHARED_MODULE_LINK_FLAGS})
24
# MESSAGE(STATUS ${CMAKE_SHARED_MODULE_LINK_CXX_FLAGS})
25
# MESSAGE(STATUS ${CMAKE_SHARED_LIBRARY_C_FLAGS})
26
# MESSAGE(STATUS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS})
27
# MESSAGE(STATUS ${CMAKE_CXX_CREATE_SHARED_MODULE})
28
# MESSAGE(STATUS ${CMAKE_CXX_CREATE_SHARED_LIBRARY})
30
#IMPORT FROM COMMANDLINE
31
# SET with cmake -DWANT_CAIRO=1, etc
32
# MESSAGE(STATUS ${WANT_CAIRO})
33
# MESSAGE(STATUS ${WANT_LIBART})
34
# MESSAGE(STATUS ${WANT_DEBUG})
41
SET (VERSION_MAJOR "1")
42
SET (VERSION_MINOR "3")
43
SET (VERSION_PATCH "4")
44
SET (VERSION_SUFFIX "")
45
SET (VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}${VERSION_SUFFIX})
46
MESSAGE(STATUS "Scribus ${VERSION} will be built to install into ${CMAKE_INSTALL_PREFIX}")
48
SET(PLUGIN_PERMISSIONS WORLD_EXECUTE GROUP_EXECUTE OWNER_EXECUTE WORLD_READ GROUP_READ OWNER_READ OWNER_WRITE)
50
SET(MAIN_DIR_NAME "scribus")
52
MESSAGE(STATUS "Previously selected version tag: ${TAG_VERSION}")
53
SET(WANT_VERSIONING 1)
54
SET(CACHED_VERSIONING 1)
56
IF (WANT_VERSIONING AND NOT CACHED_VERSIONING)
57
IF (NOT CUSTOM_VERSIONTAG)
58
SET(TAG_VERSION "-${VERSION}" CACHE TYPE STRING)
59
ELSE (NOT CUSTOM_VERSIONTAG)
60
SET(TAG_VERSION ${CUSTOM_VERSIONTAG} CACHE TYPE STRING)
61
ENDIF (NOT CUSTOM_VERSIONTAG)
62
ENDIF (WANT_VERSIONING AND NOT CACHED_VERSIONING)
65
SET(MANDIR "share/man/")
66
SET(SHAREDIR "share/${MAIN_DIR_NAME}${TAG_VERSION}/")
67
ADD_DEFINITIONS("-DSHAREDIR=\\\"${CMAKE_INSTALL_PREFIX}/${SHAREDIR}\\\"")
70
SET(DOCDIR "share/doc/${MAIN_DIR_NAME}${TAG_VERSION}/")
72
SET(DOCDIR "share/doc/${MAIN_DIR_NAME}-${VERSION}/")
74
ADD_DEFINITIONS("-DDOCDIR=\\\"${CMAKE_INSTALL_PREFIX}/${DOCDIR}\\\"")
76
SET(ICONDIR "share/${MAIN_DIR_NAME}${TAG_VERSION}/icons/")
77
ADD_DEFINITIONS("-DICONDIR=\\\"${CMAKE_INSTALL_PREFIX}/${ICONDIR}\\\"")
79
SET(SAMPLESDIR "share/${MAIN_DIR_NAME}${TAG_VERSION}/samples/")
80
ADD_DEFINITIONS("-DSAMPLESDIR=\\\"${CMAKE_INSTALL_PREFIX}/${SAMPLESDIR}\\\"")
82
SET(SCRIPTSDIR "share/${MAIN_DIR_NAME}${TAG_VERSION}/scripts/")
83
ADD_DEFINITIONS("-DSCRIPTSDIR=\\\"${CMAKE_INSTALL_PREFIX}/${SCRIPTSDIR}\\\"")
85
SET(TEMPLATEDIR "share/${MAIN_DIR_NAME}${TAG_VERSION}/templates/")
86
ADD_DEFINITIONS("-DTEMPLATEDIR=\\\"${CMAKE_INSTALL_PREFIX}/${TEMPLATEDIR}\\\"")
88
SET(LIBDIR "lib/${MAIN_DIR_NAME}${TAG_VERSION}/")
89
ADD_DEFINITIONS("-DLIBDIR=\\\"${CMAKE_INSTALL_PREFIX}/${LIBDIR}\\\"")
91
SET(PLUGINDIR "lib/${MAIN_DIR_NAME}${TAG_VERSION}/plugins/")
92
ADD_DEFINITIONS("-DPLUGINDIR=\\\"${CMAKE_INSTALL_PREFIX}/${PLUGINDIR}\\\"")
94
set(CMAKE_INSTALL_RPATH ${PLUGINDIR})
96
# Set the XDG mime stuff
97
SET(MIMEDIR "share/mime/packages/")
101
#None, Debug, Release, .. or custom ones
104
SET(CMAKE_BUILD_TYPE Debug)
106
SET(CMAKE_BUILD_TYPE RELEASE)
110
SET( ENV{MACOSX_DEPLOYMENT_TARGET} 10.3 )
111
SET( ENV{LD_PREBIND} 1 )
112
SET( ENV{LD_PREBIND_ALLOW_OVERLAP} 1 )
113
SET(CMAKE_CXX_FLAGS_DEBUG "-O2 -g3 -fno-inline-functions -Wall")
114
SET(CMAKE_C_FLAGS_DEBUG "-O2 -g3 -fno-inline-functions -Wall")
115
SET(BUILD_MAC_BUNDLE 1)
117
SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3 -Wall")
118
SET(CMAKE_C_FLAGS_DEBUG "-O0 -g3 -Wall")
120
SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -Wall")
121
SET(CMAKE_C_FLAGS_RELEASE "-O2 -Wall")
124
INCLUDE (${CMAKE_ROOT}/Modules/TestBigEndian.cmake)
125
TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
129
SET (QT_MT_REQUIRED true)
130
SET (QT_MIN_VERSION "3.3.4")
131
FIND_PACKAGE(Qt3 REQUIRED)
133
MESSAGE("Qt3 Found OK (${qt_version_str})")
134
# MESSAGE("$ENV{QTDIR}")
135
# MESSAGE("${QT_MOC_EXECUTABLE}")
136
# MESSAGE("${QT_UIC_EXECUTABLE}")
137
# MESSAGE("${QT_QT_LIBRARY}")
138
# MESSAGE("${QT_INCLUDE_DIR}")
139
# MESSAGE("${qt_version_str}")
140
# MESSAGE(${qt_version_str_lib})
142
MESSAGE(FATAL_ERROR "No Qt3")
145
# START PNG, JPEG, TIFF
146
FIND_PACKAGE(PNG REQUIRED)
148
MESSAGE("PNG Library Found OK")
150
FIND_PACKAGE(JPEG REQUIRED)
152
MESSAGE("JPEG Library Found OK")
154
FIND_PACKAGE(TIFF REQUIRED)
156
MESSAGE("TIFF Library Found OK")
159
MESSAGE(FATAL_ERROR "Could not find the TIFF Library")
161
FIND_PACKAGE(ZLIB REQUIRED)
163
MESSAGE("ZLIB Library Found OK")
166
FIND_PACKAGE(PythonLibs REQUIRED)
168
MESSAGE("Python Library Found OK")
170
SET(COMPILE_PYTHON 1)
171
ENDIF(PYTHON_LIBRARY)
174
SET(FREETYPE_DIR ${CMAKE_MODULE_PATH})
175
FIND_PACKAGE(FREETYPE REQUIRED)
177
MESSAGE("FreeType2 Library Found OK")
178
CHECK_LIBRARY_EXISTS(libfreetype.so FT_Get_First_Char "" HAVE_FREETYPE_FIRST)
179
CHECK_LIBRARY_EXISTS(libfreetype.so FT_Get_Next_Char "" HAVE_FREETYPE_NEXT)
180
ENDIF(FREETYPE_FOUND)
181
#FIXME: if cflags empty add, otherwise replace as now
182
SET(CFLAGS "${LIBFREETYPE_CFLAGS}")
185
# If we have a RENDER_LIB selected from a previous cmake run, then use it
186
# otherwise, we should be defaulting to Libart_LGPL for 1.3.4.x
188
MESSAGE(STATUS "Previously selected rendering system: ${RENDER_LIB}")
192
ENDIF (NOT WANT_CAIRO)
196
IF (WANT_LIBART OR RENDER_LIB STREQUAL "LIBART")
197
SET(LIBART_LGPL_DIR ${CMAKE_MODULE_PATH})
198
FIND_PACKAGE(LIBART_LGPL REQUIRED)
199
IF(LIBART_LGPL_FOUND)
200
SET(RENDER_LIB "LIBART" CACHE TYPE STRING)
201
MESSAGE("Libart_LGPL Library Found OK")
202
ELSE(LIBART_LGPL_FOUND)
203
SET(OLDRENDERLIBLOST TRUE)
204
ENDIF(LIBART_LGPL_FOUND)
205
ELSE (WANT_LIBART OR RENDER_LIB STREQUAL "LIBART")
207
SET(CAIRO_DIR ${CMAKE_MODULE_PATH})
210
MESSAGE("CAIRO Library Found OK")
211
SET(RENDER_LIB "CAIRO" CACHE TYPE STRING)
213
SET(OLDRENDERLIBLOST TRUE)
216
ENDIF (WANT_LIBART OR RENDER_LIB STREQUAL "LIBART")
219
IF(NOT RENDER_LIB OR OLDRENDERLIBLOST)
220
MESSAGE(FATAL_ERROR "ERROR: Neither LibArt_LGPL nor cairo have been selected or found, please correct and restart cmake")
221
ENDIF(NOT RENDER_LIB OR OLDRENDERLIBLOST)
225
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.5)
226
SET(Cups_DIR ${CMAKE_MODULE_PATH})
227
ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.5)
228
FIND_PACKAGE(Cups REQUIRED)
231
MESSAGE("CUPS Library Found OK")
236
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.5)
237
SET(LibXml2_DIR ${CMAKE_MODULE_PATH})
238
ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.5)
239
FIND_PACKAGE(LibXml2 REQUIRED)
242
MESSAGE("LIBXML2 Library Found OK")
247
SET(LCMS_DIR ${CMAKE_MODULE_PATH})
248
FIND_PACKAGE(LCMS REQUIRED)
251
SET(CMS_INC "lcms.h")
252
MESSAGE("LittleCMS Library Found OK")
254
MESSAGE(FATAL_ERROR "Could not find the LittleCMS Library")
259
SET(FONTCONFIG_DIR ${CMAKE_MODULE_PATH})
260
FIND_PACKAGE(FONTCONFIG)
262
MESSAGE("FontConfig Found OK")
263
SET(HAVE_FONTCONFIG 1)
264
ENDIF(FONTCONFIG_FOUND)
267
ADD_DEFINITIONS(${QT_DEFINITIONS})
269
CHECK_INCLUDE_FILE("dlfcn.h" HAVE_DLFCN_H)
271
ADD_DEFINITIONS(-DHAVE_DLFCN_H)
274
CHECK_INCLUDE_FILE("unistd.h" HAVE_UNISTD_H)
276
ADD_DEFINITIONS(-DHAVE_UNISTD_H)
279
CHECK_INCLUDE_FILE("sys/types.h" HAVE_SYS_TYPES_H)
280
# IF(HAVE_SYS_TYPES_H)
281
# ADD_DEFINITIONS(-DHAVE_SYS_TYPES_H)
282
# ENDIF(HAVE_SYS_TYPES_H)
284
CHECK_INCLUDE_FILE("sys/stat.h" HAVE_SYS_STAT_H)
285
# IF(HAVE_SYS_STAT_H)
286
# ADD_DEFINITIONS(-DHAVE_SYS_STAT_H)
287
# ENDIF(HAVE_SYS_STAT_H)
290
#Create configure files.. config.h and uninstall
292
INCLUDE (ConfigureChecks.cmake)
293
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
294
ADD_DEFINITIONS("-DHAVE_CONFIG_H")
297
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
298
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
301
ADD_CUSTOM_TARGET(uninstall
302
"${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
304
#Load our SCRIBUSQT package which gives us filename.moc instead of moc_filename.*
305
SET(SCRIBUSQT_DIR ${CMAKE_MODULE_PATH})
306
FIND_PACKAGE(SCRIBUSQT)
308
#Set up include dirs with all found packages
311
${CMAKE_BINARY_DIR}/scribus
315
${FREETYPE_INCLUDE_DIR}
316
${FONTCONFIG_INCLUDE_DIR}
319
${LIBXML2_INCLUDE_DIR}
320
${PYTHON_INCLUDE_PATH}
326
# #Set up libraries to link with all found packages
328
# #Select Libart_LGPL or Cairo
329
# IF(RENDER_LIB STREQUAL "LIBART")
330
# INCLUDE_DIRECTORIES(${LIBART_LGPL_INCLUDE_DIR})
331
# LINK_LIBRARIES(${LIBART_LGPL_LIBRARIES})
332
# ENDIF(RENDER_LIB STREQUAL "LIBART")
333
# IF(RENDER_LIB STREQUAL "CAIRO")
334
# INCLUDE_DIRECTORIES(${CAIRO_INCLUDE_DIR})
335
# LINK_LIBRARIES(${CAIRO_LIBRARIES})
336
# LINK_DIRECTORIES(${PREFIX_CAIRO_LIB})
337
# SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH};${PREFIX_CAIRO_LIB}")
338
# ENDIF(RENDER_LIB STREQUAL "CAIRO")
340
# MESSAGE("RPATH: ${CMAKE_INSTALL_RPATH}")
345
# ${FREETYPE_LIBRARIES}
346
# ${FONTCONFIG_LIBRARIES}
348
# ${LIBXML2_LIBRARIES}
349
# ${PYTHON_LIBRARIES}
357
# ${QT_QTMAIN_LIBRARY}
362
# ADD_DEFINITIONS(-DQT_DLL)
366
# LINK_LIBRARIES( "-undefined dynamic_lookup" )
367
# LINK_LIBRARIES( "-framework CoreFoundation" )
371
#Add our source subdirs
372
ADD_SUBDIRECTORY(scribus)
374
#Install our READMEs etc.
388
DESTINATION ${DOCDIR}
392
DESTINATION ${MIMEDIR}
395
# If the cmake version includes cpack, use it
396
IF(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
397
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Scribus is an open source publishing application for Linux, Mac OSX and Windows")
398
SET(CPACK_PACKAGE_VENDOR "Scribus Team")
399
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
400
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/README")
401
SET(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}")
402
SET(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}")
403
SET(CPACK_PACKAGE_VERSION_PATCH "${VERSION_PATCH}")
404
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "Scribus ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
405
SET(CPACK_PACKAGE_EXECUTABLES "scribus${TAG_VERSION}")
406
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "scribus-${VERSION}")
407
SET(CPACK_SOURCE_GENERATOR TBZ2)
408
## I'll make this prettier later - ignore any tarballs in the root
409
SET(CPACK_SOURCE_IGNORE_FILES CMakeCache.txt scribus-1.3.4.tar.bz2 scribus-1.3.4.tar.Z scribus-1.3.4.tar.gz "~$" "\\\\.cvsignore$" "^${PROJECT_SOURCE_DIR}.*/CVS/" "^${PROJECT_SOURCE_DIR}/debian/" "^${PROJECT_SOURCE_DIR}/old/" "^${PROJECT_SOURCE_DIR}.*/CVSROOT/" "^${PROJECT_SOURCE_DIR}.*/autom4te.cache/")
411
ENDIF(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")