File: KDbCreateSharedDataClasses.cmake

package info (click to toggle)
kreport 3.2.0-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,032 kB
  • sloc: cpp: 23,245; python: 779; xml: 197; sh: 108; makefile: 9
file content (69 lines) | stat: -rw-r--r-- 3,097 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# This file defines the KDB_CREATE_SHARED_DATA_CLASSES macro.
#
# KDB_CREATE_SHARED_DATA_CLASSES(LIST)
#   Creates header file out of the LIST files in .shared.h format.
#   FILES should be a list of relative paths to ${CMAKE_SOURCE_DIR}.
#
# Following example creates ${CMAKE_CURRENT_BINARY_DIR}/Foo.h
# and ${CMAKE_CURRENT_BINARY_DIR}/Baz.h files:
#
# INCLUDE(KDbCreateSharedDataClass)
# KDB_CREATE_SHARED_DATA_CLASS(OUTPUT_VAR Bar/Foo.shared.h Baz.shared.h)
#
# Copyright (C) 2010 Jarosław Staniek <staniek@kde.org>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.

macro(KDB_CREATE_SHARED_DATA_CLASSES)
    # message(STATUS "KDB_CREATE_SHARED_DATA_CLASSES ARGV: ${ARGV}")
    set(_args "")
    list(APPEND _args ${ARGV})
    list(GET _args 0 OUTPUT_VAR)
    list(GET _args 1 PREFIX)
    list(REMOVE_AT _args 0 1)
    # message(STATUS "OUTPUT_VAR: ${OUTPUT_VAR} ${_args}")
    find_package(PythonInterp 2.6)
    set_package_properties(PythonInterp PROPERTIES DESCRIPTION "Python language interpreter"
                           URL "https://www.python.org" TYPE REQUIRED
                           PURPOSE "Required by the Shared Data Classes (SDC) tool")
    foreach(_input ${_args})
        get_filename_component(INPUT ${_input} ABSOLUTE)
        string(REGEX REPLACE "\\.shared\\.h" ".h" OUTPUT ${_input})
        string(REGEX REPLACE ".*/([^/]+)\\.h" "\\1.h" OUTPUT ${OUTPUT})
        #MESSAGE(DEBUG "--------- ${_input} ${OUTPUT} ${INPUT}")
        #MESSAGE(DEBUG "COMMAND python2 ${CMAKE_SOURCE_DIR}/tools/sdc.py ${INPUT} ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT}")
        message(STATUS "Creating shared data class in ${OUTPUT} from ${_input}")
        if(${PREFIX} STREQUAL "NO_PREFIX")
            set(OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
        else()
            set(OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/${PREFIX})
            set(OUTPUT "${PREFIX}/${OUTPUT}")
        endif()
        # message(STATUS "OUTPUT_DIR: ${OUTPUT_DIR} ${PREFIX}")
        file(MAKE_DIRECTORY ${OUTPUT_DIR})
        execute_process(
            COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/sdc.py
                           ${INPUT}
                           ${OUTPUT_DIR}/${OUTPUT}
            WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
            RESULT_VARIABLE KDB_CREATE_SHARED_DATA_CLASSES_RESULT
        )
        # MESSAGE(STATUS "...result: ${KDB_CREATE_SHARED_DATA_CLASSES_RESULT}")
        list(APPEND ${OUTPUT_VAR} "${OUTPUT}")
    endforeach(_input)
endmacro(KDB_CREATE_SHARED_DATA_CLASSES)

macro(KDB_REMOVE_EXTENSIONS)
    # message(STATUS "KDB_REMOVE_EXTENSIONS ARGV: ${ARGV}")
    set(_args "")
    list(APPEND _args ${ARGV})
    list(GET _args 0 OUTPUT_VAR)
    list(REMOVE_AT _args 0)
    # message(STATUS "OUTPUT_VAR: ${OUTPUT_VAR} ${_args}")
    foreach(_input ${_args})
        string(REGEX REPLACE "\\.h" "" OUTPUT ${_input})
        # message(STATUS "...result: ${OUTPUT}")
        list(APPEND ${OUTPUT_VAR} "${OUTPUT}")
    endforeach(_input)
endmacro(KDB_REMOVE_EXTENSIONS)