mirror of
https://github.com/wesnoth/wesnoth
synced 2025-04-24 23:34:45 +00:00

It would probably be better to avoid using translatable strings in headers, but certain people keep doing so anyway, so this is more future-proof.
78 lines
2.5 KiB
CMake
78 lines
2.5 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})
|
|
|