diff options
author | Alexander Neundorf <neundorf@kde.org> | 2008-07-07 22:09:58 +0000 |
---|---|---|
committer | Alexander Neundorf <neundorf@kde.org> | 2008-07-07 22:09:58 +0000 |
commit | fecb91c50f5a06aed686aa2b3d3158c65ca80bca (patch) | |
tree | b31679e4e50b5456c10d410cbc3c87acfed24228 | |
parent | 4ac89e1a560941849a0365297c11e276a421bbf4 (diff) | |
download | extra-cmake-modules-fecb91c50f5a06aed686aa2b3d3158c65ca80bca.tar.gz extra-cmake-modules-fecb91c50f5a06aed686aa2b3d3158c65ca80bca.tar.bz2 |
-make automoc4 required finally (... 4.1 is not too far away)
Alex
CCMAIL: kde-buildsystem@kde.org
CCMAIL: kretz@kde.org
svn path=/trunk/KDE/kdelibs/; revision=829250
-rw-r--r-- | CMakeLists.txt | 8 | ||||
-rw-r--r-- | modules/FindKDE4Internal.cmake | 47 | ||||
-rw-r--r-- | modules/KDE4Macros.cmake | 85 |
3 files changed, 18 insertions, 122 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 84430c07..5a4b45da 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,8 @@ -if(NOT AUTOMOC4_EXECUTABLE) - # this is just a fallback in case automoc4 from kdesupport isn't found, Alex - add_subdirectory(automoc) -endif(NOT AUTOMOC4_EXECUTABLE) +#if(NOT AUTOMOC4_EXECUTABLE) +# # this is just a fallback in case automoc4 from kdesupport isn't found, Alex +# add_subdirectory(automoc) +#endif(NOT AUTOMOC4_EXECUTABLE) add_subdirectory(modules) diff --git a/modules/FindKDE4Internal.cmake b/modules/FindKDE4Internal.cmake index d8df175e..83213217 100644 --- a/modules/FindKDE4Internal.cmake +++ b/modules/FindKDE4Internal.cmake @@ -16,7 +16,7 @@ # compile KDE software: # # KDE4_KCFGC_EXECUTABLE - the kconfig_compiler executable -# KDE4_AUTOMOC_EXECUTABLE - the kde4automoc executable +# KDE4_AUTOMOC_EXECUTABLE - the kde4automoc executable, deprecated, use AUTOMOC4_EXECUTABLE instead # KDE4_MEINPROC_EXECUTABLE - the meinproc4 executable # KDE4_MAKEKDEWIDGETS_EXECUTABLE - the makekdewidgets executable # @@ -238,9 +238,10 @@ set(QT_MIN_VERSION "4.4.0") #this line includes FindQt4.cmake, which searches the Qt library and headers find_package(Qt4 REQUIRED) -# automoc4 (from kdesupport) is not yet required, but will be in June -# until then still automoc from kdelibs is used as fallback, Alex -find_package(Automoc4) +# automoc4 (from kdesupport) is now required, Alex +find_package(Automoc4 REQUIRED) +# use automoc4 from kdesupport +set(KDE4_AUTOMOC_EXECUTABLE "${AUTOMOC4_EXECUTABLE}" ) # Perl is required for building KDE software, find_package(Perl REQUIRED) @@ -287,26 +288,12 @@ if (_kdeBootStrapping) # CMAKE_CFG_INTDIR is the output subdirectory created e.g. by XCode and MSVC set(KDE4_KCFGC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/kconfig_compiler ) - # use automoc4 from kdesupport if it has been found - if(AUTOMOC4_EXECUTABLE) - set(KDE4_AUTOMOC_EXECUTABLE "${AUTOMOC4_EXECUTABLE}" ) - else(AUTOMOC4_EXECUTABLE) - set(KDE4_AUTOMOC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/kde4automoc ) - endif(AUTOMOC4_EXECUTABLE) - set(KDE4_MEINPROC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/meinproc4 ) set(KDE4_MAKEKDEWIDGETS_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/makekdewidgets ) else (WIN32) set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib ) set(KDE4_KCFGC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/kconfig_compiler.shell ) - # use automoc4 from kdesupport if it has been found - if(AUTOMOC4_EXECUTABLE) - set(KDE4_AUTOMOC_EXECUTABLE "${AUTOMOC4_EXECUTABLE}" ) - else(AUTOMOC4_EXECUTABLE) - set(KDE4_AUTOMOC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/kde4automoc.shell ) - endif(AUTOMOC4_EXECUTABLE) - set(KDE4_MEINPROC_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/meinproc4.shell ) set(KDE4_MAKEKDEWIDGETS_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/makekdewidgets.shell ) endif (WIN32) @@ -318,19 +305,12 @@ if (_kdeBootStrapping) set( _KDE4_MAKEKDEWIDGETS_DEP makekdewidgets) set( _KDE4_MEINPROC_EXECUTABLE_DEP meinproc4) - if(AUTOMOC4_EXECUTABLE) - set( _KDE4_AUTOMOC_EXECUTABLE_DEP) - else(AUTOMOC4_EXECUTABLE) - set( _KDE4_AUTOMOC_EXECUTABLE_DEP kde4automoc) - endif(AUTOMOC4_EXECUTABLE) - set(KDE4_INSTALLED_VERSION_OK TRUE) else (_kdeBootStrapping) # ... but NOT otherwise set( _KDE4_KCONFIG_COMPILER_DEP) - set( _KDE4_AUTOMOC_EXECUTABLE_DEP) set( _KDE4_MAKEKDEWIDGETS_DEP) set( _KDE4_MEINPROC_EXECUTABLE_DEP) @@ -455,13 +435,6 @@ else (_kdeBootStrapping) find_program(KDE4_KCFGC_EXECUTABLE NAME kconfig_compiler PATHS ${KDE4_BIN_INSTALL_DIR} NO_DEFAULT_PATH ) find_program(KDE4_KCFGC_EXECUTABLE NAME kconfig_compiler ) - if (AUTOMOC4_EXECUTABLE) - set(KDE4_AUTOMOC_EXECUTABLE "${AUTOMOC4_EXECUTABLE}") - else (AUTOMOC4_EXECUTABLE) - find_program(KDE4_AUTOMOC_EXECUTABLE NAME kde4automoc PATHS ${KDE4_BIN_INSTALL_DIR} NO_DEFAULT_PATH ) - find_program(KDE4_AUTOMOC_EXECUTABLE NAME kde4automoc ) - endif (AUTOMOC4_EXECUTABLE) - find_program(KDE4_MEINPROC_EXECUTABLE NAME meinproc4 PATHS ${KDE4_BIN_INSTALL_DIR} NO_DEFAULT_PATH ) find_program(KDE4_MEINPROC_EXECUTABLE NAME meinproc4 ) @@ -1091,11 +1064,11 @@ macro (KDE4_PRINT_RESULTS) message(STATUS "Didn't find the KDE4 kconfig_compiler preprocessor") endif(KDE4_KCFGC_EXECUTABLE) - if(KDE4_AUTOMOC_EXECUTABLE) - message(STATUS "Found KDE4 automoc: ${KDE4_AUTOMOC_EXECUTABLE}") - else(KDE4_AUTOMOC_EXECUTABLE) - message(STATUS "Didn't find the KDE4 automoc") - endif(KDE4_AUTOMOC_EXECUTABLE) + if(AUTOMOC4_EXECUTABLE) + message(STATUS "Found automoc4: ${AUTOMOC4_EXECUTABLE}") + else(AUTOMOC4_EXECUTABLE) + message(STATUS "Didn't find the automoc4") + endif(AUTOMOC4_EXECUTABLE) endmacro (KDE4_PRINT_RESULTS) diff --git a/modules/KDE4Macros.cmake b/modules/KDE4Macros.cmake index 63740583..6da11793 100644 --- a/modules/KDE4Macros.cmake +++ b/modules/KDE4Macros.cmake @@ -161,90 +161,13 @@ endmacro (_KDE4_GET_CUSTOM_TARGET_PROPERTY) macro (KDE4_MOC_HEADERS _target_NAME) - # if automoc4 from kdesupport has been found, use the macro provided there, - # otherwise fall back to the kdelibs one - if (AUTOMOC4_EXECUTABLE) - AUTOMOC4_MOC_HEADERS(${_target_NAME} ${ARGN}) - else (AUTOMOC4_EXECUTABLE) - set (_headers_to_moc) - foreach (_current_FILE ${ARGN}) - get_filename_component(_suffix "${_current_FILE}" EXT) - if (".h" STREQUAL "${_suffix}" OR ".hpp" STREQUAL "${_suffix}" OR ".hxx" STREQUAL "${_suffix}" OR ".H" STREQUAL "${_suffix}") - list(APPEND _headers_to_moc ${_current_FILE}) - else (".h" STREQUAL "${_suffix}" OR ".hpp" STREQUAL "${_suffix}" OR ".hxx" STREQUAL "${_suffix}" OR ".H" STREQUAL "${_suffix}") - message(STATUS "KDE4_MOC_HEADERS: ignoring non-header file ${_current_FILE}") - endif (".h" STREQUAL "${_suffix}" OR ".hpp" STREQUAL "${_suffix}" OR ".hxx" STREQUAL "${_suffix}" OR ".H" STREQUAL "${_suffix}") - endforeach (_current_FILE) - # need to create moc_<filename>.cpp file using kde4automoc.cmake - # and add it to the target - if(_headers_to_moc) - _kde4_set_custom_target_property(${_target_NAME} AUTOMOC_HEADERS "${_headers_to_moc}") - endif(_headers_to_moc) - endif (AUTOMOC4_EXECUTABLE) + # if automoc4 from kdesupport has been found, use the macro provided there + automoc4_moc_headers(${_target_NAME} ${ARGN}) endmacro (KDE4_MOC_HEADERS) macro(KDE4_HANDLE_AUTOMOC _target_NAME _SRCS) - # if automoc4 from kdesupport has been found, use the macro provided there, - # otherwise fall back to the kdelibs one - if (AUTOMOC4_EXECUTABLE) - AUTOMOC4(${_target_NAME} ${_SRCS}) - else (AUTOMOC4_EXECUTABLE) - set(_moc_files) - set(_moc_headers) - - # first list all explicitly set headers - _kde4_get_custom_target_property(_headers_to_moc ${_target_NAME} AUTOMOC_HEADERS) - if(NOT _headers_to_moc STREQUAL "NOTFOUND") - foreach(_header_to_moc ${_headers_to_moc}) - get_filename_component(_abs_header ${_header_to_moc} ABSOLUTE) - list(APPEND _moc_files ${_abs_header}) - list(APPEND _moc_headers ${_abs_header}) - endforeach(_header_to_moc) - endif(NOT _headers_to_moc STREQUAL "NOTFOUND") - - # now add all the sources for the automoc - foreach (_current_FILE ${${_SRCS}}) - get_filename_component(_abs_current_FILE "${_current_FILE}" ABSOLUTE) - get_source_file_property(_skip "${_abs_current_FILE}" SKIP_AUTOMOC) - get_source_file_property(_generated "${_abs_current_FILE}" GENERATED) - - if(NOT _generated AND NOT _skip) - get_filename_component(_suffix "${_current_FILE}" EXT) - # skip every source file that's not C++ - if(_suffix STREQUAL ".cpp" OR _suffix STREQUAL ".cc" OR _suffix STREQUAL ".cxx" OR _suffix STREQUAL ".C") - get_filename_component(_basename "${_current_FILE}" NAME_WE) - get_filename_component(_abs_path "${_abs_current_FILE}" PATH) - set(_header "${_abs_path}/${_basename}.h") - if(EXISTS "${_header}") - list(APPEND _moc_headers ${_header}) - endif(EXISTS "${_header}") - set(_pheader "${_abs_path}/${_basename}_p.h") - if(EXISTS "${_pheader}") - list(APPEND _moc_headers ${_pheader}) - endif(EXISTS "${_pheader}") - list(APPEND _moc_files ${_abs_current_FILE}) - endif(_suffix STREQUAL ".cpp" OR _suffix STREQUAL ".cc" OR _suffix STREQUAL ".cxx" OR _suffix STREQUAL ".C") - endif(NOT _generated AND NOT _skip) - endforeach (_current_FILE) - - if(_moc_files) - set(_automoc_source "${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_automoc.cpp") - get_directory_property(_moc_incs INCLUDE_DIRECTORIES) - configure_file(${KDE4_MODULE_DIR}/kde4automoc.files.in ${_automoc_source}.files) - add_custom_command(OUTPUT ${_automoc_source} - COMMAND ${KDE4_AUTOMOC_EXECUTABLE} - ${_automoc_source} - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR} - ${QT_MOC_EXECUTABLE} - DEPENDS ${${_SRCS}} ${_moc_headers} ${_automoc_source}.files ${_KDE4_AUTOMOC_EXECUTABLE_DEP} - ) - # the OBJECT_DEPENDS is only necessary when a new moc file has to be generated that is included in a source file - # problem: the whole target is recompiled when the automoc.cpp file is touched - # set_source_files_properties(${${_SRCS}} PROPERTIES OBJECT_DEPENDS ${_automoc_source}) - set(${_SRCS} ${_automoc_source} ${${_SRCS}}) - endif(_moc_files) - endif (AUTOMOC4_EXECUTABLE) + # if automoc4 from kdesupport has been found, use the macro provided there + automoc4(${_target_NAME} ${_SRCS}) endmacro(KDE4_HANDLE_AUTOMOC) macro(KDE4_INSTALL_TS_FILES _lang _sdir) |