Initial commit
[keepassx] / CMakeLists.txt
1 # CMake is still experimental, use qmake instead
2
3 PROJECT(KeePassX)
4
5 CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0 FATAL_ERROR)
6
7 MESSAGE("CMake is still experimental, use qmake instead")
8
9 SET( keepassx_VERSION_SHORT "0.4.0" )
10 SET( keepassx_VERSION "0.4.0" )
11
12 ADD_DEFINITIONS(-D'KEEPASSX_VERSION="${keepassx_VERSION}"')
13
14 #Set the custom CMake module directory where our include/lib finders are
15 SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
16
17 IF( APPLE OR MINGW )
18         SET( PROGNAME KeePassX )
19 ELSE( APPLE OR MINGW )
20         SET( PROGNAME keepassx )
21 ENDIF( APPLE OR MINGW )
22
23 IF( APPLE )
24         SET( MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/share/macx_bundle/Info_cmake.plist )
25         SET( MACOSX_BUNDLE_ICON_FILE ${CMAKE_CURRENT_SOURCE_DIR}/share/macx_bundle/icon.icns )
26         SET( MACOSX_BUNDLE_INFO_STRING KeePassX v${keepassx_VERSION} )
27         SET( MACOSX_BUNDLE_VERSION ${keepassx_VERSION} )
28         SET( MACOSX_BUNDLE_SHORT_VERSION_STRING ${keepassx_VERSION_SHORT} )
29         SET( MACOSX_BUNDLE_LONG_VERSION_STRING Version ${keepassx_VERSION} )
30         SET( CMAKE_OSX_ARCHITECTURES ppc;i386 )
31 ENDIF( APPLE )
32
33 IF( MINGW )
34         FIND_PROGRAM(CMAKE_RC NAMES ${_CMAKE_TOOLCHAIN_PREFIX}windres HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
35         
36         ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/keepassx.o
37                 COMMAND ${CMAKE_RC} -I${CMAKE_CURRENT_SOURCE_DIR}
38                 -i${CMAKE_CURRENT_SOURCE_DIR}/share/win_ico/keepassx.rc -o ${CMAKE_CURRENT_BINARY_DIR}/keepassx.o )
39         SET(keepassx_RCS ${CMAKE_CURRENT_BINARY_DIR}/keepassx.o)
40 ENDIF( MINGW )
41
42
43 OPTION(PRECOMPILED_HEADER "Enable precompiled header (required gcc >= 3.4.0)" TRUE)
44 IF( APPLE OR CMAKE_SYSTEM_NAME STREQUAL FreeBSD )
45         SET(PRECOMPILED_HEADER FALSE)
46 ENDIF( APPLE OR CMAKE_SYSTEM_NAME STREQUAL FreeBSD )
47
48 IF( PRECOMPILED_HEADER )
49         FIND_PACKAGE(PCHSupport)
50         IF(NOT PCHSupport_FOUND)
51                 SET(PRECOMPILED_HEADER FALSE)
52         ENDIF(NOT PCHSupport_FOUND)
53 ENDIF( PRECOMPILED_HEADER )
54
55
56 SET(QT_MIN_VERSION "4.3.0")
57 SET(QT_USE_QTXML TRUE)
58 SET(QT_USE_QTMAIN TRUE)
59 FIND_PACKAGE(Qt4 REQUIRED)
60 INCLUDE(${QT_USE_FILE})
61
62
63 OPTION(AUTOTYPE "Enable auto-type (X11 only)" TRUE)
64
65 IF( NOT UNIX )
66         SET(AUTOTYPE FALSE)
67 ENDIF( NOT UNIX )
68
69 IF( AUTOTYPE )
70         find_package(X11)
71         
72         IF( X11_XTest_FOUND )
73                 INCLUDE_DIRECTORIES( ${X11_XTest_INCLUDE_PATH} )
74                 SET(AUTOTYPE_LIBRARIES ${X11_XTest_LIB})
75                 ADD_DEFINITIONS(-DAUTOTYPE -DGLOBAL_AUTOTYPE)
76         ELSE( X11_XTest_FOUND )
77                 SET(AUTOTYPE FALSE)
78         ENDIF( X11_XTest_FOUND )
79 ENDIF( AUTOTYPE )
80
81
82 IF( MINGW )
83         SET(BINDIR "")
84         SET(SHAREDIR "share")
85 ELSEIF( APPLE )
86         SET(BINDIR "")
87         SET(SHAREDIR "Contents/Resources")
88 ELSE( MINGW )
89         SET(BINDIR "bin")
90         SET(SHAREDIR "share/keepassx")
91         SET(SHAREDIR_APP "share")
92 ENDIF( MINGW )
93
94
95 ADD_SUBDIRECTORY(src)
96 ADD_SUBDIRECTORY(share)