From 23c90675c09d4e2947b5a827a5ebcd5516c0270e Mon Sep 17 00:00:00 2001 From: christian mueller Date: Sun, 15 Jan 2012 12:37:58 +0100 Subject: * added package creation based on cpack * updated .gitignore --- CMakeLists.txt | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 95 insertions(+), 6 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 084d83f..07c6289 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,6 +46,9 @@ OPTION( WITH_PLUGIN_CONTROL OPTION( WITH_PLUGIN_ROUTING "Build routing pluings" ON) +OPTION( USE_BUILD_LIBS + "Sets the default path to the libs that are compiled with the AudioManager together. If turned off, the default location will be the one of the install path" OFF) + OPTION( WITH_MAIN "Build with daemon" ON) @@ -77,10 +80,17 @@ ENDIF(NOT DEFINED MAX_TELNETCONNECTIONS) SET(DLT_CONTEXT AudioManager) SET(PLUGINS_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin/plugins) - -SET(DEFAULT_PLUGIN_COMMAND_DIR "${PLUGINS_OUTPUT_PATH}/command") -SET(DEFAULT_PLUGIN_ROUTING_DIR "${PLUGINS_OUTPUT_PATH}/routing") -SET(CONTROLLER_PLUGIN "${PLUGINS_OUTPUT_PATH}/control/libPluginControlInterface.so") +SET(LIB_INSTALL_SUFFIX "audioManager") + +if(USE_BUILD_LIBS) + SET(DEFAULT_PLUGIN_COMMAND_DIR "${PLUGINS_OUTPUT_PATH}/command") + SET(DEFAULT_PLUGIN_ROUTING_DIR "${PLUGINS_OUTPUT_PATH}/routing") + SET(CONTROLLER_PLUGIN "${PLUGINS_OUTPUT_PATH}/control/libPluginControlInterface.so") +else(USE_BUILD_LIBS) + SET(DEFAULT_PLUGIN_COMMAND_DIR "${CMAKE_INSTALL_PREFIX}/lib/${LIB_INSTALL_SUFFIX}/command") + SET(DEFAULT_PLUGIN_ROUTING_DIR "${CMAKE_INSTALL_PREFIX}/lib/${LIB_INSTALL_SUFFIX}/routing") + SET(CONTROLLER_PLUGIN "${CMAKE_INSTALL_PREFIX}/lib/${LIB_INSTALL_SUFFIX}/control/libPluginControlInterface.so") +endif(USE_BUILD_LIBS) SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake) SET(AUDIO_INCLUDES_FOLDER ${CMAKE_SOURCE_DIR}/includes) @@ -105,7 +115,7 @@ IF(WITH_DOCUMENTATION) ) ENDIF(WITH_DOCUMENTATION) -##global build flags +##global build flags set(CPACK_RPM_COMPONENT_INSTALL ON) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall -Wextra -std=c++98 -D_GNU_SOURCE") if(WITH_PLUGIN_COMMAND) @@ -134,7 +144,86 @@ configure_file( add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) +# Here starts package creation +SET(CPACK_SET_DESTDIR ON) +SET(CPACK_OUTPUT_FILE_PREFIX ${CMAKE_SOURCE_DIR}/packages) +SET(CPACK_GENERATOR "DEB") +SET(CPACK_PACKAGE_NAME "AudioManager") +SET(CPACK_PACKAGE_VENDOR "GENIVI") +SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "AudioManager: This component manages audio in the GENIVI context") +SET(CPACK_PACKAGE_VERSION "${DAEMONVERSION}") +SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENCE) +SET(CPACK_RESOURCE_FILE_README ${CMAKE_SOURCE_DIR}/README) +SET(CPACK_PACKAGE_CONTACT "Christian Mueller (BMW) christian.ei.mueller@bmw.de") +SET(CPACK_PACKAGE_INSTALL_DIRECTORY "genivi") +SET(CPACK_DEBIAN_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR}) +SET(CPACK_DEBIAN_PACKAGE_DEPENDS "*") +SET(CPACK_STRIP_FILES TRUE) +SET(CPACK_PACKAGE_DESCRIPTION_FILE ${CMAKE_SOURCE_DIR}/README) +SET(CPACK_SOURCE_GENERATOR "TGZ") +SET(CPACK_SOURCE_IGNORE_FILES ".settings*" ".cproject" ".project" "/\\\\.metadata" "\\\\.#" "/#" ".*~" "/\\\\.git" "${CMAKE_CURRENT_BINARY_DIR}" "bin/" "packages/" "config.h") + +#evaluate the properties +get_property(ADD_DEPEND GLOBAL PROPERTY bin_prop) +list(REMOVE_DUPLICATES ADD_DEPEND) +set(ALL_DEPEND ${ADD_DEPEND}) +FOREACH (dep ${ADD_DEPEND}) + SET(bin_DEPENDENCIES "${dep} ,${bin_DEPENDENCIES}") +ENDFOREACH(dep) +STRING(REGEX REPLACE ".$" "" bin_DEPENDENCIES ${bin_DEPENDENCIES}) + +get_property(ADD_DEPEND GLOBAL PROPERTY sampleplugins_prop) +list(REMOVE_DUPLICATES ADD_DEPEND) +list(APPEND ALL_DEPEND ${ADD_DEPEND}) +FOREACH (dep ${ADD_DEPEND}) + SET(sampleplugins_DEPENDENCIES "${dep} ,${sampleplugins_DEPENDENCIES}") +ENDFOREACH(dep) +STRING(REGEX REPLACE ".$" "" sampleplugins_DEPENDENCIES ${sampleplugins_DEPENDENCIES}) + +get_property(ADD_DEPEND GLOBAL PROPERTY tests_prop) +list(REMOVE_DUPLICATES ADD_DEPEND) +list(APPEND ALL_DEPEND ${ADD_DEPEND}) +FOREACH (dep ${ADD_DEPEND}) + SET(tests_DEPENDENCIES "${dep} ,${tests_DEPENDENCIES}") +ENDFOREACH(dep) +STRING(REGEX REPLACE ".$" "" tests_DEPENDENCIES ${tests_DEPENDENCIES}) + +get_property(ADD_DEPEND GLOBAL PROPERTY dev_prop) +list(REMOVE_DUPLICATES ADD_DEPEND) +list(APPEND ALL_DEPEND ${ADD_DEPEND}) +FOREACH (dep ${ADD_DEPEND}) + SET(dev_DEPENDENCIES "${dep} ,${dev_DEPENDENCIES}") +ENDFOREACH(dep) +STRING(REGEX REPLACE ".$" "" dev_DEPENDENCIES ${dev_DEPENDENCIES}) + +list(REMOVE_DUPLICATES ALL_DEPEND) +FOREACH (dep ${ALL_DEPEND}) + SET(all_DEPENDENCIES "${dep} ,${all_DEPENDENCIES}") +ENDFOREACH(dep) +STRING(REGEX REPLACE ".$" "" all_DEPENDENCIES ${all_DEPENDENCIES}) +execute_process(COMMAND cp ${CMAKE_MODULE_PATH}/add_package_dependencies.sh ${CMAKE_CURRENT_BINARY_DIR}) + +#component based dep package generation is only supported above 2.8.5 +IF (${CMAKE_VERSION} VERSION_GREATER 2.8.4) + + SET(CPACK_COMPONENTS_ALL bin sampleplugins tests dev) + SET(CPACK_COMPONENTS_IGNORE_GROUPS 1) + SET(CPACK_RPM_COMPONENT_INSTALL ON) + SET(CPACK_DEB_COMPONENT_INSTALL ON) + ADD_CUSTOM_TARGET(genivi_package + COMMAND make package + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/add_package_dependencies.sh ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-Linux-bin.deb ${CPACK_OUTPUT_FILE_PREFIX} \"${bin_DEPENDENCIES}\" + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/add_package_dependencies.sh ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-Linux-sampleplugins.deb ${CPACK_OUTPUT_FILE_PREFIX} \"${sampleplugins_DEPENDENCIES}\" + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/add_package_dependencies.sh ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-Linux-tests.deb ${CPACK_OUTPUT_FILE_PREFIX} \"${tests_DEPENDENCIES}\" + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/add_package_dependencies.sh ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-Linux-dev.deb ${CPACK_OUTPUT_FILE_PREFIX} \"${dev_DEPENDENCIES}\" + ) +ELSE (${CMAKE_VERSION} VERSION_GREATER 2.8.4) + ADD_CUSTOM_TARGET(genivi_package + COMMAND make package + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/add_package_dependencies.sh ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-Linux.deb ${CPACK_OUTPUT_FILE_PREFIX} \"${all_DEPENDENCIES}\" + ) +ENDIF (${CMAKE_VERSION} VERSION_GREATER 2.8.4) - +INCLUDE(CPack) -- cgit v1.2.1