Skip to content

Commit 30135cd

Browse files
committed
[build-windows-toolchain] Adopt vcpkg
`vcpkg` can be used to build all the dependencies except for `ICU`. This can both simplify and standardize the build process.
1 parent d5391d0 commit 30135cd

File tree

1 file changed

+12
-123
lines changed

1 file changed

+12
-123
lines changed

utils/build-windows-toolchain.bat

Lines changed: 12 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -71,113 +71,6 @@ cmake ^
7171
cmake --build "%BuildRoot%\icu" || (exit /b)
7272
cmake --build "%BuildRoot%\icu" --target install || (exit /b)
7373

74-
:: FIXME(compnerd) is there a way to build the sources without downloading the amalgamation?
75-
curl.exe -sOL "https://sqlite.org/2021/sqlite-amalgamation-3360000.zip" || (exit /b)
76-
"%SystemDrive%\Program Files\Git\usr\bin\unzip.exe" -o sqlite-amalgamation-3360000.zip -d %SourceRoot%
77-
78-
:: TODO(compnerd) use CMakeLists.txt from compnerd/swift-build
79-
md %BuildRoot%\sqlite
80-
cl /nologo /DWIN32 /D_WINDOWS /W3 /MD /O2 /Ob2 /DNDEBUG /Fo%BuildRoot%\sqlite\sqlite3.c.obj /Fd%BuildRoot%\sqlite\SQLite3.pdb /FS -c %SourceRoot%\sqlite-amalgamation-3360000\sqlite3.c
81-
lib /nologo /machine:x64 /out:%BuildRoot%\sqlite\SQLite3.lib %BuildRoot%\sqlite\sqlite3.c.obj
82-
md %BuildRoot%\Library\sqlite-3.36.0\usr\lib
83-
md %BuildRoot%\Library\sqlite-3.36.0\usr\include
84-
copy %BuildRoot%\sqlite\SQLite3.lib %BuildRoot%\Library\sqlite-3.36.0\usr\lib
85-
copy %SourceRoot%\sqlite-amalgamation-3360000\sqlite3.h %BuildRoot%\Library\sqlite-3.36.0\usr\include
86-
copy %SourceRoot%\sqlite-amalgamation-3360000\sqlite3ext.h %BuildRoot%\Library\sqlite-3.36.0\usr\include
87-
88-
:: build zlib
89-
cmake ^
90-
-B %BuildRoot%\zlib ^
91-
92-
-D BUILD_SHARED_LIBS=NO ^
93-
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
94-
-D CMAKE_C_COMPILER=cl ^
95-
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
96-
-D CMAKE_MT=mt ^
97-
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
98-
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
99-
100-
-D CMAKE_INSTALL_PREFIX=%BuildRoot%\Library\zlib-1.2.11\usr ^
101-
102-
-D SKIP_INSTALL_FILES=YES ^
103-
104-
-G Ninja ^
105-
-S %SourceRoot%\zlib || (exit /b)
106-
cmake --build "%BUildRoot%\zlib" || (exit /b)
107-
cmake --build "%BUildRoot%\zlib" --target install || (exit /b)
108-
109-
:: build libxml2
110-
cmake ^
111-
-B %BuildRoot%\libxml2 ^
112-
113-
-D BUILD_SHARED_LIBS=OFF ^
114-
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
115-
-D CMAKE_C_COMPILER=cl ^
116-
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
117-
-D CMAKE_MT=mt ^
118-
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
119-
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
120-
121-
-D CMAKE_INSTALL_PREFIX=%BuildRoot%\Library\libxml2-2.9.12\usr ^
122-
123-
-D LIBXML2_WITH_ICONV=NO ^
124-
-D LIBXML2_WITH_ICU=NO ^
125-
-D LIBXML2_WITH_LZMA=NO ^
126-
-D LIBXML2_WITH_PYTHON=NO ^
127-
-D LIBXML2_WITH_TESTS=NO ^
128-
-D LIBXML2_WITH_THREADS=YES ^
129-
-D LIBXML2_WITH_ZLIB=NO ^
130-
131-
-G Ninja ^
132-
-S %SourceRoot%\libxml2 || (exit /b)
133-
cmake --build "%BUildRoot%\libxml2" || (exit /b)
134-
cmake --build "%BUildRoot%\libxml2" --target install || (exit /b)
135-
136-
:: build curl
137-
cmake ^
138-
-B %BuildRoot%\curl ^
139-
140-
-D BUILD_SHARED_LIBS=NO ^
141-
-D BUILD_TESTING=NO ^
142-
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
143-
-D CMAKE_C_COMPILER=cl ^
144-
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
145-
-D CMAKE_MT=mt ^
146-
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
147-
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
148-
149-
-D CMAKE_INSTALL_PREFIX=%BuildRoot%\Library\curl-7.77.0\usr ^
150-
151-
-D BUILD_CURL_EXE=NO ^
152-
-D CMAKE_USE_OPENSSL=NO ^
153-
-D CURL_CA_PATH=none ^
154-
-D CMAKE_USE_SCHANNEL=YES ^
155-
-D CMAKE_USE_LIBSSH2=NO ^
156-
-D HAVE_POLL_FINE=NO ^
157-
-D CURL_DISABLE_LDAP=YES ^
158-
-D CURL_DISABLE_LDAPS=YES ^
159-
-D CURL_DISABLE_TELNET=YES ^
160-
-D CURL_DISABLE_DICT=YES ^
161-
-D CURL_DISABLE_FILE=YES ^
162-
-D CURL_DISABLE_TFTP=YES ^
163-
-D CURL_DISABLE_RTSP=YES ^
164-
-D CURL_DISABLE_PROXY=YES ^
165-
-D CURL_DISABLE_POP3=YES ^
166-
-D CURL_DISABLE_IMAP=YES ^
167-
-D CURL_DISABLE_SMTP=YES ^
168-
-D CURL_DISABLE_GOPHER=YES ^
169-
-D CURL_ZLIB=YES ^
170-
-D ENABLE_UNIX_SOCKETS=NO ^
171-
-D ENABLE_THREADED_RESOLVER=NO ^
172-
173-
-D ZLIB_ROOT=%BuildRoot%\Library\zlib-1.2.11\usr ^
174-
-D ZLIB_LIBRARY=%BuildRoot%\Library\zlib-1.2.11\usr\lib\zlibstatic.lib ^
175-
176-
-G Ninja ^
177-
-S %SourceRoot%\curl || (exit /b)
178-
cmake --build "%BuildRoot%\curl" || (exit /b)
179-
cmake --build "%BuildRoot%\curl" --target install || (exit /b)
180-
18174
:: Prepare system modules
18275
copy /y "%SourceRoot%\swift\stdlib\public\Platform\ucrt.modulemap" "%UniversalCRTSdkDir%\Include\%UCRTVersion%\ucrt\module.modulemap" || (exit /b)
18376
copy /y "%SourceRoot%\swift\stdlib\public\Platform\winsdk.modulemap" "%UniversalCRTSdkDir%\Include\%UCRTVersion%\um\module.modulemap" || (exit /b)
@@ -297,16 +190,13 @@ cmake ^
297190

