summaryrefslogtreecommitdiffstats
path: root/src/power/src/CMakeLists.txt
blob: c9d0f40ba232804b3d796215bce7a8918181f635 (plain)
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
70

find_package(PkgConfig)

# Read CIM classes out of MOF file
execute_process(COMMAND sed -e "/class/ !D" -e "s/class \\(.*\\):.*/\\1/g"
                INPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../Linux_PowerManagement.mof
                OUTPUT_VARIABLE CIM_CLASSES
)

# And fill list with them
string(REGEX MATCHALL "[a-zA-Z_-]+" CIM_CLASSES ${CIM_CLASSES})

# Get headers and sources names from the list of CIM classes
set(CIM_HEADERS "")
set(CIM_PROVIDERS "")
foreach(CLASS ${CIM_CLASSES})
    set(CIM_HEADERS ${CIM_HEADERS} ${CLASS}.h)
    set(PROVIDER ${CLASS}Provider.c)
    set(CIM_PROVIDERS ${CIM_PROVIDERS} ${PROVIDER})
endforeach(CLASS ${CIM_CLASSES})

# Add library
add_library(cmpiLinux_PowerManagement SHARED
            power.c
            trace.c
            globals.c
            ${CIM_PROVIDERS}
            ${CIM_HEADERS}
)

# Link konkret library
target_link_libraries(cmpiLinux_PowerManagement "-lkonkret")
include_directories(/usr/include/cmpi ${CMAKE_CURRENT_BINARY_DIR})

# Check if we have upower and link it
pkg_check_modules(upower upower-glib)
if (${upower_FOUND})
    add_definitions(-DHAS_UPOWER)
    target_link_libraries(cmpiLinux_PowerManagement ${upower_LIBRARIES})
    include_directories(${upower_INCLUDE_DIRS})
endif (${upower_FOUND})

# Check if we have systemctl
find_program(systemctl NAMES systemctl)
if (${systemctl_FOUND})
    add_definitions(-DHAS_SYSTEMCTL)
endif (${systemctl_FOUND})

find_program(konkret NAMES konkret)
find_program(konkretreg NAMES konkretreg)

# Generate headers for CIM classes
add_custom_command(OUTPUT ${CIM_HEADERS}
                   COMMAND KONKRET_SCHEMA_DIR=/usr/share/mof/cim-current
                           ${konkret}
                           -m /usr/share/sblim-cmpi-base/Linux_Base.mof
                           -m ${CMAKE_CURRENT_SOURCE_DIR}/../Linux_PowerManagement.mof
                           ${CIM_CLASSES}
                   DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../Linux_PowerManagement.mof
                   COMMENT "Generating headers from .mof file"
                  )

add_custom_command(TARGET cmpiLinux_PowerManagement
                   POST_BUILD
                   COMMAND ${konkretreg} -r libcmpiLinux_PowerManagement.so > Linux_PowerManagement.registration
                   COMMENT "Generating .reg file from library"
                   WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
                  )

install(TARGETS cmpiLinux_PowerManagement DESTINATION lib${LIB_SUFFIX}/cmpi)