cmake-fedora-2.7.2-Source/RELEASE-NOTES.txt000664 001750 001750 00000000415 13052713066 020216 0ustar00dchendchen000000 000000 PRJ_VER=2.7.2 SUMMARY=Fix for f26-pending REDHAT_BUGZILLA=1424757 [Changes] - Changes: + koji-build-scratch is now back to use koji build --scratch - Bugs: + Fixed Bug 1424757 - cmake-fedora: failed to handle f26-pending + Fixed fedpkg --dist depreciate warning cmake-fedora-2.7.2-Source/CMakeLists.txt000664 001750 001750 00000013066 12755350002 020251 0ustar00dchendchen000000 000000 cmake_minimum_required(VERSION 2.6.2) # Included scripts do automatic cmake_policy PUSH and POP. # OLD: CMake policy in included script will affect the invoker. # CMAKE_POLICY(SET CMP0011 OLD) LIST(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/Modules) INCLUDE(ManageEnvironmentCommon RESULT_VARIABLE MANAGE_ENVIRONMENT_PATH) GET_FILENAME_COMPONENT(CMAKE_FEDORA_MODULE_DIR "${MANAGE_ENVIRONMENT_PATH}" PATH CACHE ) # Whether to build on fedora SET(CMAKE_FEDORA_ENABLE_FEDORA_BUILD "1" CACHE STRING "Enable fedora build" FORCE) #################################################################### # Project specific information # PROJECT(cmake-fedora NONE) SET(PRJ_SUMMARY "CMake helper modules for fedora developers") SET(PRJ_DESCRIPTION "cmake-fedora consist a set of cmake modules that provides helper macros and targets for fedora developers." ) SET(AUTHORS "Ding-Yi Chen") SET(MAINTAINER "Ding-Yi Chen ") SET(VENDOR "Red Hat, APAC, Inc.") SET(LICENSE BSD) SET(PRJ_GROUP "System Environment/Libraries") SET(BUILD_ARCH "noarch") SET(RPM_SPEC_URL "https://fedorahosted.org/%{name}/") SET(RPM_SPEC_SOURCES "https://fedorahosted.org/releases/c/m/%{name}/%{name}-%{version}-Source.tar.gz") #################################################################### # Includes # INCLUDE(ManageEnvironment) INCLUDE(ManageArchive) INCLUDE(ManageVersion) RELEASE_NOTES_READ_FILE() INCLUDE(ManageDependency) INCLUDE(ManageFile) INCLUDE(ManageSourceVersionControl) INCLUDE(ManageTarget) INCLUDE(ManageUninstall) ENABLE_TESTING() #################################################################### # Dependencies # ## Requires MANAGE_DEPENDENCY(REQUIRES CMAKE VER "2.6.2") MANAGE_DEPENDENCY(REQUIRES GIT) MANAGE_DEPENDENCY(REQUIRES BODHI-CLIENT) MANAGE_DEPENDENCY(REQUIRES KOJI) MANAGE_DEPENDENCY(REQUIRES RPM-BUILD) MANAGE_DEPENDENCY(REQUIRES FEDPKG) MANAGE_DEPENDENCY(REQUIRES FEDORA-PACKAGER) MANAGE_DEPENDENCY(REQUIRES CURL) MANAGE_DEPENDENCY(REQUIRES PACKAGEDB-CLI) ## Build requires MANAGE_DEPENDENCY(BUILD_REQUIRES CMAKE VER "2.6.2" REQUIRED) MANAGE_DEPENDENCY(BUILD_REQUIRES KOJI REQUIRED) #################################################################### # Building # #################################################################### # Installing # INSTALL(FILES AUTHORS README ChangeLog COPYING DESTINATION ${PRJ_DOC_DIR} ) INSTALL(FILES cmake-fedora.conf DESTINATION ${SYSCONF_DIR} ) ADD_SUBDIRECTORY(Modules) ADD_SUBDIRECTORY(scripts) ADD_SUBDIRECTORY(Templates) MANAGE_SOURCE_VERSION_CONTROL_GIT() #################################################################### # Packing # ADD_CUSTOM_TARGET(test_all COMMAND ctest -C Debug --output-on-failure COMMENT "ctest: Run tests" ) ADD_DEPENDENCIES(pack_src_pre test_all) ## Pack Source SET(SOURCE_ARCHIVE_DIR ${CMAKE_BINARY_DIR}/SOURCES CACHE PATH "Source Archive Dir") PACK_SOURCE_ARCHIVE("${SOURCE_ARCHIVE_DIR}" GITIGNORE ${CMAKE_SOURCE_DIR}/.gitignore ) IF(CMAKE_FEDORA_ENABLE_FEDORA_BUILD) SET(RPM_BUILD_SOURCES ${SOURCE_ARCHIVE_DIR}) INCLUDE(ManageRPM) RPM_SPEC_STRING_ADD_DIRECTIVE(RPM_SPEC_SCRIPT_OUTPUT check "" "ctest --output-on-failure") PACK_RPM(SPEC_IN "Templates/fedora/project.spec.in") RPM_MOCK_BUILD() ENDIF(CMAKE_FEDORA_ENABLE_FEDORA_BUILD) #################################################################### # Hosting # INCLUDE(ManageUpload) ADD_CUSTOM_TARGET(upload COMMENT "Uploading all files" ) MANAGE_UPLOAD_FEDORAHOSTED(upload_fedorahosted_src) ADD_DEPENDENCIES(upload upload_fedorahosted_src) #################################################################### # Custom # # Module-only tarballs INCLUDE(ManageTarget) SET(MODULE_ONLY_ARCHIVE ${PROJECT_NAME}-${PRJ_VER}-modules-only.tar.gz) SET(MODULE_ONLY_LATEST_ARCHIVE ${PROJECT_NAME}-modules-only-latest.tar.gz) ADD_CUSTOM_TARGET_COMMAND(module-only OUTPUT ${MODULE_ONLY_ARCHIVE} ${MODULE_ONLY_LATEST_ARCHIVE} COMMAND tar --exclude=.* -czvf ${MODULE_ONLY_ARCHIVE} Modules/*.cmake Modules/*.cmake.in COMMAND ln -sf ${MODULE_ONLY_ARCHIVE} ${MODULE_ONLY_LATEST_ARCHIVE} ) MANAGE_UPLOAD_FEDORAHOSTED(upload_fedorahosted_modules UPLOAD_FILES ${MODULE_ONLY_ARCHIVE} ${MODULE_ONLY_LATEST_ARCHIVE} ) ADD_DEPENDENCIES(upload upload_fedorahosted_modules) #################################################################### # Release # ADD_DEPENDENCIES(upload tag_push) INCLUDE(ManageRelease) IF(CMAKE_FEDORA_ENABLE_FEDORA_BUILD) INCLUDE(ManageReleaseFedora) RELEASE_FEDORA(fedora epel7 el6) # "Off" Warning is displayed if mock is not installed. MANAGE_RELEASE(upload tag_push release_fedora) ELSE(CMAKE_FEDORA_ENABLE_FEDORA_BUILD) MANAGE_RELEASE(upload tag_push) ENDIF(CMAKE_FEDORA_ENABLE_FEDORA_BUILD) #################################################################### # Test Suites. # ADD_TEST("ManageString" ctest -S test/testManageString.cmake) ADD_TEST("ManageVariable" ctest -S test/testManageVariable.cmake) ADD_TEST("ManageFile" ctest -S test/testManageFile.cmake) ADD_TEST("ManageTranslation" ctest -S test/testManageTranslation.cmake) ADD_TEST("CmakeFedoraScript" ctest -S test/testCmakeFedoraScript.cmake) ADD_TEST("CmakeFedoraKoji" ctest -S test/testCmakeFedoraKoji.cmake) ADD_TEST("CmakeFedoraFedpkg" ctest -S test/testCmakeFedoraFedpkg.cmake) IF(CMAKE_VERSION VERSION_GREATER 2.8.0) ## Use cmake ADD_TEST(NAME "ManageZanata" CONFIGURATIONS "Debug" COMMAND ctest -S test/testManageZanata.cmake) ADD_TEST(NAME "cmake-fedora-newprj" CONFIGURATIONS "Debug" COMMAND ctest -S test/testCmakeFedoraNewprj.cmake ) ENDIF(CMAKE_VERSION VERSION_GREATER 2.8.0) cmake-fedora-2.7.2-Source/AUTHORS000664 001750 001750 00000000061 12356726440 016562 0ustar00dchendchen000000 000000 Main author: Ding-Yi Chen cmake-fedora-2.7.2-Source/.gitignore000664 001750 001750 00000000511 12622260213 017465 0ustar00dchendchen000000 000000 *.sw[nop] *.o *.old *.orig *.so *~ CMakeCache.txt CMakeFiles/ cmake_*install.cmake CPack*Config.cmake _CPack_Packages/ CTestTestfile.cmake Testing/ install_manifest.txt Makefile *.gmo *.la *.lo *.loT *NO_PACK* SPECS/ RPMS/ SRPMS/ BUILD/ BUILDROOT/ SOURCES/ tags debug*s.list FedPkg bodhi.template *.tar.gz DEADJOE test/projects/ cmake-fedora-2.7.2-Source/ChangeLog000664 001750 001750 00000056151 13052713201 017260 0ustar00dchendchen000000 000000 * Tue Feb 21 2017 Ding-Yi Chen - 2.7.2 - Changes: + koji-build-scratch is now back to use koji build --scratch - Bugs: + Fixed Bug 1424757 - cmake-fedora: failed to handle f26-pending + Fixed fedpkg --dist depreciate warning * Fri Aug 19 2016 Ding-Yi Chen - 2.7.1 - Bugs: + cmake-fedora-fedpkg: fix when git change is at staging, but not committed yet. * Wed Aug 17 2016 Ding-Yi Chen - 2.7.0 - Enhancement: + cmake-fedora-reset: The program that clean and reset the build environment - Bugs: + Fixed Bug 1367656 - cmake-fedora-fedpkg: failed when commit is clean * Thu Feb 25 2016 Ding-Yi Chen - 2.6.0 - Enhancement: * ManageTranslation: MANAGE_POT_FILE: new options DOMAIN_NAME, MO_LOCALE_DIR - Bug fix: * cmake-fedora-zanata: remove debug message * ManageTranslate: failed to generate pot targets when MANAGE_TRANSLATION_GETTEXT_POT_FILES is not empty. * Fri Jan 29 2016 Ding-Yi Chen - 2.5.1 - Fixed: * Out-of-the-source build for ibus-chewing * Wed Jan 06 2016 Ding-Yi Chen - 2.5.0 - Enhancement: * New Target: changelog_no_force: Does not update ChangeLog if RELEASE-NOTES.txt is newer than ChangeLog. - Fixed: * MANAGE_ZANATA: Error message that missing right bracket. Thanks ChangZhu Chen for pointing it out. * Bug 1295278 - cmake-fedora: failed to update version when CMakeCache.txt is newer than RELEASE-NOTES.txt * Fri Dec 18 2015 Ding-Yi Chen - 2.4.4 - Removed: * Target: commit_clean and tag_not_exist. The functionality move to tag file instead. - Changed: * Target changelog does not need to depend on refresh_cmake_cache because ManageChangeLogScript does it already - Fixed: * MANAGE_ZANATA: Error message that missing right bracket * Mon Nov 02 2015 Ding-Yi Chen - 2.4.3 - Enhancement: * New scripts: cmake-fedora-pkgdb, cmake-fedora-zanata * New target: - refresh_cmake_cache: Remove the old cache and rebuild the new cache. - Fixed: * Resolves: RHBZ 1194797: find -printf is not portable - Changed: * Support zanata-server and zanata-client 3.7. * Add additional path to cmake-fedora.conf * cmake-fedora.conf: Remove bodhi branch, use whatever cmake-fedora-pkgdb found. * ManageFile: New function: MANAGE_FILE_COMMON_DIR * ManageString: Macro to function: STRING_UNQUOTE * koji-build-scratch: Use fedpkg backend instead * cmake-fedora-fedpkg: Fix * Thu Dec 11 2014 Ding-Yi Chen - 2.3.4 - Fixed RHBZ 1144906 - cmake-fedora failed to build target pot_files if the .pot file not exists. - ManageDependency: Now able to assign multiple PKG_CONFIG files. - ManageGConf: Added "Variables to cache". - cmake-fedora.conf: el7 and fc21 is now available in bodhi. - ManageRPMScript: Fixed the mo file handling. - ManageZanata: Use /usr/share/locale as SYSTEM_LOCALE source instead. * Mon Sep 22 2014 Ding-Yi Chen - 2.3.1 - Fixed RHBZ 1144906 - cmake-fedora failed to build target pot_files if the .pot file not exists. - ManageDependency: var_CFLAGS and var_LIBS are also cached. - ManageDependency: var_INCLUDEDIR also includes directories from var_CFLAGS. - ManageGConf: Added "Variables to cache". - cmake-fedora.conf: el7 and fc21 is now available in bodhi. * Tue Aug 26 2014 Ding-Yi Chen - 2.3.0 - cmake-fedora-fedpkg: fix try_command - ManageChangeLogScript: New command "make" * Mon Aug 25 2014 Ding-Yi Chen - 2.2.1 - ManageEnvironmentCommon: Module of variable for both normal and script mode. - ManageDependency: Make changes suitable for more generic *nix build. e.g. FEDORA_NAME -> PACKAGE_NAME - ManageZanata: MANAGE_ZANATA: New option CLEAN_ZANATA_XML. - Workaround for Bug 1115136, otherwise el7 won't work. * Fri Aug 15 2014 Ding-Yi Chen - 2.1.3 - Fixed cmake-fedora-fedpkg * Fri Aug 15 2014 Ding-Yi Chen - 2.1.2 - ManageVariable: CMAKE_FEDORA_CONF_GET_ALL_VARIABLES are now accepting the same parameters as SETTING_FILE_GET_ALL_VARIABLES - Fixed the bodhi push as Fedora-21 and EPEL-7 are not yet in bodhi. * Tue Aug 12 2014 Ding-Yi Chen - 2.1.1 - Fixed Bug 1002279 - Project configuration bugs when using cmake-fedora-newprj - cmake-fedora-newprj: Correct git repo URL - ManageZanata: Fix zanata.xml suggest countries. * Mon Aug 11 2014 Ding-Yi Chen - 2.1.0 - Fixed Bug 1093336 - date(1): -u is much portable than --utc - Fix EPEL 7 support. - Enhancement: + No need to use MAKE_INSTALL_* for rpm files section. INSTALL at any place works. + Better handling of ChangeLog: - ChangeLog will only invoked before make pack_src or make changelog. + find_lang and files -f .lang are added automatically when translations exists. + New targets: - dist: Produce the source archive file. This is in GNU Standard targets. + New modules: - CmakeFedoraScript: Scripts to be invoked in command line. - ManageChangeLogScript: Scripts for handling ChangeLog. - ManageRpmScript: RPM Scripts for handling RPM and SPEC. - ManageZanata: Zanata translation service. Split from ManageTranslation + New cache variables: - CMAKE_FEDORA_MODULE_DIR: cmake-fedora modules dir. + ManageFile: New function: MANAGE_CMAKE_FEDORA_CONF + ManageFile: New function: MANAGE_FILE_CACHE + ManageFile: New function: MANAGE_FILE_EXPIRY + ManageGConf: New macro: MANAGE_GCONF_SCHEMAS + ManageMessage: New function: M_OUT + ManageVariable: New macro: CMAKE_FEDORA_CONF_GET_ALL_VARIABLES + ManageString: New function: STRING_ESCAPE_BACKSLASH + ManageString: New function: STRING_ESCAPE_DOLLAR + ManageString: New function: STRING_ESCAPE_QUOTE + ManageTranslate: New function: ADD_POT_FILE + Target rpmlint: rpmlint statistics are now combined. + cmake-fedora-fedpkg: Default is now build all active Fedora (including rawhide) and EPEL releases in fedpkg branches. - Removed: + cmake-fedora.conf.in is no longer needed. + TODO should be put in wiki. + Modules: - ManageInstall: This is no longer needed. + Targets: - changelog_prev_update: + Scripts: - cmake-fedora-functions is no longer needed. - cmake-fedora-changelog is no longer needed. + Variables: - PRJ_RPM_SPEC_FILE - Changed: + DateTimeFormat: Macro to function: TODAY + ManageAPIDOC: MANAGE_APIDOC_DOXYGEN: Macro to function. + ManageAPIDOC: MANAGE_APIDOC_DOXYGEN: Parameters changed. + ManageArchive: Only the files that are explicitly added to SOURCE_ARCHIVE_CONTENTS will be depended. + ManageFile: GIT_GLOB_TO_CMAKE_REGEX: Macro to function. + ManageString: STRING_ESCAPE_SEMICOLON: Macro to function. + ManageDependency: MANAGE_DEPENDENCY: Macro to function. + ManageRelease: MANAGE_RELEASE: Macro to function. + ManageRelease: MANAGE_RELEASE: Parameters changed. + ManageRPM: RPM_MOCK_BUILD: Parameters changed. + ManageSourceVersionControl: MANAGE_SOURCE_VERSION_CONTROL_GIT: - Macro to function - Parameters Changed + ManageSourceVersionControl: MANAGE_SOURCE_VERSION_CONTROL_HG: - Macro to function - Parameters Changed - Mark as experiment + ManageSourceVersionControl: MANAGE_SOURCE_VERSION_CONTROL_HG: - Macro to function - Parameters Changed - Mark as experiment + ManageTranslation: MANAGE_GETTEXT: - Macro to function - Parameters Changed + ManageUpload: For all marcos: - Macros are changed to function - Parameters has changed. + PRJ_DOC_DIR: Changed from docdir/- to docdir/ * Fri Feb 28 2014 Ding-Yi Chen - 1.3.0 - Fixed Bug 1002279 - Project configuration bugs when using cmake-fedora-newprj - Enhanced: + Support EPEL7 + New targets: pack_src_no_force. - Fixed: + cmake-fedora-newprj is fixed. * Sat Feb 01 2014 Ding-Yi Chen - 1.2.7 - Changed: + cmake-fedora.conf.in will also be searched if cmake-fedora.conf does not exist. + Target test is built before pack_src. * Fri Jan 31 2014 Ding-Yi Chen - 1.2.6 - Resolves Bug 1058631 - ManagePRM generate Broken defattr - Enhancement: + ManageTarget: ADD_CUSTOM_TARGET_COMMAND: NO_FORCE: new option. + Projects that includes cmake-fedora as submodule are no longer requires cmake-fedora.conf - Changed: + ManageTranslation: Fix po build + ManageRPM: Fix defattr + ManageReleaseFedora: - Helper scripts in CMAKE_SOURCE_DIR/cmake-fedora can also be located. - FedPkg default directory is changed to CMAKE_FEDORA_TMP_DIR/FedPkg * Thu Jan 09 2014 Ding-Yi Chen - 1.2.3 - Resolves Bug 1040333 - RFE: Suiport .gitignore file as source of CPACK_SOURCE_IGNORE_FILES - Resolves Bug 1046213 - RFE: RPM ChangeLog should be generated by newest build from koji - Enhancement: + ChangeLog.prev is no longer required. + RPM-ChangeLog.prev is provide by koji now. + cmake-fedora-koji: - new subcommand: newest-build and newest-changelog. + cmake-fedora-changelog: new script. + New targets: - tag_push: Push to git. + ManageFile: - Add absolute file support - MANAGE_FILE_INSTALL: Add TARGETS support. - MANAGE_FILE_INSTALL: Add RENAME support. - GIT_GLOB_TO_CMAKE_REGEX: Convert git glob to cmake regex + ManageArchive: - PACK_SOURCE_CPACK: Pack with CPack - PACK_SOURCE_ARCHIVE: Now can specify OUTPUT_FILE. - SOURCE_ARCHIVE_CONTENTS_ADD: Add file to source archive. - SOURCE_ARCHIVE_CONTENTS_ADD_NO_CHECK: Add file to source archive without checking. + ManageDependency: Manage dependencies. + ManageRPM: - PACK_RPM: New options: SPEC_IN and SPEC. - RPM_SPEC_STRING_ADD: Add a string to SPEC string. - RPM_SPEC_STRING_ADD_DIRECTIVE: Add a directive to SPEC string. - RPM_SPEC_STRING_ADD_TAG: Add a string to SPEC string. + ManageString: - STRING_APPEND: Append a string to a variable. - STRING_PADDING: Padding the string to specified length - STRING_PREPEND: Prepend a string to a variable. + ManageTranslation: - MANAGE_GETTEXT: + Can specify MSGFMT_OPTIONS and MSGMERGE_OPTIONS + Add gettext-devel to BUILD_REQUIRES. + ManageVariable: - VARIABLE_TO_ARGN: Merge the variable and options to the form of ARGN. + Cached variables: - RPM_SPEC_CMAKE_FLAG: cmake flags in rpm build. - RPM_SPEC_MAKE_FLAG: make flags in rpm build. - Changed Modules: + ManageArchive: - PACK_SOURCE_ARCHIVE: Can now pass either empty, outputDir, or source File. + ManageGConf2: Fixed. + ManageString: STRING_SPLIT: New Option: ALLOW_EMPTY + ManageRPM - Add support of pre, post, and preun + ManageVariable: - VARIABLE_PARSE_ARGN can now handle multiple-appeared options. - Changed: + CMake policy no longer enforced by default. + ManageString: STRING_SPLIT is changed from macro to function, so no need to put excessive backslashes. - Removed: + Target after_release_commit and related are no longer required and thus removed. * Mon Dec 23 2013 Ding-Yi Chen - 1.1.6 - Enhancement: + Fedora version will now automatically updated. + New macros: - VARIABLE_PARSE_ARGN: Parse the arguments. + New scripts: cmake-fedora-koji: Koji utilities. cmake-fedora-fedpkg: Fedpkg utilities. + Changed scripts: koji-build-scratch: fedora_1, fedora_2, epel_1, epel_2 can now be used as build scopes. + BODHI_UPDATE_TYPE is no longer required. + No need to manual edit project.spec.in + ADD_CUSTOM_TARGET_COMMAND now allow "ALL" - Bug Fixes: Resolves: Bug 879141 - Excessive quotation mark for target tag_pre Resolves: Bug 992069 - cmake-fedora: FTBFS in rawhide - Changed Modules + ManageUpload: - New macros: + MANAGE_UPLOAD_TARGET - Changed macros: + MANAGE_UPLOAD_SCP: parameter fileAlias replaced with targetName + MANAGE_UPLOAD_SFTP: parameter fileAlias replaced with targetName + MANAGE_UPLOAD_FEDORAHOSTED: parameter fileAlias replaced with targetName + MANAGE_UPLOAD_SOURCEFORGE: parameter fileAlias replaced with targetName - Removed macros: + MANAGE_UPLOAD_MAKE_TARGET + MANAGE_UPLOAD_CMD - Removed Directory: + /examples: as the examples can be found in /Templates/fedora - Removed Variables: + FEDORA_AUTO_KARMA - Removed Macros: + MANAGE_UPLOAD_MAKE_TARGET + MANAGE_UPLOAD_CMD - Removed Targets: + bodhi_new: Submit the package to bodhi + fedpkg__build: Build for tag + fedpkg__commit: Import, commit and push * Thu Nov 22 2012 Ding-Yi Chen - 1.0.5 - Fedora 18 support. - Source tarball filename is changed back to name-version-Source.tar.gz to avoid confusion between source generate by cmake-fedora (which contains ChangeLog and projectName.pot) and tarball generation service from hosting site (which does not contain generated files) - koji-build-scratch: rawhide build target does not always have suffix -candidate. - README updated. - TODO updated. * Fri Aug 17 2012 Ding-Yi Chen - 1.0.4 - Source tarball filename is now name-version.tar.gz instead of name-version-Source.tar.gz - after_release_commit depends rpm_changelog_prev_update if RPM supported enabled. - Corrected the 'FORCE' of cmake CACHE - Update the error messages when cmake-fedora is not installed. - Fixed target: zanata_push_trans. - Fixed zanata arguments. - fedpkg clone is now triggered if the clone directory does not exist when doing the fedpkg_commit, it no longer the listed OUTPUT of an ADD_CUSTOM_COMMAND. - Add target: translations as an universal easy target to generate/update translation files. * Mon Jul 23 2012 Ding-Yi Chen - 1.0.2 - Fixed after_release_commit * Sun Jul 22 2012 Ding-Yi Chen - 1.0.1 - Greatly simplified the modules design and usage. - Release version are now defined in cmake-fedora.conf for easy maintenance. - Fix the MANAGE_MESSAGE_LEVEL - koji scratch builds are run only once before tagging. - CVS support is removed. - New command: koji-build-scratch for scratch build on all supported releases. - New module: ManageTarget - New function: SETTING_STRING_GET_VARIABLE - New macro: + ADD_CUSTOM_TARGET_COMMAND + STRING_ESCAPE_SEMICOLON - Macros changed behavior: MANAGE_ZANATA: Arguments are changed. - Target changed: changelog_update are now separate as: + changelog_prev_update: Update ChangeLog.prev + rpm_changelog_prev_update: Update RPM-ChangeLog.prev - Command renamed: + cmake-fedora-newprj.sh to cmake-fedora-newprj - Module renamed: + ManageReleaseOnFedora to ManageReleaseFedora + ManageMaintainerTargets to ManageUpload + PackSource to ManageArchive + PackRPM to ManageRPM + UseGConf to ManageGConf + UseDoxygen to ManageAPIDoc - Function renamed: + LOAD_RELEASE_FILE to RELEASE_NOTES_READ_FILE - Macro renamed: + PACK_SOURCE to PACK_SOURCE_ARCHIVE + USE_MOCK to RPM_MOCK_BUILD + USE_DOXYGEN to MANAGE_APIDOC_DOXYGEN + USE_GETTEXT to MANAGE_GETTEXT + USE_ZANATA to MANAGE_ZANATA - Variable renamed: PACK_SOURCE_IGNORE_FILES to SOURCE_ARCHIVE_IGNORE_FILES - RELEASE_ON_FEDORA: support new tags: "fedora" for current fedora, and "epel" for current epel. - ChangeLog generation rewritten, target version_check no longer need. - Removed target: version_check - Variable Removed: FEDORA_NEXT_RELEASE FEDORA_NEXT_RELEASE_TAGS FEDORA_LATEST_RELEASE FEDORA_PREVIOUS_RELEASE * Tue Sep 20 2011 Ding-Yi Chen - 0.8.1 - Fixed Bug 738958 - cmake-fedora: remove excessive quotation marks for Precompile definition - Fixed Bug 733540 - cmake-fedora: "" should be read as empty string - ManageEnvironment: Now defined cmake_policy won't get overridden. - ManageString: STRING_UNQUOTE is now merely remove quote marks in the beginning and end of string. The string will not be changed otherwise. - UseUninstall has renamed as ManageUninstall - ManageMaintainerTargets: Reveal MAINTAINER_UPLOAD_COMMAND - ManageTranslation: Adopt zanata python client 1.3, arguments are redesigned. + Change target: from "translations" to "gmo_files" + Add targets: zanata_push, zanata_push_trans, zanata_pull_trans + Add argument: ALL_FOR_PUSH, ALL_FOR_PUSH_TRANS and ALL_FOR_PULL + Add argument: OPTIONS for passing arguments. - ManageReleaseOnFedora: Now default to build against candidate repos, unless _CANDIDATE_PREFERRED is set to "0". * Thu Aug 18 2011 Ding-Yi Chen - 0.7.994 - Fixed Bug 725615 - cmake-fedora: Use UTC for changelog - Fixed Bug 725617 - cmake-fedora: target 'tag' should stop when tag file exists. - Fixed Bug 733540 - cmake-fedora: "" should be read as empty string - Change behavior + STRING_UNQUOTE is now merely remove quote marks in the beginning and end of string. The string will not be changed otherwise. - Module CompileEnv.cmake is obsoleted by ManageEnvironment.cmake because it is what the variable actually store. - Revised ManageTranslation, now zanata.xml.in can be put to either CMAKE_SOURCE_DIR or CMAKE_CURRENT_SOURCE_DIR. - ManageReleaseOnFedora: + New Constants: FEDORA_NEXT_RELEASE_TAGS, FEDORA_SUPPORTED_RELEASE_TAGS. + Remove NORAWHIDE, as user can use TAGS to achieve the same. + Actually mkdir and clone project if the FedPkg directory is missing. - ManageTranslation: + Fixed zanata.xml path problem + Fixed zanata related targets. - New Variable: CMAKE_FEDORA_TMP_DIR for holding cmake-fedora files. + ChangeLog temporary files have moved to this directory. * Fri Jul 08 2011 Ding-Yi Chen - 0.7.1 - Target release now depends on upload. * Fri Jul 08 2011 Ding-Yi Chen - 0.7.0 - Fixed target: after_release_commit. - Add "INCLUDE(ManageRelease)" in template so new project will not get CMake command "MANAGE_RELEASE" - Corrected TODO. - Corrected ChangeLog.prev and SPECS/RPM-ChangeLog.prev. - By default, the CMAKE_INSTALL_PREFIX is set as '/usr'. * Wed Jul 06 2011 Ding-Yi Chen - 0.6.1 - Remove f13 from FEDORA_CURRENT_RELEASE_TAGS, as Fedora 13 is end of life. - ManageMessage: New module. + M_MSG: Controllable verbose output - ManageRelease: New module. + MANAGE_RELEASE: Make release by uploading files to hosting services - Now ManageReleaseOnFedora includes ManageMaintainerTargets - Modules are shown what they include and included by. - Now tag depends on koji_scratch_build, while fedpkg_commit master (or other primary branch) depends directly on tag. - MAINTAINER_SETTING_READ_FILE now can either use MAINTAINER_SETTING, or take one argument that define maintainer setting file. - MANAGE_MAINTAINER_TARGETS_UPLOAD no longer require argument hostService, It now relies on HOSTING_SERVICES from maintainer setting file. - Minimum cmake requirement is now raise to 2.6. - Targets which perform after release now have the prefix "after_release". * Wed Jun 08 2011 Ding-Yi Chen - 0.6.0 - Fixed Bug 684107 - [cmake-fedora] TAGS in USE_FEDPKG is ineffective. - ManageTranslation: + Renamed from UseGettext + New Macro: USE_ZANATA() - Zanata support (experiential). + New Macro: USE_GETTEXT() - Gettext support. This macro merges GETTEXT_CREATE_POT and GETTEXT_CREATE_TRANSLATIONS, to simplified the usage and make the macro names more consistent. - ManageReleaseOnFedora: + New Variable: FEDORA_EPEL_RELEASE_TAGS - Clean up Modules: No unrelated files under Modules/ - Removed debug messages of: CMAKE_MAJOR_VERSION, CMAKE_MINOR_VERSION. CMAKE_PATCH_VERSION, _cmake_uninstall_in, _koji_tags, _tags. * Sun Feb 27 2011 Ding-Yi Chen - 0.5.0 - Macro: RELEASE_ON_FEDORA added. - Target: release_on_fedora added. - Now has more informative error message, when cmake-fedora is not installed. - Fixed UseUninstall - Fixed Bug 670079 - [cmake-fedora] target "release" will not stop when koji build failed - Fixed Bug 671063 - [cmake-fedora] target "rpmlint" should not depend on "koji_scratch_build" - Protocol for hosting server should now be specified as "[Hosting]_PROTOCOL". - Refactoring ManageMaintainerTargets. - fedpkg and koji build for every tags are revealed. - Now set rawhide as f16, release dists are f15,f14,f13. - rpm build process is now refined, no unnecessary build. - Renamed target push_svc_tag to push_post_release. - Renamed module UseFedpkg to ManageReleaseOnFedora * Fri Jan 07 2011 Ding-Yi Chen - 0.4.0 - New target: release - New target: install_rpms - ./Module should precedes /usr/share/cmake/Modules, so it always use latest modules. - Fixed Reading a file that contains '\'. - Added Macro PACK_RPM_GET_ARCH - Added target install_rpms for bulk rpms installation. - Target rpm now uses -bb instead of -ba. - Target rpm now depends on srpm. - Source version control logic is split out as ManageSourceVersionControl - Module UseHostingService is renamed as ManageMaintainerTarget - Macro USE_HOSTING_SERVICE_READ_SETTING_FILE is renamed as MAINTAINER_SETTING_READ_FILE * Sun Dec 19 2010 Ding-Yi Chen - 0.3.3 - Fixed: Support for out-of-source build. - Fixed: Join the next line if ended with back slash '\'. - ChangeLog: Now generate from "cmake ." directly. - changelog: target removed. So it won't do unnecessary rebuild. * Tue Nov 09 2010 Ding-Yi Chen - 0.3.2 - Fixed: Macro invoked with incorrect arguments for macro named STRING_ESCAPE Caused by give and empty string from STRING_TRIM - Removed: f12 from FEDORA_CURRENT_RELEASE_TAGS * Mon Nov 08 2010 Ding-Yi Chen - 0.3.1 - SETTING_FILE_GET_VARIABLES_PATTERN: Fixed: unable to use relative path problem. Fixed: UNQUOTE and NOESCAPE_SEMICOLON can now used together. * Wed Nov 03 2010 Ding-Yi Chen - 0.3.0 - New macro: SETTING_FILE_GET_VARIABLES_PATTERN - New macro: PACK_SOURCE_FILES - Fixed: Variable lost in SETTING_FILE_GET_ALL_VARIABLES and SETTING_FILE_GET_VARABLE. - Fixed: Variable values won't apply in SETTING_FILE_GET_ALL_VARIABLES - UseUninstall finds cmake_uninstall.in in additional paths: /usr/share/cmake/Modules and /usr/share/cmake/Modules - Minor improvements in CMakeLists.txt and project.spec.in templates. * Wed Oct 20 2010 Ding-Yi Chen - 0.2.4 - cmake-fedora-newprj.sh: New option "-e" that extract value from specified spec or spec.in. - Now usage is printed instead of junk output when project_name is not given. - Source code (whatever is packed) and tarball dependency now checked. * Sat Oct 16 2010 Ding-Yi Chen - 0.2.3 - Inserted git pull for each fedpkg targets. Reduce the chance of conflict. - Fixed target: bodhi_new. So it will actually run this command instead of just showing it. * Fri Oct 15 2010 Ding-Yi Chen - 0.2.2 - Add new project building script. - Build for EL-5, EL-6 - Add el5, el6 build. - Fixed errors in UseFedpkg. - Fixed target: tag - Fixed target: bodhi_new * Fri Oct 08 2010 Ding-Yi Chen - 0.1.4 - Fixed error in UseFedpkg. * Mon Oct 04 2010 Ding-Yi Chen - 0.1.2 - Removed excess spaces. * Mon Oct 04 2010 Ding-Yi Chen - 0.1.1 - Added koji scratch build target. - Fixed changelog_update. * Mon Oct 04 2010 Ding-Yi Chen - 0.1.0 - Initial package.cmake-fedora-2.7.2-Source/Modules/000775 001750 001750 00000000000 13052715221 017112 5ustar00dchendchen000000 000000 cmake-fedora-2.7.2-Source/Modules/ManageUninstall.cmake000664 001750 001750 00000001536 12372030403 023177 0ustar00dchendchen000000 000000 # - Provide uninstall target. # Use this module to provide uninstall target. # # Included Modules: # - ManageMessage # - ManageFile # # Define following targets # uninstall: For uninstalling the package. # IF(DEFINED _MANAGE_UNINSTALL_CMAKE_) RETURN() ENDIF(DEFINED _MANAGE_UNINSTALL_CMAKE_) SET(_MANAGE_UNINSTALL_CMAKE_ "DEFINED") SET(CMAKE_UNINSTALL_IN_SEARCH_PATH ${CMAKE_MODULE_PATH} ${CMAKE_ROOT}/Modules ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/Modules ) INCLUDE(ManageFile) FIND_FILE_ERROR_HANDLING(CMAKE_UNINSTALL_IN FIND_ARGS cmake_uninstall.cmake.in PATHS ${CMAKE_UNINSTALL_IN_SEARCH_PATH} ) CONFIGURE_FILE("${CMAKE_UNINSTALL_IN}" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" ) cmake-fedora-2.7.2-Source/Modules/ManageDependency.cmake000664 001750 001750 00000021455 12423621353 023315 0ustar00dchendchen000000 000000 # - Dependency Management Module # This module handle dependencies by using pkg-config and/or # search the executable. # # Included Modules: # - ManageFile # - ManageString # - ManageVariable # # Variable to be read: # + MANAGE_DEPENDENCY_PACKAGE_EXISTS_CMD: Command and options that check # the existence of a package # Default: rpm -q # # + MANAGE_DEPENDENCY_PACKAGE_INSTALL_CMD: Command and options that install # a package # Default: yum -y install # # Defines following functions: # MANAGE_DEPENDENCY( [VER [EXACT]] [REQUIRED] # [PROGRAM_NAMES ...] [PROGRAM_SEARCH_PATHS ...] # [PKG_CONFIG ...] # [PACKAGE_NAME | DEVEL] # ) # - Add a new dependency to a list. # The dependency will also be searched. # If found, ${var}_FOUND is set as 1. # If not found: # + If REQUIRED is specified: a M_ERROR message will be printed. # + If REQUIRED is not specified: a M_OFF message will be printed. # See "Variables to cache" for the variable overridden and output. # * Parameters: # + listVar: List variable store a kind of dependencies. # Recognized lists: # - BUILD_REQUIRES: Dependencies in build stage # - REQUIRES: Dependencies for runtime # - REQUIRES_PRE: Dependencies before the package install # - REQUIRES_PREUN: Dependencies before the package uninstall # - REQUIRES_POST: Dependencies after the package install # - REQUIRES_POSTUN:Dependencies after the package uninstall # + var: Main variable. Uppercase variable name is recommended, # (e.g. GETTEXT) # + VER ver [EXACT]: Minimum version. # Specify the exact version by providing "EXACT". # + REQUIRED: The dependency is required at cmake build time. # + PROGRAM_NAMES name1 ...: Executable to be found. # name2 and others are aliases to name1. # If found, ${var}_EXECUTABLE is defined as the full path # to the executable; if not found; the whole dependency is # deemed as not found. # + PROGRAM_SEARCH_PATHS path1 ...: Additional program search path. # It will act as PATHS arguments for FIND_PROGRAM. # + PKG_CONFIG pkgConfigName1 ...: List of the pkg-config file # exclude the directory and .pc. e.g. "gtk+-2.0" # + PACKAGE_NAME packageName: The actual package name in repository. # If not specified, use the lowercase of ${var}. # For example, use following to specify libchewing as dependency # under the name CHEWING: # MANAGE_DEPENDENCY(REQUIRES CHEWING PACKAGE_NAME "libchewing") # + DEVEL: search lowercase of ${var}-devel. # A shortcut to PACKAGE_NAME ${var}-devel. # * Variables to cache: # + ${listVar}_${listVar}_${var}_PACKAGE_NAME: The actual package name in repository. # Override this if your system is different from Fedora. # + ${listVar}_${var}_PKG_CONFIG: List of pkg-config files. # Override this if your system is different from Fedora. # + ${var}_: The pkg-config variables. # For example, datadir=/usr/share/chewing will be # ${var}_DATADIR, whose value is "/usr/share/chewing" # IF(DEFINED _MANAGE_DEPENDENCY_CMAKE_) RETURN() ENDIF(DEFINED _MANAGE_DEPENDENCY_CMAKE_) SET(_MANAGE_DEPENDENCY_CMAKE_ "DEFINED") INCLUDE(ManageFile) INCLUDE(ManageVariable) INCLUDE(ManageString) SET(MANAGE_DEPENDENCY_PACKAGE_EXISTS_CMD rpm -q CACHE STRING "Package exist command" ) SET(MANAGE_DEPENDENCY_PACKAGE_INSTALL_CMD yum -y install CACHE STRING "Package exist command" ) ## This need to be here, otherwise the variable won't be available ## the 2nd time called. FIND_PACKAGE(PkgConfig) ## This is declared as function, because ## macro does not play nice if listVar is required in different ## source dir. FUNCTION(MANAGE_DEPENDENCY listVar var) SET(_validOptions "VER" "EXACT" "REQUIRED" "PROGRAM_NAMES" "PROGRAM_SEARCH_PATHS" "PKG_CONFIG" "PACKAGE_NAME" "DEVEL") VARIABLE_PARSE_ARGN(_opt _validOptions ${ARGN}) SET(_dirty 0) IF("${${listVar}_${var}_PACKAGE_NAME}" STREQUAL "") IF(_opt_PACKAGE_NAME) IF(DEFINED _opt_DEVEL) M_MSG(${M_ERROR} "PACKAGE_NAME cannot use with DEVEL") ENDIF() SET(${listVar}_${var}_PACKAGE_NAME "${_opt_PACKAGE_NAME}") ELSE(_opt_PACKAGE_NAME) STRING(TOLOWER "${var}" ${listVar}_${var}_PACKAGE_NAME) IF(DEFINED _opt_DEVEL) STRING_APPEND(${listVar}_${var}_PACKAGE_NAME "-devel") ENDIF() ENDIF(_opt_PACKAGE_NAME) SET(${listVar}_${var}_PACKAGE_NAME "${${listVar}_${var}_PACKAGE_NAME}" CACHE STRING "${listVar}_${var}_PACKAGE_NAME") ENDIF() SET(pkgName "${${listVar}_${var}_PACKAGE_NAME}") IF(DEFINED _opt_REQUIRED) SET(_verbose "${M_ERROR}") SET(_required "REQUIRED") SET(_progNotFoundMsg "Program names ${_opt_PROGRAM_NAMES} not found, install ${pkgName}") ELSE(DEFINED _opt_REQUIRED) SET(_verbose "${M_OFF}") SET(_required "") SET(_progNotFoundMsg "Program names ${_opt_PROGRAM_NAMES} not found, ${var} support disabled") ENDIF(DEFINED _opt_REQUIRED) IF(_opt_VER) IF(DEFINED _opt_EXACT) SET(_rel "=") SET(_exact "EXACT") ELSE(DEFINED _opt_EXACT) SET(_rel ">=") SET(_exact "") ENDIF(DEFINED _opt_EXACT) ENDIF(_opt_VER) IF(_opt_PROGRAM_NAMES) M_MSG(${M_INFO2} "ManageDependency: Finding program names ${_opt_PROGRAM_NAMES}") SET(_findArgs FIND_ARGS NAMES "${_opt_PROGRAM_NAMES}") IF(_opt_PROGRAM_SEARCH_PATHS) LIST(APPEND _findArgs PATHS ${_opt_PROGRAM_SEARCH_PATHS}) ENDIF() FIND_PROGRAM_ERROR_HANDLING(${var}_EXECUTABLE ERROR_VAR _dirty ERROR_MSG "${_progNotFoundMsg}" VERBOSE_LEVEL "${_verbose}" ${_findArgs} ) MARK_AS_ADVANCED(${var}_EXECUTABLE) ENDIF(_opt_PROGRAM_NAMES) IF("${_opt_VER}" STREQUAL "") SET(_newDep "${pkgName}") ELSE("${_opt_VER}" STREQUAL "") SET(_newDep "${pkgName} ${_rel} ${_opt_VER}") ENDIF("${_opt_VER}" STREQUAL "") ## Check package exist SET(pkgExistsCmdMissing 0) LIST(GET MANAGE_DEPENDENCY_PACKAGE_EXISTS_CMD 0 pkgExistsCmd) FIND_PROGRAM_ERROR_HANDLING(PKG_EXISTS_CMD ERROR_VAR pkgExistsCmdMissing ERROR_MSG "ManageDependency: Program ${pkgExistsCmd} not found, dependency check disabled." VERBOSE_LEVEL ${M_OFF} FIND_ARGS ${pkgExistsCmd} ) IF(NOT pkgExistsCmdMissing) EXECUTE_PROCESS(COMMAND ${MANAGE_DEPENDENCY_PACKAGE_EXISTS_CMD} ${pkgName} RESULT_VARIABLE pkgMissing OUTPUT_QUIET ERROR_QUIET ) IF(pkgMissing) ## Dependency not found M_MSG(${_verbose} "Package ${pkgName} is not installed") SET(_dirty 1) ENDIF(pkgMissing) ENDIF() ## PKG_CONFIG IF("${${listVar}_${var}_PKG_CONFIG}" STREQUAL "") IF(_opt_PKG_CONFIG) SET(${listVar}_${var}_PKG_CONFIG "${_opt_PKG_CONFIG}" CACHE STRING "${listVar}_${var}_PKG_CONFIG") ENDIF(_opt_PKG_CONFIG) ENDIF() SET(pkgConf "${${listVar}_${var}_PKG_CONFIG}") IF(pkgConf) IF(PKG_CONFIG_EXECUTABLE) ## Add pkgconfig itself as dependency SET(PKG_CONFIG_PACKAGE_NAME "pkgconfig" CACHE STRING "PKG_CONFIG_PACKAGE_NAME") LIST(FIND ${listVar} "${PKG_CONFIG_PACKAGE_NAME}" _index) IF(_index EQUAL -1) LIST(APPEND ${listVar} "${PKG_CONFIG_PACKAGE_NAME}") ENDIF(_index EQUAL -1) ELSE(PKG_CONFIG_EXECUTABLE) M_MSG(${M_ERROR} "pkgconfig is required with ${var}") ENDIF(PKG_CONFIG_EXECUTABLE) SET(pCList "") FOREACH(pC ${pkgConf}) LIST(APPEND pCList "${pC}${_rel}${_opt_VER}") ## Get all variables EXECUTE_PROCESS(COMMAND ${PKG_CONFIG_EXECUTABLE} --print-variables "${pC}" OUTPUT_VARIABLE _variables OUTPUT_STRIP_TRAILING_WHITESPACE RESULT_VARIABLE pkgconfigFailed ) IF(NOT pkgconfigFailed) STRING_SPLIT(${var}_VARIABLES "\n" "${_variables}") FOREACH(_v ${${var}_VARIABLES}) STRING(TOUPPER "${_v}" _u) EXECUTE_PROCESS(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable "${_v}" "${pC}" OUTPUT_VARIABLE ${var}_${pC}_${_u} OUTPUT_STRIP_TRAILING_WHITESPACE ) SET(${var}_${pC}_${_u} "${${var}_${pC}_${_u}}" CACHE INTERNAL "pkgconfig ${${var}_${pC}_${_u}}") MARK_AS_ADVANCED(${${var}_${pC}_${_u}}) M_MSG(${M_INFO1} "${var}_${pC}_${_u}=${${var}_${pC}_${_u}}") ENDFOREACH(_v) ENDIF(NOT pkgconfigFailed) ENDFOREACH(pC) PKG_CHECK_MODULES(${var} ${_required} ${pCList}) ENDIF(pkgConf) ## Insert when it's not duplicated IF(NOT _dirty) SET(${var}_FOUND "1" CACHE INTERNAL "Found ${var}") ENDIF(NOT _dirty) LIST(FIND ${listVar} "${_newDep}" _index) IF(_index EQUAL -1) LIST(APPEND ${listVar} "${_newDep}") SET(${listVar} "${${listVar}}" CACHE INTERNAL "${listVar} package list") ENDIF(_index EQUAL -1) ENDFUNCTION(MANAGE_DEPENDENCY) cmake-fedora-2.7.2-Source/Modules/ManageEnvironmentCommon.cmake000664 001750 001750 00000005301 12622261562 024707 0ustar00dchendchen000000 000000 # - cmake-fedora environment common setting. # # This module defines the common settings of both normal and script mode. # Normally this module should be the first to call. # # Set cache for following variables: # - CMAKE_INSTALL_PREFIX: # Default: "/usr" # - BIN_DIR: Binary dir # Default: "${CMAKE_INSTALL_PREFIX}/bin" # - DATA_DIR: Data dir # Default: "${CMAKE_INSTALL_PREFIX}/share" # - DOC_DIR: Documentation dir # Default: "${DATA_DIR}/doc" # - SYSCONF_DIR: System configuration dir # Default: "/etc" # - LIB_DIR: System wide library path. # Default: ${CMAKE_INSTALL_PREFIX}/lib for 32 bit, # ${CMAKE_INSTALL_PREFIX}/lib64 for 64 bit. # - LIBEXEC_DIR: Directory for executables that should not called by # end-user directly # Default: "${CMAKE_INSTALL_PREFIX}/libexec" # - CMAKE_FEDORA_SCRIPT_PATH_HINTS: PATH hints to find cmake-fedora scripts # - CMAKE_FEDORA_TMP_DIR: Director that stores cmake-fedora # temporary items. # Default: ${CMAKE_BINARY_DIR}/NO_PACK # - MANAGE_MESSAGE_LEVEL: Message (Verbose) Level # Default: 5 # # # IF(DEFINED _MANAGE_ENVIRONMENT_COMMON_CMAKE_) RETURN() ENDIF(DEFINED _MANAGE_ENVIRONMENT_COMMON_CMAKE_) SET(_MANAGE_ENVIRONMENT_COMMON_CMAKE_ "DEFINED") SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON) # Default CMAKE_INSTALL_PREFIX should be set before PROJECT() SET(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "Install dir prefix") SET(BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Binary dir") SET(DATA_DIR "${CMAKE_INSTALL_PREFIX}/share" CACHE PATH "Data dir") SET(DOC_DIR "${DATA_DIR}/doc" CACHE PATH "Doc dir") SET(LIBEXEC_DIR "${CMAKE_INSTALL_PREFIX}/libexec" CACHE PATH "Libexec dir") SET(SYSCONF_DIR "/etc" CACHE PATH "System configuration dir" ) ## CMAKE_SYSTEM_PROCESSOR does not see to be defined yet EXECUTE_PROCESS(COMMAND uname -p OUTPUT_VARIABLE UNAME_P OUTPUT_STRIP_TRAILING_WHITESPACE ) IF("${UNAME_P}" MATCHES "64") SET(IS_64 "64" CACHE STRING "IS_64") ENDIF() SET(LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib${IS_64}" CACHE PATH "Library dir" ) SET(CMAKE_FEDORA_SCRIPT_PATH_HINTS ${CMAKE_SOURCE_DIR}/scripts ${CMAKE_SOURCE_DIR}/cmake-fedora/scripts ${CMAKE_SOURCE_DIR}/../scripts ${CMAKE_SOURCE_DIR}/../cmake-fedora/scripts ${CMAKE_SOURCE_DIR}/../../scripts ${CMAKE_SOURCE_DIR}/../../cmake-fedora/scripts CACHE INTERNAL "CMAKE_FEDORA_SCRIPT_PATH_HINTS" ) ## CMAKE_FEDORA_TMP_DIR: Directory stores temporary files. SET(CMAKE_FEDORA_TMP_DIR "${CMAKE_BINARY_DIR}/NO_PACK" CACHE PATH "cmake-fedora tmp dir") ## Message level INFO1 (5) SET(MANAGE_MESSAGE_LEVEL 5 CACHE STRING "Message (Verbose) Level") cmake-fedora-2.7.2-Source/Modules/CMakeLists.txt000664 001750 001750 00000000504 12622260213 021647 0ustar00dchendchen000000 000000 FILE(GLOB CMAKE_FEDORA_MODULES RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "[A-Z]*.cmake") ## Remove Generated Modules LIST(REMOVE_ITEM CMAKE_FEDORA_MODULES "CTestTestfile.cmake") LIST(APPEND CMAKE_FEDORA_MODULES cmake_uninstall.cmake.in) INSTALL(FILES ${CMAKE_FEDORA_MODULES} DESTINATION ${DATA_DIR}/cmake/Modules ) cmake-fedora-2.7.2-Source/Modules/ManageArchive.cmake000664 001750 001750 00000027364 12643117136 022630 0ustar00dchendchen000000 000000 # - Manage Source Archive and track its content. # This module manages source archive by: # - Handle the ChangeLog # - Build the source archive # - Exclude unwanted files, either from ignore files of source version # control, or add them to SOURCE_ARCHIVE_IGNORE_FILES # - Track the contents in source archive, when it updates, the source # Archive should be updated. # # This module provide a convenient wrapper of CPack. # CPack itself, by default, pack everything under the source directory, # this is usually undesirable. # We avoid this by using the sane default ignore list. # # Included Modules: # - ManageFile # - ManageTarget # - ManageVersion # - CPack # # Targets: # - pack_src_pre: Target that depends on other targets that need to be made # before pack_src. # # Defines following functions: # SOURCE_ARCHIVE_CONTENTS_ADD() # - Add a file to source archive if the file is not in the archive. # * Parameters: # - filename: Filename to be added. # # SOURCE_ARCHIVE_CONTENTS_ADD_NO_CHECK() # - Add a file to source archive without check. # * Parameters: # - filename: Filename to be added. # # Defines following macros: # PACK_SOURCE_ARCHIVE([ | OUTPUT_FILE ] # [GENERATOR ] # [GITIGNORE ] [INCLUDE ]) # ) # - Pack source archive.. # * Parameters: # + outputDir: Directory to write source archive. # + OUTPUT_FILE file: Output file with path. # Default: SOURCES/--Source. # + GENERATOR cpackGenerator: The CPack generator # Default: TGZ (.tar.gz) # + GITIGNORE gitignoreFile: Specify path to .gitignore for using .gitignore # to exclude the unwanted files. # + INCLUDE file ...: Add back those files to source archive. # You can add back the files that would otherwise be excluded, # e.g. .pot files. # otherwise those will be excluded. # * Variables to be cached: # + SOURCE_ARCHIVE_CONTENTS: List of files to be packed. # + SOURCE_ARCHIVE_FILE: Path of source archive (with path). # + SOURCE_ARCHIVE_FILE_EXTENSION: File extension of # the source package # + SOURCE_ARCHIVE_IGNORE_FILES: List of files to be # ignored to archive. # + SOURCE_ARCHIVE_NAME: Name of source archive (without path). # * Targets: # + pack_src: Always pack source files in OUTPUT_FILE # + pack_src_no_force: Only pack source files in OUTPUT_FILE when necessary. # + dist: Alias of pack_src_no_force # + clean_pack_src: Remove all source archives. # + clean_old_pack_src: Remove all old source package. # # IF(DEFINED _MANAGE_ARCHIVE_CMAKE_) RETURN() ENDIF(DEFINED _MANAGE_ARCHIVE_CMAKE_) SET (_MANAGE_ARCHIVE_CMAKE_ "DEFINED") SET(SOURCE_ARCHIVE_IGNORE_FILES_COMMON "/\\\\.svn/" "/CVS/" "/\\\\.git/" "/\\\\.hg/" "NO_PACK") SET(SOURCE_ARCHIVE_IGNORE_FILES_CMAKE "/CMakeFiles/" "_CPack_Packages/" "/Testing/" "\\\\.directory$" "CMakeCache\\\\.txt$" "/install_manifest.txt$" "/cmake_install\\\\.cmake$" "/cmake_uninstall\\\\.cmake$" "/CPack.*\\\\.cmake$" "/CTestTestfile\\\\.cmake$" "Makefile$" "/${PROJECT_NAME}-${PRJ_VER}-SOURCE/" ) SET(SOURCE_ARCHIVE_IGNORE_FILES ${SOURCE_ARCHIVE_IGNORE_FILES_CMAKE} ${SOURCE_ARCHIVE_IGNORE_FILES_COMMON} ) INCLUDE(ManageVersion) INCLUDE(ManageFile) ADD_CUSTOM_TARGET(pack_src_pre COMMENT "pack_src_pre: Before pack_src" ) FUNCTION(SOURCE_ARCHIVE_CONTENTS_SET value) SET(SOURCE_ARCHIVE_CONTENTS "${value}" CACHE INTERNAL "Source archive file list") ENDFUNCTION(SOURCE_ARCHIVE_CONTENTS_SET) SOURCE_ARCHIVE_CONTENTS_SET("") ## Add whatever it's told FUNCTION(SOURCE_ARCHIVE_CONTENTS_ADD_FAST value) LIST(APPEND SOURCE_ARCHIVE_CONTENTS "${value}") SOURCE_ARCHIVE_CONTENTS_SET("${SOURCE_ARCHIVE_CONTENTS}") ENDFUNCTION(SOURCE_ARCHIVE_CONTENTS_ADD_FAST) FUNCTION(SOURCE_ARCHIVE_CONTENTS_ADD) FOREACH(filename ${ARGN}) GET_FILENAME_COMPONENT(_file "${filename}" ABSOLUTE) FILE(RELATIVE_PATH _f ${CMAKE_SOURCE_DIR} "${_file}") LIST(FIND SOURCE_ARCHIVE_CONTENTS "${_f}" _index) IF(_index LESS 0) SOURCE_ARCHIVE_CONTENTS_ADD_FAST("${_f}") ENDIF(_index LESS 0) ENDFOREACH(filename) ENDFUNCTION(SOURCE_ARCHIVE_CONTENTS_ADD) FUNCTION(SOURCE_ARCHIVE_CONTENTS_ADD_NO_CHECK) FOREACH(filename ${ARGN}) GET_FILENAME_COMPONENT(_file "${filename}" ABSOLUTE) FILE(RELATIVE_PATH _f ${CMAKE_SOURCE_DIR} "${_file}") SOURCE_ARCHIVE_CONTENTS_ADD_FAST("${_f}") ENDFOREACH(filename) ENDFUNCTION(SOURCE_ARCHIVE_CONTENTS_ADD_NO_CHECK) # Internal: SOURCE_ARCHIVE_GET_CONTENTS() # - Return all source file to be packed. # This is called by SOURCE_ARCHIVE(), # So no need to call it again. FUNCTION(SOURCE_ARCHIVE_GET_CONTENTS ) SET(_fileList "") FILE(GLOB_RECURSE _ls FOLLOW_SYMLINKS "*" ) STRING(REPLACE "\\\\" "\\" _ignore_files "${SOURCE_ARCHIVE_IGNORE_FILES}") FOREACH(_file ${_ls}) SET(_matched 0) FOREACH(filePattern ${_ignore_files}) M_MSG(${M_INFO3} "_file=${_file} filePattern=${filePattern}") IF(_file MATCHES "${filePattern}") SET(_matched 1) BREAK() ENDIF(_file MATCHES "${filePattern}") ENDFOREACH(filePattern ${_ignore_files}) IF(NOT _matched) SOURCE_ARCHIVE_CONTENTS_ADD_NO_CHECK("${_file}") ENDIF(NOT _matched) ENDFOREACH(_file ${_ls}) M_MSG(${M_INFO2} "SOURCE_ARCHIVE_CONTENTS=${SOURCE_ARCHIVE_CONTENTS}") ENDFUNCTION(SOURCE_ARCHIVE_GET_CONTENTS) MACRO(CMAKE_REGEX_TO_REGEX var cmrgx) STRING(REPLACE "\\\\" "\\" ${var} "${cmrgx}") ENDMACRO(CMAKE_REGEX_TO_REGEX var cmrgx) MACRO(SOURCE_ARCHIVE_GET_IGNORE_LIST _ignoreListVar _includeListVar) IF(${_ignoreListVar}) FILE(STRINGS "${${_ignoreListVar}}" _content REGEX "^[^#]") FOREACH(_s ${_content}) STRING(STRIP "${_s}" _s) STRING(LENGTH "${_s}" _l) IF(_l GREATER 0) ## Covert the string from glob to cmake regex GIT_GLOB_TO_CMAKE_REGEX(_cmrgx ${_s}) LIST(APPEND SOURCE_ARCHIVE_IGNORE_FILES "${_cmrgx}") ENDIF(_l GREATER 0) ENDFOREACH(_s ${_content}) ENDIF(${_ignoreListVar}) ## regex match one of include files ## then remove that line FOREACH(_ignore_pattern ${SOURCE_ARCHIVE_IGNORE_FILES}) CMAKE_REGEX_TO_REGEX(_ip "${_ignore_pattern}") FOREACH(_i ${${_includeListVar}}) STRING(REGEX MATCH "${_ip}" _ret "${_i}") IF(_ret) LIST(REMOVE_ITEM SOURCE_ARCHIVE_IGNORE_FILES "${_ignore_pattern}") ENDIF(_ret) ENDFOREACH(_i ${${_includeListVar}}) ENDFOREACH(_ignore_pattern ${SOURCE_ARCHIVE_IGNORE_FILES}) ENDMACRO(SOURCE_ARCHIVE_GET_IGNORE_LIST _ignoreListVar _includeListVar) MACRO(PACK_SOURCE_CPACK var) SET(_valid_options "GENERATOR" "INCLUDE" "GITIGNORE") VARIABLE_PARSE_ARGN(_opt _valid_options ${ARGN}) IF(NOT _opt_GENERATOR) SET(_opt_GENERATOR "TGZ") ENDIF(NOT _opt_GENERATOR) SET(CPACK_GENERATOR "${_opt_GENERATOR}") SET(CPACK_SOURCE_GENERATOR ${CPACK_GENERATOR}) IF(${CPACK_GENERATOR} STREQUAL "TGZ") SET(SOURCE_ARCHIVE_FILE_EXTENSION "tar.gz") ELSEIF(${CPACK_GENERATOR} STREQUAL "TBZ2") SET(SOURCE_ARCHIVE_FILE_EXTENSION "tar.bz2") ELSEIF(${CPACK_GENERATOR} STREQUAL "ZIP") SET(SOURCE_ARCHIVE_FILE_EXTENSION "zip") ENDIF(${CPACK_GENERATOR} STREQUAL "TGZ") SET(CPACK_PACKAGE_VERSION ${PRJ_VER}) IF(PRJ_SUMMARY) SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PRJ_SUMMARY}") ENDIF(PRJ_SUMMARY) IF(EXISTS ${CMAKE_SOURCE_DIR}/COPYING) SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/COPYING) ENDIF(EXISTS ${CMAKE_SOURCE_DIR}/COPYING) IF(EXISTS ${CMAKE_SOURCE_DIR}/README) SET(CPACK_PACKAGE_DESCRIPTION_FILE ${CMAKE_SOURCE_DIR}/README) ENDIF(EXISTS ${CMAKE_SOURCE_DIR}/README) SET(CPACK_PACKAGE_VENDOR "${VENDOR}") SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PRJ_VER}-Source") LIST(APPEND SOURCE_ARCHIVE_IGNORE_FILES "${PROJECT_NAME}-[^/]*-Source") SET(SOURCE_ARCHIVE_NAME "${CPACK_SOURCE_PACKAGE_FILE_NAME}.${SOURCE_ARCHIVE_FILE_EXTENSION}" CACHE STRING "Source archive name" FORCE ) SET(${var} "${SOURCE_ARCHIVE_NAME}") SOURCE_ARCHIVE_GET_IGNORE_LIST(_opt_GITIGNORE _opt_INCLUDE) LIST(APPEND CPACK_SOURCE_IGNORE_FILES ${SOURCE_ARCHIVE_IGNORE_FILES}) INCLUDE(CPack) ENDMACRO(PACK_SOURCE_CPACK var) MACRO(PACK_SOURCE_ARCHIVE) SET(_valid_options "OUTPUT_FILE" "GENERATOR" "INCLUDE" "GITIGNORE") VARIABLE_PARSE_ARGN(_opt _valid_options ${ARGN}) IF(PRJ_VER STREQUAL "") M_MSG(${M_FATAL} "PRJ_VER not defined") ENDIF(PRJ_VER STREQUAL "") ## PACK_SOURCE_CPACK to pack with default output file VARIABLE_TO_ARGN(_cpack_source_pack_opts _opt _valid_options) PACK_SOURCE_CPACK(_source_archive_file ${_cpack_source_pack_opts}) ## Does user want his own output file or directory SET(_own 0) SET(_own_dir 0) SET(_own_file 0) IF(_opt) SET(_outputDir "${_opt}") ENDIF(_opt) IF(_opt_OUTPUT_FILE) GET_FILENAME_COMPONENT(_outputDir ${_opt_OUTPUT_FILE} PATH) GET_FILENAME_COMPONENT(_outputFile ${_opt_OUTPUT_FILE} NAME) ENDIF(_opt_OUTPUT_FILE) GET_FILENAME_COMPONENT(_currentDir_real "${CMAKE_CURRENT_BINARY_DIR}" REALPATH) IF(_outputDir) GET_FILENAME_COMPONENT(_outputDir_real ${_outputDir} REALPATH) ELSE(_outputDir) SET(_outputDir_real ${_currentDir_real}) ENDIF(_outputDir) IF(NOT _outputFile) SET(_outputFile "${_source_archive_file}") ENDIF(NOT _outputFile) IF(NOT _outputDir_real STREQUAL "${_currentDir_real}") SET(_own_dir 1) SET(_own 1) ENDIF(NOT _outputDir_real STREQUAL "${_currentDir_real}") IF(NOT _outputFile STREQUAL "${_source_archive_file}") SET(_own_file 1) SET(_own 1) ENDIF(NOT _outputFile STREQUAL "${_source_archive_file}") GET_FILENAME_COMPONENT(SOURCE_ARCHIVE_FILE "${_outputDir_real}/${_outputFile}" ABSOLUTE) SET(SOURCE_ARCHIVE_FILE ${SOURCE_ARCHIVE_FILE} CACHE FILEPATH "Source archive file" FORCE) SET(SOURCE_ARCHIVE_NAME "${_outputFile}" CACHE FILEPATH "Source archive name" FORCE) SET(SOURCE_ARCHIVE_CONTENTS_ABSOLUTE "") FOREACH(_file ${SOURCE_ARCHIVE_CONTENTS}) LIST(APPEND SOURCE_ARCHIVE_CONTENTS_ABSOLUTE "${CMAKE_HOME_DIRECTORY}/${_file}" ) ENDFOREACH(_file ${SOURCE_ARCHIVE_CONTENTS}) SET(_dep_list "${SOURCE_ARCHIVE_CONTENTS_ABSOLUTE}") ## If own directory, IF(_own_dir) ### Need to create it ADD_CUSTOM_COMMAND(OUTPUT ${_outputDir_real} COMMAND ${CMAKE_COMMAND} -E make_directory ${_outputDir_real} COMMENT "Create dir for source archive output." ) LIST(APPEND _dep_list ${_outputDir_real}) ENDIF(_own_dir) ## If own, need to move to it SET(moveCommands "") IF(_own) SET(moveCommands COMMAND ${CMAKE_COMMAND} -E copy "${_source_archive_file}" "${SOURCE_ARCHIVE_FILE}" COMMAND ${CMAKE_COMMAND} -E remove "${_source_archive_file}" ) ENDIF(_own) INCLUDE(ManageTarget) ADD_CUSTOM_TARGET_COMMAND(pack_src NO_FORCE OUTPUT ${SOURCE_ARCHIVE_FILE} COMMAND make pack_src_pre COMMAND make package_source ${moveCommands} DEPENDS ${_dep_list} COMMENT "Packing the source as: ${SOURCE_ARCHIVE_FILE}" VERBATIM ) ADD_DEPENDENCIES(pack_src changelog) ADD_DEPENDENCIES(pack_src_no_force changelog_no_force) ADD_CUSTOM_TARGET(dist ) ADD_DEPENDENCIES(dist pack_src_no_force) ADD_CUSTOM_TARGET(clean_old_pack_src COMMAND find . -name '${PROJECT_NAME}*.${SOURCE_ARCHIVE_FILE_EXTENSION}' ! -name '${PROJECT_NAME}-${PRJ_VER}-*.${SOURCE_ARCHIVE_FILE_EXTENSION}' -print -delete COMMENT "Cleaning old source archives" ) ADD_DEPENDENCIES(clean_old_pack_src changelog_no_force ) ADD_CUSTOM_TARGET(clean_pack_src COMMAND find . -name '${PROJECT_NAME}*.${SOURCE_ARCHIVE_FILE_EXTENSION}' -print -delete COMMENT "Cleaning all source archives" ) ENDMACRO(PACK_SOURCE_ARCHIVE) cmake-fedora-2.7.2-Source/Modules/ManageEnvironment.cmake000664 001750 001750 00000012034 12652610516 023537 0ustar00dchendchen000000 000000 # - Manage environment in build mode after project information is defined. # # This module manages build mode environment, including variables, compiler # flags and CMake policies. # # The main difference between this module and ManageEnvironmentCommon are: # - ManageEnvironmentCommon is called by both script and build mode; # while this module is called by only build mode. # - ManageEnvironmentCommon should be invoked before project definition; # this module should be invoked after project definition. # - ManageEnvironmentCommon caches only variables; # this module not only caches variables, but also set the compiler flags. # # Included Modules: # - ManageMessage # # Reads following variables: # - CMAKE_INSTALL_PREFIX: Install directory used by install. # - PROJECT_NAME: Project name. # # Set cache for following variables: # - PRJ_DATA_DIR: Project data dir # Default: ${DATA_DIR}/${PROJECT_NAME} # - PRJ_DOC_DIR: Project doc dir # Default: ${DOC_DIR}/${PROJECT_NAME} # # Defines following compile flags: (which use variables with same names) # - CMAKE_INSTALL_PREFIX # - PROJECT_NAME # - BIN_DIR # - DATA_DIR # - DOC_DIR # - SYSCONF_DIR # - LIB_DIR # - LIBEXEC_DIR # - PRJ_DATA_DIR # - PRJ_DOC_DIR # # Note: compile flag PRJ_VER is defined in ManageVersion. # # Defines following functions: # SET_COMPILE_ENV( [] [ENV_NAME ] # [CACHE [FORCE]] # ) # - Ensure a variable is set to nonempty value, then set the value # to the compile flags with same name. # # The value is determined by first non-empty value: # 1. Value of . # 2. Value of environment variable , # or if ENV_NAME is specified, value of . # 3. # * Parameters: # + var: Variable to be set # + defaultValue: Default value of the var # + envName: (Optional)The name of environment variable. # Only need if different from var. # + CACHE type docstring [FORCE]: # Same with "SET" command. # IF(DEFINED _MANAGE_ENVIRONMENT_CMAKE_) RETURN() ENDIF(DEFINED _MANAGE_ENVIRONMENT_CMAKE_) SET(_MANAGE_ENVIRONMENT_CMAKE_ "DEFINED") FUNCTION(SET_COMPILE_ENV var) SET(_stage "") SET(_env "${var}") SET(_setOpts "") SET(_force 0) SET(_defaultValue "") CMAKE_POLICY(PUSH) IF(POLICY CMP0054) CMAKE_POLICY(SET CMP0054 OLD) ENDIF() FOREACH(_arg ${ARGN}) IF("${_arg}" STREQUAL "ENV_NAME") SET(_stage "ENV_NAME") ELSEIF("${_arg}" STREQUAL "CACHE") SET(_stage "_CACHE") ELSE() IF("${_stage}" STREQUAL "ENV_NAME") SET(_env "${_arg}") ELSEIF("${_stage}" STREQUAL "_CACHE") LIST(APPEND _setOpts "${_arg}") IF("${_arg}" STREQUAL "FORCE") SET(_force 1) ENDIF() ELSE() SET(_defaultValue "${_arg}") ENDIF() ENDIF() ENDFOREACH(_arg ${ARGN}) IF("${_setOpts}" STREQUAL "") SET(_setOpts "PARENT_SCOPE") ELSE() LIST(INSERT _setOpts 0 "CACHE") ENDIF() # Set the variable IF(NOT "${${var}}" STREQUAL "") SET(${var} "${${var}}" ${_setOpts}) ELSEIF(NOT "$ENV{${_env}}" STREQUAL "") SET(${var} "$ENV{${_env}}" ${_setOpts}) ELSE() ## Use default value SET(${var} "${_defaultValue}" ${_setOpts}) ENDIF() # Enforce CMP0005 to new, yet pop after ADD_DEFINITION CMAKE_POLICY(SET CMP0005 NEW) ADD_DEFINITIONS(-D${_env}=${${var}}) CMAKE_POLICY(POP) M_MSG(${M_INFO2} "SET_COMPILE_ENV: ${var}=${${var}}") ENDFUNCTION(SET_COMPILE_ENV) MACRO(MANAGE_CMAKE_POLICY policyName defaultValue) IF(POLICY ${policyName}) CMAKE_POLICY(GET "${policyName}" _cmake_policy_value) IF(_cmake_policy_value STREQUAL "") # Policy not defined yet CMAKE_POLICY(SET "${policyName}" "${defaultValue}") ENDIF(_cmake_policy_value STREQUAL "") ENDIF(POLICY ${policyName}) ENDMACRO(MANAGE_CMAKE_POLICY policyName defaultValue) #################################################################### # Variables settings # ## CMAKE_FEODRA_MODULE_DIR: Directory contains cmake-fedora modules INCLUDE(ManageMessage RESULT_VARIABLE MANAGE_ENVIRONMENT_PATH) GET_FILENAME_COMPONENT(CMAKE_FEDORA_MODULE_DIR "${MANAGE_ENVIRONMENT_PATH}" PATH CACHE ) FILE(MAKE_DIRECTORY "${CMAKE_FEDORA_TMP_DIR}") ## Print CMake system information M_MSG(${M_INFO1} "CMAKE_HOST_SYSTEM=${CMAKE_HOST_SYSTEM}") M_MSG(${M_INFO1} "CMAKE_HOST_SYSTEM_PROCESSOR=${CMAKE_HOST_SYSTEM_PROCESSOR}") M_MSG(${M_INFO1} "CMAKE_SYSTEM=${CMAKE_SYSTEM}") M_MSG(${M_INFO1} "CMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}") ## Set compile flags SET_COMPILE_ENV(BIN_DIR) SET_COMPILE_ENV(DATA_DIR) SET_COMPILE_ENV(DOC_DIR) SET_COMPILE_ENV(SYSCONF_DIR) SET_COMPILE_ENV(LIB_DIR) SET_COMPILE_ENV(LIBEXEC_DIR) IF(CMAKE_SYSTEM_PROCESSOR MATCHES "64") SET_COMPILE_ENV(IS_64) ENDIF(CMAKE_SYSTEM_PROCESSOR MATCHES "64") SET_COMPILE_ENV(PRJ_DATA_DIR "${DATA_DIR}/${PROJECT_NAME}" CACHE PATH "Project data dir" ) SET_COMPILE_ENV(PRJ_DOC_DIR "${DOC_DIR}/${PROJECT_NAME}" CACHE PATH "Project doc dir" ) SET_COMPILE_ENV(PROJECT_NAME) cmake-fedora-2.7.2-Source/Modules/ManageGitScript.cmake000664 001750 001750 00000005154 12442166363 023153 0ustar00dchendchen000000 000000 # - Manage Git Script # Scripts to be invoked in command line # MACRO(MANAGE_GIT_SCRIPT_PRINT_USAGE) MESSAGE("cmake-fedora utility scripts cmake -D cmd=make_tag_file -D ver= -D output_file= [-D \"msg=\"] [-D cmake_fedora_module_dir=] [\"-D =\"] -P /ManageGitScript.cmake Make a tag file, which indicates the build process is passed and the branch is tagged with . Options: ver: project version outputFile: Tag file msg: message associate with tag cmake_fedora_module_dir: Specify this if cmake and cmake-fedora failed to find the location of CMake Fedora modules. ") ENDMACRO(MANAGE_GIT_SCRIPT_PRINT_USAGE) FUNCTION(MAKE_TAG_FILE) EXECUTE_PROCESS( COMMAND git tag -l ${ver} OUTPUT_VARIABLE tagLine OUTPUT_STRIP_TRAILING_WHITESPACE ) IF("${msg}" STREQUAL "") SET(msg "${ver}") ENDIF() IF("${tagLine}" STREQUAL "") ## No tag EXECUTE_PROCESS( COMMAND make VERBOSE=1 tag_pre RESULT_VARIABLE tagResult ) IF(NOT tagResult EQUAL 0) M_MSG(${M_FATAL} "Failed to build before tagging") ENDIF() EXECUTE_PROCESS(COMMAND git tag -a -m "${msg}" "${ver}" HEAD) ENDIF() FILE(WRITE "${output_file}" "${msg}") ENDFUNCTION(MAKE_TAG_FILE) SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON) ####################################### # Determine CMAKE_FEDORA_MODULE_DIR # ## It is possible that current dir is in NO_PACK/FedPkg/ LIST(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/Modules ${CMAKE_SOURCE_DIR}/cmake-fedora/Modules ${CMAKE_SOURCE_DIR}/../../../Modules ${CMAKE_SOURCE_DIR}/../../../cmake-fedora/Modules ${CMAKE_SOURCE_DIR} ) IF(CMAKE_SCRIPT_MODE_FILE) GET_FILENAME_COMPONENT(CMAKE_FEDORA_SCRIPT_DIR ${CMAKE_SCRIPT_MODE_FILE} PATH) LIST(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_FEDORA_SCRIPT_DIR}") ENDIF() IF(cmake_fedora_module_dir) LIST(INSERT CMAKE_MODULE_PATH 0 "${cmake_fedora_module_dir}") ENDIF() INCLUDE(ManageMessage RESULT_VARIABLE MANAGE_MODULE_PATH) IF(NOT MANAGE_MODULE_PATH) MESSAGE(FATAL_ERROR "ManageMessage.cmake cannot be found in ${CMAKE_MODULE_PATH}") ENDIF() INCLUDE(ManageFile) IF(NOT DEFINED cmd) MANAGE_GIT_SCRIPT_PRINT_USAGE() ELSEIF(cmd STREQUAL "make_tag_file") IF(NOT ver) MANAGE_GIT_SCRIPT_PRINT_USAGE() M_MSG(${M_FATAL} "Requires -D ver=") ENDIF() IF(NOT output_file) MANAGE_GIT_SCRIPT_PRINT_USAGE() M_MSG(${M_FATAL} "Requires -D output_file=") ENDIF() MAKE_TAG_FILE() ELSE() MANAGE_GIT_SCRIPT_PRINT_USAGE() M_MSG(${M_FATAL} "Invalid cmd ${cmd}") ENDIF() cmake-fedora-2.7.2-Source/Modules/ManageAPIDoc.cmake000664 001750 001750 00000007534 12372030403 022271 0ustar00dchendchen000000 000000 # - Manage generated API documents # This module provide functions for API document generation. # # Included Modules: # - ManageDependency # - ManageMessage # # Defines following functions: # MANAGE_APIDOC_DOXYGEN([DOXYGEN ] # [OUTPUT_DIRECTORY ] ... # ) # - Provide Doxygen processing and targets. # DOXYGEN options can also be provided here. # For example: # MANAGE_APIDOC_DOXYGEN(DOXYGEN Doxyfile # OUTPUT_DIRECTORY doc # CREATE_SUBDIR no # ) # Will write the configure file to Doxyfile, generate documents # will be put in doc/, and CREATE_SUBDIR is set as "no". # # * Parameters: # + DOXYGEN Doxyfile: Doxygen file. # Default: ${CMAKE_BINARY_DIR}/Doxygn # + OUTPUT_DIRECTORYCREATE_SUBDIR dir: Directory for generated # documents. # + ... : Other Doxygen options. # + docSrcdir: Document source directory to be copied from. # * Targets: # + doxygen: Make doxygen documents. # + doxygen_update_doxyfile: Update Doxyfile. # Doxyfile configuration options such as PROJECT_NUMBER will be # updated according to project information. # * Reads following variable: # + PRJ_DOC_DIR: Directory for installed documents. # Default: /usr/share/doc/${PROJECT_NAME} # IF(DEFINED _MANAGE_APIDOC_CMAKE_) RETURN() ENDIF(DEFINED _MANAGE_APIDOC_CMAKE_) SET(_MANAGE_APIDOC_CMAKE_ "DEFINED") INCLUDE(ManageMessage) INCLUDE(ManageDependency) FUNCTION(MANAGE_APIDOC_DOXYGEN_ADD_OPTION doxyfile listVar key value) LIST(APPEND ${listVar} "COMMAND" "sed" "-i" "-e" 's|^${key}\\s*=.*|${key}="${value}"|' "${doxyfile}" ) SET(${listVar} "${${listVar}}" PARENT_SCOPE) ENDFUNCTION(MANAGE_APIDOC_DOXYGEN_ADD_OPTION) FUNCTION(MANAGE_APIDOC_DOXYGEN) LIST(APPEND SOURCE_ARCHIVE_IGNORE_FILES "/Doxyfile$") SET(_manage_apidoc_doxygen_dependency_missing 0) MANAGE_DEPENDENCY(BUILD_REQUIRES DOXYGEN PROGRAM_NAMES "doxygen") IF(NOT DEFINED DOXYGEN_FOUND) RETURN() ENDIF(NOT DEFINED DOXYGEN_FOUND) IF("${PRJ_DOC_DIR}" STREQUAL "") SET(PRJ_DOC_DIR "/usr/share/doc/${PROJECT_NAME}" CACHE PATH "Project document dir" ) ENDIF("${PRJ_DOC_DIR}" STREQUAL "") M_MSG(${M_INFO2} "PRJ_DOC_DIR=${PRJ_DOC_DIR}") SET(_stage "key") SET(_key "") SET(_doxygenOptList "") FOREACH(_arg ${ARGN}) IF(_stage STREQUAL "key") SET(_key "${_arg}") SET(_stage "value") ELSE(_stage STREQUAL "key") SET(_opt_${_key} "${_arg}") IF(NOT "${_key}" STREQUAL "DOXYGEN") MANAGE_APIDOC_DOXYGEN_ADD_OPTION("${_opt_DOXYGEN}" _doxygenOptList "${_key}" "${_arg}" ) ENDIF(NOT "${_key}" STREQUAL "DOXYGEN") SET(_stage "key") ENDIF(_stage STREQUAL "key") ENDFOREACH(_arg) IF("${_opt_DOXYGEN}" STREQUAL "") SET(_opt_DOXYGEN "${CMAKE_BINARY_DIR}/Doxyfile") ENDIF("${_opt_DOXYGEN}" STREQUAL "") IF("${_opt_OUTPUT_DIRECTORY}" STREQUAL "") SET(_opt_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/doc") ENDIF("${_opt_OUTPUT_DIRECTORY}" STREQUAL "") ADD_CUSTOM_TARGET(doxygen COMMAND "${DOXYGEN_EXECUTABLE}" "${opt_DOXYGEN}" DEPENDS ${_opt_DOXYGEN} COMMENT "doxygen: ${opt_DOXYGEN}" ) MANAGE_APIDOC_DOXYGEN_ADD_OPTION("${_opt_DOXYGEN}" _doxygenOptList "PROJECT_NAME" "${PROJECT_NAME}" ) MANAGE_APIDOC_DOXYGEN_ADD_OPTION("${_opt_DOXYGEN}" _doxygenOptList "PROJECT_NUMBER" "${PRJ_VER}" ) MANAGE_APIDOC_DOXYGEN_ADD_OPTION("${_opt_DOXYGEN}" _doxygenOptList "PROJECT_BRIEF" "${PRJ_SUMMARY}" ) ADD_CUSTOM_TARGET_COMMAND(doxygen_update_doxyfile OUTPUT "${_opt_DOXYGEN}" COMMAND "${DOXYGEN_EXECUTABLE}" -g "${_opt_DOXYGEN}" ${_doxygenOptList} COMMENT "doxygen_update_doxyfile: ${_opt_DOXYGEN}" ) INSTALL(DIRECTORY ${_opt_OUTPUT_DIRECTORY} DESTINATION "${PRJ_DOC_DIR}" ) ENDFUNCTION(MANAGE_APIDOC_DOXYGEN doxygen_template) cmake-fedora-2.7.2-Source/Modules/ManageZanataSuggest.cmake000664 001750 001750 00000017304 12604703113 024011 0ustar00dchendchen000000 000000 # Manage the list of suggest country # Initial generated on Fedora 20 with: # locale -a | grep -e "^[a-z]\+_[A-Z]\+$" | sort -u | sed -e "s/\([a-z]\+\)/SET(ZANATA_SUGGEST_COUNTRY_\1 /g" | sed -e 's/ _\([A-Z]\+\)/ "\1")/' IF(DEFINED _MANAGE_ZANATA_SUGGEST_) RETURN() ENDIF(DEFINED _MANAGE_ZANATA_SUGGEST_) SET(_MANAGE_ZANATA_SUGGEST_ "DEFINED") SET(ZANATA_SUGGEST_COUNTRY_aa__ "ET") SET(ZANATA_SUGGEST_COUNTRY_ach__ "UG") SET(ZANATA_SUGGEST_COUNTRY_af__ "ZA") SET(ZANATA_SUGGEST_COUNTRY_am__ "ET") SET(ZANATA_SUGGEST_COUNTRY_aln__ "AL") SET(ZANATA_SUGGEST_COUNTRY_an__ "ES") SET(ZANATA_SUGGEST_COUNTRY_anp__ "IN") SET(ZANATA_SUGGEST_COUNTRY_ar__ "SA") SET(ZANATA_SUGGEST_COUNTRY_as__ "IN") SET(ZANATA_SUGGEST_COUNTRY_ast__ "ES") SET(ZANATA_SUGGEST_COUNTRY_ayc__ "PE") SET(ZANATA_SUGGEST_COUNTRY_az__ "AZ") SET(ZANATA_SUGGEST_COUNTRY_bal__ "PK") SET(ZANATA_SUGGEST_COUNTRY_be__ "BY") SET(ZANATA_SUGGEST_COUNTRY_bem__ "ZM") SET(ZANATA_SUGGEST_COUNTRY_ber__ "DZ") SET(ZANATA_SUGGEST_COUNTRY_bg__ "BG") SET(ZANATA_SUGGEST_COUNTRY_bho__ "IN") SET(ZANATA_SUGGEST_COUNTRY_bn__ "BD") SET(ZANATA_SUGGEST_COUNTRY_bo__ "CN") SET(ZANATA_SUGGEST_COUNTRY_br__ "FR") SET(ZANATA_SUGGEST_COUNTRY_brx__ "IN") SET(ZANATA_SUGGEST_COUNTRY_bs__ "BA") SET(ZANATA_SUGGEST_COUNTRY_byn__ "ER") SET(ZANATA_SUGGEST_COUNTRY_ca__ "AD") SET(ZANATA_SUGGEST_COUNTRY_crh__ "UA") SET(ZANATA_SUGGEST_COUNTRY_csb__ "PL") SET(ZANATA_SUGGEST_COUNTRY_cs__ "CZ") SET(ZANATA_SUGGEST_COUNTRY_cv__ "RU") SET(ZANATA_SUGGEST_COUNTRY_cy__ "GB") SET(ZANATA_SUGGEST_COUNTRY_da__ "DK") SET(ZANATA_SUGGEST_COUNTRY_de__ "DE") SET(ZANATA_SUGGEST_COUNTRY_doi__ "IN") SET(ZANATA_SUGGEST_COUNTRY_dv__ "MV") SET(ZANATA_SUGGEST_COUNTRY_dz__ "BT") SET(ZANATA_SUGGEST_COUNTRY_el__ "GR") SET(ZANATA_SUGGEST_COUNTRY_en__ "US") SET(ZANATA_SUGGEST_COUNTRY_eo__ "") SET(ZANATA_SUGGEST_COUNTRY_es__ "ES") SET(ZANATA_SUGGEST_COUNTRY_et__ "EE") SET(ZANATA_SUGGEST_COUNTRY_eu__ "ES") SET(ZANATA_SUGGEST_COUNTRY_fa__ "IR") SET(ZANATA_SUGGEST_COUNTRY_ff__ "SN") SET(ZANATA_SUGGEST_COUNTRY_fi__ "FI") SET(ZANATA_SUGGEST_COUNTRY_fil__ "PH") SET(ZANATA_SUGGEST_COUNTRY_fo__ "FO") SET(ZANATA_SUGGEST_COUNTRY_fr__ "FR") SET(ZANATA_SUGGEST_COUNTRY_fur__ "IT") SET(ZANATA_SUGGEST_COUNTRY_fy__ "DE") SET(ZANATA_SUGGEST_COUNTRY_ga__ "IE") SET(ZANATA_SUGGEST_COUNTRY_gd__ "GB") SET(ZANATA_SUGGEST_COUNTRY_gez__ "ER") SET(ZANATA_SUGGEST_COUNTRY_gl__ "ES") SET(ZANATA_SUGGEST_COUNTRY_gu__ "IN") SET(ZANATA_SUGGEST_COUNTRY_gv__ "GB") SET(ZANATA_SUGGEST_COUNTRY_ha__ "NG") SET(ZANATA_SUGGEST_COUNTRY_he__ "IL") SET(ZANATA_SUGGEST_COUNTRY_hi__ "IN") SET(ZANATA_SUGGEST_COUNTRY_hne__ "IN") SET(ZANATA_SUGGEST_COUNTRY_hr__ "HR") SET(ZANATA_SUGGEST_COUNTRY_hsb__ "DE") SET(ZANATA_SUGGEST_COUNTRY_ht__ "HT") SET(ZANATA_SUGGEST_COUNTRY_hu__ "HU") SET(ZANATA_SUGGEST_COUNTRY_hy__ "AM") SET(ZANATA_SUGGEST_COUNTRY_ia__ "FR") SET(ZANATA_SUGGEST_COUNTRY_id__ "ID") SET(ZANATA_SUGGEST_COUNTRY_ig__ "NG") SET(ZANATA_SUGGEST_COUNTRY_ilo__ "PH") SET(ZANATA_SUGGEST_COUNTRY_ik__ "CA") SET(ZANATA_SUGGEST_COUNTRY_is__ "IS") SET(ZANATA_SUGGEST_COUNTRY_it__ "IT") SET(ZANATA_SUGGEST_COUNTRY_iu__ "CA") SET(ZANATA_SUGGEST_COUNTRY_iw__ "IL") SET(ZANATA_SUGGEST_COUNTRY_ja__ "JP") SET(ZANATA_SUGGEST_COUNTRY_ka__ "GE") SET(ZANATA_SUGGEST_COUNTRY_kk__ "KZ") SET(ZANATA_SUGGEST_COUNTRY_kl__ "GL") SET(ZANATA_SUGGEST_COUNTRY_km__ "KH") SET(ZANATA_SUGGEST_COUNTRY_kn__ "IN") SET(ZANATA_SUGGEST_COUNTRY_kok__ "IN") SET(ZANATA_SUGGEST_COUNTRY_ko__ "KR") SET(ZANATA_SUGGEST_COUNTRY_ks__ "IN") SET(ZANATA_SUGGEST_COUNTRY_ku__ "TR") SET(ZANATA_SUGGEST_COUNTRY_kw__ "GB") SET(ZANATA_SUGGEST_COUNTRY_ky__ "KG") SET(ZANATA_SUGGEST_COUNTRY_lb__ "LU") SET(ZANATA_SUGGEST_COUNTRY_lg__ "UG") SET(ZANATA_SUGGEST_COUNTRY_li__ "BE") SET(ZANATA_SUGGEST_COUNTRY_lij__ "IT") SET(ZANATA_SUGGEST_COUNTRY_li__ "NL") SET(ZANATA_SUGGEST_COUNTRY_lo__ "LA") SET(ZANATA_SUGGEST_COUNTRY_lt__ "LT") SET(ZANATA_SUGGEST_COUNTRY_lv__ "LV") SET(ZANATA_SUGGEST_COUNTRY_mag__ "IN") SET(ZANATA_SUGGEST_COUNTRY_mai__ "IN") SET(ZANATA_SUGGEST_COUNTRY_mg__ "MG") SET(ZANATA_SUGGEST_COUNTRY_mhr__ "RU") SET(ZANATA_SUGGEST_COUNTRY_mi__ "NZ") SET(ZANATA_SUGGEST_COUNTRY_mk__ "MK") SET(ZANATA_SUGGEST_COUNTRY_ml__ "IN") SET(ZANATA_SUGGEST_COUNTRY_mni__ "IN") SET(ZANATA_SUGGEST_COUNTRY_mn__ "MN") SET(ZANATA_SUGGEST_COUNTRY_mr__ "IN") SET(ZANATA_SUGGEST_COUNTRY_ms__ "MY") SET(ZANATA_SUGGEST_COUNTRY_mt__ "MT") SET(ZANATA_SUGGEST_COUNTRY_my__ "MM") SET(ZANATA_SUGGEST_COUNTRY_nan__ "TW") SET(ZANATA_SUGGEST_COUNTRY_nb__ "NO") SET(ZANATA_SUGGEST_COUNTRY_nds__ "DE") SET(ZANATA_SUGGEST_COUNTRY_ne__ "NP") SET(ZANATA_SUGGEST_COUNTRY_nhn__ "MX") SET(ZANATA_SUGGEST_COUNTRY_niu__ "NU") SET(ZANATA_SUGGEST_COUNTRY_nl__ "NL") SET(ZANATA_SUGGEST_COUNTRY_nn__ "NO") SET(ZANATA_SUGGEST_COUNTRY_no__ "NO") SET(ZANATA_SUGGEST_COUNTRY_nr__ "ZA") SET(ZANATA_SUGGEST_COUNTRY_nso__ "ZA") SET(ZANATA_SUGGEST_COUNTRY_oc__ "FR") SET(ZANATA_SUGGEST_COUNTRY_om__ "ET") SET(ZANATA_SUGGEST_COUNTRY_or__ "IN") SET(ZANATA_SUGGEST_COUNTRY_os__ "RU") SET(ZANATA_SUGGEST_COUNTRY_pa__ "IN") SET(ZANATA_SUGGEST_COUNTRY_pap__ "AN") SET(ZANATA_SUGGEST_COUNTRY_pl__ "PL") SET(ZANATA_SUGGEST_COUNTRY_ps__ "AF") SET(ZANATA_SUGGEST_COUNTRY_pt__ "PT") SET(ZANATA_SUGGEST_COUNTRY_ro__ "RO") SET(ZANATA_SUGGEST_COUNTRY_ru__ "RU") SET(ZANATA_SUGGEST_COUNTRY_rw__ "RW") SET(ZANATA_SUGGEST_COUNTRY_sa__ "IN") SET(ZANATA_SUGGEST_COUNTRY_sat__ "IN") SET(ZANATA_SUGGEST_COUNTRY_sc__ "IT") SET(ZANATA_SUGGEST_COUNTRY_sd__ "IN") SET(ZANATA_SUGGEST_COUNTRY_se__ "NO") SET(ZANATA_SUGGEST_COUNTRY_shs__ "CA") SET(ZANATA_SUGGEST_COUNTRY_sid__ "ET") SET(ZANATA_SUGGEST_COUNTRY_si__ "LK") SET(ZANATA_SUGGEST_COUNTRY_sk__ "SK") SET(ZANATA_SUGGEST_COUNTRY_sl__ "SI") SET(ZANATA_SUGGEST_COUNTRY_so__ "SO") SET(ZANATA_SUGGEST_COUNTRY_sq__ "AL") SET(ZANATA_SUGGEST_COUNTRY_sq__ "MK") SET(ZANATA_SUGGEST_COUNTRY_sr__ "RS") SET(ZANATA_SUGGEST_COUNTRY_sr__latin "RS") SET(ZANATA_SUGGEST_COUNTRY_sr_Cyrl_ "RS") SET(ZANATA_SUGGEST_COUNTRY_sr_Latn_ "RS") SET(ZANATA_SUGGEST_COUNTRY_sr_Latn_latin "RS") SET(ZANATA_SUGGEST_COUNTRY_ss__ "ZA") SET(ZANATA_SUGGEST_COUNTRY_st__ "ZA") SET(ZANATA_SUGGEST_COUNTRY_sv__ "SE") SET(ZANATA_SUGGEST_COUNTRY_sw__ "TZ") SET(ZANATA_SUGGEST_COUNTRY_szl__ "PL") SET(ZANATA_SUGGEST_COUNTRY_ta__ "IN") SET(ZANATA_SUGGEST_COUNTRY_te__ "IN") SET(ZANATA_SUGGEST_COUNTRY_tg__ "TJ") SET(ZANATA_SUGGEST_COUNTRY_th__ "TH") SET(ZANATA_SUGGEST_COUNTRY_ti__ "ET") SET(ZANATA_SUGGEST_COUNTRY_tig__ "ER") SET(ZANATA_SUGGEST_COUNTRY_tk__ "TM") SET(ZANATA_SUGGEST_COUNTRY_tl__ "PH") SET(ZANATA_SUGGEST_COUNTRY_tn__ "ZA") SET(ZANATA_SUGGEST_COUNTRY_tr__ "TR") SET(ZANATA_SUGGEST_COUNTRY_ts__ "ZA") SET(ZANATA_SUGGEST_COUNTRY_tt__ "RU") SET(ZANATA_SUGGEST_COUNTRY_ug__ "CN") SET(ZANATA_SUGGEST_COUNTRY_uk__ "UA") SET(ZANATA_SUGGEST_COUNTRY_unm__ "US") SET(ZANATA_SUGGEST_COUNTRY_ur__ "PK") SET(ZANATA_SUGGEST_COUNTRY_uz__ "UZ") SET(ZANATA_SUGGEST_COUNTRY_ve__ "ZA") SET(ZANATA_SUGGEST_COUNTRY_vi__ "VN") SET(ZANATA_SUGGEST_COUNTRY_wa__ "BE") SET(ZANATA_SUGGEST_COUNTRY_wae__ "CH") SET(ZANATA_SUGGEST_COUNTRY_wal__ "ET") SET(ZANATA_SUGGEST_COUNTRY_wba__ "VE") SET(ZANATA_SUGGEST_COUNTRY_wo__ "SN") SET(ZANATA_SUGGEST_COUNTRY_xh__ "ZA") SET(ZANATA_SUGGEST_COUNTRY_yi__ "US") SET(ZANATA_SUGGEST_COUNTRY_yo__ "NG") SET(ZANATA_SUGGEST_COUNTRY_yue__ "HK") SET(ZANATA_SUGGEST_COUNTRY_zh__ "CN") SET(ZANATA_SUGGEST_COUNTRY_zh_Hans_ "CN") SET(ZANATA_SUGGEST_COUNTRY_zh_Hant_ "TW") SET(ZANATA_SUGGEST_COUNTRY_zu__ "ZA") SET(ZANATA_SUGGEST_SCRIPT_sr__ "Cyrl") SET(ZANATA_SUGGEST_SCRIPT_sr_RS_ "Cyrl") SET(ZANATA_SUGGEST_SCRIPT_sr__latin "Latn") SET(ZANATA_SUGGEST_SCRIPT_sr_RS_latin "Latn") SET(ZANATA_SUGGEST_SCRIPT_zh__ "Hans") SET(ZANATA_SUGGEST_SCRIPT_zh_CN_ "Hans") SET(ZANATA_SUGGEST_SCRIPT_zh_SG_ "Hans") SET(ZANATA_SUGGEST_SCRIPT_zh_TW_ "Hant") SET(ZANATA_SUGGEST_SCRIPT_zh_HG_ "Hant") SET(ZANATA_SUGGEST_SCRIPT_zh_MO_ "Hant") SET(ZANATA_SUGGEST_MODIFIER_sr_Latn_ "latin") cmake-fedora-2.7.2-Source/Modules/ManageVersion.cmake000664 001750 001750 00000015062 12643117136 022664 0ustar00dchendchen000000 000000 # - Manage Version, ChangeLog and project information (prj_info.cmake) # # Included Modules: # - DateTimeFormat # - ManageString # - ManageVariable # # Set cache for following variables: # - CHANGELOG_FILE: Location of ChangeLog. # Default: ${CMAKE_SOURCE_DIR}/ChangeLog # - PRJ_INFO_CMAKE_FILE: Path to prj_info.cmake # Default: ${CMAKE_FEDORA_TMP_DIR}/prj_info.cmake # # Defines following functions: # RELEASE_NOTES_READ_FILE([]) # - Load release file information. # * Parameters: # + release_file: (Optional) release file to be read. # This file should contain following definition: # - PRJ_VER: Release version. # - SUMMARY: Summary of the release. Will be output as CHANGE_SUMMARY. # - Section [Changes]: # Changes of this release list below the section tag. # Default:${CMAKE_SOURCE_DIR}/RELEASE-NOTES.txt # * Values to cached: # + PRJ_VER: Version. # + CHANGE_SUMMARY: Summary of changes. # + RELEASE_NOTES_FILE: The loaded release file. # * Compile flags defined: # + PRJ_VER: Project version. # # PRJ_INFO_CMAKE_WRITE() # - Write the project infomation to prj_info.cmake. # # PRJ_INFO_CMAKE_APPEND() # - Append var to prj_info.cmake. # * Parameters: # + var: Variable to be append to prj_info.cmake. # # Defines following macros: # PRJ_INFO_CMAKE_READ() # - Read prj_info.cmake and get the info of projects. # This macro is meant to be run by ManageChangeLogScript script. # So normally no need to call it manually. # * Parameters: # + prj_info_file: File name to be appended to. # Default: ${PRJ_INFO_CMAKE_FILE}, otherwise ${CMAKE_FEDORA_TMP_DIR}/prj_info.cmake. # * Targets: # + changelog: Always update ChangeLog. So it updates the date in ChangeLog. # + changelog_no_force: Only update ChangeLog if necessary. IF(DEFINED _MANAGE_VERSION_CMAKE_) RETURN() ENDIF(DEFINED _MANAGE_VERSION_CMAKE_) SET(_MANAGE_VERSION_CMAKE_ "DEFINED") INCLUDE(ManageMessage) INCLUDE(ManageVariable) INCLUDE(ManageFile) SET(PRJ_INFO_VARIABLE_LIST PROJECT_NAME PRJ_VER PRJ_SUMMARY SUMMARY_TRANSLATIONS PRJ_DESCRIPTION DESCRIPTION_TRANSLATIONS LICENSE PRJ_GROUP MAINTAINER AUTHORS VENDER BUILD_ARCH RPM_SPEC_URL RPM_SPEC_SOURCES ) SET(CHANGELOG_FILE "${CMAKE_SOURCE_DIR}/ChangeLog" CACHE FILEPATH "ChangeLog") SET(PRJ_INFO_CMAKE_FILE "${CMAKE_FEDORA_TMP_DIR}/prj_info.cmake" CACHE INTERNAL "prj_info.cmake") FUNCTION(PRJ_INFO_CMAKE_APPEND var) IF(NOT "${${var}}" STREQUAL "") STRING_ESCAPE_BACKSLASH(_str "${${var}}") STRING_ESCAPE_DOLLAR(_str "${_str}") STRING_ESCAPE_QUOTE(_str "${_str}") FILE(APPEND ${PRJ_INFO_CMAKE_FILE} "SET(${var} \"${_str}\")\n") ENDIF(NOT "${${var}}" STREQUAL "") ENDFUNCTION(PRJ_INFO_CMAKE_APPEND) MACRO(PRJ_INFO_CMAKE_READ prj_info_file) IF("${prj_info_file}" STREQUAL "") M_MSG(${M_EROR} "Requires prj_info.cmake") ENDIF() INCLUDE(${prj_info_file} RESULT_VARIABLE prjInfoPath) IF("${prjInfoPath}" STREQUAL "NOTFOUND") M_MSG(${M_ERROR} "Failed to read ${prj_info_file}") ENDIF() ENDMACRO(PRJ_INFO_CMAKE_READ) FUNCTION(PRJ_INFO_CMAKE_WRITE) FILE(REMOVE "${PRJ_INFO_CMAKE_FILE}") FOREACH(_v ${PRJ_INFO_VARIABLE_LIST}) PRJ_INFO_CMAKE_APPEND(${_v}) ENDFOREACH(_v) ENDFUNCTION(PRJ_INFO_CMAKE_WRITE prj_info_file) ## All variable should be specified eplicitly FUNCTION(RELEASE_NOTES_FILE_EXTRACT_CHANGELOG_CURRENT var releaseNoteFile ) FILE(STRINGS "${releaseNoteFile}" _releaseLines) SET(_changeItemSection 0) SET(_changeLogThis "") ## Parse release file INCLUDE(ManageString) FOREACH(_line ${_releaseLines}) IF(_changeItemSection) ### Append lines in change section STRING_APPEND(_changeLogThis "${_line}" "\n") ELSEIF("${_line}" MATCHES "^[[]Changes[]]") ### Start the change section SET(_changeItemSection 1) ENDIF() ENDFOREACH(_line ${_releaseLines}) SET(${var} "${_changeLogThis}" PARENT_SCOPE) ENDFUNCTION(RELEASE_NOTES_FILE_EXTRACT_CHANGELOG_CURRENT) FUNCTION(RELEASE_NOTES_READ_FILES_VARIABLES releaseNoteFile ) FILE(STRINGS "${RELEASE_NOTES_FILE}" _release_lines) SET(CHANGELOG_CURRENT_FILE "${CMAKE_FEDORA_TMP_DIR}/ChangeLog.current" CACHE INTERNAL "ChangeLog.current") ## Parse release file IF (POLICY CMP0054) CMAKE_POLICY(PUSH) CMAKE_POLICY(SET CMP0054 "NEW") ENDIF() FOREACH(_line ${_release_lines}) IF("${_line}" MATCHES "^[[]Changes[]]") ### Start the change section BREAK() ELSEIF(NOT "${_line}" MATCHES "^\\s*#") SETTING_STRING_GET_VARIABLE(var value "${_line}") IF("${var}" STREQUAL "PRJ_VER") SET(${var} "${value}" CACHE STRING "Project Version" FORCE) ELSEIF("${var}" STREQUAL "SUMMARY") SET(CHANGE_SUMMARY "${value}" CACHE STRING "Change Summary" FORCE) ELSE("${var}" STREQUAL "PRJ_VER") SET(${var} "${value}" CACHE STRING "${var}" FORCE) ENDIF("${var}" STREQUAL "PRJ_VER") ENDIF("${_line}" MATCHES "^[[]Changes[]]") ENDFOREACH(_line) IF (POLICY CMP0054) CMAKE_POLICY(POP) ENDIF() ENDFUNCTION(RELEASE_NOTES_READ_FILES_VARIABLES) FUNCTION(RELEASE_NOTES_READ_FILE) FOREACH(_arg ${ARGN}) IF(EXISTS ${_arg}) SET(RELEASE_NOTES_FILE ${_arg} CACHE FILEPATH "Release File") ENDIF(EXISTS ${_arg}) ENDFOREACH(_arg ${ARGN}) IF(NOT RELEASE_NOTES_FILE) SET(RELEASE_NOTES_FILE "${CMAKE_SOURCE_DIR}/RELEASE-NOTES.txt" CACHE FILEPATH "Release Notes") ENDIF(NOT RELEASE_NOTES_FILE) FILE(STRINGS "${RELEASE_NOTES_FILE}" _release_lines) SET(_changeItemSection 0) SET(CHANGELOG_CURRENT_FILE "${CMAKE_FEDORA_TMP_DIR}/ChangeLog.current" CACHE INTERNAL "ChangeLog.current") ## Parse release file RELEASE_NOTES_READ_FILES_VARIABLES(${RELEASE_NOTES_FILE}) IF(NOT CMAKE_SCRIPT_MODE_FILE) ## Non Script mode INCLUDE(ManageTarget) ## Only update prj_info in non-script mode PRJ_INFO_CMAKE_WRITE() ADD_CUSTOM_TARGET(refresh_cmake_cache COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_SOURCE_DIR}/CMakeCache.txt COMMAND ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR} ) ADD_CUSTOM_TARGET_COMMAND(changelog NO_FORCE OUTPUT ${CHANGELOG_FILE} COMMAND ${CMAKE_COMMAND} -Dcmd=update -Dchangelog=${CHANGELOG_FILE} -Drelease=${RELEASE_NOTES_FILE} -Dprj_info=${PRJ_INFO_CMAKE_FILE} -Dcmakecache=${CMAKE_BINARY_DIR}/CMakeCache.txt -Dcmake_source_dir=${CMAKE_SOURCE_DIR} -P ${CMAKE_FEDORA_MODULE_DIR}/ManageChangeLogScript.cmake DEPENDS ${RELEASE_NOTES_FILE} COMMENT "changelog: ${CHANGELOG_FILE}" ) ENDIF() ENDFUNCTION(RELEASE_NOTES_READ_FILE) cmake-fedora-2.7.2-Source/Modules/CmakeFedoraScript.cmake000664 001750 001750 00000016457 12622260213 023455 0ustar00dchendchen000000 000000 # - Cmake Fedora Script # Scripts to be invoked in command line # MACRO(CMAKE_FEDORA_SCRIPT_PRINT_USAGE) MESSAGE("cmake-fedora utility scripts cmake -D cmd=configure_file -D inputFile= -D outputFile= [-D atOnly=1] [-D cmake_fedora_module_dir=] [-D escape_quotes=1] [\"-D =\"] -P /CmakeFedoraScript.cmake Copy a file to another location and modify its contents. This is a wrapper of CONFIGURE_FILE command in cmake. Note: Please pass the necessary variables via -Dvar=VALUE, e.g. -DPROJECT_NAME=cmake-fedora Options: inputFile: input file outPutFile: output file atOnly: Replace only the variables surround by '@', like @VAR@. Same as passing '@ONLY' to CONFIGURE_FILE. cmake_fedora_module_dir: Specify this if cmake and cmake-fedora failed to find the location of CMake Fedora modules. escape_quotes: Substituted quotes will be C-style escape. Same as passing 'ESCAPE_QUOTES' to CONFIGURE_FILE. cmake -D cmd=find_file|find_program -D \"names=\" [-D cmake_fedora_module_dir=] [-D paths=\";\"] [-D error_msg=] [-D verbose_level=] [-D no_default_path=1] -P /CmakeFedoraScript.cmake Find a file or program with name1 or name2, with proper error handling. Options: cmake_fedora_module_dir: Specify this if cmake and cmake-fedora failed to find the location of CMake Fedora modules. paths: Paths that files might be located. error_msg: Error message to be shown if not-found. verbose_level: Verbose level for not-found message. 1: Critical (The 'not found' message is shown as critical) 2: Error (The 'not found' message is shown as error) 3: Warning (The 'not found' message is shown as warning) 4: Off (The 'not found' message is shown as off, that is, turn off certain functionality). 5: Info1 6: Info2 7: Info3 Default: 3 (Warning) no_default_path: CMake default paths will not be search. Useful if you only want to search the file list in -Dpaths. cmake -D cmd=manage_file_cache -D \"run=\" -D cache_file= [-D cmake_fedora_module_dir=] [-D expiry_seconds=seconds] [-D cache_dir=dir] -P /CmakeFedoraScript.cmake Output from either cache file or run command. Command is run when 1) cache expired or 2) no cache. Cache will be update after run command. Options: run=: The command that provide output. cache_file=: The path to cache file. cmake_fedora_module_dir=: Specify this if cmake and cmake-fedora failed to find the location of CMake Fedora modules. expiry_seconds=: After the cache should expired. cache_dir=: The directory to put cache. cmake -D cmd=get_variable -Dvar= [-D noescape_semicolon=1] -P /CmakeFedoraScript.cmake Get variable value from cmake-fedora.conf. Options: noescape_semicolon=1: Do not escape semicolon, so ';' split strings can be interpreted as list. ") ENDMACRO(CMAKE_FEDORA_SCRIPT_PRINT_USAGE) FUNCTION(CONFIGURE_FILE_SCRIPT) IF(NOT inputFile) CMAKE_FEDORA_SCRIPT_PRINT_USAGE() M_MSG(${M_FATAL} "Requires -DinputFile=") ENDIF() IF(NOT EXISTS "${inputFile}") M_MSG(${M_FATAL} "Input file not exists: ${inputFile}") ENDIF() IF(NOT outputFile) CMAKE_FEDORA_SCRIPT_PRINT_USAGE() M_MSG(${M_FATAL} "Requires -DoutputFile=") ENDIF() SET(_opts) IF(escape_quotes) LIST(APPEND _opts "ESCAPE_QUOTES") ENDIF() IF(at_only) LIST(APPEND _opts "@ONLY") ENDIF() CONFIGURE_FILE("${inputFile}" "${outputFile}" ${_opts}) ENDFUNCTION(CONFIGURE_FILE_SCRIPT) MACRO(FIND_FILE_OR_PROGRAM) SET(_args "") IF(error_msg) LIST(APPEND _args "ERROR_MSG" "${error_msg}") ENDIF() SET(_verboseLevel "${M_WARN}") IF(DEFINED verbose_level) SET(_verboseLevel "${verbose_level}") ENDIF() LIST(APPEND _args "VERBOSE_LEVEL" "${_verboseLevel}") IF(DEFINED no_default_path) LIST(APPEND _args "NO_DEFAULT_PATH") ENDIF() LIST(APPEND _args "FIND_ARGS" "NAMES" "${names}") IF(paths) LIST(APPEND _args "PATHS" "${paths}") ENDIF() IF(cmd STREQUAL "find_file") FIND_FILE_ERROR_HANDLING(_var ${_args}) ELSEIF(cmd STREQUAL "find_program") FIND_PROGRAM_ERROR_HANDLING(_var ${_args}) ENDIF() IF(_var STREQUAL "_var-NOTFOUND") M_MSG(${_verboseLevel} "${cmd}: '${names}' not found!") ELSE() M_OUT("${_var}") ENDIF() UNSET(_verboseLevel CACHE) ENDMACRO(FIND_FILE_OR_PROGRAM) FUNCTION(MANAGE_FILE_CACHE_SCRIPT) IF(NOT run) CMAKE_FEDORA_SCRIPT_PRINT_USAGE() M_MSG(${M_FATAL} "Requires -Drun=") ENDIF() IF(NOT cache_file) CMAKE_FEDORA_SCRIPT_PRINT_USAGE() M_MSG(${M_FATAL} "Requires -Dcache_file=") ENDIF() SET(_opts "") IF(expiry_seconds) LIST(APPEND _opts EXPIRY_SECONDS "${expiry_seconds}") ENDIF() IF(cache_dir) LIST(APPEND _opts CACHE_DIR "${cache_dir}") ENDIF() MANAGE_FILE_CACHE(v ${cache_file} ${_opts} COMMAND sh -c "${run}") M_OUT("${v}") ENDFUNCTION(MANAGE_FILE_CACHE_SCRIPT) FUNCTION(CMAKE_FEDORA_GET_VARIABLE_SCRIPT) IF(NOT var) CMAKE_FEDORA_SCRIPT_PRINT_USAGE() M_MSG(${M_FATAL} "Requires -Dvar=") ENDIF(NOT var) SET(opts) IF(noescape_semicolon) LIST(APPEND opts "NOESCAPE_SEMICOLON") ENDIF() CMAKE_FEDORA_CONF_GET_ALL_VARIABLES(${opts}) M_OUT("${${var}}") ENDFUNCTION(CMAKE_FEDORA_GET_VARIABLE_SCRIPT) ####################################### # Init # SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON) ##== Determine CMAKE_FEDORA_MODULE_DIR == ## It is possible that current dir is in NO_PACK/FedPkg/ LIST(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_SOURCE_DIR}/Modules ${CMAKE_SOURCE_DIR}/cmake-fedora/Modules ${CMAKE_SOURCE_DIR}/../../../Modules ${CMAKE_SOURCE_DIR}/../../../cmake-fedora/Modules ${CMAKE_SOURCE_DIR} ) IF(CMAKE_SCRIPT_MODE_FILE) GET_FILENAME_COMPONENT(CMAKE_FEDORA_SCRIPT_DIR ${CMAKE_SCRIPT_MODE_FILE} PATH) LIST(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_FEDORA_SCRIPT_DIR}") ENDIF() IF(cmake_fedora_module_dir) LIST(INSERT CMAKE_MODULE_PATH 0 "${cmake_fedora_module_dir}") ENDIF() ##== Policies == IF(POLICY CMP0017) CMAKE_POLICY(SET CMP0017 NEW) ENDIF() ##== Module Includes == INCLUDE(ManageMessage RESULT_VARIABLE MANAGE_MODULE_PATH) IF(NOT MANAGE_MODULE_PATH) MESSAGE(FATAL_ERROR "ManageMessage.cmake cannot be found in ${CMAKE_MODULE_PATH}") ENDIF() INCLUDE(ManageFile) ####################################### # Parse Arguments and Run # IF(NOT DEFINED cmd) CMAKE_FEDORA_SCRIPT_PRINT_USAGE() ELSEIF(cmd STREQUAL "find_file" OR cmd STREQUAL "find_program") IF(NOT names) CMAKE_FEDORA_SCRIPT_PRINT_USAGE() M_MSG(${M_FATAL} "Requires -Dnames=\"\"") ENDIF(NOT names) FIND_FILE_OR_PROGRAM() ELSEIF(cmd STREQUAL "configure_file") CONFIGURE_FILE_SCRIPT() ELSEIF(cmd STREQUAL "manage_file_cache") MANAGE_FILE_CACHE_SCRIPT() ELSEIF(cmd STREQUAL "get_variable") CMAKE_FEDORA_GET_VARIABLE_SCRIPT() ELSE() CMAKE_FEDORA_SCRIPT_PRINT_USAGE() M_MSG(${M_FATAL} "Invalid cmd ${cmd}") ENDIF() cmake-fedora-2.7.2-Source/Modules/DateTimeFormat.cmake000664 001750 001750 00000002117 12372030403 022756 0ustar00dchendchen000000 000000 # - Date/time format module. # # Define the following variables: # - TODAY_CHANGELOG: Today in the format that is used in RPM Changelog. # e.g. Wed 08 Aug 2010 # - TODAY_SHORT: Short presentation of today, e.g. 20100818. # # Defines the following macros: # TODAY( []) # - Get date of today in specified format and locale. # * Parameters: # + date_var: Result date string # + format: date format for date(1) # + locale: locale of the string. # Use current locale setting if locale is not given. # # IF(DEFINED _DATE_TIME_FORMAT_CMAKE_) RETURN() ENDIF(DEFINED _DATE_TIME_FORMAT_CMAKE_) SET(_DATE_TIME_FORMAT_CMAKE_ "DEFINED") FUNCTION(TODAY date_var format) SET(_locale ${ARGV2}) IF(_locale) SET(ENV{LC_ALL} ${_locale}) ENDIF(_locale) EXECUTE_PROCESS(COMMAND date -u "${format}" OUTPUT_VARIABLE _ret OUTPUT_STRIP_TRAILING_WHITESPACE ) SET(${date_var} "${_ret}" PARENT_SCOPE) ENDFUNCTION(TODAY date_var format) TODAY(TODAY_CHANGELOG "+%a %b %d %Y" "C") TODAY(TODAY_SHORT "+%Y%m%d" "C") cmake-fedora-2.7.2-Source/Modules/ManageRelease.cmake000664 001750 001750 00000003634 12643117136 022621 0ustar00dchendchen000000 000000 # - Manage release by provides release related targets. # # Included Modules: # - ManageMessage # - ManageVariable # # Defines following functions: # MANAGE_RELEASE([] [DEPENDS ]) # - Run release targets. # This macro skips the missing targets so distro package maintainers # do not have to get the irrelevant dependencies. # For the "hard" dependency, use cmake command "ADD_DEPENDENCIES". # * Parameters: # + releaseTarget ...: Targets to be executed before a release. # Note that sequence of the targets does not guarantee the # sequence of execution. # + DEPENDS dependFile ...: Files that target "release" depends on. # * Defines following targets: # + release: Perform everything required for a release. # IF(DEFINED _MANAGE_RELEASE_CMAKE_) RETURN() ENDIF(DEFINED _MANAGE_RELEASE_CMAKE_) SET(_MANAGE_RELEASE_CMAKE_ "DEFINED") INCLUDE(ManageMessage) INCLUDE(ManageVariable) FUNCTION(MANAGE_RELEASE) SET(_validOptions "DEPENDS") VARIABLE_PARSE_ARGN(_o _validOptions ${ARGN}) SET(_releaseDependOptList "") IF(NOT "${_o_DEPENDS}" STREQUAL "") SET(_releaseDependOptList DEPENDS ${_o_DEPENDS}) ENDIF(NOT "${_o_DEPENDS}" STREQUAL "") ADD_CUSTOM_TARGET(release ${_releaseDependOptList} COMMENT "release: ${PROJECT_NAME}-${PRJ_VER}" ) IF(TARGET tag) ADD_DEPENDENCIES(release tag) ENDIF(TARGET tag) ## Add dependent targets that actually exists SET(_releaseTargets "") FOREACH(_target ${_o}) IF(TARGET ${_target}) LIST(APPEND _releaseTargets "${_target}") ## Release targets should be build after target tag ADD_DEPENDENCIES(${_target} tag) ADD_DEPENDENCIES(release ${_target}) ELSE(TARGET ${_target}) M_MSG(${M_OFF} "MANAGE_RELEASE: Target ${_target} does not exist, skipped.") ENDIF(TARGET ${_target}) ENDFOREACH(_target) ENDFUNCTION(MANAGE_RELEASE) cmake-fedora-2.7.2-Source/Modules/ManageTranslation.cmake000664 001750 001750 00000055054 12663611671 023547 0ustar00dchendchen000000 000000 # - Manage Translation # This module supports software translation by: # Creates gettext related targets. # Communicate to Zanata servers. # # By calling MANAGE_GETTEXT(), following variables are available in cache: # - MANAGE_TRANSLATION_LOCALES: Locales that would be processed. # # Included Modules: # - ManageArchive # - ManageDependency # - ManageFile # - ManageMessage # - ManageString # - ManageVariable # - ManageZanataSuggest # # Defines following targets: # + translations: Virtual target that make the translation files. # Once MANAGE_GETTEXT is used, this target invokes targets that # build translation. # # Defines following variables: # + XGETTEXT_OPTIONS_C: Default xgettext options for C programs. # Defines or read from following variables: # + MANAGE_TRANSLATION_MSGFMT_OPTIONS: msgfmt options # Default: --check --check-compatibility --strict # + MANAGE_TRANSLATION_MSGMERGE_OPTIONS: msgmerge options # Default: --update --indent --backup=none # + MANAGE_TRANSLATION_XGETEXT_OPTIONS: xgettext options # Default: ${XGETTEXT_OPTIONS_C} # # Defines following functions: # MANAGE_POT_FILE( # [SRCS ...] # [PO_DIR ] # [MO_DIR |MO_LOCALE_DIR | NO_MO] # [NO_MO] # [LOCALES ... | SYSTEM_LOCALES] # [XGETTEXT_OPTIONS ...] # [MSGMERGE_OPTIONS ] # [MSGFMT_OPTIONS ] # [CLEAN] # [COMMAND ...] # [DEPENDS ...] # ) # - Add a new pot file and source files that create the pot file. # It is mandatory if for multiple pot files. # By default, cmake-fedora will set the directory property # PROPERTIES CLEAN_NO_CUSTOM as "1" to prevent po files get cleaned # by "make clean". For this behavior to be effective, invoke this function # in the directory that contains generated PO file. # * Parameters: # + : .pot file with path. # + SRCS ... : Source files for xgettext to work on. # + DOMAIN_NAME : gettext domain name. # Default: .pot filename without extension. # + PO_DIR : Directory of .po files. # This option is mandatory if .pot and associated .po files # are not in the same directory. # Default: Same directory of . # + MO_DIR dir: Directory to create .gmo files. The .gmo files # are created as: /.gmo # This option collide with NO_MO and MO_LOCALE_DIR. # Default: Same with PO_DIR # + MO_LOCALE_DIR dir: Directory to create .mo files. The .mo files # are created as: /locale//LC_MESSAGES/.mo # This option collide with NO_MO and MO_DIR. # + NO_MO: Skip the mo generation, usually for document trnslation # that do not require MO. # This option collide with MO_DIR and MO_LOCALE_DIR. # + LOCALES locale ... : (Optional) Locale list to be generated. # + SYSTEM_LOCALES: (Optional) System locales from /usr/share/locale. # + XGETTEXT_OPTIONS opt ... : xgettext options. # + MSGMERGE_OPTIONS msgmergeOpt: (Optional) msgmerge options. # Default: ${MANAGE_TRANSLATION_MSGMERGE_OPTIONS}, which is # + MSGFMT_OPTIONS msgfmtOpt: (Optional) msgfmt options. # Default: ${MANAGE_TRANSLATION_MSGFMT_OPTIONS} # + CLEAN: Clean the POT, PO, MO files when doing make clean # By default, cmake-fedora will set the directory property # PROPERTIES CLEAN_NO_CUSTOM as "1" to prevent po files get cleaned. # Specify "CLEAN" to override this behavior. # + COMMAND cmd ... : Non-xgettext command that create pot file. # + DEPENDS file ... : Files that pot file depends on. # SRCS files are already depended on, so no need to list here. # * Variables to cache: # + MANAGE_TRANSLATION_GETTEXT_POT_FILES: List of pot files. # + MANAGE_TRANSLATION_GETTEXT_PO_FILES: List of all po files. # + MANAGE_TRANSLATION_GETTEXT_MO_FILES: List of all mo filess. # + MANAGE_TRANSLATION_LOCALES: List of locales. # # MANAGE_GETTEXT([ALL] # [POT_FILE ] # [SRCS ...] # [PO_DIR ] # [MO_DIR ] # [NO_MO] # [LOCALES ... | SYSTEM_LOCALES] # [XGETTEXT_OPTIONS ...] # [MSGMERGE_OPTIONS ] # [MSGFMT_OPTIONS ] # [CLEAN] # [DEPENDS ...] # ) # - Manage Gettext support. # If no POT files were added, it invokes MANAGE_POT_FILE and manage .pot, .po and .gmo files. # This command creates targets for making the translation files. # So naturally, this command should be invoke after the last MANAGE_POT_FILE command. # The parameters are similar to the ones at MANAGE_POT_FILE, except: # * Parameters: # + ALL: (Optional) make target "all" depends on gettext targets. # + POT_FILE potFile: (Optional) pot files with path. # Default: ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pot # Refer MANAGE_POT_FILE for rest of the parameters. # * Targets: # + pot_files: Generate pot files. # + update_po: Update po files according to pot files. # + gmo_files: Converts po files to mo files. # + translation: Complete all translation tasks. # * Variables to cache: # + MANAGE_TRANSLATION_GETTEXT_POT_FILES: List of pot files. # + MANAGE_TRANSLATION_GETTEXT_PO_FILES: List of all po files. # + MANAGE_TRANSLATION_GETTEXT_MO_FILES: Lis of all mo filess. # + MANAGE_TRANSLATION_LOCALES: List of locales. # * Variables to cache: # + MSGINIT_EXECUTABLE: the full path to the msginit tool. # + MSGMERGE_EXECUTABLE: the full path to the msgmerge tool. # + MSGFMT_EXECUTABLE: the full path to the msgfmt tool. # + XGETTEXT_EXECUTABLE: the full path to the xgettext. # + MANAGE_LOCALES: Locales to be processed. # IF(DEFINED _MANAGE_TRANSLATION_CMAKE_) RETURN() ENDIF(DEFINED _MANAGE_TRANSLATION_CMAKE_) SET(_MANAGE_TRANSLATION_CMAKE_ "DEFINED") INCLUDE(ManageMessage) INCLUDE(ManageFile) INCLUDE(ManageString) INCLUDE(ManageVariable) INCLUDE(ManageZanataSuggest) ####################################### # GETTEXT support # SET(XGETTEXT_OPTIONS_COMMON --from-code=UTF-8 --indent --sort-by-file ) SET(XGETTEXT_OPTIONS_C ${XGETTEXT_OPTIONS_COMMON} --language=C --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2 --keyword=gettext --keyword=dgettext:2 --keyword=dcgettext:2 --keyword=ngettext:1,2 --keyword=dngettext:2,3 --keyword=dcngettext:2,3 --keyword=gettext_noop --keyword=pgettext:1c,2 --keyword=dpgettext:2c,3 --keyword=dcpgettext:2c,3 --keyword=npgettext:1c,2,3 --keyword=dnpgettext:2c,3,4 --keyword=dcnpgettext:2c,3,4. ) SET(MANAGE_TRANSLATION_MSGFMT_OPTIONS "--check" CACHE STRING "msgfmt options" ) SET(MANAGE_TRANSLATION_MSGMERGE_OPTIONS "--indent" "--update" "--sort-by-file" "--backup=none" CACHE STRING "msgmerge options" ) SET(MANAGE_TRANSLATION_XGETTEXT_OPTIONS ${XGETTEXT_OPTIONS_C} CACHE STRING "xgettext options" ) FUNCTION(MANAGE_TRANSLATION_GETTEXT_POT_FILES_SET value) SET(MANAGE_TRANSLATION_GETTEXT_POT_FILES "${value}" CACHE INTERNAL "POT files") ENDFUNCTION() FUNCTION(MANAGE_TRANSLATION_GETTEXT_POT_FILES_ADD) LIST(APPEND MANAGE_TRANSLATION_GETTEXT_POT_FILES ${ARGN}) MANAGE_TRANSLATION_GETTEXT_POT_FILES_SET("${MANAGE_TRANSLATION_GETTEXT_POT_FILES}") ENDFUNCTION() FUNCTION(MANAGE_TRANSLATION_GETTEXT_PO_FILES_SET value) SET(MANAGE_TRANSLATION_GETTEXT_PO_FILES "${value}" CACHE INTERNAL "PO files") ENDFUNCTION() FUNCTION(MANAGE_TRANSLATION_GETTEXT_PO_FILES_ADD) LIST(APPEND MANAGE_TRANSLATION_GETTEXT_PO_FILES ${ARGN}) MANAGE_TRANSLATION_GETTEXT_PO_FILES_SET("${MANAGE_TRANSLATION_GETTEXT_PO_FILES}") ENDFUNCTION() FUNCTION(MANAGE_TRANSLATION_GETTEXT_MO_FILES_SET value) SET(MANAGE_TRANSLATION_GETTEXT_MO_FILES "${value}" CACHE INTERNAL "MO files") ENDFUNCTION() FUNCTION(MANAGE_TRANSLATION_GETTEXT_MO_FILES_ADD) LIST(APPEND MANAGE_TRANSLATION_GETTEXT_MO_FILES ${ARGN}) MANAGE_TRANSLATION_GETTEXT_MO_FILES_SET("${MANAGE_TRANSLATION_GETTEXT_MO_FILES}") ENDFUNCTION() FUNCTION(MANAGE_TRANSLATION_LOCALES_SET value) SET(MANAGE_TRANSLATION_LOCALES "${value}" CACHE INTERNAL "Translation Locales") ENDFUNCTION() FUNCTION(MANAGE_GETTEXT_INIT) IF(DEFINED MANAGE_GETTEXT_SUPPORT) RETURN() ENDIF() INCLUDE(ManageArchive) INCLUDE(ManageDependency) MANAGE_DEPENDENCY(BUILD_REQUIRES GETTEXT REQUIRED) MANAGE_DEPENDENCY(BUILD_REQUIRES FINDUTILS REQUIRED) MANAGE_DEPENDENCY(REQUIRES GETTEXT REQUIRED) FOREACH(_name "xgettext" "msgmerge" "msgfmt" "msginit") STRING(TOUPPER "${_name}" _cmd) FIND_PROGRAM_ERROR_HANDLING(${_cmd}_EXECUTABLE ERROR_MSG " gettext support is disabled." ERROR_VAR _gettext_dependency_missing VERBOSE_LEVEL ${M_OFF} "${_name}" ) M_MSG(${M_INFO1} "${_cmd}_EXECUTABLE=${${_cmd}_EXECUTABLE}") ENDFOREACH(_name "xgettext" "msgmerge" "msgfmt") MANAGE_TRANSLATION_GETTEXT_POT_FILES_SET("") IF(gettext_dependency_missing) SET(MANAGE_GETTEXT_SUPPORT "0" CACHE INTERNAL "Gettext support") ELSE() SET(MANAGE_GETTEXT_SUPPORT "1" CACHE INTERNAL "Gettext support") MANAGE_TRANSLATION_GETTEXT_PO_FILES_SET("") MANAGE_TRANSLATION_GETTEXT_MO_FILES_SET("") MANAGE_TRANSLATION_LOCALES_SET("") ENDIF() ENDFUNCTION(MANAGE_GETTEXT_INIT) SET(MANAGE_POT_FILE_VALID_OPTIONS "SRCS" "DOMAIN_NAME" "PO_DIR" "MO_DIR" "MO_LOCALE_DIR" "NO_MO" "LOCALES" "SYSTEM_LOCALES" "XGETTEXT_OPTIONS" "MSGMERGE_OPTIONS" "MSGFMT_OPTIONS" "CLEAN" "COMMAND" "DEPENDS" ) ## Internal FUNCTION(MANAGE_POT_FILE_SET_VARS potFile) VARIABLE_PARSE_ARGN(_o MANAGE_POT_FILE_VALID_OPTIONS ${ARGN}) SET(cmdList "") IF("${_o_COMMAND}" STREQUAL "") LIST(APPEND cmdList ${XGETTEXT_EXECUTABLE}) IF(NOT _o_XGETTEXT_OPTIONS) SET(_o_XGETTEXT_OPTIONS "${MANAGE_TRANSLATION_XGETTEXT_OPTIONS}" ) ENDIF() LIST(APPEND cmdList ${_o_XGETTEXT_OPTIONS}) IF("${_o_SRCS}" STREQUAL "") M_MSG(${M_WARN} "MANAGE_POT_FILE: xgettext: No SRCS for ${potFile}" ) ENDIF() LIST(APPEND cmdList -o ${potFile} "--package-name=${PROJECT_NAME}" "--package-version=${PRJ_VER}" "--msgid-bugs-address=${MAINTAINER}" ${_o_SRCS} ) ELSE() SET(cmdList "${_o_COMMAND}") ENDIF() SET(cmdList "${cmdList}" PARENT_SCOPE) SET(srcs "${_o_SRCS}" PARENT_SCOPE) SET(depends "${_o_DEPENDS}" PARENT_SCOPE) GET_FILENAME_COMPONENT(_potDir "${potFile}" PATH) IF("${_o_PO_DIR}" STREQUAL "") SET(_o_PO_DIR "${_potDir}") ENDIF() SET(poDir "${_o_PO_DIR}" PARENT_SCOPE) IF("${_o_DOMAIN_NAME}" STREQUAL "") GET_FILENAME_COMPONENT(_domainName "${potFile}" NAME_WE) SET(domainName "${_domainName}" PARENT_SCOPE) ELSE() SET(domainName "${_o_DOMAIN_NAME}" PARENT_SCOPE) ENDIF() IF("${_o_MSGMERGE_OPTIONS}" STREQUAL "") SET(_o_MSGMERGE_OPTIONS "${MANAGE_TRANSLATION_MSGMERGE_OPTIONS}") ENDIF() SET(msgmergeOpts "${_o_MSGMERGE_OPTIONS}" PARENT_SCOPE) IF("${_o_MSGFMT_OPTIONS}" STREQUAL "") SET(_o_MSGFMT_OPTIONS "${MANAGE_TRANSLATION_MSGFMT_OPTIONS}") ENDIF() SET(msgfmtOpts "${_o_MSGFMT_OPTIONS}" PARENT_SCOPE) IF(DEFINED _o_NO_MO) SET(moMode "NO_MO") ENDIF() IF(DEFINED _o_MO_LOCALE_DIR) IF(moMode) M_MSG(${M_ERROR} "MO_LOCALE_DIR cannot be used with ${moMode}") ENDIF() SET(moLocaleDir "${_o_MO_LOCALE_DIR}" PARENT_SCOPE) SET(moMode "MO_LOCALE_DIR") ENDIF() IF(DEFINED _o_MO_DIR) IF(moMode) M_MSG(${M_ERROR} "MO_DIR cannot be used with ${moMode}") ENDIF() SET(moDir "${_o_MO_DIR}" PARENT_SCOPE) SET(moMode "MO_DIR") ENDIF() ## Default to MO_DIR if none are not specified, IF(NOT moMode) SET(moDir "${_o_PO_DIR}" PARENT_SCOPE) SET(moMode "MO_DIR") ENDIF() SET(moMode "${moMode}" PARENT_SCOPE) IF(NOT DEFINED _o_CLEAN) SET_DIRECTORY_PROPERTIES(PROPERTIES CLEAN_NO_CUSTOM "1") SET(allClean 0 PARENT_SCOPE) ELSE() SET(allCleanVar 1 PARENT_SCOPE) ENDIF() ENDFUNCTION(MANAGE_POT_FILE_SET_VARS) FUNCTION(MANAGE_POT_FILE_OBTAIN_TARGET_NAME var potFile) FILE(RELATIVE_PATH potFileRel ${CMAKE_SOURCE_DIR} ${potFile}) STRING(REPLACE "/" "_" target "${potFileRel}") STRING_PREPEND(target "pot_file_") SET(${var} "${target}" PARENT_SCOPE) ENDFUNCTION(MANAGE_POT_FILE_OBTAIN_TARGET_NAME) ## This function skip target setup when target exists ## Use MANAGE_POT_FILE if you want check and warning FUNCTION(MANAGE_POT_FILE_INTERNAL showWarning potFile) IF(NOT DEFINED MANAGE_GETTEXT_SUPPORT) MANAGE_GETTEXT_INIT() ENDIF() IF(MANAGE_GETTEXT_SUPPORT EQUAL 0) RETURN() ENDIF() ## Whether pot file already exists in MANAGE_TRANSLATION_GETTEXT_POT_FILES MANAGE_POT_FILE_OBTAIN_TARGET_NAME(targetName "${potFile}") IF(TARGET ${targetName}) IF(showWarning) M_MSG(${M_WARN} "MANAGE_POT_FILE: Target ${targetName} is already exists, skip") ENDIF() RETURN() ENDIF() MANAGE_POT_FILE_SET_VARS("${potFile}" ${ARGN}) ADD_CUSTOM_TARGET_COMMAND(${targetName} OUTPUT ${potFile} NO_FORCE COMMAND ${cmdList} DEPENDS ${srcs} ${depends} COMMENT "${potFile}: ${cmdList}" VERBATIM ) MANAGE_TRANSLATION_GETTEXT_POT_FILES_ADD("${potFile}") SOURCE_ARCHIVE_CONTENTS_ADD("${potFile}" ${srcs} ${depends}) SET(cleanList "${potFile}") SET(_moInstallRoot "${DATA_DIR}/locale") ## Not only POT, but also PO and MO as well FOREACH(_l ${MANAGE_TRANSLATION_LOCALES}) ## PO file SET(_poFile "${poDir}/${_l}.po") ADD_CUSTOM_COMMAND(OUTPUT ${_poFile} COMMAND ${CMAKE_BUILD_TOOL} ${targetName}_no_force COMMAND ${CMAKE_COMMAND} -D cmd=po_make -D "pot=${potFile}" -D "locales=${_l}" -D "options=${msgmergeOpts}" -D "po_dir=${poDir}" -P ${CMAKE_FEDORA_MODULE_DIR}/ManageGettextScript.cmake COMMENT "Create ${_poFile} from ${potFile}" VERBATIM ) MANAGE_TRANSLATION_GETTEXT_PO_FILES_ADD("${_poFile}") SOURCE_ARCHIVE_CONTENTS_ADD("${_poFile}") ## MO file SET(_moInstallDir "${_moInstallRoot}/${_l}/LC_MESSAGES") IF(NOT "${moDir}" STREQUAL "") SET(_moFile "${moDir}/${_l}.gmo") FILE(MAKE_DIRECTORY "${moDir}") ELSEIF(moLocaleDir) SET(_moFile "${moLocaleDir}/locale/${_l}/LC_MESSAGES/${domainName}.mo") FILE(MAKE_DIRECTORY "${moLocaleDir}/locale/${_l}/LC_MESSAGES") ENDIF() IF(NOT "${moMode}" STREQUAL "NO_MO") ADD_CUSTOM_COMMAND(OUTPUT ${_moFile} COMMAND ${MSGFMT_EXECUTABLE} -o "${_moFile}" "${_poFile}" DEPENDS ${_poFile} ) MANAGE_TRANSLATION_GETTEXT_MO_FILES_ADD("${_moFile}") INSTALL(FILES ${_moFile} DESTINATION "${_moInstallDir}" RENAME "${domainName}.mo" ) LIST(APPEND cleanList "${_moFile}") ENDIF() ENDFOREACH(_l) IF(NOT allClean) SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${cleanList}") ENDIF() ENDFUNCTION(MANAGE_POT_FILE_INTERNAL) FUNCTION(MANAGE_POT_FILE potFile) MANAGE_POT_FILE_INTERNAL(1 "${potFile}" ${ARGN}) ENDFUNCTION(MANAGE_POT_FILE) SET(MANAGE_GETTEXT_LOCALES_VALID_OPTIONS "WORKING_DIRECTORY" "LOCALES" "SYSTEM_LOCALES" "DETECT_PO_DIR" "SRCS") FUNCTION(MANAGE_GETTEXT_LOCALES localeListVar) VARIABLE_PARSE_ARGN(_o MANAGE_GETTEXT_LOCALES_VALID_OPTIONS ${ARGN}) SET(_detectedPoDir "NOTFOUND") IF(NOT "${_o_LOCALES}" STREQUAL "") ## Locale is defined ELSEIF(DEFINED _o_SYSTEM_LOCALES) EXECUTE_PROCESS( COMMAND ls -1 /usr/share/locale/ COMMAND grep -e "^[a-z]*\\(_[A-Z]*\\)\\?\\(@.*\\)\\?$" COMMAND sort -u COMMAND xargs COMMAND sed -e "s/ /;/g" OUTPUT_VARIABLE _o_LOCALES OUTPUT_STRIP_TRAILING_WHITESPACE ) ELSE() IF("${_o_WORKING_DIRECTORY}" STREQUAL "") SET(_o_WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") ENDIF() ## LOCALES is not specified, detect now EXECUTE_PROCESS( COMMAND find . -name "*.po" COMMAND sed -e "s|^\\./||" COMMAND sort -u COMMAND xargs COMMAND sed -e "s/ /;/g" WORKING_DIRECTORY "${_o_WORKING_DIRECTORY}" OUTPUT_VARIABLE _poFileList OUTPUT_STRIP_TRAILING_WHITESPACE ) IF("${_poFileList}" STREQUAL "") M_MSG(${M_ERROR} "MANAGE_GETTEXT_LOCALES: Failed to find any .po files. Please either provide .po files, or specify SYSTEM_LOCALES or LOCALES") ENDIF() MANAGE_FILE_COMMON_DIR(_detectedPoDir ${_poFileList}) ## Empty _detectedPoDir means the PO files are in current directory IF("${_detectedPoDir}" STREQUAL "") SET(_commonPath "") ELSE() GET_FILENAME_COMPONENT(_commonPath "${_o_WORKING_DIRECTORY}/${_detectedPoDir}" ABSOLUTE) ENDIF() FOREACH(_poFile ${_poFileList}) IF("${_commonPath}" STREQUAL "") SET(_rF "${_poFile}") ELSE() GET_FILENAME_COMPONENT(_filePath "${_poFile}" ABSOLUTE) FILE(RELATIVE_PATH _rF "${_commonPath}" "${_filePath}") ENDIF() LOCALE_IN_PATH(_l "${_rF}") IF(NOT "${_l}" STREQUAL "") LIST(APPEND _o_LOCALES "${_l}") ENDIF() ENDFOREACH() IF("${_o_LOCALES}" STREQUAL "") ## Failed to find any locale M_MSG(${M_ERROR} "MANAGE_GETTEXT_LOCALES: Failed to detect locales. Please either provide .po files, or specify SYSTEM_LOCALES or LOCALES") ENDIF() LIST(REMOVE_DUPLICATES _o_LOCALES) LIST(SORT _o_LOCALES) ENDIF() MANAGE_TRANSLATION_LOCALES_SET("${_o_LOCALES}") SET(${localeListVar} "${_o_LOCALES}" PARENT_SCOPE) ## Return detected po dir if requested IF(NOT "${_o_DETECT_PO_DIR}" STREQUAL "") SET(${_o_DETECT_PO_DIR} "${detectedPoDir}" PARENT_SCOPE) ENDIF() ENDFUNCTION(MANAGE_GETTEXT_LOCALES) SET(MANAGE_GETTEXT_VALID_OPTIONS ${MANAGE_POT_FILE_VALID_OPTIONS} "ALL" "POT_FILE") FUNCTION(MANAGE_GETTEXT) IF(NOT DEFINED MANAGE_GETTEXT_SUPPORT) MANAGE_GETTEXT_INIT() ENDIF() VARIABLE_PARSE_ARGN(_o MANAGE_GETTEXT_VALID_OPTIONS ${ARGN}) IF(DEFINED _o_ALL) SET(_all "ALL") ELSE() SET(_all "") ENDIF(DEFINED _o_ALL) VARIABLE_TO_ARGN(_gettext_locales_argn _o MANAGE_GETTEXT_LOCALES_VALID_OPTIONS) IF("${MANAGE_TRANSLATION_LOCALES}" STREQUAL "") MANAGE_GETTEXT_LOCALES(_locales ${_gettext_locales_argn}) ENDIF() ## Determine the pot files VARIABLE_TO_ARGN(_addPotFileOptList _o MANAGE_POT_FILE_VALID_OPTIONS) IF(NOT "${_o_POT_FILE}" STREQUAL "") ### pot file is specified MANAGE_POT_FILE("${_o_POT_FILE}" ${_addPotFileOptList}) ELSE() ### pot file is not specified IF("${MANAGE_TRANSLATION_GETTEXT_POT_FILES}" STREQUAL "") #### No previous pot files SET(_o_POT_FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pot") MANAGE_POT_FILE("${_o_POT_FILE}" ${_addPotFileOptList}) ELSE() FOREACH(_potFile ${MANAGE_TRANSLATION_GETTEXT_POT_FILES}) MANAGE_POT_FILE_INTERNAL(0 "${_potFile}" ${_addPotFileOptList}) ENDFOREACH() ENDIF() ENDIF() ## Target translation ADD_CUSTOM_TARGET(translations ${_all} COMMENT "translations: Making translations" ) ## Target pot_files ## PO depends on POT, so no need to put ALL here ADD_CUSTOM_TARGET(pot_files COMMENT "pot_files: ${MANAGE_TRANSLATION_GETTEXT_POT_FILES}" ) ## Depends on pot_file targets instead of pot files themselves ## Otherwise it won't build when pot files is in sub CMakeLists.txt FOREACH(potFile ${MANAGE_TRANSLATION_GETTEXT_POT_FILES}) MANAGE_POT_FILE_OBTAIN_TARGET_NAME(targetName "${potFile}") ADD_DEPENDENCIES(pot_files ${targetName}_no_force) ENDFOREACH(potFile) ## Target update_po ADD_CUSTOM_TARGET(update_po DEPENDS ${MANAGE_TRANSLATION_GETTEXT_PO_FILES} COMMENT "update_po: ${MANAGE_TRANSLATION_GETTEXT_PO_FILES}" ) ADD_DEPENDENCIES(update_po pot_files) ## Target gmo_files IF(MANAGE_TRANSLATION_GETTEXT_MO_FILES) ADD_CUSTOM_TARGET(gmo_files DEPENDS ${MANAGE_TRANSLATION_GETTEXT_MO_FILES} COMMENT "gmo_files: ${MANAGE_TRANSLATION_GETTEXT_MO_FILES}" ) ENDIF() IF(TARGET gmo_files) ADD_DEPENDENCIES(gmo_files update_po) ADD_DEPENDENCIES(translations gmo_files) ELSE() ADD_DEPENDENCIES(translations update_po) ENDIF() ENDFUNCTION(MANAGE_GETTEXT) SET(MANAGE_GETTEXT_DETECT_POT_DIR_VALID_OPTIONS "WORKING_DIRECTORY") FUNCTION(MANAGE_GETTEXT_DETECT_POT_DIR potDirVar) VARIABLE_PARSE_ARGN(_o MANAGE_GETTEXT_DETECT_POT_DIR_VALID_OPTIONS ${ARGN}) SET(detectedPotDir "NOTFOUND") IF("${_o_WORKING_DIRECTORY}" STREQUAL "") SET(_o_WORKING_DIRECTORY "${CMAKE_HOME_DIR}") ENDIF() EXECUTE_PROCESS( COMMAND find . -name "*.pot" COMMAND sed -e "s|^\\./||" COMMAND sort -u COMMAND xargs COMMAND sed -e "s/ /;/g" WORKING_DIRECTORY "${_o_WORKING_DIRECTORY}" OUTPUT_VARIABLE potFileList OUTPUT_STRIP_TRAILING_WHITESPACE ) LIST(LENGTH potFileList potFileListLen) IF( potFileListLen EQUAL 0 ) ## NOT_FOUND ELSEIF( potFileListLen EQUAL 1 ) GET_FILENAME_COMPONENT(detectedPotDir "${potFileList}" PATH) ELSE() MANAGE_FILE_COMMON_DIR(detectedPotDir ${potFileList}) ENDIF() SET(${potDirVar} "${detectedPotDir}" PARENT_SCOPE) ENDFUNCTION(MANAGE_GETTEXT_DETECT_POT_DIR) FUNCTION(LOCALE_PARSE_STRING language script country modifier str) SET(_s "") SET(_c "") SET(_m "") IF("${str}" MATCHES "(.*)@(.*)") SET(_m "${CMAKE_MATCH_2}") SET(_str "${CMAKE_MATCH_1}") ELSE() SET(_str "${str}") ENDIF() STRING(REPLACE "-" "_" _str "${_str}") STRING_SPLIT(_lA "_" "${_str}") LIST(LENGTH _lA _lLen) LIST(GET _lA 0 _l) IF(_lLen GREATER 2) LIST(GET _lA 2 _c) ENDIF() IF(_lLen GREATER 1) LIST(GET _lA 1 _x) IF("${_x}" MATCHES "[A-Z][a-z][a-z][a-z]") SET(_s "${_x}") ELSE() SET(_c "${_x}") ENDIF() ENDIF() # Make sure the language is in the list IF(NOT DEFINED ZANATA_SUGGEST_COUNTRY_${_l}__) # empty language means invalid languages SET(_l "") SET(_s "") SET(_c "") SET(_m "") ENDIF() SET(${language} "${_l}" PARENT_SCOPE) SET(${script} "${_s}" PARENT_SCOPE) SET(${country} "${_c}" PARENT_SCOPE) SET(${modifier} "${_m}" PARENT_SCOPE) ENDFUNCTION(LOCALE_PARSE_STRING) FUNCTION(LOCALE_IN_PATH var path) GET_FILENAME_COMPONENT(_token "${path}" NAME_WE) LOCALE_PARSE_STRING(language script country modifier "${_token}") IF(NOT "${language}" STREQUAL "") SET(${var} "${_token}" PARENT_SCOPE) RETURN() ENDIF() GET_FILENAME_COMPONENT(_dir "${path}" PATH) STRING_SPLIT(dirA "/" "${_dir}") LIST(LENGTH dirA dirALen) MATH(EXPR i ${dirALen}-1) WHILE(NOT i LESS 0) LIST(GET dirA ${i} _token) LOCALE_PARSE_STRING(language script country modifier "${_token}") IF(NOT "${language}" STREQUAL "") SET(${var} "${_token}" PARENT_SCOPE) RETURN() ENDIF() MATH(EXPR i ${i}-1) ENDWHILE() SET(${var} "" PARENT_SCOPE) ENDFUNCTION(LOCALE_IN_PATH) cmake-fedora-2.7.2-Source/Modules/ManageZanataDefinition.cmake000664 001750 001750 00000013276 12652610516 024473 0ustar00dchendchen000000 000000 # Manage Zanata definition IF(DEFINED _MANAGE_ZANATA_DEFINITION_) RETURN() ENDIF(DEFINED _MANAGE_ZANATA_DEFINITION_) SET(_MANAGE_ZANATA_DEFINITION_ "DEFINED") SET(ZANATA_MAVEN_SUBCOMMAND_PREFIX "org.zanata:zanata-maven-plugin" ) ## ZANATA_OPTIONS_NAME_