#------------------------------------------------------------------------------ # Desc: # Tabs: 3 # # Copyright (c) 2007-2008 Novell, Inc. All Rights Reserved. # # This program and the accompanying materials are made available # under, alternatively, the terms of: a) the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html; or, b) the Apache License, # Version 2.0 which accompanies this distribution and is available at # www.opensource.org/licenses/apache2.0.php. # # To contact Novell about this file by physical or electronic mail, # you may find current contact information at www.novell.com. # # Author: Andrew Hodgkinson #------------------------------------------------------------------------------ # Policy cmake_minimum_required( VERSION 2.4) # Project name project( digitalme) # Verbose makefile # set( CMAKE_VERBOSE_MAKEFILE TRUE) # Component paths set( FTK_CORE_DIR ${PROJECT_SOURCE_DIR}/ftk) set( ISS_CORE_DIR ${PROJECT_SOURCE_DIR}/iss) # Include the local modules directory set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/ftk/CMakeModules") # Project version set( PROJECT_MAJOR_VERSION 0) set( PROJECT_MINOR_VERSION 5) # Default install prefix if( UNIX) set( PRODUCT_INSTALL_PREFIX /usr) endif( UNIX) # Common configuration include( CommonConfig) # Package definitions set( PACKAGE_NAME ${PROJECT_NAME}) set( PACKAGE_VERSION ${PROJECT_VERSION}) set( PACKAGE_RELEASE 1) set( PACKAGE_MAINTAINER_NAME "Andrew Hodgkinson") set( PACKAGE_MAINTAINER_EMAIL "ahodgkinson@novell.com") set( PACKAGE_DESCRIPTION "A Microsoft CardSpace compatible identity selector.") set( PACKAGE_DESCRIPTION_SUMMARY "DigitalMe") set( PACKAGE_GROUP "Productivity/Security" ) set( PACKAGE_LICENSE "Eclipse Public License, see http://www.eclipse.org/legal") # Find the OpenSSL library set( OPENSSL_FIND_REQUIRED TRUE) include( FindOpenSSL) # Find the secret store provider if( UNIX) if( APPLE) set( APPLE_KEYCHAIN_FIND_REQUIRED TRUE) include( FindAppleKeychain) else( APPLE) set( GNOME_KEYRING_FIND_REQUIRED TRUE) include( FindGnomeKeyring) endif( APPLE) endif( UNIX) # Component paths if( NOT FTK_DIR) set( FTK_DIR "${CMAKE_SOURCE_DIR}/ftk") endif( NOT FTK_DIR) # Libraries set( FTK_LIBRARIES ftk) # Include directories set( FTK_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/ftk/include") set( ISS_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/iss/include") # Source directories add_subdirectory( ./ftk/src ${LIBRARY_OUTPUT_PATH}/ftk) add_subdirectory( ./ftk/util/ftktest/src ${EXECUTABLE_OUTPUT_PATH}/ftk) add_subdirectory( ./iss/src ${LIBRARY_OUTPUT_PATH}/iss) # Selector branding set( SELECTOR_TARGET_NAME ${PROJECT_NAME}) set( SELECTOR_BRAND_NAME "DigitalMe") file( GLOB branding_resource_files selector/branding/gtk/graphics/*.png) # GTK if( NOT APPLE) set( GTK2_FIND_REQUIRED FALSE) include( FindGTK2) endif( NOT APPLE) if( NOT APPLE) set( GLADE_FIND_REQUIRED FALSE) include( FindGlade) endif( NOT APPLE) if( GTK2_FOUND AND GLADE_FOUND) add_subdirectory( ./selector/ui/gtk/src ${EXECUTABLE_OUTPUT_PATH}/bin) endif( GTK2_FOUND AND GLADE_FOUND) # OS X packages if( APPLE) add_custom_target( xcode ALL xcodebuild -project DigitalMe.xcodeproj -configuration ${CMAKE_BUILD_TYPE} DEPENDS ftk iss WORKING_DIRECTORY xcode/selector) endif( APPLE) # RPM packages if( ${CMAKE_SYSTEM_NAME} STREQUAL "Linux") include ( RPMBuild) endif( ${CMAKE_SYSTEM_NAME} STREQUAL "Linux") if( RPMBUILD_FOUND) add_rpm( ${PROJECT_NAME}) endif( RPMBUILD_FOUND) # DEB packages if( ${CMAKE_SYSTEM_NAME} STREQUAL "Linux") include ( DEBBuild) endif( ${CMAKE_SYSTEM_NAME} STREQUAL "Linux") if( DEBBUILD_FOUND) add_deb( ${PROJECT_NAME}) endif( DEBBUILD_FOUND) # Build a list of resource files file( GLOB inst_resource_files selector/install/icons/*.png) file( GLOB inst_linux_resource_files selector/install/linux/*.desktop selector/install/linux/*.xml selector/install/linux/*.keys selector/install/linux/*.mime) # Copy the resource files to the build output directory file( WRITE ${PROJECT_BINARY_DIR}/output_inst_resources.cmake "set( INST_BUILD_RESOURCE_OUTPUT_PATH ${BUILD_RESOURCE_OUTPUT_PATH}/install)\n" "\n" "if( NOT EXISTS \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n" " file( MAKE_DIRECTORY \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n" "endif( NOT EXISTS \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n" "\n" "foreach( resource_file ${inst_resource_files})\n" " execute_process( COMMAND \${CMAKE_COMMAND}\n" " -E copy \${resource_file} \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n" "endforeach( resource_file)" "\n" "foreach( resource_file ${inst_linux_resource_files})\n" " execute_process( COMMAND \${CMAKE_COMMAND}\n" " -E copy \${resource_file} \${INST_BUILD_RESOURCE_OUTPUT_PATH})\n" "endforeach( resource_file)" ) add_custom_target( output_inst_resources ALL COMMAND ${CMAKE_COMMAND} -P ${PROJECT_BINARY_DIR}/output_inst_resources.cmake ) # Installation destinations if( PRODUCT_INSTALL_LIB_DIR) set( LIB_INSTALL_DEST ${PRODUCT_INSTALL_LIB_DIR}) else( PRODUCT_INSTALL_LIB_DIR) set( LIB_INSTALL_DEST ${PRODUCT_INSTALL_PREFIX}/${LIB_DIR_NAME}) endif( PRODUCT_INSTALL_LIB_DIR) if( PRODUCT_INSTALL_BIN_DIR) set( BIN_INSTALL_DEST ${PRODUCT_INSTALL_BIN_DIR}) else( PRODUCT_INSTALL_BIN_DIR) set( BIN_INSTALL_DEST ${PRODUCT_INSTALL_PREFIX}/${BIN_DIR_NAME}) endif( PRODUCT_INSTALL_BIN_DIR) if( PRODUCT_INSTALL_DATA_DIR) set( DATA_INSTALL_DEST ${PRODUCT_INSTALL_DATA_DIR}) else( PRODUCT_INSTALL_DATA_DIR) set( DATA_INSTALL_DEST ${PRODUCT_INSTALL_PREFIX}/${DATA_DIR_NAME}) endif( PRODUCT_INSTALL_DATA_DIR) # Installation start message install( CODE "message( \"Installing identity selector to ${PRODUCT_INSTALL_PREFIX} ...\")" ) # Install source if( SOURCE_INSTALL_PREFIX) # Common files install( FILES CMakeLists.txt DESTINATION ${SOURCE_INSTALL_PREFIX} ) install( FILES configure clean clean-unversioned DESTINATION ${SOURCE_INSTALL_PREFIX} PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE ) install( FILES ./AUTHORS ./ChangeLog ./COPYING ./COPYRIGHT ./INSTALL ./NEWS ./README ./TODO ./SpecBuild.cmake DESTINATION ${SOURCE_INSTALL_PREFIX} ) # FTK files install( DIRECTORY ./ftk DESTINATION ${SOURCE_INSTALL_PREFIX} PATTERN ".svn" EXCLUDE ) # ISS files install( DIRECTORY ./iss DESTINATION ${SOURCE_INSTALL_PREFIX} PATTERN ".svn" EXCLUDE ) # Selector files install( DIRECTORY ./selector DESTINATION ${SOURCE_INSTALL_PREFIX} PATTERN ".svn" EXCLUDE ) # Launchers install( DIRECTORY ./launchers DESTINATION ${SOURCE_INSTALL_PREFIX} PATTERN ".svn" EXCLUDE PATTERN "build" EXCLUDE PATTERN "CMakeCache.txt" EXCLUDE PATTERN "CMakeFiles" EXCLUDE PATTERN "cmake_install.cmake" EXCLUDE PATTERN "install_manifest.txt" EXCLUDE PATTERN "configure" EXCLUDE ) install( FILES ./launchers/firefox-addon/configure DESTINATION ${SOURCE_INSTALL_PREFIX}/launchers/firefox-addon PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE ) endif( SOURCE_INSTALL_PREFIX) # Install resource files install( DIRECTORY ${BUILD_RESOURCE_OUTPUT_PATH} DESTINATION ${DATA_INSTALL_DEST} PATTERN "install" EXCLUDE PATTERN "install/*" EXCLUDE ) # Install desktop files if( GNOME_PATH) install( FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}.keys DESTINATION ${GNOME_PATH}/share/mime-info PERMISSIONS OWNER_READ GROUP_READ WORLD_READ ) endif( GNOME_PATH) if( GNOME_PATH) install( FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}.mime DESTINATION ${GNOME_PATH}/share/mime-info PERMISSIONS OWNER_READ GROUP_READ WORLD_READ ) endif( GNOME_PATH) install( FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}.desktop DESTINATION ${DATA_INSTALL_DEST}/applications PERMISSIONS OWNER_READ GROUP_READ WORLD_READ ) install( FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}-48x48.png DESTINATION ${DATA_INSTALL_DEST}/icons/hicolor/48x48/apps RENAME ${PROJECT_NAME}.png PERMISSIONS OWNER_READ GROUP_READ WORLD_READ ) if( UNIX) install( CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink ${DATA_INSTALL_DEST}/icons/hicolor/48x48/apps/${PROJECT_NAME}.png ${DATA_INSTALL_DEST}/pixmaps/${PROJECT_NAME}.png)" ) endif( UNIX) install( FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/${PROJECT_NAME}.xml DESTINATION ${DATA_INSTALL_DEST}/mime/packages PERMISSIONS OWNER_READ GROUP_READ WORLD_READ ) install( FILES ${BUILD_RESOURCE_OUTPUT_PATH}/install/icard-48x48.png DESTINATION ${DATA_INSTALL_DEST}/icons/hicolor/48x48/mimetypes RENAME gnome-mime-applications-x-informationCard.png PERMISSIONS OWNER_READ GROUP_READ WORLD_READ ) if( UNIX) install( CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink ${DATA_INSTALL_DEST}/icons/hicolor/48x48/mimetypes/gnome-mime-applications-x-informationCard.png ${DATA_INSTALL_DEST}/icons/hicolor/48x48/mimetypes/gnome-mime-applications-x-informationcard.png)" ) endif( UNIX) # Install libraries install( CODE "message( \"Installing libraries to ${LIB_INSTALL_DEST} from ${LIBRARY_OUTPUT_PATH}...\")" ) install( DIRECTORY ${LIBRARY_OUTPUT_PATH} DESTINATION ${LIB_INSTALL_DEST} PATTERN "${LIB_DIR_NAME}/${PROJECT_NAME}/ftk" EXCLUDE PATTERN "${LIB_DIR_NAME}/${PROJECT_NAME}/iss" EXCLUDE PATTERN "${LIB_DIR_NAME}/${PROJECT_NAME}/lib*.so" EXCLUDE PATTERN "${LIB_DIR_NAME}/${PROJECT_NAME}/*" PERMISSIONS OWNER_EXECUTE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ ) # Install binaries install( CODE "message( \"Installing binaries to ${BIN_INSTALL_DEST} from ${EXECUTABLE_OUTPUT_PATH}...\")" ) install( FILES ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME} DESTINATION ${BIN_INSTALL_DEST} PERMISSIONS OWNER_EXECUTE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ ) # Installation complete message install( CODE "message( \"Identity selector installed.\")" )