spiegel-keyman/windows/src/Makefile

268 lines
7.8 KiB
Makefile
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#
# Keyman root Makefile
#
# ----------------------------------------------------------------------
default:
@echo The following make targets are available:
@echo     build                 builds everything except help files (-DBUILDHELP to build help)
@echo     install               installs packages into Delphi IDE (run after a build)
@echo     clean                 removes all temp files
@echo     release               make a release
@echo     web-install           sends the documentation to the website
@echo     test-certificate      create a test certificate + CA (and install test CA)
@echo     signcode              sign the build artifacts
@echo.
@echo     Build flags:
@echo           DEBUG           Include debug information
@echo           SC_TIMESTAMP    Don't timestamp certificates (for internal releases only, offline)
@echo           BUILDHELP       Build the helpfiles (implicit when 'make release')
@echo           LINT            Turns on $MESSAGE hints and warnings and all extra string warnings
@echo           QUIET           Ignore hints and warnings
@echo.
@echo     To view help on the build process, in /src/inst, run:
@echo           make help
@echo.
# ----------------------------------------------------------------------
TARGETS=ext global buildtools developer engine desktop support
RELEASE_TARGETS=desktop
CLEANS=test unit-tests cleanroot
MANIFESTS=engine desktop developer
EXCLUDEPATHDEFINES=1
!include Header.mak
# ----------------------------------------------------------------------
cleanroot:
-del tds.zip
-del tds.exe
-del PathDefines.mak
global: build-tools
cd $(ROOT)\src\global
$(MAKE) $(TARGET)
cd $(ROOT)\src
ext: build-tools
cd $(ROOT)\src\ext
$(MAKE) $(TARGET)
cd $(ROOT)\src
buildtools: global
cd $(ROOT)\src\buildtools
$(MAKE) $(TARGET)
cd $(ROOT)\src
developer: global
cd $(ROOT)\src\developer
$(MAKE) $(TARGET)
cd $(ROOT)\src
engine: global
cd $(ROOT)\src\engine
$(MAKE) $(TARGET)
cd $(ROOT)\src
desktop: global
cd $(ROOT)\src\desktop
$(MAKE) $(TARGET)
cd $(ROOT)\src
support: global
cd $(ROOT)\src\support
$(MAKE) $(TARGET)
cd $(ROOT)\src
test:
cd $(ROOT)\src\test
$(MAKE) $(TARGET)
cd $(ROOT)\src
unit-tests:
cd $(ROOT)\src\unit-tests
$(MAKE) $(TARGET)
cd $(ROOT)\src
# ----------------------------------------------------------------------
# release
# ----------------------------------------------------------------------
release: clean-pathdefines test-release-cef-path test-releasebuildcheck test-uiaccess test-klog test-releaseexists test-cert clean
cd $(ROOT)\src
$(MAKE) global-versions
$(MAKE) disable-search
$(MAKE) build-release-wrapper
$(MAKE) clean
cd $(ROOT)\src
$(MAKE) enable-search
clean-pathdefines: test-releasebuildcheck
# test-releasebuildcheck builds devtools for us
$(PROGRAM)\buildtools\devtools -ri
#
# Test that the CEF file path is accessible from env var KEYMAN_CEF4DELPHI_ROOT
#
test-release-cef-path:
@if not exist $(KEYMAN_CEF4DELPHI_ROOT)\libcef.dll echo The environment variable KEYMAN_CEF4DELPHI_ROOT is invalid. File libcef.dll could not be found.
@if not exist $(KEYMAN_CEF4DELPHI_ROOT)\libcef.dll exit 1
#
# Test that certificate checking is enabled and that certificate is accessible
#
test-cert:
copy $(SC_PFX_SHA1) $(ROOT)\src\pfx.tmp
del $(ROOT)\src\pfx.tmp
#
# Test that klog is disabled
#
test-klog: mkver-app
cd $(ROOT)\src\buildtools\test-klog
$(MAKE) verify
cd $(ROOT)\src
#
# Test that we haven't already built this release
#
test-releaseexists: mkver-app
cd $(ROOT)\src\developer\inst
$(MAKE) test-releaseexists
cd $(ROOT)\src
#
# Test various release prerequisites, e.g. Debug reg key not set
#
test-releasebuildcheck: global-versions
cd $(ROOT)\src\buildtools\devtools
$(MAKE) test-releasebuildcheck
cd $(ROOT)\src
#
# Test uiaccess property in keyman manifest.xml and keyman64 manifest.xml
#
test-uiaccess:
cd $(ROOT)\src\engine\keyman
$(MAKE) test-uiaccess
cd $(ROOT)\src\engine\keymanx64
$(MAKE) test-uiaccess
cd $(ROOT)\src
#
# Update version numbers for all subfolders
#
update-version: build-tools mkver-app
cd $(ROOT)\src
$(PROGRAM)\buildtools\mkver -i $(ROOT)\src\buildtools\version.txt $(ROOT)\src\version.txt
$(PROGRAM)\buildtools\mkver -i $(ROOT)\src\developer\version.txt $(ROOT)\src\version.txt
$(PROGRAM)\buildtools\mkver -i $(ROOT)\src\desktop\version.txt $(ROOT)\src\version.txt
$(PROGRAM)\buildtools\mkver -i $(ROOT)\src\engine\version.txt $(ROOT)\src\version.txt
$(PROGRAM)\buildtools\mkver -i $(ROOT)\src\support\version.txt $(ROOT)\src\version.txt
# Build a release
build-release-wrapper: clean-output update-version
cd $(ROOT)\src
$(MAKE) dirs
$(MAKE) build-tools
$(MAKE) build unit-tests
$(MAKE) build-release
$(MAKE) signcode
$(MAKE) -DTARGET=test test
$(MAKE) backup
cd $(ROOT)\src\engine\inst
$(MAKE)
cd $(ROOT)\src\desktop\inst
$(MAKE) setup
cd $(ROOT)\src\developer\inst
$(MAKE)
cd $(ROOT)\src\buildtools\inst
$(MAKE)
#
# Tools needed to complete a build
#
global-versions: mkver-app
cd $(ROOT)\src
$(MKVER_U) $(ROOT)\src\global\inc\keymanversion_build.in $(ROOT)\src\global\inc\keymanversion_build.h $(ROOT)\src\version.txt
$(MKVER_U) $(ROOT)\src\global\delphi\general\keymanversion_build.in $(ROOT)\src\global\delphi\general\keymanversion_build.inc $(ROOT)\src\version.txt
build-tools: global-versions
cd $(ROOT)\src\buildtools\devtools
$(MAKE)
# We'll build a default PathDefines.mak if it is missing here so we can
# go on and do the rest of the build
$(PROGRAM)\buildtools\devtools -ti
#
# Remove all files from output folders to ensure no legacy files left in a release
#
clean-output:
rd /s/q $(ROOT)\bin
rd /s/q $(ROOT)\debug
rd /s/q $(ROOT)\build
rd /s/q $(ROOT)\lib
# ----------------------------------------------------------------------
# install
# ----------------------------------------------------------------------
web-install:
cd $(ROOT)\src\desktop\help
$(MAKE) html install
cd $(ROOT)\src\developer\help
$(MAKE) html install
# ----------------------------------------------------------------------
disable-search:
-net stop wsearch
-net stop MsMpSvc
enable-search:
-net start wsearch
-net start MsMpSvc
# ----------------------------------------------------------------------
test-certificate:
cd $(ROOT)\src\buildtools\certificates
-del KeymanTestCA-sha1.*
-del KeymanTest-sha1.*
-del KeymanTest-sha256.*
-del KeymanTestCA-sha256.*
makecert -r -pe -n "CN=Keyman Test CA SHA1" -ss CA -sr CurrentUser -a sha1 -cy authority -sky signature -sv KeymanTestCA-sha1.pvk KeymanTestCA-sha1.cer
certutil -user -addstore Root KeymanTestCA-sha1.cer
makecert -pe -n "CN=Keyman Test Certificate SHA1" -a sha1 -cy end -sky signature -ic KeymanTestCA-sha1.cer -iv KeymanTestCA-sha1.pvk -sv KeymanTest-sha1.pvk KeymanTest-sha1.cer
pvk2pfx -pvk KeymanTest-sha1.pvk -spc KeymanTest-sha1.cer -pfx KeymanTest-sha1.pfx
makecert -r -pe -n "CN=Keyman Test CA" -ss CA -sr CurrentUser -a sha256 -cy authority -sky signature -sv KeymanTestCA-sha256.pvk KeymanTestCA-sha256.cer
certutil -user -addstore Root KeymanTestCA-sha256.cer
makecert -pe -n "CN=Keyman Test Certificate" -a sha256 -cy end -sky signature -ic KeymanTestCA-sha256.cer -iv KeymanTestCA-sha256.pvk -sv KeymanTest-sha256.pvk KeymanTest-sha256.cer
pvk2pfx -pvk KeymanTest-sha256.pvk -spc KeymanTest-sha256.cer -pfx KeymanTest-sha256.pfx
!include Target.mak
# ----------------------------------------------------------------------
# EOF
# ----------------------------------------------------------------------