root/trunk/digitalme/CMakeLists.txt @ 2549

Revision 2549, 9.1 kB (checked in by ahodgkinson, 19 months ago)

digitalme: Added xcode project.

  • 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( ./selector/ui/gtk/src
116                ${EXECUTABLE_OUTPUT_PATH}/bin)
117endif( UNIX AND NOT APPLE)
118
119# OS X packages
120
121if( APPLE)
122        add_custom_target( xcode ALL
123                xcodebuild -project DigitalMe.xcodeproj -configuration ${CMAKE_BUILD_TYPE}
124                DEPENDS ftk iss
125                WORKING_DIRECTORY ui/selector/cocoa/xcode/DigitalMe)
126endif( APPLE)
127
128# RPM packages
129
130if( ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
131        include ( RPMBuild)
132endif( ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
133
134if( RPMBUILD_FOUND)
135        add_rpm( ${PROJECT_NAME})
136endif( RPMBUILD_FOUND)
137       
138# DEB packages
139
140if( ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
141        include ( DEBBuild)
142endif( ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
143
144if( DEBBUILD_FOUND)
145        add_deb( ${PROJECT_NAME})
146endif( DEBBUILD_FOUND)
147
148# Build a list of resource files
149
150file( GLOB inst_resource_files ui/install/icons/*.png)
151file( GLOB inst_linux_resource_files
152        ui/install/linux/*.desktop ui/install/linux/*.xml
153        ui/install/linux/*.keys ui/install/linux/*.mime)
154
155# Copy the resource files to the build output directory
156
157file( WRITE ${PROJECT_BINARY_DIR}/output_inst_resources.cmake
158        "set( INST_BUILD_RESOURCE_OUTPUT_PATH ${BUILD_RESOURCE_OUTPUT_PATH}/install)\n"
159        "\n"
160        "if( NOT EXISTS \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n"
161        "       file( MAKE_DIRECTORY \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n"
162        "endif( NOT EXISTS \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n"
163        "\n"
164        "foreach( resource_file ${inst_resource_files})\n"
165        "       execute_process( COMMAND \${CMAKE_COMMAND}\n"
166        "               -E copy \${resource_file} \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n"
167        "endforeach( resource_file)"
168        "\n"
169        "foreach( resource_file ${inst_linux_resource_files})\n"
170        "       execute_process( COMMAND \${CMAKE_COMMAND}\n"
171        "               -E copy \${resource_file} \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n"
172        "endforeach( resource_file)"
173)
174
175add_custom_target( output_inst_resources ALL
176        COMMAND ${CMAKE_COMMAND} -P ${PROJECT_BINARY_DIR}/output_inst_resources.cmake
177)
178
179# Installation start message
180
181install(
182        CODE
183        "message( \"Installing identity selector ...\")"
184)
185       
186# Install source
187
188if( SOURCE_INSTALL_PREFIX)
189
190        # Common files
191
192        install(
193                FILES CMakeLists.txt
194                DESTINATION ${SOURCE_INSTALL_PREFIX}/
195        )
196
197        install(
198                FILES configure
199                DESTINATION ${SOURCE_INSTALL_PREFIX}/
200                PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
201        )
202       
203        install(
204                FILES ./AUTHORS
205                                ./ChangeLog
206                                ./COPYING
207                                ./COPYRIGHT
208                                ./INSTALL
209                                ./NEWS
210                                ./README
211                                ./TODO
212                DESTINATION ${SOURCE_INSTALL_PREFIX}/
213        )
214       
215        # FTK files
216       
217        install(
218                DIRECTORY ./ftk
219                DESTINATION ${SOURCE_INSTALL_PREFIX}/
220                PATTERN ".svn" EXCLUDE
221        )
222       
223        # ISS files
224       
225        install(
226                DIRECTORY ./iss
227                DESTINATION ${SOURCE_INSTALL_PREFIX}/
228                PATTERN ".svn" EXCLUDE
229        )
230       
231        # User interface files
232       
233        install(
234                DIRECTORY ./selector/ui
235                DESTINATION ${SOURCE_INSTALL_PREFIX}/
236                PATTERN ".svn" EXCLUDE
237        )
238       
239        # Launchers
240       
241        install(
242                DIRECTORY ./launchers
243                DESTINATION ${SOURCE_INSTALL_PREFIX}/
244                PATTERN ".svn" EXCLUDE
245                PATTERN "build" EXCLUDE
246                PATTERN "CMakeCache.txt" EXCLUDE
247                PATTERN "CMakeFiles" EXCLUDE
248                PATTERN "cmake_install.cmake" EXCLUDE
249                PATTERN "install_manifest.txt" EXCLUDE
250                PATTERN "configure" EXCLUDE
251        )
252       
253        install(
254                FILES ./launchers/firefox-addon/configure
255                DESTINATION ${SOURCE_INSTALL_PREFIX}/launchers/firefox-addon
256                PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
257        )
258       
259endif( SOURCE_INSTALL_PREFIX)
260
261# Install resource files
262       
263install(
264        DIRECTORY ${BUILD_RESOURCE_OUTPUT_PATH}
265        DESTINATION ${PRODUCT_INSTALL_PREFIX}/share
266        PATTERN "install/*" EXCLUDE
267)
268
269# Install desktop files
270
271if( GNOME_PATH)
272        install(
273                FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}.keys
274                DESTINATION ${GNOME_PATH}/share/mime-info
275                PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
276        )
277endif( GNOME_PATH)
278
279if( GNOME_PATH)
280        install(
281                FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}.mime
282                DESTINATION ${GNOME_PATH}/share/mime-info
283                PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
284        )
285endif( GNOME_PATH)
286 
287install(
288        FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}.desktop
289        DESTINATION ${PRODUCT_INSTALL_PREFIX}/share/applications
290        PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
291)
292 
293install(
294        FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}-48x48.png
295        DESTINATION ${PRODUCT_INSTALL_PREFIX}/share/icons/hicolor/48x48/apps
296        RENAME ${PROJECT_NAME}.png
297        PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
298)
299 
300if( UNIX)
301        install(
302                CODE
303                "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink
304                        ${PRODUCT_INSTALL_PREFIX}/share/icons/hicolor/48x48/apps/${PROJECT_NAME}.png
305                        ${PRODUCT_INSTALL_PREFIX}/share/pixmaps/${PROJECT_NAME}.png)"
306        )
307endif( UNIX)
308 
309install(
310        FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}.xml
311        DESTINATION ${PRODUCT_INSTALL_PREFIX}/share/mime/packages
312        PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
313)
314 
315install(
316        FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/icard-48x48.png
317        DESTINATION ${PRODUCT_INSTALL_PREFIX}/share/icons/hicolor/48x48/mimetypes
318        RENAME gnome-mime-applications-x-informationCard.png
319        PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
320)
321
322if( UNIX)
323        install(
324                CODE
325                "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink
326                        ${PRODUCT_INSTALL_PREFIX}/share/icons/hicolor/48x48/mimetypes/gnome-mime-applications-x-informationCard.png
327                        ${PRODUCT_INSTALL_PREFIX}/share/icons/hicolor/48x48/mimetypes/gnome-mime-applications-x-informationcard.png)"
328        )
329endif( UNIX)
330 
331# Install libraries
332
333install(
334        DIRECTORY ${LIBRARY_OUTPUT_PATH}
335        DESTINATION ${PRODUCT_INSTALL_PREFIX}/lib
336        PATTERN "lib/${PROJECT_NAME}/ftk" EXCLUDE
337        PATTERN "lib/${PROJECT_NAME}/iss" EXCLUDE
338        PATTERN "lib/${PROJECT_NAME}/lib*.so" EXCLUDE
339        PATTERN "lib/${PROJECT_NAME}/*"
340        PERMISSIONS OWNER_EXECUTE OWNER_READ
341                                        GROUP_EXECUTE GROUP_READ
342                                        WORLD_EXECUTE WORLD_READ
343)
344
345# Install binaries
346
347install(
348        DIRECTORY ${EXECUTABLE_OUTPUT_PATH}
349        DESTINATION ${PRODUCT_INSTALL_PREFIX}
350        PATTERN "bin/bin" EXCLUDE
351        PATTERN "bin/*"
352        PERMISSIONS OWNER_EXECUTE OWNER_READ
353                                        GROUP_EXECUTE GROUP_READ
354                                        WORLD_EXECUTE WORLD_READ
355)
356
357# Installation complete message
358
359install(
360        CODE
361        "message( \"Identity selector installed.\")"
362)
Note: See TracBrowser for help on using the browser.