| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375 |
- # 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(MacroLibrary)
- #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 ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE} > ${_kidl}
- DEPENDS ${_tmp_FILE}
- )
- ENDIF (NOT HAVE_${_basename}_KIDL_RULE)
- 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 (NOT HAVE_${_basename}_SKEL_RULE)
- SET(${_sources} ${${_sources}} ${_skel})
- ENDFOREACH (_current_FILE)
- ENDMACRO(KDE3_ADD_DCOP_SKELS)
- 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 (NOT HAVE_${_basename}_KIDL_RULE)
- 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 (NOT HAVE_${_basename}_STUB_RULE)
- SET(${_sources} ${${_sources}} ${_stub_CPP})
- ENDFOREACH (_current_FILE)
- ENDMACRO(KDE3_ADD_DCOP_STUBS)
- 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 (_current_FILE)
- ENDMACRO(KDE3_ADD_KCFG_FILES)
- #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 (_current_FILE)
- ENDMACRO(KDE3_ADD_MOC_FILES)
- 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 -nounload -o ${_header} ${CMAKE_CURRENT_SOURCE_DIR}/${_current_FILE}
- DEPENDS ${_tmp_FILE}
- )
- ADD_CUSTOM_COMMAND(OUTPUT ${_src}
- COMMAND ${CMAKE_COMMAND}
- ARGS
- -DKDE_UIC_FILE:STRING=${_tmp_FILE}
- -DKDE_UIC_CPP_FILE:STRING=${_src}
- -DKDE_UIC_H_FILE:STRING=${_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 (_current_FILE)
- ENDMACRO(KDE3_ADD_UI_FILES)
- 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(READ ${_abs_FILE} _contents)
- GET_FILENAME_COMPONENT(_abs_PATH ${_abs_FILE} PATH)
- STRING(REGEX MATCHALL "#include +[^ ]+\\.moc[\">]" _match "${_contents}")
- IF(_match)
- FOREACH (_current_MOC_INC ${_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}
- )
- MACRO_ADD_FILE_DEPENDENCIES(${_abs_FILE} ${_moc})
- ENDFOREACH (_current_MOC_INC)
- ENDIF(_match)
- ENDIF (EXISTS ${_abs_FILE} AND NOT _skip)
- ENDFOREACH (_current_FILE)
- ENDMACRO(KDE3_AUTOMOC)
- MACRO(KDE3_INSTALL_ICONS _theme)
- ADD_CUSTOM_TARGET(install_icons )
- SET_TARGET_PROPERTIES(install_icons PROPERTIES POST_INSTALL_SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake )
- FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake "# icon installations rules\n")
- FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake "SET(CMAKE_BACKWARDS_COMPATIBILITY \"2.2\") \n")
- 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}")
- SET(_icon_GROUP "actions")
- IF(${_group} STREQUAL "mime")
- SET(_icon_GROUP "mimetypes")
- ENDIF(${_group} STREQUAL "mime")
- IF(${_group} STREQUAL "filesys")
- SET(_icon_GROUP "filesystems")
- ENDIF(${_group} STREQUAL "filesys")
- IF(${_group} STREQUAL "device")
- SET(_icon_GROUP "devices")
- ENDIF(${_group} STREQUAL "device")
- IF(${_group} STREQUAL "app")
- SET(_icon_GROUP "apps")
- ENDIF(${_group} STREQUAL "app")
- IF(${_group} STREQUAL "action")
- SET(_icon_GROUP "actions")
- ENDIF(${_group} STREQUAL "action")
- # message(STATUS "icon: ${_current_ICON} size: ${_size} group: ${_group} name: ${_name}" )
- SET(_ICON_INSTALL_NAME ${CMAKE_INSTALL_PREFIX}/share/icons/${_theme}/${_size}x${_size}/${_icon_GROUP}/${_name})
- FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake "message(STATUS \"Installing ${_ICON_INSTALL_NAME}\") \n")
- FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/install_icons.cmake "CONFIGURE_FILE( ${_current_ICON} ${_ICON_INSTALL_NAME} COPYONLY) \n")
- ENDFOREACH (_current_ICON)
- ENDMACRO(KDE3_INSTALL_ICONS)
- 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")
- FILE(APPEND ${_laname} "library_names='${_soname} ${_soname} ${_soname}'\n")
- 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(/lib/kde3 FILES ${_laname})
- ENDMACRO(KDE3_INSTALL_LIBTOOL_FILE)
- MACRO(KDE3_CREATE_FINAL_FILE _filename)
- FILE(WRITE ${_filename} "//autogenerated file\n")
- FOREACH (_current_FILE ${ARGN})
- FILE(APPEND ${_filename} "#include \"${_current_FILE}\"\n")
- ENDFOREACH (_current_FILE)
- ENDMACRO(KDE3_CREATE_FINAL_FILE)
- 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 (${_with_PREFIX} STREQUAL "WITH_PREFIX")
- SET(_first_SRC ${_with_PREFIX})
- ENDIF (${_with_PREFIX} STREQUAL "WITH_PREFIX")
- 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 (KDE3_ENABLE_FINAL)
- ADD_LIBRARY(${_target_NAME} MODULE ${_first_SRC} ${ARGN})
- ENDIF (KDE3_ENABLE_FINAL)
- IF(_first_SRC)
- SET_TARGET_PROPERTIES(${_target_NAME} PROPERTIES PREFIX "")
- ENDIF(_first_SRC)
- KDE3_INSTALL_LIBTOOL_FILE(${_target_NAME})
- ENDMACRO(KDE3_ADD_KPART)
- 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 (KDE3_ENABLE_FINAL)
- ADD_LIBRARY(kdeinit_${_target_NAME} SHARED ${ARGN} )
- ENDIF (KDE3_ENABLE_FINAL)
- 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(KDE3_ADD_KDEINIT_EXECUTABLE)
- 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 (KDE3_ENABLE_FINAL)
- ADD_EXECUTABLE(${_target_NAME} ${ARGN} )
- ENDIF (KDE3_ENABLE_FINAL)
- ENDMACRO(KDE3_ADD_EXECUTABLE)
|