view cmake/function/MalikaniaDefineDatabase.cmake @ 110:119bcc5a727e

Misc: replace copyrights, closes #655
author David Demelier <markand@malikania.fr>
date Tue, 05 Sep 2017 14:06:31 +0200
parents f8c6d2244795
children 4b292c20124c
line wrap: on
line source

#
# MalikaniaDefineDatabase.cmake -- CMake build system for malikania
#
# Copyright (c) 2013-2017 David Demelier <markand@malikania.fr>
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#

#
# malikania_define_database
# ------------------------
#
# malikania_define_database(
#   NAME            The target name
#   SOURCES         The sources
#   FLAGS           (Optional) List of flags
#   INCLUDES        (Optional) List of includes only for building the library
#   LIBRARIES       (Optional) List of libraries to link against
# )
#
# Create a shared library that is dynamically loadable.
#

include(CMakeParseArguments)

include(${CMAKE_CURRENT_LIST_DIR}/MalikaniaVeraCheck.cmake)

function(malikania_define_database)
    set(singleArgs NAME)
    set(multiArgs SOURCES FLAGS INCLUDES LIBRARIES)

    cmake_parse_arguments(DB "" "${singleArgs}" "${multiArgs}" ${ARGN})

    if (NOT DB_NAME)
        message(FATAL_ERROR "Missing NAME parameter")
    endif ()
    if (NOT DB_SOURCES)
        message(FATAL_ERROR "Missing SOURCES parameter")
    endif ()

    add_library(db-${DB_NAME} MODULE ${DB_SOURCES})
    target_link_libraries(
        db-${DB_NAME}
        libmlk-server
        ${DB_LIBRARIES}
    )
    target_include_directories(
        db-${DB_NAME}
        PRIVATE
            ${DB_INCLUDES}
        PUBLIC
            ${CMAKE_CURRENT_SOURCE_DIR}
    )
    target_compile_definitions(db-${DB_NAME} PRIVATE ${DB_FLAGS})
    set_target_properties(
        db-${DB_NAME}
        PROPERTIES
            OUTPUT_NAME ${DB_NAME}
            RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
            PREFIX ""
    )
    foreach (c ${CMAKE_CONFIGURATION_TYPES})
        string(TOUPPER ${c} config)
        set_target_properties(
            db-${DB_NAME}
            PROPERTIES
                OUTPUT_NAME_${c} ${DB_NAME}
                RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${c}
        )
    endforeach ()

    malikania_vera_check(${DB_NAME} "${DB_SOURCES}")
endfunction()