# BuildPlugin.cmake - Copyright (c) 2008 Tobias Doerffel # # description: build LMMS-plugin # usage: BUILD_PLUGIN( MOCFILES EMBEDDED_RESOURCES UICFILES ) MACRO(BUILD_PLUGIN PLUGIN_NAME) CMAKE_PARSE_ARGUMENTS(PLUGIN "" "" "MOCFILES;EMBEDDED_RESOURCES;UICFILES" ${ARGN}) SET(PLUGIN_SOURCES ${PLUGIN_UNPARSED_ARGUMENTS}) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/src/gui) ADD_DEFINITIONS(-DPLUGIN_NAME=${PLUGIN_NAME}) LIST(LENGTH PLUGIN_EMBEDDED_RESOURCES ER_LEN) IF(ER_LEN) SET(ER_H ${CMAKE_CURRENT_BINARY_DIR}/embedded_resources.h) ADD_CUSTOM_COMMAND(OUTPUT ${ER_H} COMMAND ${BIN2RES} ARGS ${PLUGIN_EMBEDDED_RESOURCES} > ${ER_H} DEPENDS bin2res) ENDIF(ER_LEN) IF(QT5) QT5_WRAP_CPP(plugin_MOC_out ${PLUGIN_MOCFILES}) QT5_WRAP_UI(plugin_UIC_out ${PLUGIN_UICFILES}) ELSE() QT4_WRAP_CPP(plugin_MOC_out ${PLUGIN_MOCFILES}) QT4_WRAP_UI(plugin_UIC_out ${PLUGIN_UICFILES}) ENDIF() FOREACH(f ${PLUGIN_SOURCES}) ADD_FILE_DEPENDENCIES(${f} ${ER_H} ${plugin_UIC_out}) ENDFOREACH(f) IF(LMMS_BUILD_APPLE) LINK_DIRECTORIES(${CMAKE_BINARY_DIR}) LINK_LIBRARIES(${QT_LIBRARIES}) ENDIF(LMMS_BUILD_APPLE) IF(LMMS_BUILD_WIN32) LINK_DIRECTORIES(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}) LINK_LIBRARIES(${QT_LIBRARIES}) ENDIF(LMMS_BUILD_WIN32) ADD_LIBRARY(${PLUGIN_NAME} MODULE ${PLUGIN_SOURCES} ${plugin_MOC_out}) IF(QT5) TARGET_LINK_LIBRARIES(${PLUGIN_NAME} Qt5::Widgets Qt5::Xml) ENDIF() IF(LMMS_BUILD_WIN32) TARGET_LINK_LIBRARIES(${PLUGIN_NAME} lmms) ENDIF(LMMS_BUILD_WIN32) INSTALL(TARGETS ${PLUGIN_NAME} LIBRARY DESTINATION "${PLUGIN_DIR}") IF(LMMS_BUILD_APPLE) SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES LINK_FLAGS "-bundle_loader ${CMAKE_BINARY_DIR}/lmms") ADD_DEPENDENCIES(${PLUGIN_NAME} lmms) ENDIF(LMMS_BUILD_APPLE) IF(LMMS_BUILD_WIN32) SET_TARGET_PROPERTIES(${PLUGIN_NAME} PROPERTIES PREFIX "") ADD_CUSTOM_COMMAND(TARGET ${PLUGIN_NAME} POST_BUILD COMMAND ${STRIP} $) ENDIF(LMMS_BUILD_WIN32) SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${ER_H} ${plugin_MOC_out}") ENDMACRO(BUILD_PLUGIN)