make_windows 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #!/bin/bash
  2. cd "$( dirname "$0" )"
  3. export VLMCSD_VERSION=$(git describe)
  4. msbuild='/cygdrive/c/Program Files (x86)/MSBuild/14.0/bin/MSBuild.exe'
  5. version="$VLMCSD_VERSION, built $(date -u '+%Y-%m-%d %H:%M:%S') UTC"
  6. make -C .. clean
  7. export ExternalCompilerOptions="/D VERSION=\"\\\"$version\\\"\" /D BUILD_TIME=$(date '+%s')"
  8. "$msbuild" ../VisualStudio/vlmcsd.sln /t:Rebuild /p:Configuration=publish /p:Platform=x86 /m /v:m
  9. "$msbuild" ../VisualStudio/vlmcsd.sln /t:Rebuild /p:Configuration=publish /p:Platform=x64 /m /v:m
  10. export CAT=2
  11. export VERBOSE=3
  12. NUMCPU=`cat /proc/cpuinfo | grep "processor" | wc -l`
  13. CF="-Wno-missing-braces -fno-common -fno-exceptions -fno-non-call-exceptions -fno-stack-protector -fmerge-all-constants -fno-unwind-tables -fno-asynchronous-unwind-tables -pipe"
  14. CFMSRPC="-Wno-missing-braces -Wno-unused-variable $CF" # -fno-common -fno-stack-protector -fmerge-all-constants -pipe"
  15. PF32=""
  16. PF64="-mpreferred-stack-boundary=4 -march=nocona -mtune=generic"
  17. LFCYG32="-fwhole-program -Wl,--nxcompat,--dynamicbase,--tsaware,--large-address-aware,--disable-long-section-names"
  18. LFWIN32="-fwhole-program -Wl,--nxcompat,--dynamicbase,--tsaware,--large-address-aware,--disable-long-section-names,--no-seh"
  19. LFCYG64="-fwhole-program -Wl,--nxcompat,--dynamicbase,--tsaware,--disable-long-section-names,--high-entropy-va"
  20. LFWIN64="-fwhole-program -Wl,--nxcompat,--dynamicbase,--tsaware,--disable-long-section-names,--high-entropy-va,--no-seh"
  21. MAKEFLAGS="-j$NUMCPU -B"
  22. REUSEFLAGS="-j$NUMCPU"
  23. cd ../src
  24. make $MAKEFLAGS libkms FEATURES=minimum THREADS=1 DLL_NAME=../bin/cygkms32.dll DNS_PARSER=internal CC=i686-pc-cygwin-gcc.exe CFLAGS="$CF -flto=jobserver -fvisibility=hidden" PLATFORMFLAGS="$PF32" LDFLAGS="$LFCYG32 -Wl,--no-seh"
  25. make $MAKEFLAGS libkms FEATURES=minimum THREADS=1 DLL_NAME=../bin/cygkms64.dll DNS_PARSER=internal CC=x86_64-pc-cygwin-gcc.exe CFLAGS="$CF -flto=jobserver -fvisibility=hidden" PLATFORMFLAGS="$PF64" LDFLAGS="$LFCYG64 -Wl,--no-seh"
  26. make $MAKEFLAGS allmulti THREADS=1 DNS_PARSER=internal CLIENT_NAME=../bin/vlmcs-cygwin-x86 PROGRAM_NAME=../bin/vlmcsd-cygwin-x86 MULTI_NAME=../bin/vlmcsdmulti-cygwin-x86 CC=i686-pc-cygwin-gcc.exe CFLAGS="$CF" PLATFORMFLAGS="$PF32" LDFLAGS="$LFCYG32 -Wl,--no-seh"
  27. make $MAKEFLAGS allmulti THREADS=1 DNS_PARSER=internal CLIENT_NAME=../bin/vlmcs-cygwin-x64 PROGRAM_NAME=../bin/vlmcsd-cygwin-x64 MULTI_NAME=../bin/vlmcsdmulti-cygwin-x64 CC=x86_64-pc-cygwin-gcc.exe CFLAGS="$CF" PLATFORMFLAGS="$PF64" LDFLAGS="$LFCYG64 -Wl,--no-seh"
  28. make $MAKEFLAGS MSRPC=1 THREADS=1 DNS_PARSER=internal CLIENT_NAME=../bin/vlmcs-cygwin-msrpc-x86 PROGRAM_NAME=../bin/vlmcsd-cygwin-msrpc-x86 MULTI_NAME=../bin/vlmcsdmulti-cygwin-msrpc-x86 CC=i686-pc-cygwin-gcc.exe CFLAGS="$CF -fasynchronous-unwind-tables" PLATFORMFLAGS="$PF32" LDFLAGS="$LFCYG32"
  29. make $MAKEFLAGS MSRPC=1 THREADS=1 DNS_PARSER=internal CLIENT_NAME=../bin/vlmcs-cygwin-msrpc-x64 PROGRAM_NAME=../bin/vlmcsd-cygwin-msrpc-x64 MULTI_NAME=../bin/vlmcsdmulti-cygwin-msrpc-x64 CC=x86_64-pc-cygwin-gcc.exe CFLAGS="$CFMSRPC" PLATFORMFLAGS="$PF64" LDFLAGS="$LFCYG64"
  30. make $MAKEFLAGS vlmcsdmulti MSRPC=1 THREADS=1 DNS_PARSER=internal MULTI_NAME=../bin/vlmcsdmulti-cygwin-msrpc-x64 CC=x86_64-pc-cygwin-gcc.exe CFLAGS="$CFMSRPC -flto=jobserver" PLATFORMFLAGS="$PF64" LDFLAGS="$LFCYG64"
  31. make $MAKEFLAGS vlmcsdmulti MSRPC=1 THREADS=1 DNS_PARSER=internal MULTI_NAME=../bin/vlmcsdmulti-cygwin-msrpc-x86 CC=i686-pc-cygwin-gcc.exe CFLAGS="$CFMSRPC -flto=jobserver" PLATFORMFLAGS="$PF32" LDFLAGS="$LFCYG32"
  32. make $MAKEFLAGS THREADS=1 MSRPC=1 DNS_PARSER=internal CLIENT_NAME=../bin/vlmcs-cygwin-msrpc-x86-openssl-EXPERIMENTAL CRYPTO=openssl_with_aes PROGRAM_NAME=../bin/vlmcsd-cygwin-x86-openssl-EXPERIMENTAL CC=i686-pc-cygwin-gcc.exe CFLAGS="$CFMSRPC" PLATFORMFLAGS="$PF32" LDFLAGS="$LFCYG32"
  33. make $MAKEFLAGS THREADS=1 MSRPC=1 DNS_PARSER=internal CLIENT_NAME=../bin/vlmcs-cygwin-msrpc-x64-openssl-EXPERIMENTAL CRYPTO=openssl_with_aes PROGRAM_NAME=../bin/vlmcsd-cygwin-x64-openssl-EXPERIMENTAL CC=x86_64-pc-cygwin-gcc.exe CFLAGS="$CFMSRPC" PLATFORMFLAGS="$PF64" LDFLAGS="$LFCYG64"
  34. export CAT=2
  35. #unset CAT
  36. make $MAKEFLAGS libkms CRYPTO=windows FEATURES=minimum THREADS=1 DLL_NAME=../bin/libkms32-gcc.dll CC=i686-w64-MingW32-gcc.exe CFLAGS="$CF -flto=jobserver -fvisibility=hidden" PLATFORMFLAGS="$PF32" LDFLAGS="-static-libgcc $LFWIN32"
  37. make $MAKEFLAGS libkms CRYPTO=windows FEATURES=minimum THREADS=1 DLL_NAME=../bin/libkms64-gcc.dll CC=x86_64-w64-MingW32-gcc.exe CFLAGS="$CF -flto=jobserver -fvisibility=hidden" PLATFORMFLAGS="$PF64" LDFLAGS="-static-libgcc $LFWIN64"
  38. make $MAKEFLAGS allmulti THREADS=1 CRYPTO=internal CLIENT_NAME=../bin/vlmcs-Windows-x86-gcc PROGRAM_NAME=../bin/vlmcsd-Windows-x86-gcc MULTI_NAME=../bin/vlmcsdmulti-Windows-x86-gcc CC=i686-w64-MingW32-gcc.exe CFLAGS="$CF -fno-lto" PLATFORMFLAGS="$PF32" LDFLAGS="$LFWIN32"
  39. make $MAKEFLAGS allmulti THREADS=1 CRYPTO=internal CLIENT_NAME=../bin/vlmcs-Windows-x64-gcc PROGRAM_NAME=../bin/vlmcsd-Windows-x64-gcc MULTI_NAME=../bin/vlmcsdmulti-Windows-x64-gcc CC=x86_64-w64-MingW32-gcc.exe CFLAGS="$CF -fno-lto" PLATFORMFLAGS="$PF64" LDFLAGS="$LFWIN64"
  40. unset CAT
  41. make -Bj allmulti CAT=2 MSRPC=1 CRYPTO=windows CLIENT_NAME=../bin/vlmcs-Windows-msrpc-x86 PROGRAM_NAME=../bin/vlmcsd-Windows-msrpc-x86 MULTI_NAME=../bin/vlmcsdmulti-Windows-msrpc-x86 CC=i686-w64-MingW32-gcc.exe CFLAGS="$CFMSRPC -fno-lto" PLATFORMFLAGS="$PF32" LDFLAGS="$LFWIN32"
  42. make $MAKEFLAGS allmulti CAT=2 THREADS=1 MSRPC=1 CRYPTO=windows CLIENT_NAME=../bin/vlmcs-Windows-msrpc-x64 PROGRAM_NAME=../bin/vlmcsd-Windows-msrpc-x64 MULTI_NAME=../bin/vlmcsdmulti-Windows-msrpc-x64 CC=x86_64-w64-MingW32-gcc.exe CFLAGS="$CFMSRPC -fno-lto" PLATFORMFLAGS="$PF64" LDFLAGS="$LFWIN64"
  43. #unset CAT
  44. #make $MAKEFLAGS CAT=2 vlmcsdmulti-Windows-msrpc-x86 THREADS=1 MSRPC=1 CRYPTO=windows MULTI_NAME=vlmcsdmulti-Windows-msrpc-x86 CC=i686-w64-MingW32-gcc.exe CFLAGS="$CFMSRPC" PLATFORMFLAGS="$PF32" LDFLAGS="-Wl,--nxcompat,--dynamicbase,--tsaware,--large-address-aware"
  45. #make $MAKEFLAGS CAT=2 vlmcsdmulti-Windows-msrpc-x64 THREADS=1 MSRPC=1 CRYPTO=windows MULTI_NAME=vlmcsdmulti-Windows-msrpc-x64 CC=x86_64-w64-MingW32-gcc.exe CFLAGS="$CFMSRPC" PLATFORMFLAGS="$PF64" LDFLAGS="$LFCYG64"
  46. export CAT=2
  47. #echo ""
  48. #echo "Copying MingW binaries from distribution server"
  49. #scp -p root@ubuntu64:x/binaries/Windows/intel/*Windows* root@ubuntu64:x/binaries/Windows/intel/libkms* .
  50. cd ..
  51. echo ""
  52. echo "Installing binaries"
  53. cp -p bin/vlmcs-cygwin-x64.exe /usr/local/bin/vlmcs &
  54. cp -p bin/vlmcsd-cygwin-x64.exe /usr/local/bin/vlmcsd &
  55. cp -p etc/vlmcsd.kmd /usr/local/bin &
  56. cp -p bin/cygkms64.dll /usr/local/bin/cygkms.dll &
  57. cp -p bin/libkms32.dll /cygdrive/c/nttools/x86 &
  58. cp -p bin/libkms64.dll /cygdrive/c/nttools/x64 &
  59. cp -p bin/vlmcsd-Windows-x86.exe /cygdrive/c/nttools/x86/vlmcsd.exe &
  60. cp -p bin/vlmcs-Windows-x86.exe /cygdrive/c/nttools/x86/vlmcs.exe &
  61. cp -p etc/vlmcsd.kmd /cygdrive/c/nttools/x86
  62. #cmd /C mklink c:\\nttools\\x86\\vlmcsd.exe vlmcsdmulti.exe 2> /dev/null &
  63. #cmd /C mklink c:\\nttools\\x86\\vlmcs.exe vlmcsdmulti.exe 2> /dev/null &
  64. echo "Installing man pages"
  65. mkdir -p /usr/share/man/man8
  66. mkdir -p /usr/share/man/man1
  67. mkdir -p /usr/share/man/man7
  68. mkdir -p /usr/share/man/man5
  69. cp -p man/vlmcsd.7 man/vlmcsd-floppy.7 /usr/share/man/man7
  70. cp -p man/vlmcsd.8 /usr/share/man/man8
  71. cp -p man/vlmcsd.ini.5 /usr/share/man/man5
  72. cp -p man/vlmcs.1 man/vlmcsdmulti.1 /usr/share/man/man1
  73. bzip2 -f /usr/share/man/man7/vlmcsd-floppy.7 /usr/share/man/man5/vlmcsd.ini.5 /usr/share/man/man7/vlmcsd.7 /usr/share/man/man8/vlmcsd.8 /usr/share/man/man1/vlmcs.1 /usr/share/man/man1/vlmcsdmulti.1 &
  74. # Copy stuff to distribution server
  75. scp -p bin/*.exe bin/*.dll root@ubuntu64:x/binaries/Windows/intel