1- cmake_minimum_required (VERSION 3.25 )
1+ cmake_minimum_required (VERSION 3.31 )
22
33find_package (cmake-bare REQUIRED PATHS node_modules/cmake-bare )
4- find_package (cmake-fetch REQUIRED PATHS node_modules/cmake-fetch )
54find_package (cmake-napi REQUIRED PATHS node_modules/cmake-napi )
65find_package (cmake-npm REQUIRED PATHS node_modules/cmake-npm )
6+ find_package (cmake-ports REQUIRED PATHS node_modules/cmake-ports )
77
8- set (CMAKE_POSITION_INDEPENDENT_CODE ON )
9-
10- project (sodium_native C ASM CXX )
11-
12- fetch_package ("github:jedisct1/libsodium#e18eee6" SOURCE_DIR sodium )
8+ project (sodium_native C CXX ASM )
139
1410fetch_package ("github:holepunchto/libjstl#098664c" )
1511
16- bare_target (target )
17-
18- if (target MATCHES "win32" )
19- add_compile_options (/MT$<$<CONFIG:Debug>:d> )
20- endif ()
21-
22- file (COPY_FILE "${sodium} /builds/msvc/version.h" "${sodium} /src/libsodium/include/sodium/version.h" )
23-
24- file (GLOB_RECURSE sodium_headers CONFIGURE_DEPENDS "${sodium} /src/libsodium/**/*.h" )
25- file (GLOB_RECURSE sodium_sources CONFIGURE_DEPENDS "${sodium} /src/libsodium/**/*.c" )
26- file (GLOB_RECURSE sodium_asm_sources CONFIGURE_DEPENDS "${sodium} /src/libsodium/**/*.S" )
27-
28- add_library (sodium OBJECT )
29-
30- target_sources (
31- sodium
32- INTERFACE
33- ${sodium_headers}
34- PRIVATE
35- ${sodium_sources}
36- )
37-
38- target_include_directories (
39- sodium
40- INTERFACE
41- "${sodium} /src/libsodium/include"
42- PRIVATE
43- "${sodium} /src/libsodium/include/sodium"
44- )
45-
46- if (NOT target MATCHES "win32" )
47- target_compile_options (
48- sodium
49- PRIVATE
50- -fvisibility=hidden
51- -fno-strict-aliasing
52- -fwrapv
53- -flax-vector-conversions
54- )
55- endif ()
56-
57- target_compile_definitions (
58- sodium
59- PUBLIC
60- SODIUM_STATIC=1
61- PRIVATE
62- _GNU_SOURCE=1
63- CONFIGURED=1
64- DEV_MODE=1
65- HAVE_ATOMIC_OPS=1
66- HAVE_C11_MEMORY_FENCES=1
67- HAVE_CET_H=1
68- HAVE_GCC_MEMORY_FENCES=1
69- HAVE_INLINE_ASM=1
70- HAVE_INTTYPES_H=1
71- HAVE_STDINT_H=1
72- HAVE_TI_MODE=1
73- )
74-
75- if (target MATCHES "darwin|ios" )
76- target_compile_definitions (
77- sodium
78- PRIVATE
79- ASM_HIDE_SYMBOL=.private_extern
80- TLS=_Thread_local
81- HAVE_ARC4RANDOM=1
82- HAVE_ARC4RANDOM_BUF=1
83- HAVE_CATCHABLE_ABRT=1
84- HAVE_CATCHABLE_SEGV=1
85- HAVE_CLOCK_GETTIME=1
86- HAVE_GETPID=1
87- HAVE_MADVISE=1
88- HAVE_MEMSET_S=1
89- HAVE_MLOCK=1
90- HAVE_MMAP=1
91- HAVE_MPROTECT=1
92- HAVE_NANOSLEEP=1
93- HAVE_POSIX_MEMALIGN=1
94- HAVE_PTHREAD=1
95- HAVE_PTHREAD_PRIO_INHERIT=1
96- HAVE_RAISE=1
97- HAVE_SYSCONF=1
98- HAVE_SYS_MMAN_H=1
99- HAVE_SYS_PARAM_H=1
100- HAVE_WEAK_SYMBOLS=1
101- )
102-
103- if (NOT target MATCHES "ios" )
104- target_compile_definitions (
105- sodium
106- PRIVATE
107- HAVE_GETENTROPY=1
108- HAVE_SYS_RANDOM_H=1
109- )
110- endif ()
111- endif ()
112-
113- if (target MATCHES "linux" )
114- target_compile_definitions (
115- sodium
116- PRIVATE
117- ASM_HIDE_SYMBOL=.hidden
118- TLS=_Thread_local
119- HAVE_CATCHABLE_ABRT=1
120- HAVE_CATCHABLE_SEGV=1
121- HAVE_CLOCK_GETTIME=1
122- HAVE_GETPID=1
123- HAVE_MADVISE=1
124- HAVE_MLOCK=1
125- HAVE_MMAP=1
126- HAVE_MPROTECT=1
127- HAVE_NANOSLEEP=1
128- HAVE_POSIX_MEMALIGN=1
129- HAVE_PTHREAD_PRIO_INHERIT=1
130- HAVE_PTHREAD=1
131- HAVE_RAISE=1
132- HAVE_SYSCONF=1
133- HAVE_SYS_AUXV_H=1
134- HAVE_SYS_MMAN_H=1
135- HAVE_SYS_PARAM_H=1
136- HAVE_SYS_RANDOM_H=1
137- HAVE_WEAK_SYMBOLS=1
138- )
139- endif ()
140-
141- if (target MATCHES "win32" )
142- target_compile_definitions (
143- sodium
144- PRIVATE
145- _CRT_SECURE_NO_WARNINGS=1
146- HAVE_RAISE=1
147- )
148- endif ()
149-
150- if (target MATCHES "x64" )
151- target_compile_definitions (
152- sodium
153- PRIVATE
154- HAVE_CPUID=1
155- HAVE_RDRAND=1
156- HAVE_EMMINTRIN_H=1 # SSE2
157- HAVE_PMMINTRIN_H=1 # SSE3
158- HAVE_TMMINTRIN_H=1 # SSSE3
159- HAVE_SMMINTRIN_H=1 # SSE4.1
160- HAVE_WMMINTRIN_H=1 # AES
161- HAVE_AVXINTRIN_H=1 # AVX
162- HAVE_AVX2INTRIN_H=1 # AVX2
163- HAVE_AVX512FINTRIN_H # AVX512F
164- )
165-
166- if (NOT target MATCHES "win32" )
167- target_compile_definitions (
168- sodium
169- PRIVATE
170- HAVE_AMD64_ASM=1
171- HAVE_AVX_ASM=1
172- )
173-
174- target_sources (
175- sodium
176- PRIVATE
177- ${sodium_asm_sources}
178- )
179- endif ()
180- endif ()
181-
182- if (target MATCHES "arm64" )
183- target_compile_definitions (
184- sodium
185- PRIVATE
186- HAVE_ARMCRYPTO=1
187- )
188- endif ()
189-
190- if (CMAKE_C_BYTE_ORDER MATCHES "BIG_ENDIAN" )
191- target_compile_definitions (
192- sodium
193- PRIVATE
194- NATIVE_BIG_ENDIAN=1
195- )
196- else ()
197- target_compile_definitions (
198- sodium
199- PRIVATE
200- NATIVE_LITTLE_ENDIAN=1
201- )
202- endif ()
203-
204- if (target MATCHES "linux|android" )
205- target_link_options (
206- sodium
207- PUBLIC
208- -Wl,-z,noexecstack
209- )
210- endif ()
12+ find_port (libsodium )
21113
21214add_library (sodium_extensions OBJECT )
21315
@@ -237,7 +39,6 @@ target_sources(
23739target_link_libraries (
23840 ${sodium_native_bare}
23941 PRIVATE
240- $<TARGET_OBJECTS :sodium >
24142 $<TARGET_OBJECTS :sodium_extensions >
24243 jstl
24344 PUBLIC
@@ -262,7 +63,6 @@ target_compile_definitions(
26263target_link_libraries (
26364 ${sodium_native_node}
26465 PRIVATE
265- $<TARGET_OBJECTS :sodium >
26666 $<TARGET_OBJECTS :sodium_extensions >
26767 jstl
26868 PUBLIC
0 commit comments