blob: 33eeb490b4dce70d9e6e63195b3417b657e0ba41 (
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
project(ntkernel-error-category VERSION 1.0 LANGUAGES CXX)
enable_testing()
include(GNUInstallDirs)
if(NOT DEFINED PROJECT_IS_DEPENDENCY)
if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
set(PROJECT_IS_DEPENDENCY OFF)
else()
set(PROJECT_IS_DEPENDENCY ON)
endif()
endif()
if(WIN32)
# Create the table generating program
add_executable(generate-table "src/generate-table.cpp")
target_compile_features(generate-table PRIVATE cxx_noexcept)
target_compile_definitions(generate-table PRIVATE _UNICODE UNICODE)
set_target_properties(generate-table PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
endif()
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/ntkernel-error-category"
DESTINATION "include"
)
add_library(${PROJECT_NAME}_dl SHARED "src/ntkernel_category.cpp")
target_compile_features(${PROJECT_NAME}_dl PUBLIC cxx_std_11)
target_include_directories(${PROJECT_NAME}_dl PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
"$<INSTALL_INTERFACE:include>"
)
set_target_properties(${PROJECT_NAME}_dl PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
add_library(${PROJECT_NAME}::dl ALIAS ${PROJECT_NAME}_dl)
if(CMAKE_GENERATOR MATCHES "Visual Studio")
set_target_properties(${PROJECT_NAME}_dl PROPERTIES
OUTPUT_NAME "${PROJECT_NAME}_dl-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}-$<PLATFORM_ID>-${CMAKE_SYSTEM_PROCESSOR}-$<CONFIG>"
)
elseif(CMAKE_GENERATOR MATCHES "Xcode")
set_target_properties(${PROJECT_NAME}_dl PROPERTIES
OUTPUT_NAME "${PROJECT_NAME}_dl-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}-$<PLATFORM_ID>-${CMAKE_SYSTEM_PROCESSOR}-$<CONFIG>"
)
else()
set_target_properties(${PROJECT_NAME}_dl PROPERTIES
OUTPUT_NAME "${PROJECT_NAME}_dl-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_BUILD_TYPE}"
)
endif()
install(TARGETS ${PROJECT_NAME}_dl
EXPORT ${PROJECT_NAME}Exports
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
)
set_target_properties(${PROJECT_NAME}_dl PROPERTIES EXPORT_NAME dl)
add_library(${PROJECT_NAME}_sl STATIC "src/ntkernel_category.cpp")
target_compile_features(${PROJECT_NAME}_sl PUBLIC cxx_std_11)
target_include_directories(${PROJECT_NAME}_sl PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
"$<INSTALL_INTERFACE:include>"
)
target_compile_definitions(${PROJECT_NAME}_sl PRIVATE NTKERNEL_ERROR_CATEGORY_STATIC)
set_target_properties(${PROJECT_NAME}_sl PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
if(CMAKE_GENERATOR MATCHES "Visual Studio")
set_target_properties(${PROJECT_NAME}_sl PROPERTIES
OUTPUT_NAME "${PROJECT_NAME}_sl-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}-$<PLATFORM_ID>-${CMAKE_SYSTEM_PROCESSOR}-$<CONFIG>"
)
elseif(CMAKE_GENERATOR MATCHES "Xcode")
set_target_properties(${PROJECT_NAME}_sl PROPERTIES
OUTPUT_NAME "${PROJECT_NAME}_sl-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}-$<PLATFORM_ID>-${CMAKE_SYSTEM_PROCESSOR}-$<CONFIG>"
)
else()
set_target_properties(${PROJECT_NAME}_sl PROPERTIES
OUTPUT_NAME "${PROJECT_NAME}_sl-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_BUILD_TYPE}"
)
endif()
add_library(${PROJECT_NAME}::sl ALIAS ${PROJECT_NAME}_sl)
install(TARGETS ${PROJECT_NAME}_sl
EXPORT ${PROJECT_NAME}Exports
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
)
set_target_properties(${PROJECT_NAME}_sl PROPERTIES EXPORT_NAME sl)
add_library(${PROJECT_NAME}_hl INTERFACE)
target_compile_features(${PROJECT_NAME}_hl INTERFACE cxx_std_11)
target_include_directories(${PROJECT_NAME}_hl INTERFACE
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
"$<INSTALL_INTERFACE:include>"
)
target_compile_definitions(${PROJECT_NAME}_hl INTERFACE
NTKERNEL_ERROR_CATEGORY_INLINE
NTKERNEL_ERROR_CATEGORY_STATIC
)
add_library(${PROJECT_NAME}::hl ALIAS ${PROJECT_NAME}_hl)
install(TARGETS ${PROJECT_NAME}_hl
EXPORT ${PROJECT_NAME}Exports
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
)
set_target_properties(${PROJECT_NAME}_hl PROPERTIES EXPORT_NAME hl)
configure_file(
"${CMAKE_CURRENT_LIST_DIR}/ProjectConfig.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
@ONLY
)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
)
install(EXPORT ${PROJECT_NAME}Exports
NAMESPACE ${PROJECT_NAME}::
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
)
if(NOT PROJECT_IS_DEPENDENCY)
add_executable(test-dl "test/main.cpp")
target_link_libraries(test-dl PRIVATE ${PROJECT_NAME}::dl)
set_target_properties(test-dl PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
add_test(NAME test-dl COMMAND $<TARGET_FILE:test-dl>)
add_executable(test-sl "test/main.cpp")
target_link_libraries(test-sl PRIVATE ${PROJECT_NAME}::sl)
set_target_properties(test-sl PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
add_test(NAME test-sl COMMAND $<TARGET_FILE:test-sl>)
add_executable(test-hl "test/main.cpp")
target_link_libraries(test-hl PRIVATE ${PROJECT_NAME}::hl)
set_target_properties(test-hl PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
add_test(NAME test-hl COMMAND $<TARGET_FILE:test-hl>)
endif()
|