root/trunk/digitalme/CMakeLists.txt

Revision 2582, 9.8 kB (checked in by ahodgkinson, 11 months ago)

Changed build script to exclude ftktest and other utilities from install.

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