~ubuntu-branches/ubuntu/trusty/tomahawk/trusty-proposed

« back to all changes in this revision

Viewing changes to CMakeModules/AddTomahawkPlugin.cmake

  • Committer: Package Import Robot
  • Author(s): Harald Sitter
  • Date: 2013-03-07 21:50:13 UTC
  • Revision ID: package-import@ubuntu.com-20130307215013-6gdjkdds7i9uenvs
Tags: upstream-0.6.0+dfsg
ImportĀ upstreamĀ versionĀ 0.6.0+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
MACRO(PARSE_ARGUMENTS prefix arg_names option_names)
 
2
  SET(DEFAULT_ARGS)
 
3
  FOREACH(arg_name ${arg_names})
 
4
    SET(${prefix}_${arg_name})
 
5
  ENDFOREACH(arg_name)
 
6
  FOREACH(option ${option_names})
 
7
    SET(${prefix}_${option} FALSE)
 
8
  ENDFOREACH(option)
 
9
 
 
10
  SET(current_arg_name DEFAULT_ARGS)
 
11
  SET(current_arg_list)
 
12
  FOREACH(arg ${ARGN})
 
13
    SET(larg_names ${arg_names})
 
14
    LIST(FIND larg_names "${arg}" is_arg_name)
 
15
    IF (is_arg_name GREATER -1)
 
16
      SET(${prefix}_${current_arg_name} ${current_arg_list})
 
17
      SET(current_arg_name ${arg})
 
18
      SET(current_arg_list)
 
19
    ELSE (is_arg_name GREATER -1)
 
20
      SET(loption_names ${option_names})
 
21
      LIST(FIND loption_names "${arg}" is_option)
 
22
      IF (is_option GREATER -1)
 
23
         SET(${prefix}_${arg} TRUE)
 
24
      ELSE (is_option GREATER -1)
 
25
         SET(current_arg_list ${current_arg_list} ${arg})
 
26
      ENDIF (is_option GREATER -1)
 
27
    ENDIF (is_arg_name GREATER -1)
 
28
  ENDFOREACH(arg)
 
29
  SET(${prefix}_${current_arg_name} ${current_arg_list})
 
30
ENDMACRO(PARSE_ARGUMENTS)
 
31
 
 
32
MACRO(CAR var)
 
33
  SET(${var} ${ARGV1})
 
34
ENDMACRO(CAR)
 
35
 
 
36
MACRO(CDR var junk)
 
37
  SET(${var} ${ARGN})
 
38
ENDMACRO(CDR)
 
39
 
 
40
 
 
41
macro(add_tomahawk_plugin)
 
42
    parse_arguments(PLUGIN
 
43
        "SOURCES;UI;LINK_LIBRARIES;TYPE;EXPORT_MACRO;COMPILE_DEFINITIONS"
 
44
        "NO_INSTALL"
 
45
        ${ARGN}
 
46
        )
 
47
    car(PLUGIN_NAME ${PLUGIN_DEFAULT_ARGS})
 
48
 
 
49
#     message("*** Arguments for ${PLUGIN_NAME}")
 
50
#     message("Sources: ${PLUGIN_SOURCES}")
 
51
#     message("Link libraries: ${PLUGIN_LINK_LIBRARIES}")
 
52
#     message("UI: ${PLUGIN_UI}")
 
53
#     message("TYPE: ${PLUGIN_TYPE}")
 
54
#     message("EXPORT_MACRO: ${PLUGIN_EXPORT_MACRO}")
 
55
 
 
56
    # create target name once for convenience
 
57
    set(target "tomahawk_${PLUGIN_TYPE}_${PLUGIN_NAME}")
 
58
 
 
59
    # qt stuff
 
60
    include_directories(${CMAKE_CURRENT_BINARY_DIR})
 
61
    if(PLUGIN_UI)
 
62
        qt4_wrap_ui(PLUGIN_UI_SOURCES ${PLUGIN_UI})
 
63
        list(APPEND PLUGIN_SOURCES ${PLUGIN_UI_SOURCES})
 
64
    endif()
 
65
 
 
66
    if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/resources.qrc")
 
67
        qt4_add_resources(PLUGIN_RC_SOURCES "resources.qrc")
 
68
        list(APPEND PLUGIN_SOURCES ${PLUGIN_RC_SOURCES})
 
69
        unset(PLUGIN_RC_SOURCES)
 
70
    endif()
 
71
 
 
72
    # add target
 
73
    add_library(${target} MODULE ${PLUGIN_SOURCES})
 
74
 
 
75
    # definitions - can this be moved into set_target_properties below?
 
76
    add_definitions(${QT_DEFINITIONS})
 
77
    set_target_properties(${target} PROPERTIES AUTOMOC TRUE COMPILE_DEFINITIONS ${PLUGIN_EXPORT_MACRO})
 
78
    if(PLUGIN_COMPILE_DEFINITIONS)
 
79
        # Dear CMake, i hate you! Sincerely, domme
 
80
        # At least in CMake 2.8.8, you CANNOT set more than one COMPILE_DEFINITIONS value
 
81
        # only takes the first one if called multiple times or bails out with wrong number of arguments
 
82
        # when passing in a list, thus i redefine the export macro here in hope it won't mess up other targets
 
83
        add_definitions( "-D${PLUGIN_EXPORT_MACRO}" )
 
84
 
 
85
        set_target_properties(${target} PROPERTIES COMPILE_DEFINITIONS ${PLUGIN_COMPILE_DEFINITIONS})
 
86
    endif()
 
87
 
 
88
    # add link targets
 
89
    target_link_libraries(${target} tomahawklib)
 
90
    if(PLUGIN_LINK_LIBRARIES)
 
91
        target_link_libraries(${target} ${PLUGIN_LINK_LIBRARIES})
 
92
    endif()
 
93
 
 
94
    # make installation optional, maybe useful for dummy plugins one day
 
95
    if(NOT PLUGIN_NO_INSTALL)
 
96
        include(GNUInstallDirs)
 
97
        install(TARGETS ${target} DESTINATION ${CMAKE_INSTALL_LIBDIR})
 
98
    endif()
 
99
endmacro()