...
- the win32-src.zip source bundle for the version you wish to build;
- https://svngithub.com/apache.org/repos/asf/tomcat/-native/
E.g.: To build the latest 12.20.x development build from trunkmain
c: cd \ svn git coclone https://svngithub.apache.org/repos/asfcom/apache/tomcat/-native/trunk/ tomcat-native-12.20.x cd tomcat-native-12.20.x\native\srclib\apr
Unpack APR 1.67.5 4 source distribution in this directory (C:\tomcat-native-12.20.x\native\srclib\apr).
Apply the apr-enable-ipv6.patch. Note that the patch will Note: If you build the 1.2.x branch you will need to some patches. The patches should apply but depending on exactly which revision you are working with you may need to skip the first part parts of the patch and an offset will probably be required. /or apply an offset.
git apply apr-enable-ipv6.patch
git apply win-ipv6.patch
Then build:
c:\cmsc\setenv.bat /x86
nmake -f NMAKEmakefile BUILD_CPU=x86 APR_DECLARE_STATIC=1 c:\cmsc\setenv.bat /x64 nmake -f NMAKEmakefile BUILD_CPU=x64 APR_DECLARE_STATIC=1 cd ..\openssl
OpenSSL
...
3.
...
0.
...
x and
...
later
Unpack the OpenSSL
...
3.0.
...
x source distribution in this directory (C:\tomcat-native-
...
2.
...
0.x\native\srclib\openssl).
Apply openssl-msvcrt-3.0.x.patch.
...
The patch should apply cleanly to the current recommended OpenSSL version. If you use a different version you may need to skip
...
and/or use an offset to get the patch to apply.
c:\cmsc\setenv.bat /x86
perl Configure no-shared VC-WIN32 ms\do_nasm nmake -f ms\nt.mak move out32 out32-x86
nmake
mkdir out32-x86
copy libssl.lib out32-x86\
copy libcrypto.lib out32-x86\
copy apps\openssl.exe out32-x86\
nmake clean
c:\cmsc\setenv.bat /x64
perl Configure no-shared VC-WIN64A ms\do_win64a nmake -f ms\nt.mak clean nmake -f ms\nt.mak move out32 out32-x64
OpenSSL 1.1.1 and later
TBD
nmake
mkdir out32-x64
copy libssl.lib out32-x64\
copy libcrypto.lib out32-x64\
copy apps\openssl.exe out32-x64\
Tomcat Native
Keeping the various libraries in versioned directories saves having to rebuild them next time if the version remains unchanged.
cd .. set OPENSSL_VER=13.0.2p11
set APR_VER=1.67.54
mkdir \deps-x86\apr-%APR_VER%\include mkdir \deps-x86\apr-%APR_VER%\lib mkdir \deps-x86\openssl-%OPENSSL_VER%\include mkdir \deps-x86\openssl-%OPENSSL_VER%\lib xcopy /E \deps-x86\apr-%APR_VER% \deps-x64\apr-%APR_VER%\
xcopy /E \deps-x86\openssl-%OPENSSL_VER% \deps-x64\openssl-%OPENSSL_VER%\
xcopy /E apr\include \deps-x86\apr-%APR_VER%\include\ xcopy /E apr\include \deps-x64\apr-%APR_VER%\include\ copy apr\WINXPWIN7_X86_LIB_RELEASE\apr-1.lib \deps-x86\apr-%APR_VER%\lib copy apr\WINXPWIN7_X64_LIB_RELEASE\apr-1.lib \deps-x64\apr-%APR_VER%\lib xcopy
xcopy /E openssl\include\inc32openssl \deps-x86\openssl-%OPENSSL_VER%\include\openssl\ xcopy xcopy /E openssl\inc32include\openssl \deps-x64\openssl-%OPENSSL_VER%\include\ copy \openssl\
copy openssl\out32-x86\*.lib
...
\deps-x86\openssl-%OPENSSL_VER%\lib\
...
copy openssl\out32-x64\*.lib
...
\deps-x64\openssl-%OPENSSL_VER%\lib\
...
copy openssl\out32-x86\openssl.exe
...
\deps-x86\openssl-%OPENSSL_VER%\
...
copy openssl\out32-x64\openssl.exe
...
\deps-x64\openssl-%OPENSSL_VER%\
cd cd .. SET
set JAVA_HOME=C:\java\adopt-8.0.242.09-x64
Program Files\Java\jdk1.7.0_71 c:\cmsc\setenv.bat /x86 nmakex86
set WINVER=WIN7
nmake -f NMAKEMakefile WITH_APR=C:\deps-x86\apr-%APR_VER% WITH_OPENSSL=C:\deps-x86\openssl-%OPENSSL_VER% APR_DECLARE_STATIC=1 OPENSSL_NEW_LIBS=1 ENABLE_OCSP=1 move WINXP
move WIN7_X86_DLL_RELEASE WINXPWIN7_X86_OCSP_DLL_RELEASE nmake
nmake -f NMAKEMakefile WITH_APR=C:\deps-x86\apr-%APR_VER% WITH_OPENSSL=C:\deps-x86\openssl-%OPENSSL_VER% APR_DECLARE_STATIC=1 OPENSSL_NEW_LIBS=1
c c:\cmsc\setenv.bat /x64 nmake
set WINVER=WIN7 nmake -f NMAKEMakefile WITH_APR=C:\deps-x64\apr-%APR_VER% WITH_OPENSSL=C:\deps-x64\openssl-%OPENSSL_VER% APR_DECLARE_STATIC=1 OPENSSL_NEW_LIBS=1 ENABLE_OCSP=1 move move WINXPWIN7_X64_DLL_RELEASE WINXPWIN7_X64_OCSP_DLL_RELEASE nmake nmake -f NMAKEMakefile WITH_APR=C:\deps-x64\apr-%APR_VER% WITH_OPENSSL=C:\deps-x64\openssl-%OPENSSL_VER% APR_DECLARE_STATIC=1 OPENSSL_NEW_LIBS=1
Tomcat Native Connector DLLs may then be found in C:\tomcat-native-12.20.x\native\WINXPWIN7_*_[OCSP_]DLL_RELEASE
Construct the binary distributions
set VER=12.0.6
mkdir2.18 mkdir tomcat-native-%VER%-openssl-%OPENSSL_VER%-win32-bin copy
copy LICENSE.bin.\LICENSEwin tomcat-native-%VER%-openssl-%OPENSSL_VER%-win32-bin\ LICENSE
copy NOTICE.bin.\NOTICEwin tomcat-native-%VER%-openssl-%OPENSSL_VER%-win32-bin\ NOTICE
copy ..\README.txt tomcat-native-%VER%-openssl-%OPENSSL_VER%-win32-bin\
copy srclib\VERSIONS tomcat-native-%VER%-openssl-%OPENSSL_VER%-win32-bin\
mkdir tomcat-native-%VER%-openssl-%OPENSSL_VER%-win32-bin\bin mkdir tomcat-native-%VER%-openssl-%OPENSSL_VER%-win32-bin\bin\x64 copy C:\deps-x86\openssl-%OPENSSL_VER%\openssl.exe tomcat-native-%VER%-openssl-%OPENSSL_VER%-win32-bin\bin xcopy /E tomcat-native-%VER%-openssl-%OPENSSL_VER%-win32-bin tomcat-native-%VER%-openssl-%OPENSSL_VER%-ocsp-win32-bin\ copy WINXPWIN7_X86_DLL_RELEASE\tcnative-1.dll tomcat-native-%VER%-openssl-%OPENSSL_VER%-win32-bin\bin copy WINXPWIN7_X86_OCSP_DLL_RELEASE\tcnative-1.dll tomcat-native-%VER%-openssl-%OPENSSL_VER%-ocsp-win32-bin\bin copy WINXPWIN7_X86_DLL_RELEASE\tcnative-1-src.pdb tomcat-native-%VER%-openssl-%OPENSSL_VER%-win32-bin\bin copy WINXPWIN7_X86_OCSP_DLL_RELEASE\tcnative-1-src.pdb tomcat-native-%VER%-openssl-%OPENSSL_VER%-ocsp-win32-bin\bin copy WINXPWIN7_X64_DLL_RELEASE\tcnative-1.dll tomcat-native-%VER%-openssl-%OPENSSL_VER%-win32-bin\bin\x64 copy WINXPWIN7_X64_OCSP_DLL_RELEASE\tcnative-1.dll tomcat-native-%VER%-openssl-%OPENSSL_VER%-ocsp-win32-bin\bin\x64 copy WINXPWIN7_X64_DLL_RELEASE\tcnative-1-src.pdb tomcat-native-%VER%-openssl-%OPENSSL_VER%-win32-bin\bin\x64 copy WINXPWIN7_X64_OCSP_DLL_RELEASE\tcnative-1-src.pdb tomcat-native-%VER%-openssl-%OPENSSL_VER%-ocsp-win32-bin\bin\x64 set PATH=%PATH%;%JAVA_HOME%\bin cd tomcat-native-%VER%-openssl-%OPENSSL_VER%-win32-bin jar -cMf ..\tomcat-native-%VER%-openssl-%OPENSSL_VER%-win32-bin.zip * cd ..\tomcat-native-%VER%-openssl-%OPENSSL_VER%-ocsp-win32-bin jar -cMf ..\tomcat-native-%VER%-openssl-%OPENSSL_VER%-ocsp-win32-bin.zip *
...
The Windows binary distributions may then be found in C:\tomcat-native-12.20.x\native\
These need to be signed and hashed before uploading for the release vote.
Beware of typos in the name and contents of hash files for OCSP binaries ("ocsp" vs "oscp"). Such typos happened.
A correct example:
tomcat-native-
...
2.0.5-openssl-3.0.10-ocsp-win32-bin.zip.
...
sha512
8b82033602be8f47905804349093045b99ba9cc3f2dbf95d52be2a430bae84bbefd0b938f6b0fa9d5c54af20fcb4a00b4dd2325d7482d3cf59a2463c0935d86f 0b0e1e4c77b9b7051fc2c751b70d2880 *tomcat-native-1.1.32-2.0.5-openssl-3.0.10-ocsp-win32-bin.zip
tomcat-native-
...
2.
...
0.
...
5-openssl-3.0.10-win32-bin.zip.
...
sha512
3c599d4da5c26b3dd1ddce7add5b8126e98f0068515f8bb942cc349716ea5f88519b9a1f76b3ba9badda79955f88eaf7940a78713064ccc547a232b921c0f05b b47f96dd3153d002a529e881b6b8f524cd6e321c *tomcat-native-12.10.32-ocsp5-openssl-3.0.10-win32-bin.zip