[kdelibs/KDE/4.7] cmake/modules: Do not use GET_FILENAME_COMPONENT + NAME_WE to get the base filename

Albert Astals Cid tsdgeos at terra.es
Tue Nov 15 00:15:21 UTC 2011

Git commit 9872a43e854aa28c5ef4bcfe9d20e3c210f0ba7e by Albert Astals Cid.
Committed on 15/11/2011 at 01:09.
Pushed by aacid into branch 'KDE/4.7'.

Do not use GET_FILENAME_COMPONENT + NAME_WE to get the base filename

The problem is that NAME_WE treats everything after the first dot as file extension
but we know the extension will just be .po so in case of a file named
we want
plasma_package_org.kde.activityswitcher to be the basename and not plasma_package_org

I am pretty sure GETTEXT_PROCESS_POT_FILE and GETTEXT_CREATE_TRANSLATIONS macros have a similar
problem but since we do not use them in KDE I have no way to test it in a meaningful way

Acked by Alex

CCMAIL: kde-buildsystem at kde.org

M  +2    -1    cmake/modules/FindGettext.cmake


diff --git a/cmake/modules/FindGettext.cmake b/cmake/modules/FindGettext.cmake
index e35dced..119d765 100644
--- a/cmake/modules/FindGettext.cmake
+++ b/cmake/modules/FindGettext.cmake
@@ -213,7 +213,8 @@ MACRO(GETTEXT_PROCESS_PO_FILES _lang)
 #    message(STATUS "2 all ${_addToAll} dest ${_installDest} args: ${_args}")
    FOREACH(_current_PO_FILE ${_args})
-      GET_FILENAME_COMPONENT(_basename ${_current_PO_FILE} NAME_WE)
+      GET_FILENAME_COMPONENT(_name ${_current_PO_FILE} NAME)
+      STRING(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" _basename ${_name})
       SET(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.gmo)
       add_custom_command(OUTPUT ${_gmoFile}
             COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_current_PO_FILE}

More information about the Kde-buildsystem mailing list