298191
-D CMAKE_INSTALL_PREFIX=%SDKInstallRoot%\usr ^
299192

300-
-D CURL_DIR=%BuildRoot%\Library\curl-7.77.0\usr\lib\cmake\CURL ^
193+
-D CMAKE_TOOLCHAIN_FILE=%SourceRoot%\vcpkg\scripts\buildsystems\vcpkg.cmake ^
194+
-D VCPKG_TARGET_TRIPLET=x64-windows-static-md ^
195+
-D VCPKG_MANIFEST_DIR=%SourceRoot%\swift-installer-scripts\shared\Foundation ^
301196
-D ICU_ROOT=%BuildRoot%\Library\icu-69.1\usr ^
302197
-D ICU_DATA_LIBRARY_RELEASE=%BuildRoot%\Library\icu-69.1\usr\lib\sicudt69.lib ^
303198
-D ICU_UC_LIBRARY_RELEASE=%BuildRoot%\Library\icu-69.1\usr\lib\sicuuc69.lib ^
304199
-D ICU_I18N_LIBRARY_RELEASE=%BuildRoot%\Library\icu-69.1\usr\lib\sicuin69.lib ^
305-
-D LIBXML2_LIBRARY=%BuildRoot%\Library\libxml2-2.9.12\usr\lib\libxml2s.lib ^
306-
-D LIBXML2_INCLUDE_DIR=%BuildRoot%\Library\libxml2-2.9.12\usr\include\libxml2 ^
307-
-D LIBXML2_DEFINITIONS="/DLIBXML_STATIC" ^
308-
-D ZLIB_LIBRARY=%BuildRoot%\Library\zlib-1.2.11\usr\lib\zlibstatic.lib ^
309-
-D ZLIB_INCLUDE_DIR=%BuildRoot%\Library\zlib-1.2.11\usr\include ^
310200
-D dispatch_DIR=%BuildRoot%\3\cmake\modules ^
311201

