| # Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| # file Copyright.txt or https://cmake.org/licensing for details. | |
| # | |
| # See FindKDE3.cmake for documentation. | |
| # | |
| # this file contains the following macros: | |
| # KDE3_ADD_DCOP_SKELS | |
| # KDE3_ADD_DCOP_STUBS | |
| # KDE3_ADD_MOC_FILES | |
| # KDE3_ADD_UI_FILES | |
| # KDE3_ADD_KCFG_FILES | |
| # KDE3_AUTOMOC | |
| # KDE3_INSTALL_LIBTOOL_FILE | |
| # KDE3_CREATE_FINAL_FILE | |
| # KDE3_ADD_KPART | |
| # KDE3_ADD_KDEINIT_EXECUTABLE | |
| # KDE3_ADD_EXECUTABLE | |
| #[email protected] | |
| include(AddFileDependencies) | |
| #create the kidl and skeletion file for dcop stuff | |
| #usage: KDE_ADD_COP_SKELS(foo_SRCS ${dcop_headers}) | |
| macro(KDE3_ADD_DCOP_SKELS _sources) | |
| foreach (_current_FILE ${ARGN}) | |
| get_filename_component(_tmp_FILE ${_current_FILE} ABSOLUTE) | |
| get_filename_component(_basename ${_tmp_FILE} NAME_WE) | |
| set(_skel ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_skel.cpp) | |
| set(_kidl ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.kidl) | |
| if (NOT HAVE_${_basename}_KIDL_RULE) | |
| set(HAVE_${_basename}_KIDL_RULE ON) | |
| add_custom_command(OUTPUT ${_kidl} | |
| COMMAND ${KDE3_DCOPIDL_EXECUTABLE} | |
| ARGS ${_tmp_FILE} > ${_kidl} | |
| DEPENDS ${_tmp_FILE} | |
| ) | |
| endif () | |
| if (NOT HAVE_${_basename}_SKEL_RULE) | |
| set(HAVE_${_basename}_SKEL_RULE ON) | |
| add_custom_command(OUTPUT ${_skel} | |
| COMMAND ${KDE3_DCOPIDL2CPP_EXECUTABLE} | |
| ARGS --c++-suffix cpp --no-signals --no-stub ${_kidl} | |
| DEPENDS ${_kidl} | |
| ) | |
| endif () | |
| set(${_sources} ${${_sources}} ${_skel}) | |
| endforeach () | |
| endmacro() | |
| macro(KDE3_ADD_DCOP_STUBS _sources) | |
| foreach (_current_FILE ${ARGN}) | |
| get_filename_component(_tmp_FILE ${_current_FILE} ABSOLUTE) | |
| get_filename_component(_basename ${_tmp_FILE} NAME_WE) | |
| set(_stub_CPP ${CMAKE_CURRENT_BINARY_DIR}/${_basename}_stub.cpp) | |
| set(_kidl ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.kidl) | |
| if (NOT HAVE_${_basename}_KIDL_RULE) | |
| set(HAVE_${_basename}_KIDL_RULE ON) | |
| add_custom_command(OUTPUT ${_kidl} | |
| COMMAND ${KDE3_DCOPIDL_EXECUTABLE} | |
| ARGS ${_tmp_FILE} > ${_kidl} | |
| DEPENDS ${_tmp_FILE} | |
| ) | |
| endif () | |
| if (NOT HAVE_${_basename}_STUB_RULE) | |
| set(HAVE_${_basename}_STUB_RULE ON) | |
| add_custom_command(OUTPUT ${_stub_CPP} | |
| COMMAND ${KDE3_DCOPIDL2CPP_EXECUTABLE} | |
| ARGS --c++-suffix cpp --no-signals --no-skel ${_kidl} | |
| DEPENDS ${_kidl} | |
| ) | |
| endif () | |
| set(${_sources} ${${_sources}} ${_stub_CPP}) | |
| endforeach () | |
| endmacro() | |
| macro(KDE3_ADD_KCFG_FILES _sources) | |
| foreach (_current_FILE ${ARGN}) | |
| get_filename_component(_tmp_FILE ${_current_FILE} ABSOLUTE) | |
| get_filename_component(_basename ${_tmp_FILE} NAME_WE) | |
| file(READ ${_tmp_FILE} _contents) | |
| string(REGEX REPLACE "^(.*\n)?File=([^\n]+)\n.*$" "\\2" _kcfg_FILE "${_contents}") | |
| set(_src_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp) | |
| set(_header_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h) | |
| add_custom_command(OUTPUT ${_src_FILE} | |
| COMMAND ${KDE3_KCFGC_EXECUTABLE} | |
| ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${_kcfg_FILE} ${_tmp_FILE} | |
| DEPENDS ${_tmp_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/${_kcfg_FILE} | |
| ) | |
| set(${_sources} ${${_sources}} ${_src_FILE}) | |
| endforeach () | |
| endmacro() | |
| #create the moc files and add them to the list of sources | |
| #usage: KDE_ADD_MOC_FILES(foo_SRCS ${moc_headers}) | |
| macro(KDE3_ADD_MOC_FILES _sources) | |
| foreach (_current_FILE ${ARGN}) | |
| get_filename_component(_tmp_FILE ${_current_FILE} ABSOLUTE) | |
| get_filename_component(_basename ${_tmp_FILE} NAME_WE) | |
| set(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.moc.cpp) | |
| add_custom_command(OUTPUT ${_moc} | |
| COMMAND ${QT_MOC_EXECUTABLE} | |
| ARGS ${_tmp_FILE} -o ${_moc} | |
| DEPENDS ${_tmp_FILE} | |
| ) | |
| set(${_sources} ${${_sources}} ${_moc}) | |
| endforeach () | |
| endmacro() | |
| get_filename_component( KDE3_MODULE_DIR ${CMAKE_CURRENT_LIST_FILE} PATH) | |
| #create the implementation files from the ui files and add them to the list of sources | |
| #usage: KDE_ADD_UI_FILES(foo_SRCS ${ui_files}) | |
| macro(KDE3_ADD_UI_FILES _sources ) | |
| foreach (_current_FILE ${ARGN}) | |
| get_filename_component(_tmp_FILE ${_current_FILE} ABSOLUTE) | |
| get_filename_component(_basename ${_tmp_FILE} NAME_WE) | |
| set(_header ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h) | |
| set(_src ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp) | |
| set(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.moc.cpp) | |
| add_custom_command(OUTPUT ${_header} | |
| COMMAND ${QT_UIC_EXECUTABLE} | |
| ARGS -L ${KDE3_LIB_DIR}/kde3/plugins/designer -nounload -o ${_header} ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE} | |
| DEPENDS ${_tmp_FILE} | |
| ) | |
| add_custom_command(OUTPUT ${_src} | |
| COMMAND ${CMAKE_COMMAND} | |
| ARGS | |
| -DKDE_UIC_PLUGIN_DIR:FILEPATH=${KDE3_LIB_DIR}/kde3/plugins/designer | |
| -DKDE_UIC_EXECUTABLE:FILEPATH=${QT_UIC_EXECUTABLE} | |
| -DKDE_UIC_FILE:FILEPATH=${_tmp_FILE} | |
| -DKDE_UIC_CPP_FILE:FILEPATH=${_src} | |
| -DKDE_UIC_H_FILE:FILEPATH=${_header} | |
| -P ${KDE3_MODULE_DIR}/kde3uic.cmake | |
| DEPENDS ${_header} | |
| ) | |
| add_custom_command(OUTPUT ${_moc} | |
| COMMAND ${QT_MOC_EXECUTABLE} | |
| ARGS ${_header} -o ${_moc} | |
| DEPENDS ${_header} | |
| ) | |
| set(${_sources} ${${_sources}} ${_src} ${_moc} ) | |
| endforeach () | |
| endmacro() | |
| macro(KDE3_AUTOMOC) | |
| set(_matching_FILES ) | |
| foreach (_current_FILE ${ARGN}) | |
| get_filename_component(_abs_FILE ${_current_FILE} ABSOLUTE) | |
| # if "SKIP_AUTOMOC" is set to true, we will not handle this file here. | |
| # here. this is required to make bouic work correctly: | |
| # we need to add generated .cpp files to the sources (to compile them), | |
| # but we cannot let automoc handle them, as the .cpp files don't exist yet when | |
| # cmake is run for the very first time on them -> however the .cpp files might | |
| # exist at a later run. at that time we need to skip them, so that we don't add two | |
| # different rules for the same moc file | |
| get_source_file_property(_skip ${_abs_FILE} SKIP_AUTOMOC) | |
| if (EXISTS ${_abs_FILE} AND NOT _skip) | |
| file(STRINGS ${_abs_FILE} _match REGEX "#include +[^ ]+\\.moc[\">]") | |
| get_filename_component(_abs_PATH ${_abs_FILE} PATH) | |
| foreach (_current_MOC_INC IN LISTS _match) | |
| string(REGEX MATCH "[^ <\"]+\\.moc" _current_MOC "${_current_MOC_INC}") | |
| get_filename_component(_basename ${_current_MOC} NAME_WE) | |
| # set(_header ${CMAKE_CURRENT_SOURCE_DIR}/${_basename}.h) | |
| set(_header ${_abs_PATH}/${_basename}.h) | |
| set(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_current_MOC}) | |
| add_custom_command(OUTPUT ${_moc} | |
| COMMAND ${QT_MOC_EXECUTABLE} | |
| ARGS ${_header} -o ${_moc} | |
| DEPENDS ${_header} | |
| ) | |
| ADD_FILE_DEPENDENCIES(${_abs_FILE} ${_moc}) | |
| endforeach () | |
| unset(_match) | |
| unset(_header) | |
| unset(_moc) | |
| endif () | |
| endforeach () | |
| endmacro() | |
| # only used internally by KDE3_INSTALL_ICONS | |
| macro (_KDE3_ADD_ICON_INSTALL_RULE _install_SCRIPT _install_PATH _group _orig_NAME _install_NAME) | |
| # if the string doesn't match the pattern, the result is the full string, so all three have the same content | |
| if (NOT ${_group} STREQUAL ${_install_NAME} ) | |
| set(_icon_GROUP "actions") | |
| if (${_group} STREQUAL "mime") | |
| set(_icon_GROUP "mimetypes") | |
| endif () | |
| if (${_group} STREQUAL "filesys") | |
| set(_icon_GROUP "filesystems") | |
| endif () | |
| if (${_group} STREQUAL "device") | |
| set(_icon_GROUP "devices") | |
| endif () | |
| if (${_group} STREQUAL "app") | |
| set(_icon_GROUP "apps") | |
| endif () | |
| if (${_group} STREQUAL "action") | |
| set(_icon_GROUP "actions") | |
| endif () | |
| # message(STATUS "icon: ${_current_ICON} size: ${_size} group: ${_group} name: ${_name}" ) | |
| install(FILES ${_orig_NAME} DESTINATION ${_install_PATH}/${_icon_GROUP}/ RENAME ${_install_NAME} ) | |
| endif () | |
| endmacro () | |
| macro (KDE3_INSTALL_ICONS _theme ) | |
| set(_defaultpath "${CMAKE_INSTALL_PREFIX}/share/icons") | |
| # first the png icons | |
| file(GLOB _icons *.png) | |
| foreach (_current_ICON ${_icons} ) | |
| string(REGEX REPLACE "^.*/[a-zA-Z]+([0-9]+)\\-([a-z]+)\\-(.+\\.png)$" "\\1" _size "${_current_ICON}") | |
| string(REGEX REPLACE "^.*/[a-zA-Z]+([0-9]+)\\-([a-z]+)\\-(.+\\.png)$" "\\2" _group "${_current_ICON}") | |
| string(REGEX REPLACE "^.*/[a-zA-Z]+([0-9]+)\\-([a-z]+)\\-(.+\\.png)$" "\\3" _name "${_current_ICON}") | |
| _KDE3_ADD_ICON_INSTALL_RULE(${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake | |
| ${_defaultpath}/${_theme}/${_size}x${_size} | |
| ${_group} ${_current_ICON} ${_name}) | |
| endforeach () | |
| # and now the svg icons | |
| file(GLOB _icons *.svgz) | |
| foreach (_current_ICON ${_icons} ) | |
| string(REGEX REPLACE "^.*/crsc\\-([a-z]+)\\-(.+\\.svgz)$" "\\1" _group "${_current_ICON}") | |
| string(REGEX REPLACE "^.*/crsc\\-([a-z]+)\\-(.+\\.svgz)$" "\\2" _name "${_current_ICON}") | |
| _KDE3_ADD_ICON_INSTALL_RULE(${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake | |
| ${_defaultpath}/${_theme}/scalable | |
| ${_group} ${_current_ICON} ${_name}) | |
| endforeach () | |
| endmacro () | |
| macro(KDE3_INSTALL_LIBTOOL_FILE _target) | |
| get_target_property(_target_location ${_target} LOCATION) | |
| get_filename_component(_laname ${_target_location} NAME_WE) | |
| get_filename_component(_soname ${_target_location} NAME) | |
| set(_laname ${CMAKE_CURRENT_BINARY_DIR}/${_laname}.la) | |
| file(WRITE ${_laname} "# ${_laname} - a libtool library file, generated by cmake \n") | |
| file(APPEND ${_laname} "# The name that we can dlopen(3).\n") | |
| file(APPEND ${_laname} "dlname='${_soname}'\n") | |
| file(APPEND ${_laname} "# Names of this library\n") | |
| if(CYGWIN) | |
| file(APPEND ${_laname} "library_names='${_soname}'\n") | |
| else() | |
| file(APPEND ${_laname} "library_names='${_soname} ${_soname} ${_soname}'\n") | |
| endif() | |
| file(APPEND ${_laname} "# The name of the static archive\n") | |
| file(APPEND ${_laname} "old_library=''\n") | |
| file(APPEND ${_laname} "# Libraries that this one depends upon.\n") | |
| file(APPEND ${_laname} "dependency_libs=''\n") | |
| # file(APPEND ${_laname} "dependency_libs='${${_target}_LIB_DEPENDS}'\n") | |
| file(APPEND ${_laname} "# Version information.\ncurrent=0\nage=0\nrevision=0\n") | |
| file(APPEND ${_laname} "# Is this an already installed library?\ninstalled=yes\n") | |
| file(APPEND ${_laname} "# Should we warn about portability when linking against -modules?\nshouldnotlink=yes\n") | |
| file(APPEND ${_laname} "# Files to dlopen/dlpreopen\ndlopen=''\ndlpreopen=''\n") | |
| file(APPEND ${_laname} "# Directory that this library needs to be installed in:\n") | |
| file(APPEND ${_laname} "libdir='${CMAKE_INSTALL_PREFIX}/lib/kde3'\n") | |
| install_files(${KDE3_LIBTOOL_DIR} FILES ${_laname}) | |
| endmacro() | |
| macro(KDE3_CREATE_FINAL_FILE _filename) | |
| file(WRITE ${_filename} "//autogenerated file\n") | |
| foreach (_current_FILE ${ARGN}) | |
| file(APPEND ${_filename} "#include \"${_current_FILE}\"\n") | |
| endforeach () | |
| endmacro() | |
| # option(KDE3_ENABLE_FINAL "Enable final all-in-one compilation") | |
| option(KDE3_BUILD_TESTS "Build the tests") | |
| macro(KDE3_ADD_KPART _target_NAME _with_PREFIX) | |
| #is the first argument is "WITH_PREFIX" then keep the standard "lib" prefix, otherwise SET the prefix empty | |
| if (${_with_PREFIX} STREQUAL "WITH_PREFIX") | |
| set(_first_SRC) | |
| else () | |
| set(_first_SRC ${_with_PREFIX}) | |
| endif () | |
| # if (KDE3_ENABLE_FINAL) | |
| # KDE3_CREATE_FINAL_FILE(${_target_NAME}_final.cpp ${_first_SRC} ${ARGN}) | |
| # add_library(${_target_NAME} MODULE ${_target_NAME}_final.cpp) | |
| # else () | |
| add_library(${_target_NAME} MODULE ${_first_SRC} ${ARGN}) | |
| # endif () | |
| if(_first_SRC) | |
| set_target_properties(${_target_NAME} PROPERTIES PREFIX "") | |
| endif() | |
| KDE3_INSTALL_LIBTOOL_FILE(${_target_NAME}) | |
| endmacro() | |
| macro(KDE3_ADD_KDEINIT_EXECUTABLE _target_NAME ) | |
| # if (KDE3_ENABLE_FINAL) | |
| # KDE3_CREATE_FINAL_FILE(${_target_NAME}_final.cpp ${ARGN}) | |
| # add_library(kdeinit_${_target_NAME} SHARED ${_target_NAME}_final.cpp) | |
| # else () | |
| add_library(kdeinit_${_target_NAME} SHARED ${ARGN} ) | |
| # endif () | |
| configure_file(${KDE3_MODULE_DIR}/kde3init_dummy.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_dummy.cpp) | |
| add_executable( ${_target_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_dummy.cpp ) | |
| target_link_libraries( ${_target_NAME} kdeinit_${_target_NAME} ) | |
| endmacro() | |
| macro(KDE3_ADD_EXECUTABLE _target_NAME ) | |
| # if (KDE3_ENABLE_FINAL) | |
| # KDE3_CREATE_FINAL_FILE(${_target_NAME}_final.cpp ${ARGN}) | |
| # add_executable(${_target_NAME} ${_target_NAME}_final.cpp) | |
| # else () | |
| add_executable(${_target_NAME} ${ARGN} ) | |
| # endif () | |
| endmacro() | |