diff options
Diffstat (limited to 'modules/KDE4Macros.cmake')
-rw-r--r-- | modules/KDE4Macros.cmake | 118 |
1 files changed, 89 insertions, 29 deletions
diff --git a/modules/KDE4Macros.cmake b/modules/KDE4Macros.cmake index 4db3809a..7da50edc 100644 --- a/modules/KDE4Macros.cmake +++ b/modules/KDE4Macros.cmake @@ -442,6 +442,10 @@ MACRO (KDE4_ADD_PLUGIN _target_NAME _with_PREFIX) SET_TARGET_PROPERTIES(${_target_NAME} PROPERTIES PREFIX "") endif (_first_SRC) + if (NOT CMAKE_SKIP_RPATH) + set_target_properties(${_target_NAME} PROPERTIES SKIP_BUILD_RPATH TRUE BUILD_WITH_INSTALL_RPATH TRUE INSTALL_RPATH "") + endif (NOT CMAKE_SKIP_RPATH) + # if (UNIX) # I guess under windows the libtool file are not required # KDE4_INSTALL_LIBTOOL_FILE(${_target_NAME}) @@ -457,9 +461,62 @@ MACRO (KDE4_ADD_PLUGIN _target_NAME _with_PREFIX) ENDMACRO (KDE4_ADD_PLUGIN _target_NAME _with_PREFIX) -MACRO (KDE4_ADD_KDEINIT_EXECUTABLE _target_NAME ) +# this macro checks is intended to check whether a list of source +# files has the "NOGUI" or "RUN_UNINSTALLED" keywords at the beginning +# in _output_LIST the list of source files is returned with the "NOGUI" +# and "RUN_UNINSTALLED" keywords removed +# if "NOGUI" is in the list of files, the _nogui argument is set to +# "NOGUI" (which evaluates to TRUE in cmake), otherwise it is set empty +# (which evaluates to FALSE in cmake) +# if "RUN_UNINSTALLED" is in the list of files, the _uninst argument is set to +# "RUN_UNINSTALLED" (which evaluates to TRUE in cmake), otherwise it is set empty +# (which evaluates to FALSE in cmake) +MACRO(KDE4_CHECK_EXECUTABLE_PARAMS _output_LIST _nogui _uninst) + set(${_nogui}) + set(${_uninst}) + set(${_output_LIST} ${ARGN}) + list(LENGTH ${_output_LIST} count) + + list(GET ${_output_LIST} 0 first_PARAM) + + set(second_PARAM "NOTFOUND") + if (${count} GREATER 1) + list(GET ${_output_LIST} 1 second_PARAM) + endif (${count} GREATER 1) + + set(remove "NOTFOUND") + + if (${first_PARAM} STREQUAL "NOGUI") + set(${_nogui} "NOGUI") + set(remove 0) + endif (${first_PARAM} STREQUAL "NOGUI") + + if (${second_PARAM} STREQUAL "NOGUI") + set(${_nogui} "NOGUI") + set(remove 0;1) + endif (${second_PARAM} STREQUAL "NOGUI") + + if (${first_PARAM} STREQUAL "RUN_UNINSTALLED") + set(${_uninst} "RUN_UNINSTALLED") + set(remove 0) + endif (${first_PARAM} STREQUAL "RUN_UNINSTALLED") + + if (${second_PARAM} STREQUAL "RUN_UNINSTALLED") + set(${_uninst} "RUN_UNINSTALLED") + set(remove 0;1) + endif (${second_PARAM} STREQUAL "RUN_UNINSTALLED") + + if (NOT "${remove}" STREQUAL "NOTFOUND") + list(REMOVE_ITEM ${_output_LIST} ${remove}) + endif (NOT "${remove}" STREQUAL "NOTFOUND") + +ENDMACRO(KDE4_CHECK_EXECUTABLE_PARAMS) + - CONFIGURE_FILE(${KDE4_MODULE_DIR}/kde4init_dummy.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_dummy.cpp) +macro (KDE4_ADD_KDEINIT_EXECUTABLE _target_NAME ) + + kde4_check_executable_params(_SRCS _nogui _uninst ${ARGN}) + configure_file(${KDE4_MODULE_DIR}/kde4init_dummy.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_dummy.cpp) #MACRO_ADDITIONAL_CLEAN_FILES(${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_dummy.cpp) # if (WIN32) @@ -468,24 +525,26 @@ MACRO (KDE4_ADD_KDEINIT_EXECUTABLE _target_NAME ) # else (WIN32) # under UNIX, create a shared library and a small executable, which links to this library if (KDE4_ENABLE_FINAL) - KDE4_CREATE_FINAL_FILES(${_target_NAME}_final_cpp.cpp ${_target_NAME}_final_c.c ${ARGN}) - ADD_LIBRARY(kdeinit_${_target_NAME} SHARED ${_target_NAME}_final_cpp.cpp ${_target_NAME}_final_c.c) + kde4_create_final_files(${_target_NAME}_final_cpp.cpp ${_target_NAME}_final_c.c ${_SRCS}) + add_library(kdeinit_${_target_NAME} SHARED ${_target_NAME}_final_cpp.cpp ${_target_NAME}_final_c.c) + if (NOT CMAKE_SKIP_RPATH) + set_target_properties(kdeinit_${_target_NAME} PROPERTIES SKIP_BUILD_RPATH TRUE BUILD_WITH_INSTALL_RPATH TRUE INSTALL_RPATH "") + endif (NOT CMAKE_SKIP_RPATH) + else (KDE4_ENABLE_FINAL) - ADD_LIBRARY(kdeinit_${_target_NAME} SHARED ${ARGN} ) -# message(STATUS "klm: kdeinit_${_target_NAME}") + add_library(kdeinit_${_target_NAME} SHARED ${_SRCS} ) endif (KDE4_ENABLE_FINAL) - - ADD_EXECUTABLE(${_target_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_dummy.cpp) - KDE4_HANDLE_RPATH(${_target_NAME} GUI) - TARGET_LINK_LIBRARIES(${_target_NAME} kdeinit_${_target_NAME}) + kde4_add_executable(${_target_NAME} "${_nogui}" "${_uninst}" ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_dummy.cpp) + target_link_libraries(${_target_NAME} kdeinit_${_target_NAME}) # endif (WIN32) -ENDMACRO (KDE4_ADD_KDEINIT_EXECUTABLE _target_NAME) +endmacro (KDE4_ADD_KDEINIT_EXECUTABLE) -macro (KDE4_ADD_EXECUTABLE _target_NAME _first_ARG) +macro (KDE4_ADD_EXECUTABLE _target_NAME) + + kde4_check_executable_params( _SRCS _nogui _uninst ${ARGN}) - set(_first_SRC ${_first_ARG} ) set(_add_executable_param) set(_type "GUI") @@ -498,31 +557,28 @@ macro (KDE4_ADD_EXECUTABLE _target_NAME _first_ARG) # set(_add_executable_param WIN32) # endif (WIN32) - - if (${_first_ARG} STREQUAL "NOGUI") + if (_nogui) set(_type "NOGUI") - set(_first_SRC) set(_add_executable_param) - endif (${_first_ARG} STREQUAL "NOGUI") - if (${_first_ARG} STREQUAL "RUN_UNINSTALLED") + endif (_nogui) + + if (_uninst) set(_type "RUN_UNINSTALLED") - set(_first_SRC) - set(_add_executable_param) - endif (${_first_ARG} STREQUAL "RUN_UNINSTALLED") + endif (_uninst) if (KDE4_ENABLE_FINAL) - kde4_create_final_files(${_target_NAME}_final_cpp.cpp ${_target_NAME}_final_c.c ${_first_SRC} ${ARGN}) + kde4_create_final_files(${_target_NAME}_final_cpp.cpp ${_target_NAME}_final_c.c ${_SRCS}) add_executable(${_target_NAME} ${_add_executable_param} ${_target_NAME}_final_cpp.cpp ${_target_NAME}_final_c.c) else (KDE4_ENABLE_FINAL) - add_executable(${_target_NAME} ${_add_executable_param} ${_first_SRC} ${ARGN} ) + add_executable(${_target_NAME} ${_add_executable_param} ${_SRCS} ) endif (KDE4_ENABLE_FINAL) kde4_handle_rpath(${_target_NAME} ${_type}) -endmacro (KDE4_ADD_EXECUTABLE _target_NAME) +endmacro (KDE4_ADD_EXECUTABLE) -macro (KDE4_ADD_LIBRARY _target_NAME _lib_TYPE) +MACRO (KDE4_ADD_LIBRARY _target_NAME _lib_TYPE) #is the first argument is "WITH_PREFIX" then keep the standard "lib" prefix, otherwise set the prefix empty set(_first_SRC ${_lib_TYPE}) @@ -542,12 +598,16 @@ macro (KDE4_ADD_LIBRARY _target_NAME _lib_TYPE) endif (${_lib_TYPE} STREQUAL "MODULE") if (KDE4_ENABLE_FINAL) - kde4_create_final_files(${_target_NAME}_final_cpp.cpp ${_target_NAME}_final_c.c ${_first_SRC} ${ARGN}) - add_library(${_target_NAME} ${_add_lib_param} ${_target_NAME}_final_cpp.cpp ${_target_NAME}_final_c.c) + KDE4_CREATE_FINAL_FILES(${_target_NAME}_final_cpp.cpp ${_target_NAME}_final_c.c ${_first_SRC} ${ARGN}) + ADD_LIBRARY(${_target_NAME} ${_add_lib_param} ${_target_NAME}_final_cpp.cpp ${_target_NAME}_final_c.c) else (KDE4_ENABLE_FINAL) - add_library(${_target_NAME} ${_add_lib_param} ${_first_SRC} ${ARGN}) + ADD_LIBRARY(${_target_NAME} ${_add_lib_param} ${_first_SRC} ${ARGN}) endif (KDE4_ENABLE_FINAL) + if (NOT CMAKE_SKIP_RPATH) + set_target_properties(${_target_NAME} PROPERTIES SKIP_BUILD_RPATH TRUE BUILD_WITH_INSTALL_RPATH TRUE INSTALL_RPATH "") + endif (NOT CMAKE_SKIP_RPATH) + if (WIN32) # for shared libraries a -DMAKE_target_LIB is required string(TOUPPER ${_target_NAME} _symbol) @@ -555,7 +615,7 @@ macro (KDE4_ADD_LIBRARY _target_NAME _lib_TYPE) set_target_properties(${_target_NAME} PROPERTIES DEFINE_SYMBOL ${_symbol}) endif (WIN32) -endmacro (KDE4_ADD_LIBRARY _target_NAME _lib_TYPE) +ENDMACRO (KDE4_ADD_LIBRARY _target_NAME _lib_TYPE) MACRO (KDE4_ADD_WIDGET_FILES _sources) |