summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
blob: 201b483f51587d4794582a564b3797165a43becd (plain)
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
cmake_minimum_required( VERSION 2.8 )


##### general package setup #####################

project( gtk-qt-engine )

set( PACKAGE gtk-qt-engine )
set( VERSION R14.0.5 )


##### include essential cmake modules ###########

include( FindPkgConfig )
include( CheckIncludeFile )
include( CheckCSourceRuns )
include( CheckCXXSourceCompiles )
include( CheckLibraryExists )
include( CheckFunctionExists )
include( CheckStructHasMember )

##### include our cmake modules #################

set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules" )
include( TDEMacros )


##### setup install paths #######################

include( TDESetupPaths )
tde_setup_paths( )

##### set PKG_CONFIG_PATH #######################

set( ENV{PKG_CONFIG_PATH} "${PKG_CONFIG_PATH}:$ENV{PKG_CONFIG_PATH}:${LIB_INSTALL_DIR}/pkgconfig" )


##### configure checks ##########################

include( ConfigureChecks.cmake )


###### global compiler settings #################

add_definitions(
  -DHAVE_CONFIG_H
)

set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TQT_CXX_FLAGS}" )
set( CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined" )
set( CMAKE_MODULE_LINKER_FLAGS "-Wl,--no-undefined" )

INCLUDE (UsePkgConfig)

# Find GTK
PKGCONFIG(gtk+-2.0 GTK_INCLUDE_DIR GTK_LIB_DIR GTK_LINK_FLAGS GTK_CFLAGS)
IF (NOT GTK_INCLUDE_DIR)
	MESSAGE(FATAL_ERROR "GTK was not found.  Ensure you have the GTK development libraries installed, and GTK's pkgconfig files are in your pkgconfig search path.")
ENDIF (NOT GTK_INCLUDE_DIR)
MESSAGE(STATUS "Found GTK include dir: ${GTK_INCLUDE_DIR}")
MESSAGE(STATUS "Found GTK library dir: ${GTK_LIB_DIR}")

# Find Bonobo
PKGCONFIG(libbonoboui-2.0 BONOBO_INCLUDE_DIR BONOBO_LIB_DIR BONOBO_LINK_FLAGS BONOBO_CFLAGS)
IF (NOT BONOBO_INCLUDE_DIR)
	MESSAGE(STATUS "bonoboui not found.  Some features of the theme engine will not work as intended.")
ELSE (NOT BONOBO_INCLUDE_DIR)
	MESSAGE(STATUS "Found Bonobo include dir: ${BONOBO_INCLUDE_DIR}")
	MESSAGE(STATUS "Found Bonobo library dir: ${BONOBO_LIB_DIR}")
	SET(BONOBO_DEFINITIONS -D HAVE_BONOBO)
ENDIF (NOT BONOBO_INCLUDE_DIR)

# Find msgfmt
SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake/Modules)
FIND_PACKAGE(Msgfmt REQUIRED)

# Find xgettext
FIND_PROGRAM(
	XGETTEXT_PATH
	NAMES "xgettext"
	PATHS "/usr/bin"
)
IF(${XGETTEXT_PATH} STREQUAL "XGETTEXT_PATH-NOTFOUND")
	MESSAGE(STATUS "xgettext not found.  You will not be able to run 'make extract_messages' in the 'po' directory.")
ELSE(${XGETTEXT_PATH} STREQUAL "XGETTEXT_PATH-NOTFOUND")
	MESSAGE(STATUS "Found xgettext: ${XGETTEXT_PATH}")
ENDIF(${XGETTEXT_PATH} STREQUAL "XGETTEXT_PATH-NOTFOUND")

# Find extractrc
FIND_PROGRAM(
	EXTRACTRC_PATH
	NAMES "extractrc"
	PATHS "/usr/bin"
)
IF(${EXTRACTRC_PATH} STREQUAL "EXTRACTRC_PATH-NOTFOUND")
	MESSAGE(STATUS "extractrc not found.  You will not be able to run 'make extract_messages' in the 'po' directory.")
ELSE(${EXTRACTRC_PATH} STREQUAL "EXTRACTRC_PATH-NOTFOUND")
	MESSAGE(STATUS "Found extractrc: ${EXTRACTRC_PATH}")
ENDIF(${EXTRACTRC_PATH} STREQUAL "EXTRACTRC_PATH-NOTFOUND")

# Work out where to install stuff
EXEC_PROGRAM(
	${PKGCONFIG_EXECUTABLE}
	ARGS --variable=gtk_binary_version gtk+-2.0
	OUTPUT_VARIABLE GTK_VERSION)
SET(INSTALL_PATH_GTK_ENGINES "${GTK_LIB_DIR}/gtk-2.0/${GTK_VERSION}/engines" CACHE PATH "The directory in which to install the theme engine library (eg. /usr/lib/gtk-2.0/2.4.0/engines)")
MESSAGE(STATUS "Installing the GTK theme engine library to: ${INSTALL_PATH_GTK_ENGINES}")

EXEC_PROGRAM(
	${PKGCONFIG_EXECUTABLE}
	ARGS --variable=prefix gtk+-2.0
	OUTPUT_VARIABLE GTK_PREFIX)
SET(INSTALL_PATH_GTK_THEMES "${GTK_PREFIX}/share/themes" CACHE PATH "The directory in which to install the theme data (eg. /usr/share/themes)")
MESSAGE(STATUS "Installing the GTK theme engine data to: ${INSTALL_PATH_GTK_THEMES}")

SET(INSTALL_PATH_KCONTROL_MODULES "${TDE_LIB_DIR}" CACHE PATH "The directory in which to install KControl plugins (eg. /usr/lib)")
MESSAGE(STATUS "Installing the KControl plugins to: ${INSTALL_PATH_KCONTROL_MODULES}")

MESSAGE(STATUS "Installing everything else to: ${CMAKE_INSTALL_PREFIX}")

# Setup definitions and directories to be used in all subdirectories
ADD_DEFINITIONS(${QT_DEFINITIONS} ${TDE_DEFINITIONS} ${BONOBO_DEFINITIONS})
LINK_DIRECTORIES(${TDE_LIB_DIR} ${GTK_LIB_DIR} ${BONOBO_LIB_DIR} ${TQT_LIBRARY_DIRS})
INCLUDE_DIRECTORIES(${GTK_INCLUDE_DIR} ${BONOBO_INCLUDE_DIR} ${TDE_INCLUDE_DIR} ${TQT_INCLUDE_DIRS})

# Subdirectories
ADD_SUBDIRECTORY(src)
ADD_SUBDIRECTORY(kcm_gtk)
ADD_SUBDIRECTORY(po)
ADD_SUBDIRECTORY(doc)

# Uninstall support
CONFIGURE_FILE(
  "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
  "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
  IMMEDIATE @ONLY)

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