summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/threadweaver/src/CMakeLists.txt
blob: c571b12df155f236360d618bbf0a54c55f01442c (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
71
72
73
74
75
76
77
78
79
80
81
82
########### next target ###############
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}  ${KDE_ENABLE_EXCEPTIONS}")

set(ThreadWeaver_LIB_SRCS
    queuesignals.cpp
    queuestream.cpp
    queueapi.cpp
    exception.cpp
    queue.cpp
    weaver.cpp
    debuggingaids.cpp
    thread.cpp
    job.cpp
    iddecorator.cpp
    qobjectdecorator.cpp
    executor.cpp
    executewrapper.cpp
    state.cpp
    weaverimplstate.cpp
    inconstructionstate.cpp
    workinghardstate.cpp
    suspendingstate.cpp
    suspendedstate.cpp
    shuttingdownstate.cpp
    destructedstate.cpp
    collection.cpp
    sequence.cpp
    dependencypolicy.cpp
    dependency.cpp
    resourcerestrictionpolicy.cpp
)

add_library(KF5ThreadWeaver ${ThreadWeaver_LIB_SRCS})
generate_export_header(KF5ThreadWeaver BASE_NAME ThreadWeaver)
add_library(KF5::ThreadWeaver ALIAS KF5ThreadWeaver)
target_link_libraries(KF5ThreadWeaver PUBLIC Qt5::Core)
target_include_directories(KF5ThreadWeaver PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>")
target_include_directories(KF5ThreadWeaver INTERFACE "$<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}/ThreadWeaver>")

set_target_properties(KF5ThreadWeaver PROPERTIES
    VERSION ${THREADWEAVER_VERSION_STRING}
    SOVERSION ${THREADWEAVER_SOVERSION}
    EXPORT_NAME ThreadWeaver
)
install(TARGETS KF5ThreadWeaver EXPORT KF5ThreadWeaverTargets ${INSTALL_TARGETS_DEFAULT_ARGS})

ecm_generate_headers(
    ThreadWeaver
    QueueStream
    Queueing
    Exception
    QueueInterface
    Queue
    DebuggingAids
    Thread
    JobInterface
    Job
    IdDecorator
    QObjectDecorator
    Lambda
    State
    Collection
    Sequence
    Dependency
    DependencyPolicy
    ResourceRestrictionPolicy
    QueueSignals
    QueuePolicy
    JobPointer
    ManagedJobPointer

    MODULE_NAME ThreadWeaver
    PREFIX ThreadWeaver
    REQUIRED_HEADERS ThreadWeaver_HEADERS
)
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/ThreadWeaver DESTINATION ${INCLUDE_INSTALL_DIR} COMPONENT Devel)

install(FILES
    ${CMAKE_CURRENT_BINARY_DIR}/threadweaver_export.h
    ${ThreadWeaver_HEADERS}
    DESTINATION ${INCLUDE_INSTALL_DIR}/ThreadWeaver/threadweaver COMPONENT Devel
)