include( CMakeParseArguments ) include( ${CALAMARES_CMAKE_DIR}/CalamaresAddLibrary.cmake ) function(calamares_add_plugin) # parse arguments (name needs to be saved before passing ARGN into the macro) set(NAME ${ARGV0}) set(options NO_INSTALL SHARED_LIB) set(oneValueArgs NAME TYPE EXPORT_MACRO CONFIG_FILE) set(multiValueArgs SOURCES UI LINK_LIBRARIES COMPILE_DEFINITIONS) cmake_parse_arguments(PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) set(PLUGIN_NAME ${NAME}) set(PLUGIN_DESTINATION ${CMAKE_INSTALL_LIBDIR}/calamares/modules/${PLUGIN_NAME}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") include(CMakeColors) message("${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} module: ${BoldRed}${PLUGIN_NAME}${ColorReset}") message(" ${BoldYellow}*${ColorReset} ${Green}SOURCES:${ColorReset} ${PLUGIN_SOURCES}") message(" ${BoldYellow}*${ColorReset} ${Green}LINK_LIBRARIES:${ColorReset} ${PLUGIN_LINK_LIBRARIES}") message(" ${BoldYellow}*${ColorReset} ${Green}UI:${ColorReset} ${PLUGIN_UI}") message(" ${BoldYellow}*${ColorReset} ${Green}TYPE:${ColorReset} ${PLUGIN_TYPE}") message(" ${BoldYellow}*${ColorReset} ${Green}EXPORT_MACRO:${ColorReset} ${PLUGIN_EXPORT_MACRO}") message(" ${BoldYellow}*${ColorReset} ${Green}NO_INSTALL:${ColorReset} ${PLUGIN_NO_INSTALL}") message(" ${BoldYellow}*${ColorReset} ${Green}CONFIG_FILE:${ColorReset} ${PLUGIN_CONFIG_FILE}") message(" ${BoldYellow}*${ColorReset} ${Green}PLUGIN_DESTINATION:${ColorReset} ${PLUGIN_DESTINATION}") # create target name once for convenience set(target "calamares_${PLUGIN_TYPE}_${PLUGIN_NAME}") # determine target type if(NOT ${PLUGIN_SHARED_LIB}) set(target_type "MODULE") else() set(target_type "SHARED") endif() list(APPEND calamares_add_library_args "${target}" "EXPORT_MACRO" "${PLUGIN_EXPORT_MACRO}" "TARGET_TYPE" "${target_type}" "SOURCES" "${PLUGIN_SOURCES}" ) if(PLUGIN_UI) list(APPEND calamares_add_library_args "UI" "${PLUGIN_UI}") endif() if(PLUGIN_LINK_LIBRARIES) list(APPEND calamares_add_library_args "LINK_LIBRARIES" "${PLUGIN_LINK_LIBRARIES}") endif() if(PLUGIN_COMPILE_DEFINITIONS) list(APPEND calamares_add_library_args "COMPILE_DEFINITIONS" ${PLUGIN_COMPILE_DEFINITIONS}) endif() list(APPEND calamares_add_library_args "NO_VERSION") list(APPEND calamares_add_library_args "INSTALL_BINDIR" "${PLUGIN_DESTINATION}") #message(" ${Green}CalamaresAddLibrary arguments:${ColorReset} ${calamares_add_library_args}") message("") calamares_add_library(${calamares_add_library_args}) configure_file(${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE} DESTINATION ${PLUGIN_DESTINATION}) endfunction()