312202
-D ENABLE_TESTING=NO ^
@@ -380,11 +270,12 @@ cmake ^
380270

381271
-D CMAKE_INSTALL_PREFIX=%InstallRoot% ^
382272

273+
-D CMAKE_TOOLCHAIN_FILE=%SourceRoot%\vcpkg\scripts\buildsystems\vcpkg.cmake ^
274+
-D VCPKG_TARGET_TRIPLET=x64-windows-static-md ^
275+
-D VCPKG_MANIFEST_DIR=%SourceRoot%\swift-installer-scripts\shared\TSC ^
383276
-D dispatch_DIR=%BuildRoot%\3\cmake\modules ^
384277
-D Foundation_DIR=%BuildRoot%\4\cmake\modules ^
385278
-D SwiftSystem_DIR=%BuildRoot%\6\cmake\modules ^
386-
-D SQLite3_INCLUDE_DIR=%BuildRoot%\Library\sqlite-3.36.0\usr\include ^
387-
-D SQLite3_LIBRARY=%BuildRoot%\Library\sqlite-3.36.0\usr\lib\SQLite3.lib ^
388279

389280
-G Ninja ^
390281
-S %SourceRoot%\swift-tools-support-core || (exit /b)
@@ -409,10 +300,11 @@ cmake ^
409300

410301
-D LLBUILD_SUPPORT_BINDINGS=Swift ^
411302

303+
-D CMAKE_TOOLCHAIN_FILE=%SourceRoot%\vcpkg\scripts\buildsystems\vcpkg.cmake ^
304+
-D VCPKG_TARGET_TRIPLET=x64-windows-static-md ^
305+
-D VCPKG_MANIFEST_DIR=%SourceRoot%\swift-installer-scripts\shared\LLBuild ^
412306
-D dispatch_DIR=%BuildRoot%\3\cmake\modules ^
413307
-D Foundation_DIR=%BuildRoot%\4\cmake\modules ^
414-
-D SQLite3_INCLUDE_DIR=%BuildRoot%\Library\sqlite-3.36.0\usr\include ^
415-
-D SQLite3_LIBRARY=%BuildRoot%\Library\sqlite-3.36.0\usr\lib\SQLite3.lib ^
416308

417309
-G Ninja ^
418310
-S %SourceRoot%\llbuild || (exit /b)
@@ -756,16 +648,13 @@ cmake ^
756648

757649
-D CMAKE_INSTALL_PREFIX=%SDKInstallRoot%\usr ^
758650

759-
-D CURL_DIR=%BuildRoot%\Library\curl-7.77.0\usr\lib\cmake\CURL ^
651+
-D CMAKE_TOOLCHAIN_FILE=%SourceRoot%\vcpkg\scripts\buildsystems\vcpkg.cmake ^
652+
-D VCPKG_TARGET_TRIPLET=x64-windows-static-md ^
653+
-D VCPKG_MANIFEST_DIR=%SourceRoot%\swift-installer-scripts\shared\Foundation ^
760654
-D ICU_ROOT=%BuildRoot%\Library\icu-69.1\usr ^
761655
-D ICU_DATA_LIBRARY_RELEASE=%BuildRoot%\Library\icu-69.1\usr\lib\sicudt69.lib ^
762656
-D ICU_I18N_LIBRARY_RELEASE=%BuildRoot%\Library\icu-69.1\usr\lib\sicuin69.lib ^
763657
-D ICU_UC_LIBRARY_RELEASE=%BuildRoot%\Library\icu-69.1\usr\lib\sicuuc69.lib ^
764-
-D LIBXML2_LIBRARY=%BuildRoot%\Library\libxml2-2.9.12\usr\lib\libxml2s.lib ^
765-
-D LIBXML2_INCLUDE_DIR=%BuildRoot%\Library\libxml2-2.9.12\usr\include\libxml2 ^
766-
-D LIBXML2_DEFINITIONS="/DLIBXML_STATIC" ^
767-
-D ZLIB_LIBRARY=%BuildRoot%\Library\zlib-1.2.11\usr\lib\zlibstatic.lib ^
768-
-D ZLIB_INCLUDE_DIR=%BuildRoot%\Library\zlib-1.2.11\usr\include ^
769658
-D dispatch_DIR=%BuildRoot%\3\cmake\modules ^
770659
-D XCTest_DIR=%BuildRoot%\5\cmake\modules ^
771660

0 commit comments

Comments
 (0)