• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#***************************************************************************
2#                                  _   _ ____  _
3#  Project                     ___| | | |  _ \| |
4#                             / __| | | | |_) | |
5#                            | (__| |_| |  _ <| |___
6#                             \___|\___/|_| \_\_____|
7#
8# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
9#
10# This software is licensed as described in the file COPYING, which
11# you should have received as part of this distribution. The terms
12# are also available at https://curl.se/docs/copyright.html.
13#
14# You may opt to use, copy, modify, merge, publish, distribute and/or sell
15# copies of the Software, and permit persons to whom the Software is
16# furnished to do so, under the terms of the COPYING file.
17#
18# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19# KIND, either express or implied.
20#
21# SPDX-License-Identifier: curl
22#
23###########################################################################
24
25AUTOMAKE_OPTIONS = foreign
26
27ACLOCAL_AMFLAGS = -I m4
28
29CMAKE_DIST =                                    \
30 CMake/cmake_uninstall.cmake.in                 \
31 CMake/CMakeConfigurableFile.in                 \
32 CMake/curl-config.cmake.in                     \
33 CMake/CurlSymbolHiding.cmake                   \
34 CMake/CurlTests.c                              \
35 CMake/FindBearSSL.cmake                        \
36 CMake/FindBrotli.cmake                         \
37 CMake/FindCARES.cmake                          \
38 CMake/FindGSS.cmake                            \
39 CMake/FindLibPSL.cmake                         \
40 CMake/FindLibSSH2.cmake                        \
41 CMake/FindMbedTLS.cmake                        \
42 CMake/FindMSH3.cmake                           \
43 CMake/FindNGHTTP2.cmake                        \
44 CMake/FindNGHTTP3.cmake                        \
45 CMake/FindNGTCP2.cmake                         \
46 CMake/FindQUICHE.cmake                         \
47 CMake/FindWolfSSL.cmake                        \
48 CMake/FindZstd.cmake                           \
49 CMake/Macros.cmake                             \
50 CMake/OtherTests.cmake                         \
51 CMake/PickyWarnings.cmake                      \
52 CMake/Platforms/WindowsCache.cmake             \
53 CMake/Utilities.cmake                          \
54 CMakeLists.txt
55
56VC14_LIBTMPL = projects/Windows/VC14/lib/libcurl.tmpl
57VC14_LIBVCXPROJ = projects/Windows/VC14/lib/libcurl.vcxproj.dist
58VC14_LIBVCXPROJ_DEPS = $(VC14_LIBTMPL) Makefile.am lib/Makefile.inc
59VC14_SRCTMPL = projects/Windows/VC14/src/curl.tmpl
60VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist
61VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc
62
63VC14_10_LIBTMPL = projects/Windows/VC14.10/lib/libcurl.tmpl
64VC14_10_LIBVCXPROJ = projects/Windows/VC14.10/lib/libcurl.vcxproj.dist
65VC14_10_LIBVCXPROJ_DEPS = $(VC14_10_LIBTMPL) Makefile.am lib/Makefile.inc
66VC14_10_SRCTMPL = projects/Windows/VC14.10/src/curl.tmpl
67VC14_10_SRCVCXPROJ = projects/Windows/VC14.10/src/curl.vcxproj.dist
68VC14_10_SRCVCXPROJ_DEPS = $(VC14_10_SRCTMPL) Makefile.am src/Makefile.inc
69
70VC14_20_LIBTMPL = projects/Windows/VC14.20/lib/libcurl.tmpl
71VC14_20_LIBVCXPROJ = projects/Windows/VC14.20/lib/libcurl.vcxproj.dist
72VC14_20_LIBVCXPROJ_DEPS = $(VC14_20_LIBTMPL) Makefile.am lib/Makefile.inc
73VC14_20_SRCTMPL = projects/Windows/VC14.20/src/curl.tmpl
74VC14_20_SRCVCXPROJ = projects/Windows/VC14.20/src/curl.vcxproj.dist
75VC14_20_SRCVCXPROJ_DEPS = $(VC14_20_SRCTMPL) Makefile.am src/Makefile.inc
76
77VC14_30_LIBTMPL = projects/Windows/VC14.30/lib/libcurl.tmpl
78VC14_30_LIBVCXPROJ = projects/Windows/VC14.30/lib/libcurl.vcxproj.dist
79VC14_30_LIBVCXPROJ_DEPS = $(VC14_30_LIBTMPL) Makefile.am lib/Makefile.inc
80VC14_30_SRCTMPL = projects/Windows/VC14.30/src/curl.tmpl
81VC14_30_SRCVCXPROJ = projects/Windows/VC14.30/src/curl.vcxproj.dist
82VC14_30_SRCVCXPROJ_DEPS = $(VC14_30_SRCTMPL) Makefile.am src/Makefile.inc
83
84VC_DIST = projects/README.md                           \
85 projects/build-openssl.bat                            \
86 projects/build-wolfssl.bat                            \
87 projects/checksrc.bat                                 \
88 projects/Windows/VC14/curl-all.sln                    \
89 projects/Windows/VC14/lib/libcurl.sln                 \
90 projects/Windows/VC14/lib/libcurl.vcxproj.filters     \
91 projects/Windows/VC14/src/curl.sln                    \
92 projects/Windows/VC14/src/curl.vcxproj.filters        \
93 projects/Windows/VC14.10/curl-all.sln                 \
94 projects/Windows/VC14.10/lib/libcurl.sln              \
95 projects/Windows/VC14.10/lib/libcurl.vcxproj.filters  \
96 projects/Windows/VC14.10/src/curl.sln                 \
97 projects/Windows/VC14.10/src/curl.vcxproj.filters     \
98 projects/Windows/VC14.20/curl-all.sln                 \
99 projects/Windows/VC14.20/lib/libcurl.sln              \
100 projects/Windows/VC14.20/lib/libcurl.vcxproj.filters  \
101 projects/Windows/VC14.20/src/curl.sln                 \
102 projects/Windows/VC14.20/src/curl.vcxproj.filters     \
103 projects/Windows/VC14.30/curl-all.sln                 \
104 projects/Windows/VC14.30/lib/libcurl.sln              \
105 projects/Windows/VC14.30/lib/libcurl.vcxproj.filters  \
106 projects/Windows/VC14.30/src/curl.sln                 \
107 projects/Windows/VC14.30/src/curl.vcxproj.filters     \
108 projects/generate.bat                                 \
109 projects/wolfssl_options.h                            \
110 projects/wolfssl_override.props
111
112WINBUILD_DIST = winbuild/README.md winbuild/gen_resp_file.bat \
113 winbuild/MakefileBuild.vc winbuild/Makefile.vc
114
115PLAN9_DIST = plan9/include/mkfile \
116 plan9/include/mkfile             \
117 plan9/mkfile.proto               \
118 plan9/mkfile                     \
119 plan9/README                     \
120 plan9/lib/mkfile.inc             \
121 plan9/lib/mkfile                 \
122 plan9/src/mkfile.inc             \
123 plan9/src/mkfile
124
125EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in            \
126 RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework $(CMAKE_DIST)        \
127 $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) lib/libcurl.vers.in buildconf.bat \
128 libcurl.def
129
130CLEANFILES = $(VC14_LIBVCXPROJ) $(VC14_SRCVCXPROJ) \
131 $(VC14_10_LIBVCXPROJ) $(VC14_10_SRCVCXPROJ)       \
132 $(VC14_20_LIBVCXPROJ) $(VC14_20_SRCVCXPROJ)       \
133 $(VC14_30_LIBVCXPROJ) $(VC14_30_SRCVCXPROJ)
134
135bin_SCRIPTS = curl-config
136
137SUBDIRS = lib src
138DIST_SUBDIRS = $(SUBDIRS) tests packages scripts include docs
139
140pkgconfigdir = $(libdir)/pkgconfig
141pkgconfig_DATA = libcurl.pc
142
143# List of files required to generate VC IDE .dsp, .vcproj and .vcxproj files
144include lib/Makefile.inc
145include src/Makefile.inc
146
147dist-hook:
148	rm -rf $(top_builddir)/tests/log
149	find $(distdir) -name "*.dist" -exec rm {} \;
150	(distit=`find $(srcdir) -name "*.dist" | grep -v ./ares/`; \
151	for file in $$distit; do \
152	  strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \
153	  cp -p $$file $(distdir)$$strip; \
154	done)
155
156check: test examples check-docs
157
158if CROSSCOMPILING
159test-full: test
160test-torture: test
161
162test:
163	@echo "NOTICE: we can't run the tests when cross-compiling!"
164
165else
166
167test:
168	@(cd tests; $(MAKE) all quiet-test)
169
170test-full:
171	@(cd tests; $(MAKE) all full-test)
172
173test-nonflaky:
174	@(cd tests; $(MAKE) all nonflaky-test)
175
176test-torture:
177	@(cd tests; $(MAKE) all torture-test)
178
179test-event:
180	@(cd tests; $(MAKE) all event-test)
181
182test-am:
183	@(cd tests; $(MAKE) all am-test)
184
185test-ci:
186	@(cd tests; $(MAKE) all ci-test)
187
188endif
189
190examples:
191	@(cd docs/examples; $(MAKE) check)
192
193check-docs:
194	@(cd docs/libcurl; $(MAKE) check)
195
196# Build source and binary rpms. For rpm-3.0 and above, the ~/.rpmmacros
197# must contain the following line:
198# %_topdir /home/loic/local/rpm
199# and that /home/loic/local/rpm contains the directory SOURCES, BUILD etc.
200#
201# cd /home/loic/local/rpm ; mkdir -p SOURCES BUILD RPMS/i386 SPECS SRPMS
202#
203# If additional configure flags are needed to build the package, add the
204# following in ~/.rpmmacros
205# %configure CFLAGS="%{optflags}" ./configure %{_target_platform} --prefix=%{_prefix} ${AM_CONFIGFLAGS}
206# and run make rpm in the following way:
207# AM_CONFIGFLAGS='--with-uri=/home/users/loic/local/RedHat-6.2' make rpm
208#
209
210rpms:
211	$(MAKE) RPMDIST=curl rpm
212	$(MAKE) RPMDIST=curl-ssl rpm
213
214rpm:
215	RPM_TOPDIR=`rpm --showrc | $(PERL) -n -e 'print if(s/.*_topdir\s+(.*)/$$1/)'` ; \
216	cp $(srcdir)/packages/Linux/RPM/$(RPMDIST).spec $$RPM_TOPDIR/SPECS ; \
217	cp $(PACKAGE)-$(VERSION).tar.gz $$RPM_TOPDIR/SOURCES ; \
218	rpm -ba --clean --rmsource $$RPM_TOPDIR/SPECS/$(RPMDIST).spec ; \
219	mv $$RPM_TOPDIR/RPMS/i386/$(RPMDIST)-*.rpm . ; \
220	mv $$RPM_TOPDIR/SRPMS/$(RPMDIST)-*.src.rpm .
221
222#
223# Build a Solaris pkgadd format file
224# run 'make pkgadd' once you've done './configure' and 'make' to make a Solaris pkgadd format
225# file (which ends up back in this directory).
226# The pkgadd file is in 'pkgtrans' format, so to install on Solaris, do
227# pkgadd -d ./HAXXcurl-*
228#
229
230# gak - libtool requires an absolute directory, hence the pwd below...
231pkgadd:
232	umask 022 ; \
233	$(MAKE) install DESTDIR=`/bin/pwd`/packages/Solaris/root ; \
234	cat COPYING > $(srcdir)/packages/Solaris/copyright ; \
235	cd $(srcdir)/packages/Solaris && $(MAKE) package
236
237#
238# Build a cygwin binary tarball installation file
239# resulting .tar.bz2 file will end up at packages/Win32/cygwin
240cygwinbin:
241	$(MAKE) -C packages/Win32/cygwin cygwinbin
242
243# We extend the standard install with a custom hook:
244install-data-hook:
245	(cd include && $(MAKE) install)
246	(cd docs && $(MAKE) install)
247	(cd docs/libcurl && $(MAKE) install)
248
249# We extend the standard uninstall with a custom hook:
250uninstall-hook:
251	(cd include && $(MAKE) uninstall)
252	(cd docs && $(MAKE) uninstall)
253	(cd docs/libcurl && $(MAKE) uninstall)
254
255ca-bundle: $(srcdir)/scripts/mk-ca-bundle.pl
256	@echo "generating a fresh ca-bundle.crt"
257	@perl $(srcdir)/scripts/mk-ca-bundle.pl -b -l -u lib/ca-bundle.crt
258
259ca-firefox: $(srcdir)/scripts/firefox-db2pem.sh
260	@echo "generating a fresh ca-bundle.crt"
261	$(srcdir)/scripts/firefox-db2pem.sh lib/ca-bundle.crt
262
263checksrc:
264	(cd lib && $(MAKE) checksrc)
265	(cd src && $(MAKE) checksrc)
266	(cd tests && $(MAKE) checksrc)
267	(cd include/curl && $(MAKE) checksrc)
268	(cd docs/examples && $(MAKE) checksrc)
269	(cd packages && $(MAKE) checksrc)
270
271.PHONY: vc-ide
272
273vc-ide: $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \
274 $(VC14_10_LIBVCXPROJ_DEPS) $(VC14_10_SRCVCXPROJ_DEPS)  \
275 $(VC14_20_LIBVCXPROJ_DEPS) $(VC14_20_SRCVCXPROJ_DEPS)  \
276 $(VC14_30_LIBVCXPROJ_DEPS) $(VC14_30_SRCVCXPROJ_DEPS)
277	@(win32_lib_srcs='$(LIB_CFILES)'; \
278	win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \
279	win32_lib_rc='$(LIB_RCFILES)'; \
280	win32_lib_vauth_srcs='$(LIB_VAUTH_CFILES)'; \
281	win32_lib_vauth_hdrs='$(LIB_VAUTH_HFILES)'; \
282	win32_lib_vquic_srcs='$(LIB_VQUIC_CFILES)'; \
283	win32_lib_vquic_hdrs='$(LIB_VQUIC_HFILES)'; \
284	win32_lib_vssh_srcs='$(LIB_VSSH_CFILES)'; \
285	win32_lib_vssh_hdrs='$(LIB_VSSH_HFILES)'; \
286	win32_lib_vtls_srcs='$(LIB_VTLS_CFILES)'; \
287	win32_lib_vtls_hdrs='$(LIB_VTLS_HFILES)'; \
288	win32_src_srcs='$(CURL_CFILES)'; \
289	win32_src_hdrs='$(CURL_HFILES)'; \
290	win32_src_rc='$(CURL_RCFILES)'; \
291	win32_src_x_srcs='$(CURLX_CFILES)'; \
292	win32_src_x_hdrs='$(CURLX_HFILES) ../lib/config-win32.h'; \
293	\
294	sorted_lib_srcs=`for file in $$win32_lib_srcs; do echo $$file; done | sort`; \
295	sorted_lib_hdrs=`for file in $$win32_lib_hdrs; do echo $$file; done | sort`; \
296	sorted_lib_vauth_srcs=`for file in $$win32_lib_vauth_srcs; do echo $$file; done | sort`; \
297	sorted_lib_vauth_hdrs=`for file in $$win32_lib_vauth_hdrs; do echo $$file; done | sort`; \
298	sorted_lib_vquic_srcs=`for file in $$win32_lib_vquic_srcs; do echo $$file; done | sort`; \
299	sorted_lib_vquic_hdrs=`for file in $$win32_lib_vquic_hdrs; do echo $$file; done | sort`; \
300	sorted_lib_vssh_srcs=`for file in $$win32_lib_vssh_srcs; do echo $$file; done | sort`; \
301	sorted_lib_vssh_hdrs=`for file in $$win32_lib_vssh_hdrs; do echo $$file; done | sort`; \
302	sorted_lib_vtls_srcs=`for file in $$win32_lib_vtls_srcs; do echo $$file; done | sort`; \
303	sorted_lib_vtls_hdrs=`for file in $$win32_lib_vtls_hdrs; do echo $$file; done | sort`; \
304	sorted_src_srcs=`for file in $$win32_src_srcs; do echo $$file; done | sort`; \
305	sorted_src_hdrs=`for file in $$win32_src_hdrs; do echo $$file; done | sort`; \
306	sorted_src_x_srcs=`for file in $$win32_src_x_srcs; do echo $$file; done | sort`; \
307	sorted_src_x_hdrs=`for file in $$win32_src_x_hdrs; do echo $$file; done | sort`; \
308	\
309	awk_code='\
310function gen_element(type, dir, file)\
311{\
312  sub(/vauth\//, "", file);\
313  sub(/vquic\//, "", file);\
314  sub(/vssh\//, "", file);\
315  sub(/vtls\//, "", file);\
316\
317  spaces="    ";\
318  if(dir == "lib\\vauth" ||\
319     dir == "lib\\vquic" ||\
320     dir == "lib\\vssh"  ||\
321     dir == "lib\\vtls")\
322    tabs="				";\
323  else\
324    tabs="			";\
325\
326  if(type == "dsp") {\
327    printf("# Begin Source File\r\n");\
328    printf("\r\n");\
329    printf("SOURCE=..\\..\\..\\..\\%s\\%s\r\n", dir, file);\
330    printf("# End Source File\r\n");\
331  }\
332  else if(type == "vcproj1") {\
333    printf("%s<File\r\n", tabs);\
334    printf("%s	RelativePath=\"..\\..\\..\\..\\%s\\%s\">\r\n",\
335           tabs, dir, file);\
336    printf("%s</File>\r\n", tabs);\
337  }\
338  else if(type == "vcproj2") {\
339    printf("%s<File\r\n", tabs);\
340    printf("%s	RelativePath=\"..\\..\\..\\..\\%s\\%s\"\r\n",\
341           tabs, dir, file);\
342    printf("%s>\r\n", tabs);\
343    printf("%s</File>\r\n", tabs);\
344  }\
345  else if(type == "vcxproj") {\
346    i = index(file, ".");\
347    ext = substr(file, i == 0 ? 0 : i + 1);\
348\
349    if(ext == "c")\
350      printf("%s<ClCompile Include=\"..\\..\\..\\..\\%s\\%s\" />\r\n",\
351             spaces, dir, file);\
352    else if(ext == "h")\
353      printf("%s<ClInclude Include=\"..\\..\\..\\..\\%s\\%s\" />\r\n",\
354             spaces, dir, file);\
355    else if(ext == "rc")\
356      printf("%s<ResourceCompile Include=\"..\\..\\..\\..\\%s\\%s\" />\r\n",\
357      spaces, dir, file);\
358  }\
359}\
360\
361{\
362\
363  if($$0 == "CURL_LIB_C_FILES") {\
364    split(lib_srcs, arr);\
365    for(val in arr) gen_element(proj_type, "lib", arr[val]);\
366  }\
367  else if($$0 == "CURL_LIB_H_FILES") {\
368    split(lib_hdrs, arr);\
369    for(val in arr) gen_element(proj_type, "lib", arr[val]);\
370  }\
371  else if($$0 == "CURL_LIB_RC_FILES") {\
372    split(lib_rc, arr);\
373    for(val in arr) gen_element(proj_type, "lib", arr[val]);\
374  }\
375  else if($$0 == "CURL_LIB_VAUTH_C_FILES") {\
376    split(lib_vauth_srcs, arr);\
377    for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\
378  }\
379  else if($$0 == "CURL_LIB_VAUTH_H_FILES") {\
380    split(lib_vauth_hdrs, arr);\
381    for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\
382  }\
383  else if($$0 == "CURL_LIB_VQUIC_C_FILES") {\
384    split(lib_vquic_srcs, arr);\
385    for(val in arr) gen_element(proj_type, "lib\\vquic", arr[val]);\
386  }\
387  else if($$0 == "CURL_LIB_VQUIC_H_FILES") {\
388    split(lib_vquic_hdrs, arr);\
389    for(val in arr) gen_element(proj_type, "lib\\vquic", arr[val]);\
390  }\
391  else if($$0 == "CURL_LIB_VSSH_C_FILES") {\
392    split(lib_vssh_srcs, arr);\
393    for(val in arr) gen_element(proj_type, "lib\\vssh", arr[val]);\
394  }\
395  else if($$0 == "CURL_LIB_VSSH_H_FILES") {\
396    split(lib_vssh_hdrs, arr);\
397    for(val in arr) gen_element(proj_type, "lib\\vssh", arr[val]);\
398  }\
399  else if($$0 == "CURL_LIB_VTLS_C_FILES") {\
400    split(lib_vtls_srcs, arr);\
401    for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
402  }\
403  else if($$0 == "CURL_LIB_VTLS_H_FILES") {\
404    split(lib_vtls_hdrs, arr);\
405    for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\
406  }\
407  else if($$0 == "CURL_SRC_C_FILES") {\
408    split(src_srcs, arr);\
409    for(val in arr) gen_element(proj_type, "src", arr[val]);\
410  }\
411  else if($$0 == "CURL_SRC_H_FILES") {\
412    split(src_hdrs, arr);\
413    for(val in arr) gen_element(proj_type, "src", arr[val]);\
414  }\
415  else if($$0 == "CURL_SRC_RC_FILES") {\
416    split(src_rc, arr);\
417    for(val in arr) gen_element(proj_type, "src", arr[val]);\
418  }\
419  else if($$0 == "CURL_SRC_X_C_FILES") {\
420    split(src_x_srcs, arr);\
421    for(val in arr) {\
422      sub(/..\/lib\//, "", arr[val]);\
423      gen_element(proj_type, "lib", arr[val]);\
424    }\
425  }\
426  else if($$0 == "CURL_SRC_X_H_FILES") {\
427    split(src_x_hdrs, arr);\
428    for(val in arr) {\
429      sub(/..\/lib\//, "", arr[val]);\
430      gen_element(proj_type, "lib", arr[val]);\
431    }\
432  }\
433  else\
434    printf("%s\r\n", $$0);\
435}';\
436	\
437	echo "generating '$(VC14_LIBVCXPROJ)'"; \
438	awk -v proj_type=vcxproj \
439		-v lib_srcs="$$sorted_lib_srcs" \
440		-v lib_hdrs="$$sorted_lib_hdrs" \
441		-v lib_rc="$$win32_lib_rc" \
442		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
443		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
444		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
445		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
446		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
447		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
448		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
449		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
450		"$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \
451	\
452	echo "generating '$(VC14_SRCVCXPROJ)'"; \
453	awk -v proj_type=vcxproj \
454		-v src_srcs="$$sorted_src_srcs" \
455		-v src_hdrs="$$sorted_src_hdrs" \
456		-v src_rc="$$win32_src_rc" \
457		-v src_x_srcs="$$sorted_src_x_srcs" \
458		-v src_x_hdrs="$$sorted_src_x_hdrs" \
459		"$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \
460	\
461	echo "generating '$(VC14_10_LIBVCXPROJ)'"; \
462	awk -v proj_type=vcxproj \
463		-v lib_srcs="$$sorted_lib_srcs" \
464		-v lib_hdrs="$$sorted_lib_hdrs" \
465		-v lib_rc="$$win32_lib_rc" \
466		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
467		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
468		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
469		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
470		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
471		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
472		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
473		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
474		"$$awk_code" $(srcdir)/$(VC14_10_LIBTMPL) > $(VC14_10_LIBVCXPROJ) || { exit 1; }; \
475	\
476	echo "generating '$(VC14_10_SRCVCXPROJ)'"; \
477	awk -v proj_type=vcxproj \
478		-v src_srcs="$$sorted_src_srcs" \
479		-v src_hdrs="$$sorted_src_hdrs" \
480		-v src_rc="$$win32_src_rc" \
481		-v src_x_srcs="$$sorted_src_x_srcs" \
482		-v src_x_hdrs="$$sorted_src_x_hdrs" \
483		"$$awk_code" $(srcdir)/$(VC14_10_SRCTMPL) > $(VC14_10_SRCVCXPROJ) || { exit 1; }; \
484	\
485	echo "generating '$(VC14_20_LIBVCXPROJ)'"; \
486	awk -v proj_type=vcxproj \
487		-v lib_srcs="$$sorted_lib_srcs" \
488		-v lib_hdrs="$$sorted_lib_hdrs" \
489		-v lib_rc="$$win32_lib_rc" \
490		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
491		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
492		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
493		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
494		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
495		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
496		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
497		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
498		"$$awk_code" $(srcdir)/$(VC14_20_LIBTMPL) > $(VC14_20_LIBVCXPROJ) || { exit 1; }; \
499	\
500	echo "generating '$(VC14_20_SRCVCXPROJ)'"; \
501	awk -v proj_type=vcxproj \
502		-v src_srcs="$$sorted_src_srcs" \
503		-v src_hdrs="$$sorted_src_hdrs" \
504		-v src_rc="$$win32_src_rc" \
505		-v src_x_srcs="$$sorted_src_x_srcs" \
506		-v src_x_hdrs="$$sorted_src_x_hdrs" \
507		"$$awk_code" $(srcdir)/$(VC14_20_SRCTMPL) > $(VC14_20_SRCVCXPROJ) || { exit 1; }; \
508	\
509	echo "generating '$(VC14_30_LIBVCXPROJ)'"; \
510	awk -v proj_type=vcxproj \
511		-v lib_srcs="$$sorted_lib_srcs" \
512		-v lib_hdrs="$$sorted_lib_hdrs" \
513		-v lib_rc="$$win32_lib_rc" \
514		-v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \
515		-v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \
516		-v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \
517		-v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \
518		-v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \
519		-v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \
520		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \
521		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \
522		"$$awk_code" $(srcdir)/$(VC14_30_LIBTMPL) > $(VC14_30_LIBVCXPROJ) || { exit 1; }; \
523	\
524	echo "generating '$(VC14_30_SRCVCXPROJ)'"; \
525	awk -v proj_type=vcxproj \
526		-v src_srcs="$$sorted_src_srcs" \
527		-v src_hdrs="$$sorted_src_hdrs" \
528		-v src_rc="$$win32_src_rc" \
529		-v src_x_srcs="$$sorted_src_x_srcs" \
530		-v src_x_hdrs="$$sorted_src_x_hdrs" \
531		"$$awk_code" $(srcdir)/$(VC14_30_SRCTMPL) > $(VC14_30_SRCVCXPROJ) || { exit 1; };)
532
533tidy:
534	(cd src && $(MAKE) tidy)
535	(cd lib && $(MAKE) tidy)
536