-
Notifications
You must be signed in to change notification settings - Fork 4.8k
/
CMakeLists.txt
172 lines (138 loc) · 6.74 KB
/
CMakeLists.txt
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
project(System.IO.Compression.Native C)
include(${CMAKE_CURRENT_LIST_DIR}/extra_libs.cmake)
set(NATIVECOMPRESSION_SOURCES
pal_zlib.c
)
if (NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI)
if (CLR_CMAKE_USE_SYSTEM_BROTLI)
add_definitions(-DFEATURE_USE_SYSTEM_BROTLI)
else ()
include(${CLR_SRC_NATIVE_DIR}/external/brotli.cmake)
set (NATIVECOMPRESSION_SOURCES
${NATIVECOMPRESSION_SOURCES}
${BROTLI_SOURCES}
)
endif ()
set (NATIVECOMPRESSION_SOURCES
${NATIVECOMPRESSION_SOURCES}
entrypoints.c
)
endif ()
if (CLR_CMAKE_TARGET_UNIX OR CLR_CMAKE_TARGET_BROWSER OR CLR_CMAKE_TARGET_WASI)
set(NATIVE_LIBS_EXTRA)
append_extra_compression_libs(NATIVE_LIBS_EXTRA)
if (CLR_CMAKE_TARGET_BROWSER OR CLR_CMAKE_TARGET_WASI)
include(${CLR_SRC_NATIVE_DIR}/external/zlib.cmake)
add_definitions(-DINTERNAL_ZLIB)
set_source_files_properties(${ZLIB_SOURCES} PROPERTIES COMPILE_DEFINITIONS "${ZLIB_COMPILE_DEFINITIONS}")
set_source_files_properties(${ZLIB_SOURCES} PROPERTIES COMPILE_OPTIONS "${ZLIB_COMPILE_OPTIONS}")
set(NATIVECOMPRESSION_SOURCES ${ZLIB_SOURCES} ${NATIVECOMPRESSION_SOURCES})
endif()
# Disable implicit fallthrough warning for Zlib and Brotli
set(FLAGS -Wno-implicit-fallthrough)
# Disable no strict prototypes warning for Zlib
# https://github.com/madler/zlib/issues/633
set(FLAGS "${FLAGS} -Wno-strict-prototypes")
# Delete this suppression once brotli is upgraded to vNext (current latest v1.0.9
# does not contain upstream fix: https://github.com/google/brotli/commit/0a3944c)
if (NOT CLR_CMAKE_TARGET_WASI)
set(FLAGS "${FLAGS} -Wno-vla-parameter")
endif ()
set_source_files_properties(${NATIVECOMPRESSION_SOURCES} PROPERTIES COMPILE_FLAGS ${FLAGS})
if (GEN_SHARED_LIB)
add_definitions(-DBROTLI_SHARED_COMPILATION)
add_library(System.IO.Compression.Native
SHARED
${NATIVECOMPRESSION_SOURCES}
${VERSION_FILE_PATH}
)
target_link_libraries(System.IO.Compression.Native
PRIVATE
${NATIVE_LIBS_EXTRA}
)
if (NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_ANDROID)
set(DEF_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/System.IO.Compression.Native_unixexports.src)
set(EXPORTS_FILE ${CMAKE_CURRENT_BINARY_DIR}/System.IO.Compression.Native.exports)
generate_exports_file(${DEF_SOURCES} ${EXPORTS_FILE})
set_exports_linker_option(${EXPORTS_FILE})
add_custom_target(System.IO.Compression.Native_exports DEPENDS ${EXPORTS_FILE})
add_dependencies(System.IO.Compression.Native System.IO.Compression.Native_exports)
set_property(TARGET System.IO.Compression.Native APPEND_STRING PROPERTY LINK_FLAGS ${EXPORTS_LINKER_OPTION})
set_property(TARGET System.IO.Compression.Native APPEND_STRING PROPERTY LINK_DEPENDS ${EXPORTS_FILE})
if (NOT CLR_CMAKE_USE_SYSTEM_BROTLI)
add_custom_command(TARGET System.IO.Compression.Native POST_BUILD
COMMENT "Verifying System.IO.Compression.Native entry points against entrypoints.c "
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../verify-entrypoints.sh
$<TARGET_FILE:System.IO.Compression.Native>
${CMAKE_CURRENT_SOURCE_DIR}/entrypoints.c
${CMAKE_NM}
VERBATIM
)
endif ()
endif ()
install_with_stripped_symbols (System.IO.Compression.Native PROGRAMS .)
endif ()
add_library(System.IO.Compression.Native-Static
STATIC
${NATIVECOMPRESSION_SOURCES}
)
set_target_properties(System.IO.Compression.Native-Static PROPERTIES OUTPUT_NAME System.IO.Compression.Native CLEAN_DIRECT_OUTPUT 1)
else ()
if (GEN_SHARED_LIB)
include (GenerateExportHeader)
endif ()
if (CLR_CMAKE_HOST_ARCH_I386 OR CLR_CMAKE_HOST_ARCH_AMD64)
include(${CLR_SRC_NATIVE_DIR}/external/zlib-intel.cmake)
add_definitions(-DINTERNAL_ZLIB_INTEL)
else ()
include(${CLR_SRC_NATIVE_DIR}/external/zlib.cmake)
endif ()
add_definitions(-DINTERNAL_ZLIB)
set_source_files_properties(${ZLIB_SOURCES} PROPERTIES COMPILE_DEFINITIONS "${ZLIB_COMPILE_DEFINITIONS}")
set_source_files_properties(${ZLIB_SOURCES} PROPERTIES COMPILE_OPTIONS "${ZLIB_COMPILE_OPTIONS}")
set(NATIVECOMPRESSION_SOURCES ${ZLIB_SOURCES} ${NATIVECOMPRESSION_SOURCES})
if (GEN_SHARED_LIB)
add_definitions(-DVER_FILEDESCRIPTION_STR="System.IO.Compression.Native")
add_library(System.IO.Compression.Native
SHARED
${NATIVECOMPRESSION_SOURCES}
System.IO.Compression.Native.def
${VERSION_FILE_RC_PATH}
)
endif ()
if (NOT GEN_SHARED_LIB AND NOT CLR_CMAKE_TARGET_MACCATALYST AND NOT CLR_CMAKE_TARGET_IOS AND NOT CLR_CMAKE_TARGET_TVOS AND NOT CLR_CMAKE_TARGET_ANDROID AND NOT CLR_CMAKE_TARGET_BROWSER AND NOT CLR_CMAKE_TARGET_WASI)
set(NATIVECOMPRESSION_SOURCES ${NATIVECOMPRESSION_SOURCES} entrypoints.c)
endif ()
add_library(System.IO.Compression.Native-Static
STATIC
${NATIVECOMPRESSION_SOURCES}
)
if(STATIC_LIBS_ONLY)
add_library(System.IO.Compression.Native.Aot
STATIC
${NATIVECOMPRESSION_SOURCES}
)
set_target_properties(System.IO.Compression.Native.Aot PROPERTIES CLR_CONTROL_FLOW_GUARD OFF)
set_target_properties(System.IO.Compression.Native.Aot PROPERTIES INTERPROCEDURAL_OPTIMIZATION OFF)
add_library(System.IO.Compression.Native.Aot.GuardCF
STATIC
${NATIVECOMPRESSION_SOURCES}
)
set_target_properties(System.IO.Compression.Native.Aot.GuardCF PROPERTIES INTERPROCEDURAL_OPTIMIZATION OFF)
endif()
if (GEN_SHARED_LIB)
GENERATE_EXPORT_HEADER( System.IO.Compression.Native
BASE_NAME System.IO.Compression.Native
EXPORT_MACRO_NAME System.IO.Compression.Native_EXPORT
EXPORT_FILE_NAME System.IO.Compression.Native_Export.h
STATIC_DEFINE System.IO.Compression.Native_BUILT_AS_STATIC
)
install (TARGETS System.IO.Compression.Native DESTINATION .)
install (FILES $<TARGET_PDB_FILE:System.IO.Compression.Native> DESTINATION .)
endif ()
if(STATIC_LIBS_ONLY)
install_static_library(System.IO.Compression.Native.Aot aotsdk nativeaot)
install_static_library(System.IO.Compression.Native.Aot.GuardCF aotsdk nativeaot)
endif()
endif ()
install (TARGETS System.IO.Compression.Native-Static DESTINATION ${STATIC_LIB_DESTINATION} COMPONENT libs)