X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=cmake%2Fcmake.d%2F03-extra_targets.cmake;h=f6a2915d3c9863ab33491d50aa303caf857c22ab;hb=be6f910e826ad46b2f5cd908a35153b13649677d;hp=fe9358a3b43ad39e6739a4181129a20e2fc72dc6;hpb=a8103b6f53a89fcbaeea225ab1a4d6624b242176;p=apps%2Fapp-templates.git diff --git a/cmake/cmake.d/03-extra_targets.cmake b/cmake/cmake.d/03-extra_targets.cmake index fe9358a..f6a2915 100644 --- a/cmake/cmake.d/03-extra_targets.cmake +++ b/cmake/cmake.d/03-extra_targets.cmake @@ -21,7 +21,7 @@ #-------------------------------------------------------------------------- # WARNING: # Do not change this cmake template -# Customise your preferences in "./etc/config.cmake" +# Customise your preferences in "./conf.d/cmake/config.cmake" #-------------------------------------------------------------------------- # Add a dummy target to enable global dependency order @@ -54,87 +54,82 @@ add_custom_command(OUTPUT ${ARCHIVE_OUTPUT} ) add_custom_target(archive DEPENDS ${ARCHIVE_OUTPUT}) - #Format Build require package - foreach (PKG_CONFIG ${PKG_REQUIRED_LIST}) - #Unset TMP variable - unset(XPREFIX) - unset(XRULE) - unset(RPM_EXTRA_DEP) - unset(DEB_EXTRA_DEP) - #For deb package,add EOL format only for a new line - if(DEB_PKG_DEPS) - set(DEB_PKG_DEPS "${DEB_PKG_DEPS},\n") - endif() - #Get pkg-config rule on version - string(REGEX REPLACE "[<>]?=.*$" "" XPREFIX ${PKG_CONFIG}) - string(REGEX MATCH "[<>]?=" XRULE ${PKG_CONFIG}) - #Only if pkg-config has rule on version - if(XRULE) - string(REGEX REPLACE ".*[<>]?=" "" XVERS ${PKG_CONFIG}) - set(RPM_EXTRA_DEP " ${XRULE} ${XVERS}") - set(DEB_EXTRA_DEP " (${XRULE} ${XVERS})") - endif() - #Format for rpm package - set(RPM_PKG_DEPS "${RPM_PKG_DEPS}BuildRequires: pkgconfig(${XPREFIX})${RPM_EXTRA_DEP}\n") - #Format for deb package - #Because the tool "dpkg" is used on the packages db to find the - #package providing the pkg-cong file ${XPREFIX}.pc, we need - #to test the OS release package type - if( OSRELEASE MATCHES "debian" ) - execute_process( - COMMAND dpkg -S *${XPREFIX}.pc - OUTPUT_VARIABLE TMP_PKG_BIN - ) - #Need to be harden check - string(REGEX REPLACE ":.*$" "" PKG_BIN ${TMP_PKG_BIN}) - set(DEB_PKG_DEPS "${DEB_PKG_DEPS} ${PKG_BIN} ${DEB_EXTRA_DEP}") - endif() - endforeach() - - if(NOT EXISTS ${RPM_TEMPLATE_DIR}/rpm-config.spec.in) - MESSAGE(FATAL_ERROR "${Red}Missing mandatory files: you need rpm-config.spec.in in ${RPM_TEMPLATE_DIR} folder.${ColourReset}") - endif() - set(PACKAGING_SPEC_OUTPUT ${PROJECT_PKG_ENTRY_POINT}/${NPKG_PROJECT_NAME}.spec) -add_custom_command(OUTPUT ${PACKAGING_SPEC_OUTPUT} - COMMAND ${CMAKE_COMMAND} -DINFILE=${RPM_TEMPLATE_DIR}/rpm-config.spec.in -DOUTFILE=${PACKAGING_SPEC_OUTPUT} -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake - ) - # ---------------------------------------------------------------------------- # Packaging target # ---------------------------------------------------------------------------- -#Because the tool "dpkg" is used on the packages db to find the -#package providing the pkg-cong file ${XPREFIX}.pc, we need -#to test the OS release package type -if(OSRELEASE MATCHES "debian") - add_custom_command(OUTPUT ${PACKAGING_DEB_OUTPUT_DSC} - ${PACKAGING_DEB_OUTPUT_INSTALL} - ${PACKAGING_DEB_OUTPUT_CHANGELOG} - ${PACKAGING_DEB_OUTPUT_COMPAT} - ${PACKAGING_DEB_OUTPUT_CONTROL} - ${PACKAGING_DEB_OUTPUT_RULES} - COMMAND ${CMAKE_COMMAND} -DINFILE=${DEB_TEMPLATE_DIR}/debian.compat.in -DOUTFILE=${PACKAGING_DEB_OUTPUT_COMPAT} -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake - COMMAND ${CMAKE_COMMAND} -DINFILE=${DEB_TEMPLATE_DIR}/debian.changelog.in -DOUTFILE=${PACKAGING_DEB_OUTPUT_CHANGELOG} -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake - COMMAND ${CMAKE_COMMAND} -DINFILE=${DEB_TEMPLATE_DIR}/deb-config.dsc.in -DOUTFILE=${PACKAGING_DEB_OUTPUT_DSC} -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake - COMMAND ${CMAKE_COMMAND} -DINFILE=${DEB_TEMPLATE_DIR}/deb-config.install.in -DOUTFILE=${PACKAGING_DEB_OUTPUT_INSTALL} -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake - COMMAND ${CMAKE_COMMAND} -DINFILE=${DEB_TEMPLATE_DIR}/debian.control.in -DOUTFILE=${PACKAGING_DEB_OUTPUT_CONTROL} -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake - COMMAND ${CMAKE_COMMAND} -DINFILE=${DEB_TEMPLATE_DIR}/debian.rules.in -DOUTFILE=${PACKAGING_DEB_OUTPUT_RULES} -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake +#Format Build require package +foreach (PKG_CONFIG ${PKG_REQUIRED_LIST}) + #Unset TMP variable + unset(XPREFIX) + unset(XRULE) + unset(RPM_EXTRA_DEP) + unset(DEB_EXTRA_DEP) + #For deb package,add EOL format only for a new line + if(DEB_PKG_DEPS) + set(DEB_PKG_DEPS "${DEB_PKG_DEPS},\n") + endif() + #Get pkg-config rule on version + string(REGEX REPLACE "[<>]?=.*$" "" XPREFIX ${PKG_CONFIG}) + string(REGEX MATCH "[<>]?=" XRULE ${PKG_CONFIG}) + #Only if pkg-config has rule on version + if(XRULE) + string(REGEX REPLACE ".*[<>]?=" "" XVERS ${PKG_CONFIG}) + set(RPM_EXTRA_DEP " ${XRULE} ${XVERS}") + set(DEB_EXTRA_DEP " (${XRULE} ${XVERS})") + endif() + # Format for rpm package + set(RPM_PKG_DEPS "${RPM_PKG_DEPS}BuildRequires: pkgconfig(${XPREFIX})${RPM_EXTRA_DEP}\n") + + # Format for deb package + # Because the tool "dpkg" is used on the packages db to find the + # package providing the pkg-cong file ${XPREFIX}.pc, we need + # to test the OS release package type + # Only doable within a native environment not under SDK + if( OSRELEASE MATCHES "debian" AND NOT DEFINED ENV{SDKTARGETSYSROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE) + execute_process( + COMMAND dpkg -S *${XPREFIX}.pc + OUTPUT_VARIABLE TMP_PKG_BIN + ) + #Need to be harden check + string(REGEX REPLACE ":.*$" "" PKG_BIN ${TMP_PKG_BIN}) + set(DEB_PKG_DEPS "${DEB_PKG_DEPS} ${PKG_BIN} ${DEB_EXTRA_DEP}") + endif() +endforeach() + +if(NOT EXISTS ${RPM_TEMPLATE_DIR}/rpm-config.spec.in) + MESSAGE(FATAL_ERROR "${Red}Missing mandatory files: you need rpm-config.spec.in in ${RPM_TEMPLATE_DIR} folder.${ColourReset}") +endif() + +# Because the tool "dpkg" is used on the packages db to find the +# package providing the pkg-cong file ${XPREFIX}.pc, we need +# to test the OS release package type +# Only doable within a native environment not under SDK +if(OSRELEASE MATCHES "debian" AND NOT DEFINED ENV{SDKTARGETSYSROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE) + add_custom_target(packaging_deb DEPENDS ${DEB_TEMPLATE_DIR}/debian.compat.in + ${DEB_TEMPLATE_DIR}/debian.changelog.in + ${DEB_TEMPLATE_DIR}/deb-config.dsc.in + ${DEB_TEMPLATE_DIR}/deb-config.install.in + ${DEB_TEMPLATE_DIR}/debian.control.in + ${DEB_TEMPLATE_DIR}/debian.rules.in + COMMAND ${CMAKE_COMMAND} -DINFILE=${DEB_TEMPLATE_DIR}/debian.compat.in -DOUTFILE=${PACKAGING_DEB_OUTPUT_COMPAT} -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake + COMMAND ${CMAKE_COMMAND} -DINFILE=${DEB_TEMPLATE_DIR}/debian.changelog.in -DOUTFILE=${PACKAGING_DEB_OUTPUT_CHANGELOG} -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake + COMMAND ${CMAKE_COMMAND} -DINFILE=${DEB_TEMPLATE_DIR}/deb-config.dsc.in -DOUTFILE=${PACKAGING_DEB_OUTPUT_DSC} -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake + COMMAND ${CMAKE_COMMAND} -DINFILE=${DEB_TEMPLATE_DIR}/deb-config.install.in -DOUTFILE=${PACKAGING_DEB_OUTPUT_INSTALL} -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake + COMMAND ${CMAKE_COMMAND} -DINFILE=${DEB_TEMPLATE_DIR}/debian.control.in -DOUTFILE=${PACKAGING_DEB_OUTPUT_CONTROL} -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake + COMMAND ${CMAKE_COMMAND} -DINFILE=${DEB_TEMPLATE_DIR}/debian.rules.in -DOUTFILE=${PACKAGING_DEB_OUTPUT_RULES} -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake ) - add_custom_target(packaging_deb DEPENDS ${PACKAGING_DEB_OUTPUT_DSC} - ${PACKAGING_DEB_OUTPUT_INSTALL} - ${PACKAGING_DEB_OUTPUT_CHANGELOG} - ${PACKAGING_DEB_OUTPUT_COMPAT} - ${PACKAGING_DEB_OUTPUT_CONTROL} - ${PACKAGING_DEB_OUTPUT_CONTROL} - ${PACKAGING_DEB_OUTPUT_RULES}) endif() add_custom_target(packaging) -add_custom_target(packaging_rpm DEPENDS ${PACKAGING_SPEC_OUTPUT}) +set(PACKAGING_SPEC_OUTPUT ${PROJECT_PKG_ENTRY_POINT}/${NPKG_PROJECT_NAME}.spec) +add_custom_target(packaging_rpm DEPENDS ${RPM_TEMPLATE_DIR}/rpm-config.spec.in + COMMAND ${CMAKE_COMMAND} -DINFILE=${RPM_TEMPLATE_DIR}/rpm-config.spec.in -DOUTFILE=${PACKAGING_SPEC_OUTPUT} -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake +) add_dependencies(packaging packaging_rpm) if(TARGET packaging_wgt) add_dependencies(packaging packaging_wgt) endif() -if(OSRELEASE MATCHES "debian") +if(OSRELEASE MATCHES "debian" AND NOT DEFINED ENV{SDKTARGETSYSROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE) # Target to add dependencies indirectly to "packaging" target. add_dependencies(packaging packaging_deb) endif() @@ -160,12 +155,8 @@ endforeach() # Autobuild target # ---------------------------------------------------------------------------- -add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/conf.d/autobuild/agl/autobuild - ${CMAKE_SOURCE_DIR}/conf.d/autobuild/linux/autobuild - COMMAND ${CMAKE_COMMAND} -DINFILE=${PROJECT_APP_TEMPLATES_DIR}/autobuild/agl/autobuild.in -DOUTFILE=${CMAKE_SOURCE_DIR}/conf.d/autobuild/agl/autobuild -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake - COMMAND ${CMAKE_COMMAND} -DINFILE=${PROJECT_APP_TEMPLATES_DIR}/autobuild/agl/autobuild.in -DOUTFILE=${CMAKE_SOURCE_DIR}/conf.d/autobuild/linux/autobuild -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake - COMMAND rsync -azp ${CMAKE_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/autobuild ${CMAKE_SOURCE_DIR}/conf.d - ) - -add_custom_target(autobuild ALL DEPENDS ${CMAKE_SOURCE_DIR}/conf.d/autobuild/agl/autobuild - ${CMAKE_SOURCE_DIR}/conf.d/autobuild/linux/autobuild) \ No newline at end of file +add_custom_target(autobuild ALL DEPENDS ${CMAKE_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/autobuild/agl/autobuild.in + ${CMAKE_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/autobuild/linux/autobuild.in + COMMAND ${CMAKE_COMMAND} -DINFILE=${CMAKE_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/autobuild/agl/autobuild.in -DOUTFILE=${PROJECT_TEMPLATE_AGL_AUTOBUILD_DIR}/autobuild -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake + COMMAND ${CMAKE_COMMAND} -DINFILE=${CMAKE_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/autobuild/agl/autobuild.in -DOUTFILE=${PROJECT_TEMPLATE_LINUX_AUTOBUILD_DIR}/autobuild -DPROJECT_BINARY_DIR=${CMAKE_CURRENT_BINARY_DIR} -P ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_APP_TEMPLATES_DIR}/cmake/configure_file.cmake +)