diff options
Diffstat (limited to 'build.bat')
-rw-r--r-- | build.bat | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/build.bat b/build.bat new file mode 100644 index 00000000..cff8e6d1 --- /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 |