root/trunk/digitalme/CMakeLists.txt @ 2579

Revision 2579, 9.9 kB (checked in by ahodgkinson, 17 months ago)

Added clean and clean-unversioned to the install file list.

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