1 # BuildPlugin.cmake - Copyright (c) 2008 Tobias Doerffel
3 # description: build LMMS-plugin
4 # usage: BUILD_PLUGIN(<PLUGIN_NAME> <PLUGIN_SOURCES> MOCFILES <HEADERS_FOR_MOC> EMBEDDED_RESOURCES <LIST_OF_FILES_TO_EMBED> UICFILES <UI_FILES_TO_COMPILE> )
14 MACRO(LIST_CONTAINS var value)
16 FOREACH (value2 ${ARGN})
17 IF (${value} STREQUAL ${value2})
19 ENDIF (${value} STREQUAL ${value2})
21 ENDMACRO(LIST_CONTAINS)
23 MACRO(PARSE_ARGUMENTS prefix arg_names option_names)
25 FOREACH(arg_name ${arg_names})
26 SET(${prefix}_${arg_name})
28 FOREACH(option ${option_names})
29 SET(${prefix}_${option} FALSE)
32 SET(current_arg_name DEFAULT_ARGS)
35 LIST_CONTAINS(is_arg_name ${arg} ${arg_names})
37 SET(${prefix}_${current_arg_name} ${current_arg_list})
38 SET(current_arg_name ${arg})
41 LIST_CONTAINS(is_option ${arg} ${option_names})
43 SET(${prefix}_${arg} TRUE)
45 SET(current_arg_list ${current_arg_list} ${arg})
49 SET(${prefix}_${current_arg_name} ${current_arg_list})
50 ENDMACRO(PARSE_ARGUMENTS)
53 PARSE_ARGUMENTS(PLUGIN "MOCFILES;EMBEDDED_RESOURCES;UICFILES" "" ${ARGN} )
54 CAR(PLUGIN_NAME ${PLUGIN_DEFAULT_ARGS})
55 CDR(PLUGIN_SOURCES ${PLUGIN_DEFAULT_ARGS})
57 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/src/gui ${CMAKE_INSTALL_PREFIX}/include)
59 ADD_DEFINITIONS(-DPLUGIN_NAME=${PLUGIN_NAME})
61 LIST(LENGTH PLUGIN_EMBEDDED_RESOURCES ER_LEN)
63 SET(ER_H ${CMAKE_CURRENT_BINARY_DIR}/embedded_resources.h)
64 ADD_CUSTOM_COMMAND(OUTPUT ${ER_H}
66 ARGS ${PLUGIN_EMBEDDED_RESOURCES} > ${ER_H}
70 QT4_WRAP_CPP(plugin_MOC_out ${PLUGIN_MOCFILES})
71 QT4_WRAP_UI(plugin_UIC_out ${PLUGIN_UICFILES})
72 FOREACH(f ${PLUGIN_SOURCES})
73 ADD_FILE_DEPENDENCIES(${f} ${ER_H} ${plugin_MOC_out} ${plugin_UIC_out})
77 LINK_DIRECTORIES(${CMAKE_BINARY_DIR})
78 LINK_LIBRARIES(${QT_LIBRARIES})
79 ENDIF(LMMS_BUILD_APPLE)
81 LINK_DIRECTORIES(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR})
82 LINK_LIBRARIES(-llmms ${QT_LIBRARIES})
83 ENDIF(LMMS_BUILD_WIN32)
85 ADD_LIBRARY(${PLUGIN_NAME} MODULE ${PLUGIN_SOURCES})
86 INSTALL(TARGETS ${PLUGIN_NAME} LIBRARY DESTINATION "${PLUGIN_DIR}")
89 SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES LINK_FLAGS "-bundle_loader ${CMAKE_BINARY_DIR}/lmms")
90 ENDIF(LMMS_BUILD_APPLE)
92 SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES PREFIX "")
93 ADD_CUSTOM_COMMAND(TARGET ${PLUGIN_NAME} POST_BUILD COMMAND ${STRIP} ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_NAME}.dll)
94 ENDIF(LMMS_BUILD_WIN32)
96 SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${ER_H} ${plugin_MOC_out}")
97 ENDMACRO(BUILD_PLUGIN)