wesnoth/cmake/update_pot_source_dependencies.cmake
2018-03-12 03:48:59 +11:00

76 lines
2.4 KiB
CMake

# Update the source file dependencies of the pot file.
#
# This globs all files cpp in the src directory and looks for the text domain
# definition in that file and outputs these dependencies in POTFILES.in.
# Remove the old input file.
# Dummy target with a non existing (and not created file) is always executed.
add_custom_command(
OUTPUT ${PROJECT_SOURCE_DIR}/po/${DOMAIN}/POTFILES.in.dummy
# remove the old file.
COMMAND ${CMAKE_COMMAND}
-E remove ${PROJECT_SOURCE_DIR}/po/${DOMAIN}/POTFILES.in
COMMENT "pot-update [${DOMAIN}]: Removed existing POTFILES.in."
)
# Recreate the input file.
if(DOMAIN STREQUAL ${DEFAULT_DOMAIN})
# For the default text domain.
add_custom_command(
OUTPUT ${PROJECT_SOURCE_DIR}/po/${DOMAIN}/POTFILES.in
# Create an empty new one, to be sure it will exist.
COMMAND ${CMAKE_COMMAND}
-E touch ${PROJECT_SOURCE_DIR}/po/${DOMAIN}/POTFILES.in
# Find all cpp files which are not in a .git directory.
COMMAND find src -name .git -prune -o -name '*.[hc]pp' -print |
sort |
while read file\; do
# If the file doesn't contain a GETTEXT_DOMAIN
# definition it should be added to the default domain.
if ! grep \"^\#define *GETTEXT_DOMAIN\"
$$file > /dev/null 2>&1\; then
echo $$file >>
${PROJECT_SOURCE_DIR}/po/${DOMAIN}/POTFILES.in \;
fi
done
DEPENDS ${PROJECT_SOURCE_DIR}/po/${DOMAIN}/POTFILES.in.dummy
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMENT
"pot-update [${DOMAIN}]: Created POTFILES.in for default domain."
)
else(DOMAIN STREQUAL ${DEFAULT_DOMAIN})
# For the other text domains.
add_custom_command(
OUTPUT ${PROJECT_SOURCE_DIR}/po/${DOMAIN}/POTFILES.in
# Create an empty new one, to be sure it will exist.
COMMAND ${CMAKE_COMMAND}
-E touch ${PROJECT_SOURCE_DIR}/po/${DOMAIN}/POTFILES.in
# Find all cpp files which are not in a .git directory.
COMMAND find src -name .git -prune -o -name '*cpp' -print |
sort |
while read file\; do
# If the file contains a GETTEXT_DOMAIN definition for
# the current domain add it to the domain.
if grep \"^\#define *GETTEXT_DOMAIN *\\\"${DOMAIN}\\\"\"
$$file > /dev/null 2>&1\; then
echo $$file >>
${PROJECT_SOURCE_DIR}/po/${DOMAIN}/POTFILES.in \;
fi
done
DEPENDS ${PROJECT_SOURCE_DIR}/po/${DOMAIN}/POTFILES.in.dummy
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMENT "pot-update [${DOMAIN}]: Created POTFILES.in."
)
endif(DOMAIN STREQUAL ${DEFAULT_DOMAIN})