File: CMakeLists.txt

package info (click to toggle)
sim 0.9.5~svn20080806-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 18,108 kB
  • ctags: 11,570
  • sloc: cpp: 119,605; sh: 9,986; ansic: 3,312; perl: 2,752; lex: 1,533; makefile: 839; xml: 206; python: 56
file content (184 lines) | stat: -rw-r--r-- 6,328 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# main cmake file for SIM-IM

PROJECT(Sim-IM)

CMAKE_MINIMUM_REQUIRED(VERSION 2.4.4)
SET(CMAKE_COLOR_MAKEFILE ON)

# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")

SET(QT_MT_REQUIRED True)
INCLUDE(FindQt3)
INCLUDE(MacroEnsureOutOfSourceBuild)

IF(NOT WIN32)
MACRO_ENSURE_OUT_OF_SOURCE_BUILD("SIM-IM requires an out of source build. Please create a separate build directory and run 'cmake path_to_sim_im [options]' there.")
ENDIF(NOT WIN32)

INCLUDE(Flex)
INCLUDE(Jisp)
INCLUDE(KDE3Macros)
INCLUDE(MacroBoolTo01)
INCLUDE(Po)
INCLUDE(Qt3Uic)
INCLUDE(SimPlugins)
INCLUDE(DistTarget)
INCLUDE(CheckCXXCompilerFlag)

OPTION(SIM_ENABLE_FPIE "Enable PIE linking")

SIM_FIND_PLUGINS(${Sim-IM_SOURCE_DIR}/plugins)

IF(NOT QT_FOUND)
    MESSAGE(FATAL_ERROR "Could not find Qt3 - cannot compile Sim-IM here")
ENDIF(NOT QT_FOUND)

# needed packages
FIND_PACKAGE(Qt3 REQUIRED)
FIND_PACKAGE(LibXml2 REQUIRED)
FIND_PACKAGE(LibXslt REQUIRED)
FIND_PACKAGE(ZLIB REQUIRED)
FIND_PACKAGE(OpenSSL REQUIRED)
IF(WIN32)
    FIND_PACKAGE(LibIconv REQUIRED)
ENDIF(WIN32)

# optional packages
FIND_PACKAGE(ASPELL)

INCLUDE(FindX11)

IF(NOT WIN32)
    INCLUDE(FindKDE3)
    IF(KDE3_FOUND)
        OPTION(ENABLE_KDE3 "Use kde3 integration" YES)
        IF(ENABLE_KDE3)
            INCLUDE_DIRECTORIES(${KDE3_INCLUDE_DIRS})
            LINK_DIRECTORIES(${KDE3_LIB_DIR})
        ENDIF(ENABLE_KDE3)
    ENDIF(KDE3_FOUND)
ENDIF(NOT WIN32)

# do config checks
INCLUDE(ConfigureChecks.cmake)

MACRO_BOOL_TO_01(OPENSSL_FOUND ENABLE_OPENSSL)
MACRO_BOOL_TO_01(X11_FOUND HAVE_X)
MACRO_BOOL_TO_01(ENABLE_KDE3 USE_KDE)

# development or release builds
OPTION(DEV_BUILD "Build development version" YES)
MACRO_BOOL_TO_01(DEV_BUILD CVS_BUILD)

# global settings for every project
ADD_DEFINITIONS(${QT_DEFINITIONS} -DHAVE_CONFIG_H)
INCLUDE_DIRECTORIES(${QT_INCLUDE_DIR}
                    ${CMAKE_CURRENT_BINARY_DIR}
                    ${Sim-IM_SOURCE_DIR}/sim
                    ${Sim-IM_SOURCE_DIR}/plugins/_core)
LINK_DIRECTORIES(${QT_LIB_DIR})

# windows, microsoft compiler
if(MSVC)
  if(CMAKE_COMPILER_2005)
     add_definitions( -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE )
     set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4661" )
  endif(CMAKE_COMPILER_2005)
else(MSVC)
  add_definitions( -Wno-non-virtual-dtor )
endif(MSVC)

add_definitions( -DUNICODE )

IF(CMAKE_COMPILER_IS_GNUCXX AND SIM_ENABLE_FPIE)
    CHECK_CXX_COMPILER_FLAG(-fPIE HAVE_FPIE_SUPPORT)
    IF(HAVE_FPIE_SUPPORT)
        SET (SIM_CXX_FPIE_FLAGS "-fPIE")
        SET (SIM_PIE_LDFLAGS "-pie")
    ELSE(HAVE_FPIE_SUPPORT)
        MESSAGE(STATUS "Your compiler doesn't support PIE flag")
    ENDIF(HAVE_FPIE_SUPPORT)
ENDIF(CMAKE_COMPILER_IS_GNUCXX AND SIM_ENABLE_FPIE)

OPTION(USE_GCC_VISIBILITY "Enable GCC 4.1 visibility support" FALSE)

