1
##############################################################################################################
2
########## CMake Setup ##########
4
#Set our CMake minimum version
5
#Require 2.4.2 for Qt finding
6
#Require 2.4.3 for moc change detection and rpath updates for custom cairo install
7
#its not likely 2.4.x will work any more
8
CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0 FATAL_ERROR)
11
# IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.6)
12
# MESSAGE(FATAL_ERROR "Windows builds require CMake 2.6")
13
# ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.6)
17
SET(CMAKE_COLOR_MAKEFILE ON)
19
SET(CMAKE_VERBOSE_MAKEFILE OFF)
21
SET(CMAKE_INCLUDE_CURRENT_DIR TRUE)
23
#RPATH setup - more below too
24
IF (WANT_NORPATH OR WANT_DISTROBUILD)
25
SET(CMAKE_SKIP_RPATH TRUE)
26
ELSE (WANT_NORPATH OR WANT_DISTROBUILD)
27
SET(CMAKE_SKIP_BUILD_RPATH TRUE)
28
SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
29
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
30
SET(CMAKE_SKIP_RULE_DEPENDENCY TRUE)
31
ENDIF (WANT_NORPATH OR WANT_DISTROBUILD)
33
INCLUDE(CheckIncludeFile)
34
INCLUDE(CheckCCompilerFlag)
35
INCLUDE(CheckCXXCompilerFlag)
36
INCLUDE(CheckTypeSize)
37
INCLUDE(TestBigEndian)
39
#Set the custom CMake module directory where our include/lib finders are
40
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
42
##############################################################################################################
43
########## toplevel compiler flags ##########
45
# CHECK_C_COMPILER_FLAG(" ${CMAKE_SHARED_LIBRARY_C_FLAGS}" C_HAVE_PIC)
46
# CHECK_CXX_COMPILER_FLAG(" ${CMAKE_SHARED_LIBRARY_C_FLAGS}" CXX_HAVE_PIC)
47
# IF (CXX_HAVE_PIC AND C_HAVE_PIC)
48
# SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_SHARED_LIBRARY_C_FLAGS}")
49
# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_SHARED_LIBRARY_C_FLAGS}")
50
# ELSE (CXX_HAVE_PIC AND C_HAVE_PIC)
51
# MESSAGE(FATAL_ERROR "Shared library support is missing")
52
# ENDIF (CXX_HAVE_PIC AND C_HAVE_PIC)
54
# SET(CMAKE_SHARED_MODULE_LINK_FLAGS "${CMAKE_SHARED_MODULE_LINK_FLAGS} -export-dynamic")
55
# SET(CMAKE_SHARED_MODULE_LINK_CXX_FLAGS "${CMAKE_SHARED_MODULE_LINK_CXX_FLAGS} -export-dynamic")
56
# SET(CMAKE_SHARED_LIBRARY_C_FLAGS "${CMAKE_SHARED_LIBRARY_C_FLAGS} -export-dynamic")
57
# SET(CMAKE_SHARED_LIBRARY_CXX_FLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} -export-dynamic")
58
# MESSAGE(STATUS ${CMAKE_SHARED_MODULE_LINK_FLAGS})
59
# MESSAGE(STATUS ${CMAKE_SHARED_MODULE_LINK_CXX_FLAGS})
60
# MESSAGE(STATUS ${CMAKE_SHARED_LIBRARY_C_FLAGS})
61
# MESSAGE(STATUS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS})
62
# MESSAGE(STATUS ${CMAKE_CXX_CREATE_SHARED_MODULE})
63
# MESSAGE(STATUS ${CMAKE_CXX_CREATE_SHARED_LIBRARY})
65
#IMPORT FROM COMMANDLINE
66
# SET with cmake -DWANT_CAIRO=1, etc
67
# MESSAGE(STATUS ${WANT_CAIRO})
68
# MESSAGE(STATUS ${WANT_LIBART})
69
# MESSAGE(STATUS ${WANT_DEBUG})
76
#Set our version values
77
#Final version is ${VERSION} = ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_SUFFIX}
78
#where VERSION_SUFFIX is of the form "", "svn" or "Nsvn" (N being the minor patch level)
79
SET (VERSION_MAJOR "1")
80
SET (VERSION_MINOR "4")
81
SET (VERSION_PATCH "0")
82
SET (VERSION_SUFFIX "rc3")
83
SET (VERSION ${VERSION_MAJOR})
84
IF (VERSION_MINOR GREATER -1)
85
SET (VERSION ${VERSION}.${VERSION_MINOR})
86
ENDIF (VERSION_MINOR GREATER -1)
87
IF (VERSION_PATCH GREATER -1)
88
SET (VERSION ${VERSION}.${VERSION_PATCH})
89
ENDIF (VERSION_PATCH GREATER -1)
91
SET (VERSION ${VERSION}.${VERSION_SUFFIX})
92
ENDIF (VERSION_SUFFIX)
93
MESSAGE(STATUS "Scribus ${VERSION} will be built to install into ${CMAKE_INSTALL_PREFIX}")
95
#Set the permissions to be used when installing plugins
96
SET(PLUGIN_PERMISSIONS WORLD_EXECUTE GROUP_EXECUTE OWNER_EXECUTE WORLD_READ GROUP_READ OWNER_READ OWNER_WRITE)
98
#Our main directory is scribus
99
SET(MAIN_DIR_NAME "scribus")
101
##############################################################################################################
102
########## check for the CPU we build for ##########
105
COMMAND ${CMAKE_C_COMPILER} -dumpmachine
106
OUTPUT_VARIABLE MACHINE
107
OUTPUT_STRIP_TRAILING_WHITESPACE
110
MESSAGE(STATUS "Machine: ${MACHINE}, void pointer size: ${CMAKE_SIZEOF_VOID_P}")
111
STRING(REGEX MATCH "(i?86-*)|(athlon-*)|(pentium-*)" _machine_x86 "${MACHINE}")
113
MESSAGE(STATUS "Found target X86")
116
IF (APPLE AND CMAKE_SIZEOF_VOID_P EQUAL 8 AND ARCH_X86 EQUAL 1)
117
MESSAGE(STATUS "Found Snow Leopard Target: Apple, 64 bit, X86")
120
SET(APPLE_10_6_X 1 CACHE TYPE BOOL)
121
ENDIF (APPLE AND CMAKE_SIZEOF_VOID_P EQUAL 8 AND ARCH_X86 EQUAL 1)
123
STRING(REGEX MATCH "(x86_64-*)|(X86_64-*)|(AMD64-*)|(amd64-*)" _machine_x86_64 "${MACHINE}")
125
MESSAGE(STATUS "Found target X86_64")
127
ENDIF (_machine_x86_64)
129
STRING(REGEX MATCH "(sparc64-*)|(SPARC64-*)" _machine_sparc_64 "${MACHINE}")
130
IF (_machine_sparc_64)
131
MESSAGE(STATUS "Found target SPARC 64")
133
ENDIF (_machine_sparc_64)
135
STRING(REGEX MATCH "(mips64-*)|(MIPS64-*)" _machine_mips_64 "${MACHINE}")
136
IF (_machine_mips_64)
137
MESSAGE(STATUS "Found target MIPS 64")
139
ENDIF (_machine_mips_64)
141
STRING(REGEX MATCH "(mips-*)|(MIPS-*)" _machine_mips "${MACHINE}")
143
MESSAGE(STATUS "Found target MIPS")
145
ENDIF (_machine_mips)
147
STRING(REGEX MATCH "(hppa-*)" _machine_hppa "${MACHINE}")
149
MESSAGE(STATUS "Found target HPPA")
151
ENDIF (_machine_hppa)
153
STRING(REGEX MATCH "(ppc-*)|(powerpc-*)" _machine_ppc "${MACHINE}")
155
MESSAGE(STATUS "Found target PPC")
159
STRING(REGEX MATCH "(ppc64-*)|(PPC64-*)|(powerpc64-*)" _machine_ppc_64 "${MACHINE}")
161
MESSAGE(STATUS "Found target PPC64")
163
ENDIF (_machine_ppc_64)
165
STRING(REGEX MATCH "(sparc-*)" _machine_sparc "${MACHINE}")
167
MESSAGE(STATUS "Found target Sparc")
169
ENDIF (_machine_sparc)
171
STRING(REGEX MATCH "(sparcv9-*)" _machine_sparcv9 "${MACHINE}")
172
IF (_machine_sparcv9)
173
MESSAGE(STATUS "Found target Sparc v9")
175
ENDIF (_machine_sparcv9)
177
STRING(REGEX MATCH "(sparc64-*)" _machine_sparc64 "${MACHINE}")
178
IF (_machine_sparc64)
179
MESSAGE(STATUS "Found target Sparc64")
182
ENDIF (_machine_sparc64)
184
#convert any 64 bit build into generic 64 tag for below
185
IF (ARCH_X86_64 OR ARCH_SPARC_64 OR ARCH_MIPS_64 OR ARCH_PPC_64)
187
ENDIF (ARCH_X86_64 OR ARCH_SPARC_64 OR ARCH_MIPS_64 OR ARCH_PPC_64)
189
MESSAGE(STATUS "Building for target ${MACHINE}")
191
##############################################################################################################
192
########## Versioning Setup ##########
194
#On Apple, we ignore the versioning tag so all items are "scribus" not "scribus-version"
195
IF (NOT BUILD_OSX_BUNDLE)
196
SET(BUILD_OSX_BUNDLE ${APPLE} CACHE TYPE BOOL)
197
ENDIF (NOT BUILD_OSX_BUNDLE)
199
#Simplify future conditionals for Apple
200
IF (APPLE AND BUILD_OSX_BUNDLE)
201
SET(APPLEBUNDLE TRUE CACHE TYPE BOOL)
202
ENDIF (APPLE AND BUILD_OSX_BUNDLE)
204
#Announce we cached a version request before, overridden below for OSX
207
MESSAGE(STATUS "Previously selected version tag: ${TAG_VERSION}")
208
ENDIF (NOT APPLEBUNDLE)
209
SET(WANT_VERSIONING 1)
210
SET(CACHED_VERSIONING 1)
213
#Remove version tags on OSX so our bundle is Scribus.app
215
IF (WANT_VERSIONING OR CACHED_VERSIONING)
216
MESSAGE(STATUS "Ignoring version tag on OSX when building bundle")
217
SET(WANT_VERSIONING 0)
218
SET(CACHED_VERSIONING 0)
219
ENDIF (WANT_VERSIONING OR CACHED_VERSIONING)
222
#Store our version string if require
223
IF (WANT_VERSIONING AND NOT CACHED_VERSIONING)
224
IF (NOT CUSTOM_VERSIONTAG)
225
SET(TAG_VERSION "-${VERSION}" CACHE TYPE STRING)
226
ELSE (NOT CUSTOM_VERSIONTAG)
227
SET(TAG_VERSION ${CUSTOM_VERSIONTAG} CACHE TYPE STRING)
228
ENDIF (NOT CUSTOM_VERSIONTAG)
229
ENDIF (WANT_VERSIONING AND NOT CACHED_VERSIONING)
231
##############################################################################################################
232
########## Install/Directory Setup ##########
235
IF ("${CMAKE_INSTALL_PREFIX}" MATCHES "[.]app/Contents/?$")
237
ELSE ("${CMAKE_INSTALL_PREFIX}" MATCHES "[.]app/Contents/?$")
238
IF ("${CMAKE_INSTALL_PREFIX}" MATCHES "[.]app/?$")
239
# add "/Contents" subpath
240
SET(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/Contents")
241
ELSE ("${CMAKE_INSTALL_PREFIX}" MATCHES "[.]app/?$")
242
# no bundle name spcified, use appname and version
243
SET(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/Scribus${VERSION}.app/Contents")
244
ENDIF ("${CMAKE_INSTALL_PREFIX}" MATCHES "[.]app/?$")
245
ENDIF ("${CMAKE_INSTALL_PREFIX}" MATCHES "[.]app/Contents/?$")
247
MESSAGE(STATUS "APPLEBUNDLE install prefix: ${CMAKE_INSTALL_PREFIX}")
251
#Setp all the directories we will use
253
CMAKE_POLICY(SET CMP0005 OLD)
254
SET(MANDIR "share/man/")
256
SET(SHAREDIR "share/${MAIN_DIR_NAME}${TAG_VERSION}/")
257
ELSE(WANT_VERSIONING)
258
SET(SHAREDIR "share/${MAIN_DIR_NAME}/")
259
ENDIF(WANT_VERSIONING)
260
ADD_DEFINITIONS("-DSHAREDIR=\\\"${CMAKE_INSTALL_PREFIX}/${SHAREDIR}\\\"")
262
#SHARE - use the default on Apple as TAG_VERSION is empty
264
SET(DOCDIR "share/doc/")
266
IF(TAG_VERSION OR BUILD_OSX_BUNDLE)
267
SET(DOCDIR "share/doc/${MAIN_DIR_NAME}${TAG_VERSION}/")
268
ELSE(TAG_VERSION OR BUILD_OSX_BUNDLE)
269
IF(NOT WANT_VERSIONING)
270
SET(DOCDIR "share/doc/${MAIN_DIR_NAME}/")
271
ELSE(NOT WANT_VERSIONING)
272
SET(DOCDIR "share/doc/${MAIN_DIR_NAME}-${VERSION}/")
273
ENDIF(NOT WANT_VERSIONING)
274
ENDIF (TAG_VERSION OR BUILD_OSX_BUNDLE)
276
ADD_DEFINITIONS("-DDOCDIR=\\\"${CMAKE_INSTALL_PREFIX}/${DOCDIR}\\\"")
280
SET(ICONDIR "share/icons/")
282
SET(ICONDIR "share/${MAIN_DIR_NAME}${TAG_VERSION}/icons/")
284
ADD_DEFINITIONS("-DICONDIR=\\\"${CMAKE_INSTALL_PREFIX}/${ICONDIR}\\\"")
287
SET(SAMPLESDIR "share/${MAIN_DIR_NAME}${TAG_VERSION}/samples/")
288
ADD_DEFINITIONS("-DSAMPLESDIR=\\\"${CMAKE_INSTALL_PREFIX}/${SAMPLESDIR}\\\"")
291
SET(SCRIPTSDIR "share/${MAIN_DIR_NAME}${TAG_VERSION}/scripts/")
292
ADD_DEFINITIONS("-DSCRIPTSDIR=\\\"${CMAKE_INSTALL_PREFIX}/${SCRIPTSDIR}\\\"")
296
SET(TEMPLATEDIR "share/templates/")
298
SET(TEMPLATEDIR "share/${MAIN_DIR_NAME}${TAG_VERSION}/templates/")
300
ADD_DEFINITIONS("-DTEMPLATEDIR=\\\"${CMAKE_INSTALL_PREFIX}/${TEMPLATEDIR}\\\"")
303
SET(DESKTOPDIR "share/applications/")
304
ADD_DEFINITIONS("-DDESKTOPDIR=\\\"${CMAKE_INSTALL_PREFIX}/${DESKTOPDIR}\\\"")
306
# APPLICATION_DATA_DIR
307
# It allows specify the user configuration directory in the compile time.
308
# Example: I want to use special ~/.scribus135svn config directory for my trunk
309
# cmake -DAPPLICATION_DATA_DIR=.scribus135svn ...
310
IF (APPLICATION_DATA_DIR)
311
MESSAGE(STATUS "Using ApplicationDataDir ${APPLICATION_DATA_DIR} instead of the platform default.")
312
ADD_DEFINITIONS("-DAPPLICATION_DATA_DIR=\\\"${APPLICATION_DATA_DIR}\\\"")
313
ELSE (APPLICATION_DATA_DIR)
314
MESSAGE(STATUS "Using standard ApplicationDataDir. You can change it with -DAPPLICATION_DATA_DIR")
315
ENDIF (APPLICATION_DATA_DIR)
317
#LIB LOCATION - lib or lib64 normally
321
MESSAGE(STATUS "WARNING: BUILDING 64 Bit build on non 64 bit architecture")
322
ENDIF(NOT ARCH_X86_64)
323
SET(LIB_SUFFIX "64" CACHE TYPE STRING)
325
SET(LIB_DIR_NAME "lib${LIB_SUFFIX}")
326
SET(LIBDIR "${LIB_DIR_NAME}/${MAIN_DIR_NAME}${TAG_VERSION}/")
327
ADD_DEFINITIONS("-DLIBDIR=\\\"${CMAKE_INSTALL_PREFIX}/${LIBDIR}\\\"")
331
SET(PLUGINDIR "plugins")
333
SET(PLUGINDIR "${LIB_DIR_NAME}/${MAIN_DIR_NAME}${TAG_VERSION}/plugins/")
335
ADD_DEFINITIONS("-DPLUGINDIR=\\\"${CMAKE_INSTALL_PREFIX}/${PLUGINDIR}\\\"")
338
SET(INCLUDEDIR "include/${MAIN_DIR_NAME}${TAG_VERSION}/")
339
#NO ADD DEFINITIONS, WE ONLY INSTALL WITH IT
342
IF (WANT_NORPATH OR WANT_DISTROBUILD)
343
set(CMAKE_INSTALL_RPATH "")
344
ELSE (WANT_NORPATH OR WANT_DISTROBUILD)
345
set(CMAKE_INSTALL_RPATH ${PLUGINDIR})
346
ENDIF (WANT_NORPATH OR WANT_DISTROBUILD)
348
# Set the XDG mime stuff
349
SET(MIMEDIR "share/mime/packages/")
350
SET(MIMELNKDIR "share/mimelnk/application/")
352
##############################################################################################################
353
########## Build Setup ##########
355
#Convert our simpler command line option to the CMake style
356
#None, Debug, Release, .. or custom ones
359
SET(CMAKE_BUILD_TYPE Debug)
361
IF (WANT_RELEASEWITHDEBUG)
362
SET(CMAKE_BUILD_TYPE RelWithDebInfo)
363
ENDIF (WANT_RELEASEWITHDEBUG)
364
IF(NOT WANT_DEBUG AND NOT WANT_RELEASEWITHDEBUG)
365
SET(CMAKE_BUILD_TYPE RELEASE)
366
ENDIF(NOT WANT_DEBUG AND NOT WANT_RELEASEWITHDEBUG)
370
#Based on our build type, setup our build options
373
SET(OSXMINVER "10.6" CACHE TYPE STRING)
375
SET(OSXMINVER "10.4" CACHE TYPE STRING)
378
IF(WANT_UNIVERSAL_BUNDLE)
379
MESSAGE("Setting Universal (PPC/i386) Architecture for OSX Build/Bundle")
380
SET(CMAKE_OSX_ARCHITECTURES "ppc;i386" )
381
SET(CMAKE_TRY_COMPILE_OSX_ARCHITECTURES "ppc;i386" )
382
SET(CMAKE_OSX_DEPLOYMENT_TARGET "10.4")
383
SET(CMAKE_OSX_SYSROOT "/Developer/SDKs/MacOSX10.4u.sdk")
384
ELSE(WANT_UNIVERSAL_BUNDLE)
385
IF(ARCH_PPC OR ARCH_PPC_64)
386
MESSAGE("Setting PPC Architecture for OSX Build/Bundle")
387
SET(CMAKE_OSX_ARCHITECTURES "ppc" )
388
SET(CMAKE_TRY_COMPILE_OSX_ARCHITECTURES "ppc" )
389
ELSE(ARCH_PPC OR ARCH_PPC_64)
391
MESSAGE("Setting x86_64 Architecture for OSX Build/Bundle")
392
SET(CMAKE_OSX_ARCHITECTURES "x86_64" )
393
SET(CMAKE_TRY_COMPILE_OSX_ARCHITECTURES "x86_64" )
394
# SET(CMAKE_OSX_DEPLOYMENT_TARGET "10.6")
396
MESSAGE("Setting i386 Architecture for OSX Build/Bundle")
397
SET(CMAKE_OSX_ARCHITECTURES "i386" )
398
SET(CMAKE_TRY_COMPILE_OSX_ARCHITECTURES "i386" )
399
# SET(CMAKE_OSX_DEPLOYMENT_TARGET "10.4")
401
ENDIF(ARCH_PPC OR ARCH_PPC_64)
402
ENDIF(WANT_UNIVERSAL_BUNDLE)
403
MESSAGE(STATUS "${CMAKE_OSX_ARCHITECTURES} ${CMAKE_OSX_SYSROOT}")
404
MESSAGE(STATUS "OSX Minimum Version: ${OSXMINVER}")
405
SET(ENV{MACOSX_DEPLOYMENT_TARGET} ${OSXMINVER} )
406
SET( ENV{LD_PREBIND} 1 )
407
SET( ENV{LD_PREBIND_ALLOW_OVERLAP} 1 )
409
SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3 -fno-inline-functions -Wall -mmacosx-version-min=${OSXMINVER}")
410
SET(CMAKE_C_FLAGS_DEBUG "-O0 -g3 -fno-inline-functions -Wall -mmacosx-version-min=${OSXMINVER}")
412
IF (WANT_RELEASEWITHDEBUG)
413
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g3 -fno-inline-functions -Wall -mmacosx-version-min=${OSXMINVER}")
414
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g3 -fno-inline-functions -Wall -mmacosx-version-min=${OSXMINVER}")
415
ENDIF (WANT_RELEASEWITHDEBUG)
416
IF (NOT WANT_DEBUG AND NOT WANT_RELEASEWITHDEBUG)
417
SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -fno-inline-functions -Wall -mmacosx-version-min=${OSXMINVER}")
418
SET(CMAKE_C_FLAGS_RELEASE "-O2 -fno-inline-functions -Wall -mmacosx-version-min=${OSXMINVER}")
419
ENDIF (NOT WANT_DEBUG AND NOT WANT_RELEASEWITHDEBUG)
421
IF(${CMAKE_GENERATOR} MATCHES "^(Visual Studio|NMake).*")
422
# Windows build with Visual Studio
423
# Surely there's a better way to identify the compiler?
424
SET(CMAKE_CXX_FLAGS_DEBUG)
425
SET(CMAKE_C_FLAGS_DEBUG)
426
ELSE(${CMAKE_GENERATOR} MATCHES "^(Visual Studio|NMake).*")
428
SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3 -Wall -fstrict-aliasing")
429
SET(CMAKE_C_FLAGS_DEBUG "-O0 -g3 -Wall -fstrict-aliasing")
431
IF (_machine_x86 OR _machine_x86_64)
432
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fPIC")
433
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fPIC")
434
ENDIF (_machine_x86 OR _machine_x86_64)
436
ENDIF(${CMAKE_GENERATOR} MATCHES "^(Visual Studio|NMake).*")
439
IF(${CMAKE_GENERATOR} MATCHES "^(Visual Studio|NMake).*")
440
SET(CMAKE_CXX_FLAGS_RELEASE)
441
SET(CMAKE_C_FLAGS_RELEASE)
442
ELSE(${CMAKE_GENERATOR} MATCHES "^(Visual Studio|NMake).*")
443
SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -Wall -fPIC")
444
SET(CMAKE_C_FLAGS_RELEASE "-O2 -Wall -fPIC")
445
ADD_DEFINITIONS(-DNDEBUG)
446
ENDIF(${CMAKE_GENERATOR} MATCHES "^(Visual Studio|NMake).*")
449
ADD_DEFINITIONS(-DWIN32_LEAN_AND_MEAN
451
-D_CRT_SECURE_NO_DEPRECATE
452
-DCOMPILE_PLUGIN_AS_DLL
454
SET(BUILD_WINDOWS_VERSION 1)
456
IF(NOT SC_SHOULD_NOT_USE_GDIPLUS)
457
SET(SC_USE_GDIPLUS 1)
458
ENDIF(NOT SC_SHOULD_NOT_USE_GDIPLUS)
459
SET(DLL_USE_NATIVE_API 1)
462
##############################################################################################################
463
########## Find Dependencies ##########
466
SET (QT_MT_REQUIRED TRUE)
467
SET (QT_MIN_VERSION "4.6.0")
468
IF (WANT_QT4MAC_COCOA)
469
SET (QT_MAC_USE_COCOA TRUE)
470
ELSE (WANT_QT4MAC_COCOA)
471
SET (HAVE_CARBON 1 CACHE TYPE BOOL)
472
ADD_DEFINITIONS("-DHAVE_CARBON=1")
473
ENDIF (WANT_QT4MAC_COCOA)
475
SET (QT_USE_QT3SUPPORT TRUE)
476
ELSE (WANT_QT3SUPPORT)
477
SET (QT_USE_QT3SUPPORT FALSE)
478
ENDIF (WANT_QT3SUPPORT)
479
SET (QT_USE_QTXML TRUE )
481
SET( QT_USE_QTSQL TRUE )
483
SET( QT_USE_QTNETWORK TRUE )
484
FIND_PACKAGE(Qt4 REQUIRED)
485
INCLUDE( ${QT_USE_FILE} )
487
MESSAGE("Qt4 Found OK")
489
MESSAGE(STATUS "Building with Qt3 Support")
490
ELSE (WANT_QT3SUPPORT)
491
MESSAGE(STATUS "Building without Qt3 Support (GOOD)")
492
ENDIF (WANT_QT3SUPPORT)
493
#Add our Qt definitions
502
MESSAGE(FATAL_ERROR "No Qt4 found")
508
# On win32 we can use Qt's zlib and libpng, so we use some
509
# custom cmake includes. This permits us to honour the
510
# USE_QT_ZLIB_PNGLIB flag if passed.
511
SET(PNG_DIR ${CMAKE_MODULE_PATH})
512
SET(ZLIB_DIR ${CMAKE_MODULE_PATH})
514
FIND_PACKAGE(ZLIB REQUIRED)
516
MESSAGE("ZLIB Library Found OK")
519
FIND_PACKAGE(PNG REQUIRED)
521
MESSAGE("PNG Library Found OK")
525
#<< JPEG, TIFF, PYTHON
526
FIND_PACKAGE(JPEG REQUIRED)
528
MESSAGE("JPEG Library Found OK")
530
FIND_PACKAGE(TIFF REQUIRED)
532
MESSAGE("TIFF Library Found OK")
535
MESSAGE(FATAL_ERROR "Could not find the TIFF Library")
537
FIND_PACKAGE(PythonLibs REQUIRED)
539
MESSAGE("Python Library Found OK")
541
SET(COMPILE_PYTHON 1)
542
ENDIF(PYTHON_LIBRARY)
543
#>> JPEG, TIFF, PYTHON
546
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.6)
547
SET(FREETYPE_DIR ${CMAKE_MODULE_PATH})
548
FIND_PACKAGE(FREETYPE REQUIRED)
550
MESSAGE("FreeType2 Library Found OK")
551
INCLUDE(CheckLibraryExists)
552
CHECK_LIBRARY_EXISTS(${FREETYPE_LIBRARY} FT_Get_First_Char "" HAVE_FREETYPE_FIRST)
553
CHECK_LIBRARY_EXISTS(${FREETYPE_LIBRARY} FT_Get_Next_Char "" HAVE_FREETYPE_NEXT)
554
ENDIF(FREETYPE_FOUND)
555
SET(CFLAGS "${CFLAGS}"."${LIBFREETYPE_CFLAGS}")
556
ELSE(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.6)
557
FIND_PACKAGE(Freetype REQUIRED)
559
MESSAGE(STATUS "FreeType2 Library Found OK")
560
INCLUDE(CheckLibraryExists)
561
CHECK_LIBRARY_EXISTS(${FREETYPE_LIBRARY} FT_Get_First_Char "" HAVE_FREETYPE_FIRST)
562
CHECK_LIBRARY_EXISTS(${FREETYPE_LIBRARY} FT_Get_Next_Char "" HAVE_FREETYPE_NEXT)
563
# here we have an alternative
564
# a) Setup CFLAGS with the FREETYPE_INCLUDE_DIR_freetype2 provided by cmake
565
# b) Insert ${FREETYPE_INCLUDE_DIRS} in include sections of CMakeLists that need it
566
# I prefer (b) and at some point & from my opinion it should be just needed in scribus/fonts/CmakeLists.txt - pm
567
ELSE (FREETYPE_FOUND)
568
MESSAGE(FATAL_ERROR "No Freetype Found")
569
ENDIF(FREETYPE_FOUND)
570
ENDIF(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.6)
574
# Select our rendering library
575
# As of Scribus 1.3.5, we can use cairo or Qt4's Arthur
576
# If we have a RENDER_LIB selected from a previous cmake run, then use it
577
# otherwise, we should be defaulting to Libart_LGPL for 1.3.4.x
579
MESSAGE(STATUS "Previously selected rendering system: ${RENDER_LIB}")
581
IF (NOT WANT_QTARTHUR)
583
ENDIF (NOT WANT_QTARTHUR)
586
IF (WANT_CAIRO OR RENDER_LIB STREQUAL "CAIRO")
587
SET(CAIRO_DIR ${CMAKE_MODULE_PATH})
590
MESSAGE("CAIRO Library Found OK")
591
SET(RENDER_LIB "CAIRO" CACHE TYPE STRING)
593
SET(OLDRENDERLIBLOST TRUE)
595
ENDIF (WANT_CAIRO OR RENDER_LIB STREQUAL "CAIRO")
597
#Cairo is required on Windows for printing system
600
MESSAGE(FATAL_ERROR "Cairo >= 1.5.16 is required for Windows build")
601
ENDIF (NOT CAIRO_FOUND)
604
IF (OLDRENDERLIBLOST OR WANT_QTARTHUR OR RENDER_LIB STREQUAL "QTARTHUR" OR NOT RENDER_LIB)
605
SET(RENDER_LIB "QTARTHUR" CACHE TYPE STRING)
606
MESSAGE("Qt4's Arthur selected for renderer")
607
IF (OLDRENDERLIBLOST)
608
MESSAGE("CAIRO could no longer be found, replaced by Qt4's Arthur")
609
ENDIF (OLDRENDERLIBLOST)
610
ENDIF (OLDRENDERLIBLOST OR WANT_QTARTHUR OR RENDER_LIB STREQUAL "QTARTHUR" OR NOT RENDER_LIB)
615
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.5)
616
SET(Cups_DIR ${CMAKE_MODULE_PATH})
617
ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.5)
618
FIND_PACKAGE(Cups REQUIRED)
621
MESSAGE("CUPS Library Found OK")
624
# Windows doesn't use CUPS
625
SET(CUPS_INCLUDE_DIR)
630
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.5)
631
SET(LibXml2_DIR ${CMAKE_MODULE_PATH})
632
ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 2.5)
633
FIND_PACKAGE(LibXml2 REQUIRED)
636
MESSAGE("LIBXML2 Library Found OK")
641
SET(LCMS_DIR ${CMAKE_MODULE_PATH})
642
FIND_PACKAGE(LCMS REQUIRED)
645
SET(CMS_INC "lcms.h")
646
MESSAGE("LittleCMS Library Found OK")
648
MESSAGE(FATAL_ERROR "Could not find the LittleCMS Library")
654
SET(FONTCONFIG_DIR ${CMAKE_MODULE_PATH})
655
FIND_PACKAGE(FONTCONFIG)
657
MESSAGE("FontConfig Found OK")
658
SET(HAVE_FONTCONFIG 1)
659
ENDIF(FONTCONFIG_FOUND)
661
# Windows builds neither use nor require fontconfig
662
SET(FONTCONFIG_INCLUDE_DIR)
666
#<<ASPELL for Speelling support
667
OPTION(WITH_ASPELL "Enable support for spell checking" ON)
671
MESSAGE("ASpell Found OK")
674
MESSAGE("ASpell or its developer libraries NOT found - Disabling support for spell checking")
677
#>>ASPELL for Speelling support
680
#<<PoDoFo for AI PDF import
681
OPTION(WITH_PODOFO "Enable support for PDF embedded in AI" ON)
683
FIND_PACKAGE(LIBPODOFO)
685
MESSAGE("PoDoFo found OK")
687
ELSE (LIBPODOFO_FOUND)
688
MESSAGE("PoDoFo NOT found - Disabling support for PDF embedded in AI")
689
ENDIF (LIBPODOFO_FOUND)
691
#>>PoDoFo for AI PDF import
693
#<<HYPHEN for system hyphenation library
696
MESSAGE("system hyphenation library found OK")
699
MESSAGE("system hyphenation library NOT found - will use internal one")
701
#>>HYPHEN for system hyphenation library
703
##############################################################################################################
704
########## Include Setup ##########
706
TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
708
CHECK_INCLUDE_FILE("dlfcn.h" HAVE_DLFCN_H)
710
ADD_DEFINITIONS(-DHAVE_DLFCN_H)
713
CHECK_INCLUDE_FILE("unistd.h" HAVE_UNISTD_H)
715
ADD_DEFINITIONS(-DHAVE_UNISTD_H)
718
CHECK_INCLUDE_FILE("sys/types.h" HAVE_SYS_TYPES_H)
719
# IF(HAVE_SYS_TYPES_H)
720
# ADD_DEFINITIONS(-DHAVE_SYS_TYPES_H)
721
# ENDIF(HAVE_SYS_TYPES_H)
723
CHECK_INCLUDE_FILE("sys/stat.h" HAVE_SYS_STAT_H)
724
# IF(HAVE_SYS_STAT_H)
725
# ADD_DEFINITIONS(-DHAVE_SYS_STAT_H)
726
# ENDIF(HAVE_SYS_STAT_H)
727
#>>Test for existing include files
730
#Create configure files.. config.h and uninstall
732
INCLUDE (ConfigureChecks.cmake)
734
SET(CONFIG_NAME win-config.h)
736
SET(CONFIG_NAME config.h)
738
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_NAME})
739
ADD_DEFINITIONS("-DHAVE_CONFIG_H")
743
#Set up include dirs with all found packages
746
${CMAKE_BINARY_DIR}/scribus
749
${FREETYPE_INCLUDE_DIR}
750
${FONTCONFIG_INCLUDE_DIR}
753
${LIBXML2_INCLUDE_DIR}
754
${PYTHON_INCLUDE_PATH}
759
##############################################################################################################
760
########## Uninstall Setup ##########
763
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
764
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
768
ADD_CUSTOM_TARGET(uninstall
769
"${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
772
##############################################################################################################
773
########## Add our subdirs ##########
775
#Add our source subdirs
776
ADD_SUBDIRECTORY(scribus)
777
ADD_SUBDIRECTORY(resources/dicts)
778
ADD_SUBDIRECTORY(resources/editorconfig)
779
ADD_SUBDIRECTORY(resources/icons)
780
ADD_SUBDIRECTORY(resources/keysets)
781
ADD_SUBDIRECTORY(resources/loremipsum)
782
ADD_SUBDIRECTORY(resources/swatches)
783
ADD_SUBDIRECTORY(resources/templates)
784
#ADD_SUBDIRECTORY(resources/translations/qm)
785
ADD_SUBDIRECTORY(resources/translations/po)
787
#Install our READMEs etc.
801
DESTINATION ${DOCDIR}
804
#Install our MIME data
807
DESTINATION ${MIMEDIR}
809
#KDE workaround until it starts supporting freedesktop spec
812
DESTINATION ${MIMELNKDIR}
815
## PL We may not need this anymore
816
#Install the desktop file
819
# #DESTINATION ${DESKTOPDIR}
822
#If building an Apple bundle, install these specific files
825
Scribus.app/Contents/Info.plist
826
DESTINATION ${CMAKE_INSTALL_PREFIX}
829
Scribus.app/Contents/Resources/Scribus.icns
830
Scribus.app/Contents/Resources/Scribus-doc.icns
831
DESTINATION ${CMAKE_INSTALL_PREFIX}/Resources
835
##############################################################################################################
836
########## Install/CPack Setup ##########
838
# If the cmake version includes cpack, use it for tarball building
839
IF(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")
840
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Scribus is an open source publishing application for Linux, Mac OSX and Windows")
841
SET(CPACK_PACKAGE_VENDOR "Scribus Team")
842
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
843
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/README")
844
SET(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}")
845
SET(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}")
846
SET(CPACK_PACKAGE_VERSION_PATCH "${VERSION_PATCH}")
847
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "Scribus ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
848
SET(CPACK_PACKAGE_EXECUTABLES "scribus${TAG_VERSION}")
849
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "scribus-${VERSION}${VERSION_SUFFIX}")
850
SET(CPACK_SOURCE_GENERATOR TBZ2)
851
SET(CPACK_SYSTEM_NAME "")
852
SET(CPACK_TOPLEVEL_TAG "")
853
SET(CPACK_SOURCE_IGNORE_FILES
855
scribus-1.4.0.rc3.tar.gz
856
scribus-1.4.0.rc3.tar.Z
858
scribus-1.4.0.rc3.tar.bz2
864
"^${PROJECT_SOURCE_DIR}.*/CVS/"
865
"^${PROJECT_SOURCE_DIR}/debian/"
866
"^${PROJECT_SOURCE_DIR}/old/"
867
"^${PROJECT_SOURCE_DIR}.*/CVSROOT/"
868
"^${PROJECT_SOURCE_DIR}/admin/"
871
ENDIF(EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake")