root/trunk/digitalme/CMakeLists.txt @ 2563

Revision 2563, 9.1 kB (checked in by ahodgkinson, 17 months ago)

digitalme: Added SpecBuild?.cmake and reset external revisions to HEAD.

  • 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# Component paths
33
34set( FTK_CORE_DIR ${PROJECT_SOURCE_DIR}/ftk)
35set( ISS_CORE_DIR ${PROJECT_SOURCE_DIR}/iss)
36
37# Include the local modules directory
38
39set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/ftk/CMakeModules")
40
41# Project version
42
43set( PROJECT_MAJOR_VERSION 0)
44set( PROJECT_MINOR_VERSION 5)
45
46# Default install prefix
47
48if( UNIX)
49        set( PRODUCT_INSTALL_PREFIX /usr)
50endif( UNIX)
51
52# Common configuration
53
54include( CommonConfig)
55
56# Package definitions
57
58set( PACKAGE_NAME ${PROJECT_NAME})
59set( PACKAGE_VERSION ${PROJECT_VERSION})
60set( PACKAGE_RELEASE 1.1)
61set( PACKAGE_MAINTAINER_NAME "Andrew Hodgkinson")
62set( PACKAGE_MAINTAINER_EMAIL "ahodgkinson@novell.com")
63set( PACKAGE_DESCRIPTION "A Microsoft CardSpace compatible identity selector.")
64set( PACKAGE_DESCRIPTION_SUMMARY "DigitalMe")
65set( PACKAGE_GROUP "Productivity/Security" )
66set( PACKAGE_LICENSE "Eclipse Public License, see http://www.eclipse.org/legal")
67
68# Debian-specific package definitions
69
70set( 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")
71set( DEB_PACKAGE_RUNTIME_REQUIRES "")
72
73# Find the OpenSSL library
74
75set( OPENSSL_FIND_REQUIRED TRUE)
76include( FindOpenSSL)
77
78# Find the secret store provider
79
80if( UNIX)
81        if( APPLE)
82                set( APPLE_KEYCHAIN_FIND_REQUIRED TRUE)
83                include( FindAppleKeychain)
84        else( APPLE)
85                set( GNOME_KEYRING_FIND_REQUIRED TRUE)
86                include( FindGnomeKeyring)
87        endif( APPLE)
88endif( UNIX)
89
90# Component paths
91
92if( NOT FTK_DIR)
93        set( FTK_DIR "${CMAKE_SOURCE_DIR}/ftk")
94endif( NOT FTK_DIR)
95
96# Libraries
97
98set( FTK_LIBRARIES ftk)
99
100# Include directories
101
102set( FTK_INCLUDE_DIRS
103        "${PROJECT_SOURCE_DIR}/ftk/include")
104
105set( ISS_INCLUDE_DIRS
106        "${PROJECT_SOURCE_DIR}/iss/include")
107
108# Source directories
109
110add_subdirectory( ./ftk/src
111        ${LIBRARY_OUTPUT_PATH}/ftk)
112       
113add_subdirectory( ./ftk/util/ftktest/src
114        ${EXECUTABLE_OUTPUT_PATH}/ftk)
115
116add_subdirectory( ./iss/src
117        ${LIBRARY_OUTPUT_PATH}/iss)
118
119if( UNIX AND NOT APPLE)
120        set( SELECTOR_TARGET_NAME ${PROJECT_NAME})
121        set( SELECTOR_BRAND_NAME "DigitalMe")
122        file( GLOB branding_resource_files selector/branding/graphics/*.png)
123
124        add_subdirectory( ./selector/ui/gtk/src
125                ${EXECUTABLE_OUTPUT_PATH}/bin)
126endif( UNIX AND NOT APPLE)
127
128# OS X packages
129
130if( APPLE)
131        add_custom_target( xcode ALL
132                xcodebuild -project DigitalMe.xcodeproj -configuration ${CMAKE_BUILD_TYPE}
133                DEPENDS ftk iss
134                WORKING_DIRECTORY xcode/selector)
135endif( APPLE)
136
137# RPM packages
138
139if( ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
140        include ( RPMBuild)
141endif( ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
142
143if( RPMBUILD_FOUND)
144        add_rpm( ${PROJECT_NAME})
145endif( RPMBUILD_FOUND)
146       
147# DEB packages
148
149if( ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
150        include ( DEBBuild)
151endif( ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
152
153if( DEBBUILD_FOUND)
154        add_deb( ${PROJECT_NAME})
155endif( DEBBUILD_FOUND)
156
157# Build a list of resource files
158
159file( GLOB inst_resource_files selector/install/icons/*.png)
160file( GLOB inst_linux_resource_files
161        selector/install/linux/*.desktop selector/install/linux/*.xml
162        selector/install/linux/*.keys selector/install/linux/*.mime)
163
164# Copy the resource files to the build output directory
165
166file( WRITE ${PROJECT_BINARY_DIR}/output_inst_resources.cmake
167        "set( INST_BUILD_RESOURCE_OUTPUT_PATH ${BUILD_RESOURCE_OUTPUT_PATH}/install)\n"
168        "\n"
169        "if( NOT EXISTS \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n"
170        "       file( MAKE_DIRECTORY \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n"
171        "endif( NOT EXISTS \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n"
172        "\n"
173        "foreach( resource_file ${inst_resource_files})\n"
174        "       execute_process( COMMAND \${CMAKE_COMMAND}\n"
175        "               -E copy \${resource_file} \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n"
176        "endforeach( resource_file)"
177        "\n"
178        "foreach( resource_file ${inst_linux_resource_files})\n"
179        "       execute_process( COMMAND \${CMAKE_COMMAND}\n"
180        "               -E copy \${resource_file} \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n"
181        "endforeach( resource_file)"
182)
183
184add_custom_target( output_inst_resources ALL
185        COMMAND ${CMAKE_COMMAND} -P ${PROJECT_BINARY_DIR}/output_inst_resources.cmake
186)
187
188# Installation start message
189
190install(
191        CODE
192        "message( \"Installing identity selector ...\")"
193)
194       
195# Install source
196
197if( SOURCE_INSTALL_PREFIX)
198
199        # Common files
200
201        install(
202                FILES CMakeLists.txt
203                DESTINATION ${SOURCE_INSTALL_PREFIX}
204        )
205
206        install(
207                FILES configure
208                DESTINATION ${SOURCE_INSTALL_PREFIX}
209                PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
210        )
211       
212        install(
213                FILES ./AUTHORS
214                                ./ChangeLog
215                                ./COPYING
216                                ./COPYRIGHT
217                                ./INSTALL
218                                ./NEWS
219                                ./README
220                                ./TODO
221                                ./SpecBuild.cmake
222                DESTINATION ${SOURCE_INSTALL_PREFIX}
223        )
224       
225        # FTK files
226       
227        install(
228                DIRECTORY ./ftk
229                DESTINATION ${SOURCE_INSTALL_PREFIX}
230                PATTERN ".svn" EXCLUDE
231        )
232       
233        # ISS files
234       
235        install(
236                DIRECTORY ./iss
237                DESTINATION ${SOURCE_INSTALL_PREFIX}
238                PATTERN ".svn" EXCLUDE
239        )
240       
241        # Selector files
242       
243        install(
244                DIRECTORY ./selector
245                DESTINATION ${SOURCE_INSTALL_PREFIX}
246                PATTERN ".svn" EXCLUDE
247        )
248       
249        # Launchers
250       
251        install(
252                DIRECTORY ./launchers
253                DESTINATION ${SOURCE_INSTALL_PREFIX}
254                PATTERN ".svn" EXCLUDE
255                PATTERN "build" EXCLUDE
256                PATTERN "CMakeCache.txt" EXCLUDE
257                PATTERN "CMakeFiles" EXCLUDE
258                PATTERN "cmake_install.cmake" EXCLUDE
259                PATTERN "install_manifest.txt" EXCLUDE
260                PATTERN "configure" EXCLUDE
261        )
262       
263        install(
264                FILES ./launchers/firefox-addon/configure
265                DESTINATION ${SOURCE_INSTALL_PREFIX}/launchers/firefox-addon
266                PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
267        )
268       
269endif( SOURCE_INSTALL_PREFIX)
270
271# Install resource files
272
273install(
274        DIRECTORY ${BUILD_RESOURCE_OUTPUT_PATH}
275        DESTINATION ${PRODUCT_INSTALL_PREFIX}/share
276        PATTERN "install/*" EXCLUDE
277)
278
279# Install desktop files
280
281if( GNOME_PATH)
282        install(
283                FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}.keys
284                DESTINATION ${GNOME_PATH}/share/mime-info
285                PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
286        )
287endif( GNOME_PATH)
288
289if( GNOME_PATH)
290        install(
291                FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}.mime
292                DESTINATION ${GNOME_PATH}/share/mime-info
293                PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
294        )
295endif( GNOME_PATH)
296 
297install(
298        FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}.desktop
299        DESTINATION ${PRODUCT_INSTALL_PREFIX}/share/applications
300        PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
301)
302 
303install(
304        FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}-48x48.png
305        DESTINATION ${PRODUCT_INSTALL_PREFIX}/share/icons/hicolor/48x48/apps
306        RENAME ${PROJECT_NAME}.png
307        PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
308)
309 
310if( UNIX)
311        install(
312                CODE
313                "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink
314                        ${PRODUCT_INSTALL_PREFIX}/share/icons/hicolor/48x48/apps/${PROJECT_NAME}.png
315                        ${PRODUCT_INSTALL_PREFIX}/share/pixmaps/${PROJECT_NAME}.png)"
316        )
317endif( UNIX)
318 
319install(
320        FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}.xml
321        DESTINATION ${PRODUCT_INSTALL_PREFIX}/share/mime/packages
322        PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
323)
324 
325install(
326        FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/icard-48x48.png
327        DESTINATION ${PRODUCT_INSTALL_PREFIX}/share/icons/hicolor/48x48/mimetypes
328        RENAME gnome-mime-applications-x-informationCard.png
329        PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
330)
331
332if( UNIX)
333        install(
334                CODE
335                "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink
336                        ${PRODUCT_INSTALL_PREFIX}/share/icons/hicolor/48x48/mimetypes/gnome-mime-applications-x-informationCard.png
337                        ${PRODUCT_INSTALL_PREFIX}/share/icons/hicolor/48x48/mimetypes/gnome-mime-applications-x-informationcard.png)"
338        )
339endif( UNIX)
340 
341# Install libraries
342
343install(
344        DIRECTORY ${LIBRARY_OUTPUT_PATH}
345        DESTINATION ${PRODUCT_INSTALL_PREFIX}/lib
346        PATTERN "lib/${PROJECT_NAME}/ftk" EXCLUDE
347        PATTERN "lib/${PROJECT_NAME}/iss" EXCLUDE
348        PATTERN "lib/${PROJECT_NAME}/lib*.so" EXCLUDE
349        PATTERN "lib/${PROJECT_NAME}/*"
350        PERMISSIONS OWNER_EXECUTE OWNER_READ
351                                        GROUP_EXECUTE GROUP_READ
352                                        WORLD_EXECUTE WORLD_READ
353)
354
355# Install binaries
356
357install(
358        DIRECTORY ${EXECUTABLE_OUTPUT_PATH}
359        DESTINATION ${PRODUCT_INSTALL_PREFIX}
360        PATTERN "bin/bin" EXCLUDE
361        PATTERN "bin/ftk" EXCLUDE
362        PATTERN "bin/*"
363        PERMISSIONS OWNER_EXECUTE OWNER_READ
364                                        GROUP_EXECUTE GROUP_READ
365                                        WORLD_EXECUTE WORLD_READ
366)
367
368# Installation complete message
369
370install(
371        CODE
372        "message( \"Identity selector installed.\")"
373)
Note: See TracBrowser for help on using the browser.