# from svn://anonsvn.kde.org/home/kde/trunk/KDE/kdelibs/cmake/modules/FindKDE4Internal.cmake@606547
if (CMAKE_COMPILER_IS_GNUCXX AND USE_GCC_VISIBILITY)
   # visibility support
   check_cxx_compiler_flag(-fvisibility=hidden __KDE_HAVE_GCC_VISIBILITY)

   # get the gcc version
   exec_program(${CMAKE_C_COMPILER} ARGS --version OUTPUT_VARIABLE _gcc_version_info)

   string (REGEX MATCH " [34]\\.[0-9]\\.[0-9]" _gcc_version "${_gcc_version_info}")
   # gcc on mac just reports: "gcc (GCC) 3.3 20030304 ..." without the patch level, handle this here:
   if (NOT _gcc_version)
      string (REGEX REPLACE ".*\\(GCC\\).* ([34]\\.[0-9]) .*" "\\1.0" _gcc_version "${_gcc_version_info}")
   endif (NOT _gcc_version)

   macro_ensure_version("4.1.0" "${_gcc_version}" GCC_IS_NEWER_THAN_4_1)

   if (GCC_IS_NEWER_THAN_4_1)
      exec_program(${CMAKE_C_COMPILER} ARGS -v OUTPUT_VARIABLE _gcc_alloc_info)
      string(REGEX MATCH "(--enable-libstdcxx-allocator=mt)" _GCC_COMPILED_WITH_BAD_ALLOCATOR "${_gcc_alloc_info}")
   else (GCC_IS_NEWER_THAN_4_1)
      set(_GCC_COMPILED_WITH_BAD_ALLOCATOR FALSE)
   endif (GCC_IS_NEWER_THAN_4_1)

   if (__KDE_HAVE_GCC_VISIBILITY AND GCC_IS_NEWER_THAN_4_1 AND NOT _GCC_COMPILED_WITH_BAD_ALLOCATOR)
      set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -DHAVE_GCC_VISIBILITY")
   endif (__KDE_HAVE_GCC_VISIBILITY AND GCC_IS_NEWER_THAN_4_1 AND NOT _GCC_COMPILED_WITH_BAD_ALLOCATOR)

endif (CMAKE_COMPILER_IS_GNUCXX AND USE_GCC_VISIBILITY)

SET(SIM_FLAVOUR "" CACHE STRING "Additional suffix for plugin dir and executable file")
if(WIN32)
    SET(LIBDIR         .)
    SET(BINDIR         .)
    SET(SIM_I18N_DIR   po)
    SET(SIM_ICONS_DIR  icons)
    SET(SIM_PICT_DIR   pict)
    SET(SIM_PLUGIN_DIR plugins)
    SET(SIM_SOUND_DIR  sounds)
    SET(SIM_STYLES_DIR styles)
else(WIN32)
    SET(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)")
    SET(LIBDIR ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX} CACHE PATH "Path to sim library")
    SET(BINDIR ${CMAKE_INSTALL_PREFIX}/bin CACHE PATH "Path to sim binary")
    SET(DATADIR ${CMAKE_INSTALL_PREFIX}/share/apps/sim CACHE PATH "Path to sim data")
    SET(SIM_PLUGIN_DIR ${LIBDIR}/sim${SIM_FLAVOUR} CACHE PATH "Path to sim plugins")
    SET(SIM_I18N_DIR   ${CMAKE_INSTALL_PREFIX}/share/locale)
    SET(SIM_ICONS_DIR  ${DATADIR}/icons)
    SET(SIM_PICT_DIR   ${DATADIR}/pict)
    SET(SIM_SOUND_DIR  ${DATADIR}/sounds)
    SET(SIM_STYLES_DIR ${DATADIR}/styles)
    SET(SHARE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}/share)
    SET(XDG_APPS_DIR   ${SHARE_INSTALL_PREFIX}/applications/kde)
    SET(SERVICES_INSTALL_DIR ${SHARE_INSTALL_PREFIX}/services)
endif(WIN32)	
	
# subdirectories
ADD_SUBDIRECTORY(sim)
SIM_INCLUDE_PLUGINS()

# create config.h
CONFIGURE_FILE(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
add_definitions( -DHAVE_CONFIG_H )

# the (win32) flex generator doesn't care about HAVE_UNISTD_H - it simply has to
# be there. So create a dummy one if none exists
IF(NOT HAVE_UNISTD_H)
    WRITE_FILE( ${CMAKE_CURRENT_BINARY_DIR}/sim/unistd.h
                "/* dummy unistd.h file for flex generated parsers */" )
ENDIF(NOT HAVE_UNISTD_H)

# for uninstall target
CONFIGURE_FILE(
  "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
  "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
  IMMEDIATE @ONLY)

# uninstall target
ADD_CUSTOM_TARGET(uninstall
  "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")