@@ -131,6 +131,19 @@ void copy_files() {
131131#endif
132132}
133133
134+ /* Special case for windows */
135+ void build_windows (char * compiler , char * cpp_compiler , char * cpp_linker , char * os , const char * arch ) {
136+
137+ char * c_shared = "-target x86_64-pc-windows-msvc -DWIN32_LEAN_AND_MEAN -DLIBUS_USE_LIBUV -DLIBUS_USE_QUIC -IuWebSockets/uSockets/lsquic/include -IuWebSockets/uSockets/lsquic/wincompat -IuWebSockets/uSockets/boringssl/include -DLIBUS_USE_OPENSSL -O3 -c -IuWebSockets/uSockets/src uWebSockets/uSockets/src/*.c uWebSockets/uSockets/src/eventing/*.c uWebSockets/uSockets/src/crypto/*.c" ;
138+ char * cpp_shared = "-target x86_64-pc-windows-msvc -DWIN32_LEAN_AND_MEAN -DUWS_WITH_PROXY -DLIBUS_USE_LIBUV -DLIBUS_USE_QUIC -IuWebSockets/uSockets/lsquic/include -IuWebSockets/uSockets/lsquic/wincompat -IuWebSockets/uSockets/boringssl/include -DLIBUS_USE_OPENSSL -O3 -c -std=c++20 -IuWebSockets/uSockets/src -IuWebSockets/src src/addon.cpp uWebSockets/uSockets/src/crypto/sni_tree.cpp" ;
139+
140+ for (unsigned int i = 0 ; i < sizeof (versions ) / sizeof (struct node_version ); i ++ ) {
141+ run ("%s %s -Itargets/node-%s/include/node" , compiler , c_shared , versions [i ].name );
142+ run ("%s %s -Itargets/node-%s/include/node" , cpp_compiler , cpp_shared , versions [i ].name );
143+ run ("%s -target x86_64-pc-windows-msvc -O3 *.o uWebSockets/uSockets/boringssl/%s/ssl/ssl.lib uWebSockets/uSockets/boringssl/%s/crypto/crypto.lib uWebSockets/uSockets/lsquic/src/liblsquic/Debug/lsquic.lib targets/node-%s/node.lib -ladvapi32 -std=c++20 -shared -o dist/uws_win32_%s_%s.node" , cpp_linker , arch , arch , versions [i ].name , arch , versions [i ].abi );
144+ }
145+ }
146+
134147int main () {
135148 printf ("[Preparing]\n" );
136149 prepare ();
@@ -158,10 +171,10 @@ int main() {
158171
159172
160173#ifdef IS_WINDOWS
161- /* Windows build using clang with MSVC ABI */
162- build ("clang -target x86_64-pc-windows-msvc -IuWebSockets/uSockets/lsquic/wincompat " ,
163- "clang++ -target x86_64-pc-windows-msvc -IuWebSockets/uSockets/lsquic/wincompat " ,
164- "-target x86_64-pc-windows-msvc uWebSockets/uSockets/boringssl/%s/ssl/ssl.lib uWebSockets/uSockets/boringssl/%s/crypto/crypto.lib uWebSockets/uSockets/lsquic/src/liblsquic/Debug/lsquic.lib targets/node-%s/node.lib -ladvapi32 -o dist/uws_win32_%s_%s.node " ,
174+ /* We can use clang, but we currently do use cl.exe still */
175+ build_windows ("clang" ,
176+ "clang++" ,
177+ "" ,
165178 OS ,
166179 X64 );
167180#else
@@ -193,4 +206,3 @@ int main() {
193206
194207 copy_files ();
195208}
196-
0 commit comments