root/trunk/digitalme/CMakeLists.txt

Revision 2531, 8.9 kB (checked in by ahodgkinson, 7 weeks ago)

digitalme: Build script changes.

  • Property svn:eol-style set to native
Line 
1#------------------------------------------------------------------------------
2# Desc:
3# Tabs: 3
4#
5# Copyright (c) 2007-2008 Novell, Inc. All Rights Reserved.
6#
7# This program and the accompanying materials are made available
8# under, alternatively, the terms of:  a) the Eclipse Public License v1.0
9# which accompanies this distribution, and is available at
10# http://www.eclipse.org/legal/epl-v10.html; or, b) the Apache License,
11# Version 2.0 which accompanies this distribution and is available at
12# www.opensource.org/licenses/apache2.0.php.
13#
14# To contact Novell about this file by physical or electronic mail,
15# you may find current contact information at www.novell.com.
16#
17# Author: Andrew Hodgkinson <ahodgkinson@novell.com>
18#------------------------------------------------------------------------------
19
20# Policy
21
22cmake_minimum_required( VERSION 2.4)
23
24# Project name
25
26project( digitalme)
27
28# Verbose makefile
29
30# set( CMAKE_VERBOSE_MAKEFILE TRUE)
31
32# Include the local modules directory
33
34set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/ftk/CMakeModules")
35
36# Project version
37
38set( PROJECT_MAJOR_VERSION 0)
39set( PROJECT_MINOR_VERSION 5)
40
41# Default install prefix
42
43if( UNIX)
44        set( PRODUCT_INSTALL_PREFIX /usr)
45endif( UNIX)
46
47# Common configuration
48
49include( CommonConfig)
50
51# Package definitions
52
53set( PACKAGE_NAME ${PROJECT_NAME})
54set( PACKAGE_VERSION ${PROJECT_VERSION})
55set( PACKAGE_RELEASE 1.1)
56set( PACKAGE_MAINTAINER_NAME "Andrew Hodgkinson")
57set( PACKAGE_MAINTAINER_EMAIL "ahodgkinson@novell.com")
58set( PACKAGE_DESCRIPTION "A Microsoft CardSpace compatible identity selector." )
59set( PACKAGE_DESCRIPTION_SUMMARY "DigitalMe" )
60set( DEB_PACKAGE_BUILD_REQUIRES "libatk1.0-0 (>= 1.20.0), libc6 (>= 2.3.2), libgcc1 (>= 1:4.1.1-21), libglade2-0 (>= 1:2.6.1), libglib2.0-0 (>= 2.12.0), libgnome-keyring0 (>= 2.22.0), libgtk2.0-0 (>= 2.12.0), libssl0.9.8 (>= 0.9.8f-1), libstdc++6 (>= 4.1.1-21), libx11-6")
61set( DEB_PACKAGE_RUNTIME_REQUIRES "")
62set( RPM_PACKAGE_BUILD_REQUIRES "cmake >= 2.4 gcc-c++ libglade2-devel >= 2.5 openssl-devel >= 0.9.7 gnome-keyring-devel >= 0.4 make >= 3.8 unzip zip tar")
63set( RPM_PACKAGE_RUNTIME_REQUIRES "openssl >= 0.9.7 gnome-keyring >= 0.4 gtk2 >= 2.8 libglade2 >= 2.5")
64
65set( PACKAGE_GROUP "Productivity/Security" )
66set( PACKAGE_LICENSE "Eclipse Public License, see http://www.eclipse.org/legal")
67
68# Find the OpenSSL library
69
70set( OPENSSL_FIND_REQUIRED TRUE)
71include( FindOpenSSL)
72
73# Find the secret store provider
74
75if( UNIX)
76        if( APPLE)
77                set( APPLE_KEYCHAIN_FIND_REQUIRED TRUE)
78                include( FindAppleKeychain)
79        else( APPLE)
80                set( GNOME_KEYRING_FIND_REQUIRED TRUE)
81                include( FindGnomeKeyring)
82        endif( APPLE)
83endif( UNIX)
84
85# Component paths
86
87if( NOT FTK_DIR)
88        set( FTK_DIR "${CMAKE_SOURCE_DIR}/ftk")
89endif( NOT FTK_DIR)
90
91# Libraries
92
93set( FTK_LIBRARIES ftk)
94
95# Include directories
96
97set( FTK_INCLUDE_DIRS
98        "${PROJECT_SOURCE_DIR}/ftk/include")
99
100set( ISS_INCLUDE_DIRS
101        "${PROJECT_SOURCE_DIR}/iss/include")
102
103# Source directories
104
105add_subdirectory( ./ftk/src
106        ${LIBRARY_OUTPUT_PATH}/ftk)
107       
108add_subdirectory( ./ftk/util/ftktest
109        ${EXECUTABLE_OUTPUT_PATH}/ftk)
110
111add_subdirectory( ./iss/src
112        ${LIBRARY_OUTPUT_PATH}/iss)
113
114if( UNIX AND NOT APPLE)
115        add_subdirectory( ./ui/gtk/src
116                ${EXECUTABLE_OUTPUT_PATH}/bin)
117endif( UNIX AND NOT APPLE)
118
119add_subdirectory( ./ui/cmdline/src
120        ${EXECUTABLE_OUTPUT_PATH}/bin)
121       
122# RPM packages
123
124if( ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
125        include ( RPMBuild)
126endif( ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
127
128if( RPMBUILD_FOUND)
129        add_rpm( ${PROJECT_NAME})
130endif( RPMBUILD_FOUND)
131       
132# DEB packages
133
134if( ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
135        include ( DEBBuild)
136endif( ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
137
138if( DEBBUILD_FOUND)
139        add_deb( ${PROJECT_NAME})
140endif( DEBBUILD_FOUND)
141
142# Build a list of resource files
143
144file( GLOB inst_resource_files ui/install/icons/*.png)
145file( GLOB inst_linux_resource_files
146        ui/install/linux/*.desktop ui/install/linux/*.xml
147        ui/install/linux/*.keys ui/install/linux/*.mime)
148
149# Copy the resource files to the build output directory
150
151file( WRITE ${PROJECT_BINARY_DIR}/output_inst_resources.cmake
152        "set( INST_BUILD_RESOURCE_OUTPUT_PATH ${BUILD_RESOURCE_OUTPUT_PATH}/install)\n"
153        "\n"
154        "if( NOT EXISTS \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n"
155        "       file( MAKE_DIRECTORY \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n"
156        "endif( NOT EXISTS \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n"
157        "\n"
158        "foreach( resource_file ${inst_resource_files})\n"
159        "       execute_process( COMMAND \${CMAKE_COMMAND}\n"
160        "               -E copy \${resource_file} \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n"
161        "endforeach( resource_file)"
162        "\n"
163        "foreach( resource_file ${inst_linux_resource_files})\n"
164        "       execute_process( COMMAND \${CMAKE_COMMAND}\n"
165        "               -E copy \${resource_file} \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n"
166        "endforeach( resource_file)"
167)
168
169add_custom_target( output_inst_resources ALL
170        COMMAND ${CMAKE_COMMAND} -P ${PROJECT_BINARY_DIR}/output_inst_resources.cmake
171)
172
173# Installation start message
174
175install(
176        CODE
177        "message( \"Installing identity selector ...\")"
178)
179       
180# Install source
181
182if( SOURCE_INSTALL_PREFIX)
183
184        # Common files
185
186        install(
187                FILES CMakeLists.txt
188                DESTINATION ${SOURCE_INSTALL_PREFIX}/
189        )
190
191        install(
192                FILES configure
193                DESTINATION ${SOURCE_INSTALL_PREFIX}/
194                PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
195        )
196       
197        install(
198                FILES ./AUTHORS
199                                ./ChangeLog
200                                ./COPYING
201                                ./COPYRIGHT
202                                ./INSTALL
203                                ./NEWS
204                                ./README
205                                ./TODO
206                DESTINATION ${SOURCE_INSTALL_PREFIX}/
207        )
208       
209        # FTK files
210       
211        install(
212                DIRECTORY ./ftk
213                DESTINATION ${SOURCE_INSTALL_PREFIX}/
214                PATTERN ".svn" EXCLUDE
215        )
216       
217        # ISS files
218       
219        install(
220                DIRECTORY ./iss
221                DESTINATION ${SOURCE_INSTALL_PREFIX}/
222                PATTERN ".svn" EXCLUDE
223        )
224       
225        # User interface files
226       
227        install(
228                DIRECTORY ./ui
229                DESTINATION ${SOURCE_INSTALL_PREFIX}/
230                PATTERN ".svn" EXCLUDE
231        )
232       
233        # Launchers
234       
235        install(
236                DIRECTORY ./launchers
237                DESTINATION ${SOURCE_INSTALL_PREFIX}/
238                PATTERN ".svn" EXCLUDE
239                PATTERN "build" EXCLUDE
240                PATTERN "CMakeCache.txt" EXCLUDE
241                PATTERN "CMakeFiles" EXCLUDE
242                PATTERN "cmake_install.cmake" EXCLUDE
243                PATTERN "install_manifest.txt" EXCLUDE
244                PATTERN "configure" EXCLUDE
245        )
246       
247        install(
248                FILES ./launchers/firefox-addon/configure
249                DESTINATION ${SOURCE_INSTALL_PREFIX}/launchers/firefox-addon
250                PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
251        )
252       
253endif( SOURCE_INSTALL_PREFIX)
254
255# Install resource files
256       
257install(
258        DIRECTORY ${BUILD_RESOURCE_OUTPUT_PATH}
259        DESTINATION ${PRODUCT_INSTALL_PREFIX}/share
260        PATTERN "install/*" EXCLUDE
261)
262
263# Install desktop files
264
265if( GNOME_PATH)
266        install(
267                FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}.keys
268                DESTINATION ${GNOME_PATH}/share/mime-info
269                PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
270        )
271endif( GNOME_PATH)
272
273if( GNOME_PATH)
274        install(
275                FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}.mime
276                DESTINATION ${GNOME_PATH}/share/mime-info
277                PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
278        )
279endif( GNOME_PATH)
280 
281install(
282        FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}.desktop
283        DESTINATION ${PRODUCT_INSTALL_PREFIX}/share/applications
284        PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
285)
286 
287install(
288        FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}-48x48.png
289        DESTINATION ${PRODUCT_INSTALL_PREFIX}/share/icons/hicolor/48x48/apps
290        RENAME ${PROJECT_NAME}.png
291        PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
292)
293 
294if( UNIX)
295        install(
296                CODE
297                "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink
298                        ${PRODUCT_INSTALL_PREFIX}/share/icons/hicolor/48x48/apps/${PROJECT_NAME}.png
299                        ${PRODUCT_INSTALL_PREFIX}/share/pixmaps/${PROJECT_NAME}.png)"
300        )
301endif( UNIX)
302 
303install(
304        FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}.xml
305        DESTINATION ${PRODUCT_INSTALL_PREFIX}/share/mime/packages
306        PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
307)
308 
309install(
310        FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/icard-48x48.png
311        DESTINATION ${PRODUCT_INSTALL_PREFIX}/share/icons/hicolor/48x48/mimetypes
312        RENAME gnome-mime-applications-x-informationCard.png
313        PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
314)
315
316if( UNIX)
317        install(
318                CODE
319                "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink
320                        ${PRODUCT_INSTALL_PREFIX}/share/icons/hicolor/48x48/mimetypes/gnome-mime-applications-x-informationCard.png
321                        ${PRODUCT_INSTALL_PREFIX}/share/icons/hicolor/48x48/mimetypes/gnome-mime-applications-x-informationcard.png)"
322        )
323endif( UNIX)
324 
325# Install libraries
326
327install(
328        DIRECTORY ${LIBRARY_OUTPUT_PATH}
329        DESTINATION ${PRODUCT_INSTALL_PREFIX}/lib
330        PATTERN "lib/${PROJECT_NAME}/ftk" EXCLUDE
331        PATTERN "lib/${PROJECT_NAME}/iss" EXCLUDE
332        PATTERN "lib/${PROJECT_NAME}/lib*.so" EXCLUDE
333        PATTERN "lib/${PROJECT_NAME}/*"
334        PERMISSIONS OWNER_EXECUTE OWNER_READ
335                                        GROUP_EXECUTE GROUP_READ
336                                        WORLD_EXECUTE WORLD_READ
337)
338
339# Install binaries
340
341install(
342        DIRECTORY ${EXECUTABLE_OUTPUT_PATH}
343        DESTINATION ${PRODUCT_INSTALL_PREFIX}
344        PATTERN "bin/bin" EXCLUDE
345        PATTERN "bin/dmcl" EXCLUDE
346        PATTERN "bin/*"
347        PERMISSIONS OWNER_EXECUTE OWNER_READ
348                                        GROUP_EXECUTE GROUP_READ
349                                        WORLD_EXECUTE WORLD_READ
350)
351
352# Installation complete message
353
354install(
355        CODE
356        "message( \"Identity selector installed.\")"
357)
Note: See TracBrowser for help on using the browser.