summaryrefslogtreecommitdiffstats
path: root/build.bat
diff options
context:
space:
mode:
Diffstat (limited to 'build.bat')
-rw-r--r--build.bat169
1 files changed, 169 insertions, 0 deletions
diff --git a/build.bat b/build.bat
new file mode 100644
index 0000000..cff8e6d
--- /dev/null
+++ b/build.bat
@@ -0,0 +1,169 @@
+@echo off
+@rem $LynxId: build.bat,v 1.1 2018/02/19 14:54:26 tom Exp $
+ setlocal
+ set SSL_DIR=C:\OpenSSL-%TARGET_ARCH%
+
+if not exist lynx.man goto :not_lynx
+if not exist lynx.cfg goto :not_lynx
+if not exist makefile.msc goto :not_lynx
+if not exist make-msc.bat goto :not_lynx
+
+if "x"=="x%PARTITION%" goto :no_build
+
+rem The locally-built libraries are in a directory tree which has subfolders
+rem for each version of Visual Studio. The OpenSSL directories are in
+rem a separate location. Simplify building Lynx by copying the link-libraries
+rem and DLLs to the build-tree.
+
+ call :copybin \project\all\%PARTITION%
+ call :copylib \project\all\%PARTITION%
+
+ xcopy /f/q lynx.cfg bin
+ xcopy /f/q samples\lynx.lss bin
+
+ call :clean
+ call :build %1
+
+ goto :eof
+
+:no_build
+ echo The build-tools were not setup
+ goto :eof
+
+:not_lynx
+ echo This is not the Lynx build-directory
+ goto :eof
+
+rem Copy configuration and OpenSSL DLLs to bin-directory to simplify
+rem ad hoc testing. The "\com" has some GnuWin32 executables which can be
+rem used for decompressing temporary files. Copy those here as well to
+rem simplify packaging.
+
+:copybin
+ setlocal
+ echo ** Copying files to bin-directory
+ if not exist bin mkdir bin
+ cd bin
+ del /f /q lynx*.*
+ del /f /q *.dll
+ del /f /q *.exe
+ copy %1\dynamic\*.dll .
+ copy c:\com\bzip2.exe .
+ copy c:\com\gzip.exe .
+ call :copy_ssl libeay
+ call :copy_ssl ssleay
+ call :copy_ssl libcrypto
+ call :copy_ssl libssl
+ call :copy_ssl msvcr
+ endlocal
+ goto :eof
+
+:copy_ssl
+ setlocal
+ set DESTDIR=%CD%
+ cd %SSL_DIR%
+ for /f "usebackq" %%i in (`dir /b /s bin`) do xcopy /s /c /f /y %%i\%1*.dll %DESTDIR%
+ endlocal
+ goto :eof
+
+rem We could link with locally-built DLLs, but it would complicate
+rem things unnecessarily, and in the case of the slang library, more
+rem than double the size of an installer since its DLL is larger than all
+rem of the other parts of Lynx combined.
+
+:copylib
+ setlocal
+ echo ** Copying files to lib-directory
+ if not exist lib mkdir lib
+ cd lib
+ del /f /q *.lib
+ del /f /q bzip*.h
+ del /f /q curs*.h
+ del /f /q slang*.h
+ del /f /q z*.h
+ copy %1\include\* .
+ copy %1\static\* .
+ endlocal
+ goto :eof
+
+:clean
+ setlocal
+ call make-msc.bat clean
+ endlocal
+ goto :eof
+
+:build
+ setlocal
+ if "x%1"=="x" call :do_default
+ if not "x%1"=="x" call :do_%1
+ endlocal
+ goto :eof
+
+:do_all
+ call :do_default
+ call :do_sock
+ call :do_oldssl
+ call :do_newssl
+ call :do_cs
+ call :do_slang
+ call make-msc clean
+ goto :eof
+
+@rem just for testing
+:do_default
+ call :doit bin\lynx-default.exe
+ goto :eof
+
+:do_sock
+ call :doit bin\lynx-sock.exe "OPT_SOCK=yes"
+ goto :eof
+
+rem The "with-openssl" batch-file simplifies some of the task of linking
+rem with OpenSSL DLLs by setting SSL_LIBS for the appropriate old/new
+rem filenames.
+
+:do_oldssl
+ setlocal
+ call with-openssl 1.0.2n 0
+ call :doit bin\lynx-oldssl.exe "OPT_SSL=yes" "OPT_SOCK=yes"
+ endlocal
+ goto :eof
+
+:do_newssl
+ setlocal
+ call with-openssl 1.1.0g 1
+ call :doit bin\lynx-newssl.exe "OPT_SSL=yes" "OPT_SOCK=yes"
+ endlocal
+ goto :eof
+
+@rem for packages
+:do_cs
+ call :doit bin\lynx-cs.exe "OPT_SOCK=yes" "OPT_CS=yes"
+ goto :eof
+
+:do_slang
+ call :doit bin\lynx-slang.exe "OPT_SOCK=yes" "SCREEN=slang"
+ goto :eof
+
+:do_none
+ goto :eof
+
+:doit
+ setlocal
+ echo ** START BUILD: %*
+ set progname=%1
+ shift
+ call make-msc clean
+ echo on
+ call make-msc "PROGNAME=%progname%" %1 %2 %3 %4 %5 %6 %7 %8 %9
+ if errorlevel 1 goto :failed
+ echo ** BUILD-SUCCESS %progname%
+ echo.
+ %progname% -version
+ echo.
+ endlocal
+ goto :eof
+:failed
+ echo ?? BUILD-FAILURE %progname%
+ endlocal
+ goto :eof