diff --git a/common/windows/data/Makefile b/common/windows/data/Makefile
deleted file mode 100644
index ff5dff4966..0000000000
--- a/common/windows/data/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-!include ..\delphi\Defines.mak
-
-BUILDUNIDATA_PATH=$(KEYMAN_ROOT)\common\windows\delphi\tools\buildunidata
-BUILDUNIDATA_PROGRAM=$(BUILDUNIDATA_PATH)\$(WIN32_TARGET_PATH)\buildunidata.exe
-
-DATA_SOURCE=$(KEYMAN_ROOT)\resources\standards-data\unicode-character-database
-DATABASE_PATH=$(KEYMAN_ROOT)\common\windows\bin\data
-DATABASE_FILENAME=$(DATABASE_PATH)\unicodedata.mdb
-
-build: buildunidata
- -mkdir "$(DATABASE_PATH)"
-# cd "$(KEYMAN_ROOT)\common\windows\data"
- "$(BUILDUNIDATA_PROGRAM)" "$(DATA_SOURCE)" "$(DATABASE_FILENAME)"
-
-clean:
- -del "$(DATABASE_FILENAME)"
-
-buildunidata:
- cd "$(BUILDUNIDATA_PATH)"
- $(MAKE) build
diff --git a/common/windows/data/build.sh b/common/windows/data/build.sh
new file mode 100755
index 0000000000..950a1356e0
--- /dev/null
+++ b/common/windows/data/build.sh
@@ -0,0 +1,45 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../resources/build/build-utils.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe \
+ "Build shared data" \
+ clean configure build test \
+ "@../delphi/tools/buildunidata"
+
+builder_parse "$@"
+
+#-------------------------------------------------------------------------------------------------------------------
+
+source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
+
+builder_describe_outputs \
+ configure:project /resources/build/win/delphi_environment_generated.inc.sh \
+ build:project /common/windows/bin/data/unicodedata.mdb
+
+#-------------------------------------------------------------------------------------------------------------------
+
+BUILDUNIDATA_PATH="$KEYMAN_ROOT/common/windows/delphi/tools/buildunidata"
+BUILDUNIDATA_PROGRAM="$BUILDUNIDATA_PATH/$WIN32_TARGET_PATH/buildunidata.exe"
+DATA_SOURCE="$KEYMAN_ROOT/resources/standards-data/unicode-character-database"
+DATABASE_PATH="$KEYMAN_ROOT/common/windows/bin/data"
+DATABASE_FILENAME="$DATABASE_PATH/unicodedata.mdb"
+
+function do_clean() {
+ rm -f "$DATABASE_FILENAME"
+}
+
+function do_build() {
+ mkdir -p "$DATABASE_PATH"
+ # For now, we need to use cygpath for these parameters due to OLE
+ # incompatibilities with forward-slash in paths.
+ "$BUILDUNIDATA_PROGRAM" "$(cygpath -w "$DATA_SOURCE")" "$(cygpath -w "$DATABASE_FILENAME")"
+}
+
+builder_run_action clean:project do_clean
+builder_run_action configure:project configure_windows_build_environment
+builder_run_action build:project do_build
+# builder_run_action test:project do_test
diff --git a/common/windows/delphi/Makefile b/common/windows/delphi/Makefile
deleted file mode 100644
index 2a8258f07b..0000000000
--- a/common/windows/delphi/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-!include Defines.mak
-
-global-versions:
-# Build our root version.txt; TODO: replace with build.sh deps
- cd $(KEYMAN_ROOT)\common\windows
- $(MKVER_U) $(KEYMAN_ROOT)\common\windows\delphi\general\keymanversion_build.in $(KEYMAN_ROOT)\common\windows\delphi\general\keymanversion_build.inc
- $(GIT_BASH_FOR_KEYMAN) $(KEYMAN_ROOT)/common/include/build.sh clean configure build
-
-!include Target.mak
\ No newline at end of file
diff --git a/common/windows/delphi/build.sh b/common/windows/delphi/build.sh
new file mode 100755
index 0000000000..d248f67197
--- /dev/null
+++ b/common/windows/delphi/build.sh
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../resources/build/build-utils.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe \
+ "Build Keyman Developer common files" \
+ clean configure build test \
+ :tools :components :ext :keymanversion
+
+builder_parse "$@"
+builder_run_child_actions clean configure build test
+
+function do_build() {
+ "$KEYMAN_ROOT/common/windows/mkver.sh" "$KEYMAN_ROOT/common/windows/delphi/general/keymanversion_build.in" "$KEYMAN_ROOT/common/windows/delphi/general/keymanversion_build.inc"
+ # $(GIT_BASH_FOR_KEYMAN) $(KEYMAN_ROOT)/common/include/build.sh clean configure build
+}
+
+builder_run_action build:keymanversion do_build
diff --git a/common/windows/delphi/components/Makefile b/common/windows/delphi/components/Makefile
deleted file mode 100644
index b2590cd517..0000000000
--- a/common/windows/delphi/components/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# Common Delphi components Makefile
-#
-
-!include ..\Defines.mak
-
-# ----------------------------------------------------------------------
-
-all: common-components
-
-build: common-components
-
-# ----------------------------------------------------------------------
-
-common-components: compile install
-# $(COPY) keyman_components.bpl $(OUTLIB)
-
-compile:
- @-mkdir obj\Win32\$(TARGET_PATH)
- $(COMMON_DCC32DPK) common_components.dpk
-
-install:
- $(DEVTOOLS) -ip $(COMMON_OUTLIB)\common_components.bpl
-
-signcode:
- @rem no signcode
-
-symbols:
- @rem no symbols
-
-# ----------------------------------------------------------------------
-# clean target
-# ----------------------------------------------------------------------
-
-clean: def-clean
- -rd /s/q obj
-
-# ----------------------------------------------------------------------
-
-!include ..\Target.mak
-
-# ----------------------------------------------------------------------
-# EOF
-# ----------------------------------------------------------------------
diff --git a/common/windows/delphi/components/build.sh b/common/windows/delphi/components/build.sh
new file mode 100755
index 0000000000..0b8fa1e83c
--- /dev/null
+++ b/common/windows/delphi/components/build.sh
@@ -0,0 +1,34 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../../resources/build/build-utils.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe "Build Keyman common Delphi components" clean configure build test
+builder_parse "$@"
+
+#-------------------------------------------------------------------------------------------------------------------
+
+source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
+
+builder_describe_outputs \
+ configure:project /resources/build/win/delphi_environment_generated.inc.sh \
+ build:project /common/windows/lib/common_components.bpl
+
+#-------------------------------------------------------------------------------------------------------------------
+
+function do_clean() {
+ rm -rf obj manifest.res manifest.xml *.dproj.local version.res icons.RES icons.res *.identcache
+}
+
+function do_build() {
+ mkdir -p obj/Win32/$TARGET_PATH
+ delphi_msbuild common_components.dproj "//p:Platform=Win32"
+ "$DEVTOOLS" -ip "$COMMON_OUTLIB/common_components.bpl"
+}
+
+builder_run_action clean:project do_clean
+builder_run_action configure:project configure_windows_build_environment
+builder_run_action build:project do_build
+# builder_run_action test:project do_test
diff --git a/common/windows/delphi/ext/Makefile b/common/windows/delphi/ext/Makefile
deleted file mode 100644
index 236cdb0b64..0000000000
--- a/common/windows/delphi/ext/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# Keyman ext Makefile - 3rd party components
-#
-
-NOTARGET_SIGNCODE=yes
-
-!ifdef NODELPHI
-TARGETS=.virtual
-!else
-TARGETS=cef4delphi dcpcrypt jwa tds2dbg
-!endif
-
-# jedi has no packages
-
-CLEANS=
-
-!include ..\Header.mak
-
-# ----------------------------------------------------------------------
-
-cef4delphi: .virtual
- cd $(COMMON_ROOT)\ext\cef4delphi
- $(MAKE) $(TARGET)
-
-dcpcrypt: .virtual
- cd $(COMMON_ROOT)\ext\dcpcrypt
- $(MAKE) $(TARGET)
-
-jwa: .virtual
- cd $(COMMON_ROOT)\ext\jwa
- $(MAKE) $(TARGET)
-
-tds2dbg: .virtual
- cd $(COMMON_ROOT)\ext\tds2dbg
- $(MAKE) $(TARGET)
-
-#
-#
-#
-
-reset:
- $(DEVTOOLS) -rp
- $(DEVTOOLS) -ri
-
-!include ..\Target.mak
-
-# ----------------------------------------------------------------------
-# EOF
-# ----------------------------------------------------------------------
diff --git a/common/windows/delphi/ext/build.sh b/common/windows/delphi/ext/build.sh
new file mode 100755
index 0000000000..bada986871
--- /dev/null
+++ b/common/windows/delphi/ext/build.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../../resources/build/build-utils.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe \
+ "Build Keyman Developer third party components" \
+ clean configure build test reset \
+ :cef4delphi :dcpcrypt :jwa :sentry :tds2dbg
+
+builder_parse "$@"
+builder_run_child_actions clean configure build test
+
+# Note: 'api', 'publish', 'install' actions are defined here for commonality with
+# sibling projects but are no-ops
+
+function do_reset() {
+ "$DEVTOOLS" -rp
+ "$DEVTOOLS" -ri
+}
+
+builder_run_action reset do_reset
diff --git a/common/windows/delphi/ext/cef4delphi/Makefile b/common/windows/delphi/ext/cef4delphi/Makefile
deleted file mode 100644
index 6347ab1353..0000000000
--- a/common/windows/delphi/ext/cef4delphi/Makefile
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# Cef4Delphi Makefile (Keyman)
-#
-
-!include ..\..\Defines.mak
-
-build:
- cd packages
- @-mkdir obj\Win32\$(TARGET_PATH)
- $(DCC32DPK) CEF4Delphi.dpk
- cd ..
- $(MAKE) install
-
-install:
- $(DEVTOOLS) -ip $(OUTLIB)\CEF4Delphi.bpl
- $(DEVTOOLS) -ai $(KEYMAN_ROOT)\common\windows\delphi\ext\cef4delphi\source
-
-clean: def-clean
- $(CLEAN) packages\*.bpl
- $(CLEAN) packages\*.dcp
-
-!include ..\..\Target.mak
diff --git a/common/windows/delphi/ext/cef4delphi/build.sh b/common/windows/delphi/ext/cef4delphi/build.sh
new file mode 100755
index 0000000000..28c7327236
--- /dev/null
+++ b/common/windows/delphi/ext/cef4delphi/build.sh
@@ -0,0 +1,34 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../../../resources/build/build-utils.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe "Build cef4delphi component" clean configure build test
+builder_parse "$@"
+
+#-------------------------------------------------------------------------------------------------------------------
+
+source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
+
+builder_describe_outputs \
+ configure:project /resources/build/win/delphi_environment_generated.inc.sh \
+ build:project /common/windows/lib/CEF4Delphi.bpl
+
+#-------------------------------------------------------------------------------------------------------------------
+
+function do_clean() {
+ rm -rf obj manifest.res manifest.xml *.dproj.local version.res icons.RES icons.res *.identcache
+}
+
+function do_build() {
+ "$DEVTOOLS" -ai "$THIS_SCRIPT_PATH/source"
+ delphi_msbuild packages/CEF4Delphi.dproj "//p:Platform=Win32"
+ "$DEVTOOLS" -ip "$OUTLIB/CEF4Delphi.bpl"
+}
+
+builder_run_action clean:project do_clean
+builder_run_action configure:project configure_windows_build_environment
+builder_run_action build:project do_build
+# builder_run_action test:project do_test
diff --git a/common/windows/delphi/ext/cef4delphi/packages/CEF4Delphi.dproj b/common/windows/delphi/ext/cef4delphi/packages/CEF4Delphi.dproj
index 70b88cdfd4..ed4b75a61f 100644
--- a/common/windows/delphi/ext/cef4delphi/packages/CEF4Delphi.dproj
+++ b/common/windows/delphi/ext/cef4delphi/packages/CEF4Delphi.dproj
@@ -63,8 +63,10 @@
CEF4Delphi
true
true
- .\$(Platform)\$(Config)
- .\$(Platform)\$(Config)
+ .\obj\$(Platform)\$(Config)
+ .\bin\$(Platform)\$(Config)
+ ..\..\..\..\lib
+ ..\..\..\..\lib
false
false
false
diff --git a/common/windows/delphi/ext/dcpcrypt/Makefile b/common/windows/delphi/ext/dcpcrypt/Makefile
deleted file mode 100644
index 976528c327..0000000000
--- a/common/windows/delphi/ext/dcpcrypt/Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# DcpCrypt Makefile (Tavultesoft)
-#
-
-!include ..\..\Defines.mak
-
-build: install
-
-install:
- $(DEVTOOLS) -ai $(COMMON_ROOT)\ext\dcpcrypt
-
-clean: def-clean
- $(CLEAN) *.bpl
- $(CLEAN) *.dcp
-
-!include ..\..\Target.mak
diff --git a/common/windows/delphi/ext/dcpcrypt/build.sh b/common/windows/delphi/ext/dcpcrypt/build.sh
new file mode 100755
index 0000000000..f9f74f302d
--- /dev/null
+++ b/common/windows/delphi/ext/dcpcrypt/build.sh
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../../../resources/build/build-utils.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe "Build dcpcrypt component" clean configure build test
+builder_parse "$@"
+
+#-------------------------------------------------------------------------------------------------------------------
+
+source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
+
+builder_describe_outputs \
+ configure:project /resources/build/win/delphi_environment_generated.inc.sh
+
+#-------------------------------------------------------------------------------------------------------------------
+
+function do_clean() {
+ rm -rf obj manifest.res manifest.xml *.dproj.local version.res icons.RES icons.res *.identcache
+}
+
+function do_build() {
+ "$DEVTOOLS" -ai "$THIS_SCRIPT_PATH"
+}
+
+builder_run_action clean:project do_clean
+builder_run_action configure:project configure_windows_build_environment
+builder_run_action build:project do_build
+# builder_run_action test:project do_test
diff --git a/common/windows/delphi/ext/jwa/Makefile b/common/windows/delphi/ext/jwa/Makefile
deleted file mode 100644
index 1fa483d215..0000000000
--- a/common/windows/delphi/ext/jwa/Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# jedi/jwa Makefile (Keyman project)
-#
-
-!include ..\..\Defines.mak
-
-build: install-paths
-install: install-paths
-
-install-paths:
- $(DEVTOOLS) -ai $(COMMON_ROOT)\ext\jwa\Win32API
-
-clean:
- rem
-
-!include ..\..\Target.mak
diff --git a/common/windows/delphi/ext/jwa/build.sh b/common/windows/delphi/ext/jwa/build.sh
new file mode 100755
index 0000000000..857c548977
--- /dev/null
+++ b/common/windows/delphi/ext/jwa/build.sh
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../../../resources/build/build-utils.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe "Build jwa component" clean configure build test
+builder_parse "$@"
+
+#-------------------------------------------------------------------------------------------------------------------
+
+source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
+
+builder_describe_outputs \
+ configure:project /resources/build/win/delphi_environment_generated.inc.sh
+
+#-------------------------------------------------------------------------------------------------------------------
+
+function do_clean() {
+ rm -rf obj manifest.res manifest.xml *.dproj.local version.res icons.RES icons.res *.identcache
+}
+
+function do_build() {
+ "$DEVTOOLS" -ai "$THIS_SCRIPT_PATH/Win32API"
+}
+
+builder_run_action clean:project do_clean
+builder_run_action configure:project configure_windows_build_environment
+builder_run_action build:project do_build
+# builder_run_action test:project do_test
diff --git a/common/windows/delphi/ext/sentry/build.sh b/common/windows/delphi/ext/sentry/build.sh
new file mode 100755
index 0000000000..994504ad5e
--- /dev/null
+++ b/common/windows/delphi/ext/sentry/build.sh
@@ -0,0 +1,50 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../../../resources/build/build-utils.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe "Build sentry component" clean configure build test
+builder_parse "$@"
+
+#-------------------------------------------------------------------------------------------------------------------
+
+source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
+
+builder_describe_outputs \
+ configure:project /resources/build/win/delphi_environment_generated.inc.sh
+ # build:project /common/windows/lib/CEF4Delphi.bpl
+
+#-------------------------------------------------------------------------------------------------------------------
+
+function do_clean() {
+ rm -rf obj manifest.res manifest.xml *.dproj.local version.res icons.RES icons.res *.identcache
+}
+
+function do_build() {
+ "$DEVTOOLS" -ai "$THIS_SCRIPT_PATH/source"
+ delphi_msbuild packages/CEF4Delphi.dproj "//p:Platform=Win32"
+ "$DEVTOOLS" -ip "$OUTLIB/CEF4Delphi.bpl"
+}
+
+function do_test() {
+ # TODO: this does not currently seem to be tested or used
+ cd test
+ delphi_msbuild SentryClientTest.dproj "//p:Platform=Win32"
+ delphi_msbuild SentryClientVclTest.dproj "//p:Platform=Win32"
+
+ sentrytool_delphiprep "$WIN32_TARGET_PATH/SentryClientTest.exe" -dpr SentryClientTest.dpr
+ sentrytool_delphiprep "$WIN32_TARGET_PATH/SentryClientVclTest.exe" -dpr SentryClientVclTest.dpr
+ tds2dbg "$WIN32_TARGET_PATH/SentryClientTest.exe"
+ tds2dbg "$WIN32_TARGET_PATH/SentryClientVclTest.exe"
+
+ sentry-cli upload-dif -p keyman-windows --wait --include-sources .
+
+ cd ..
+}
+
+# builder_run_action clean:project do_clean
+builder_run_action configure:project configure_windows_build_environment
+# builder_run_action build:project do_build
+# builder_run_action test:project do_test
diff --git a/common/windows/delphi/ext/sentry/test/Makefile b/common/windows/delphi/ext/sentry/test/Makefile
deleted file mode 100644
index b2e92bb896..0000000000
--- a/common/windows/delphi/ext/sentry/test/Makefile
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# SentryClientTest Makefile
-#
-
-!include ..\..\..\Defines.mak
-
-build: dirs
-# version.res manifest.res
- $(DELPHI_MSBUILD) SentryClientTest.dproj "/p:Platform=Win32"
- $(DELPHI_MSBUILD) SentryClientVclTest.dproj "/p:Platform=Win32"
-
- $(SENTRYTOOL_DELPHIPREP) $(WIN32_TARGET_PATH)\SentryClientTest.exe -dpr SentryClientTest.dpr
- $(SENTRYTOOL_DELPHIPREP) $(WIN32_TARGET_PATH)\SentryClientVclTest.exe -dpr SentryClientVclTest.dpr
- $(TDS2DBG) $(WIN32_TARGET_PATH)\SentryClientTest.exe
- $(TDS2DBG) $(WIN32_TARGET_PATH)\SentryClientVclTest.exe
-
-upload-symbols:
- sentry-cli upload-dif -p keyman-windows --wait --include-sources .
-
-clean: def-clean
- -rd /s/q Win32
-
-signcode:
- rem no action
-
-!include ..\..\..\Target.mak
diff --git a/common/windows/delphi/ext/tds2dbg/Makefile b/common/windows/delphi/ext/tds2dbg/Makefile
index 27f5f22351..e01296837e 100644
--- a/common/windows/delphi/ext/tds2dbg/Makefile
+++ b/common/windows/delphi/ext/tds2dbg/Makefile
@@ -1,19 +1,6 @@
-
-!include ..\..\Defines.mak
-
-build:
- -mkdir $(WIN32_TARGET_PATH)
- $(COPY) tds2dbg.bin $(WIN32_TARGET_PATH)\tds2dbg.exe
- $(MAKE) install
-
-install:
- -mkdir $(KEYMAN_ROOT)\common\windows\bin\tools
- $(COPY) $(WIN32_TARGET_PATH)\tds2dbg.exe $(KEYMAN_ROOT)\common\windows\bin\tools
-
-#
-# The following builds require Borland C++ compiler to be installed and in the path; see Readme.txt for details.
-# So, the tds2dbg.bin is kept in the repo in order to make builds simpler
-#
+info:
+ echo The following builds require Borland C++ compiler to be installed and in the path; see Readme.txt for details.
+ echo So, the tds2dbg.bin is kept in the repo in order to make builds simpler
BCC55DIR=c:\borland\bcc55
@@ -33,5 +20,3 @@ clean:
doc:
doxygen tds2dbg.dcf
-
-!include ..\..\Target.mak
diff --git a/common/windows/delphi/ext/tds2dbg/build.sh b/common/windows/delphi/ext/tds2dbg/build.sh
new file mode 100755
index 0000000000..5e21d003b5
--- /dev/null
+++ b/common/windows/delphi/ext/tds2dbg/build.sh
@@ -0,0 +1,36 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../../../resources/build/build-utils.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe "Build tds2dbg component" clean configure build test
+builder_parse "$@"
+
+#-------------------------------------------------------------------------------------------------------------------
+
+source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
+
+builder_describe_outputs \
+ configure:project /resources/build/win/delphi_environment_generated.inc.sh \
+ build:project "$WIN32_TARGET_PATH/tds2dbg.exe"
+
+#-------------------------------------------------------------------------------------------------------------------
+
+function do_clean() {
+ rm -rf obj manifest.res manifest.xml *.dproj.local version.res icons.RES icons.res *.identcache
+}
+
+function do_build() {
+ mkdir -p "$WIN32_TARGET_PATH"
+ cp tds2dbg.bin "$WIN32_TARGET_PATH/tds2dbg.exe"
+
+ mkdir -p "$KEYMAN_ROOT/common/windows/bin/tools"
+ cp "$WIN32_TARGET_PATH/tds2dbg.exe" "$KEYMAN_ROOT/common/windows/bin/tools/"
+}
+
+builder_run_action clean:project do_clean
+builder_run_action configure:project configure_windows_build_environment
+builder_run_action build:project do_build
+# builder_run_action test:project do_test
diff --git a/common/windows/delphi/tools/Makefile b/common/windows/delphi/tools/Makefile
deleted file mode 100644
index 2ea11ab237..0000000000
--- a/common/windows/delphi/tools/Makefile
+++ /dev/null
@@ -1,57 +0,0 @@
-#
-# Keyman common tools Makefile
-#
-
-NOTARGET_SIGNCODE=yes
-
-!ifdef NODELPHI
-TARGETS=.virtual
-!else
-TARGETS=build_standards_data buildunidata devtools sentrytool test-klog verify_signatures
-!endif
-
-CLEANS=clean-tools
-
-!include ..\Header.mak
-
-# ----------------------------------------------------------------------
-
-build_standards_data: .virtual
- cd $(COMMON_ROOT)\tools\build_standards_data
- $(MAKE) $(TARGET)
-
-sentrytool: .virtual
- cd $(COMMON_ROOT)\tools\sentrytool
- $(MAKE) $(TARGET)
-
-buildunidata: .virtual
- cd $(COMMON_ROOT)\tools\buildunidata
- $(MAKE) $(TARGET)
-
-verify_signatures: .virtual
- cd $(COMMON_ROOT)\tools\verify_signatures
- $(MAKE) $(TARGET)
-
-devtools: .virtual
-!ifdef NODELPHI
- echo Skipping devtools
-!else
- cd $(COMMON_ROOT)\tools\devtools
- $(MAKE) $(TARGET)
-!endif
-
-test-klog: .virtual
- cd $(COMMON_ROOT)\tools\test-klog
- $(MAKE) $(TARGET)
-
-# ----------------------------------------------------------------------
-
-clean-tools:
- cd $(COMMON_ROOT)\tools
- -del version.txt
-
-!include ..\Target.mak
-
-# ----------------------------------------------------------------------
-# EOF
-# ----------------------------------------------------------------------
diff --git a/common/windows/delphi/tools/build.sh b/common/windows/delphi/tools/build.sh
new file mode 100755
index 0000000000..7d0e2a0626
--- /dev/null
+++ b/common/windows/delphi/tools/build.sh
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../../resources/build/build-utils.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe \
+ "Build Keyman Developer common tools" \
+ clean configure build test \
+ :build_standards_data :buildunidata :devtools :sentrytool :test-klog :verify_signatures
+
+builder_parse "$@"
+builder_run_child_actions clean configure build test
diff --git a/common/windows/delphi/tools/build_standards_data/Makefile b/common/windows/delphi/tools/build_standards_data/Makefile
deleted file mode 100644
index 14e0632777..0000000000
--- a/common/windows/delphi/tools/build_standards_data/Makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Build all generated source code for standards data
-#
-
-!include ..\..\Defines.mak
-
-test: build
-
-STANDARDS_DATA_PATH=$(KEYMAN_ROOT)\resources\standards-data
-STANDARDS_OUT_PATH=$(KEYMAN_ROOT)\common\windows\delphi\standards
-
-ISO6393_DATA=$(STANDARDS_DATA_PATH)\iso639-3\iso639-3.tab
-ISO6393_PAS=$(STANDARDS_OUT_PATH)\Keyman.System.Standards.ISO6393ToBCP47Registry.pas
-
-SUBTAG_DATA=$(STANDARDS_DATA_PATH)\language-subtag-registry\language-subtag-registry
-SUBTAG_PAS=$(STANDARDS_OUT_PATH)\Keyman.System.Standards.BCP47SubtagRegistry.pas
-
-SUPPRESS_DATA=$(STANDARDS_DATA_PATH)\language-subtag-registry\language-subtag-registry
-SUPPRESS_PAS=$(STANDARDS_OUT_PATH)\Keyman.System.Standards.BCP47SuppressScriptRegistry.pas
-
-LCID_DATA=$(STANDARDS_DATA_PATH)\windows-lcid-to-bcp-47\map_clean_win.txt
-LCID_PAS=$(STANDARDS_OUT_PATH)\Keyman.System.Standards.LCIDToBCP47Registry.pas
-
-LANGTAGS_DATA=$(STANDARDS_DATA_PATH)\langtags\langtags.json
-LANGTAGS_PAS=$(STANDARDS_OUT_PATH)\Keyman.System.Standards.LangTagsRegistry.pas
-
-build:
- $(DELPHI_MSBUILD) build_standards_data.dproj
- $(WIN32_TARGET_PATH)\build_standards_data.exe iso6393 $(ISO6393_DATA) $(ISO6393_PAS)
- $(WIN32_TARGET_PATH)\build_standards_data.exe suppress $(SUPPRESS_DATA) $(SUPPRESS_PAS)
- $(WIN32_TARGET_PATH)\build_standards_data.exe subtag $(SUBTAG_DATA) $(SUBTAG_PAS)
- $(WIN32_TARGET_PATH)\build_standards_data.exe lcid $(LCID_DATA) $(LCID_PAS)
- $(WIN32_TARGET_PATH)\build_standards_data.exe langtags $(LANGTAGS_DATA) $(LANGTAGS_PAS)
-
-clean: def-clean
-# -rd /s/q Win32
-
-!include ..\..\Target.mak
diff --git a/common/windows/delphi/tools/build_standards_data/build.sh b/common/windows/delphi/tools/build_standards_data/build.sh
new file mode 100755
index 0000000000..e4831b85c9
--- /dev/null
+++ b/common/windows/delphi/tools/build_standards_data/build.sh
@@ -0,0 +1,55 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../../../resources/build/build-utils.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe "Build build_standards_data tool" clean configure build test
+builder_parse "$@"
+
+#-------------------------------------------------------------------------------------------------------------------
+
+source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
+
+builder_describe_outputs \
+ configure:project /resources/build/win/delphi_environment_generated.inc.sh \
+ build:project /common/windows/delphi/standards/Keyman.System.Standards.LangTagsRegistry.pas
+
+#-------------------------------------------------------------------------------------------------------------------
+
+function do_clean() {
+ rm -rf obj manifest.res manifest.xml *.dproj.local version.res icons.RES icons.res *.identcache
+}
+
+STANDARDS_DATA_PATH="$KEYMAN_ROOT/resources/standards-data"
+STANDARDS_OUT_PATH="$KEYMAN_ROOT/common/windows/delphi/standards"
+
+ISO6393_DATA="$STANDARDS_DATA_PATH/iso639-3/iso639-3.tab"
+ISO6393_PAS="$STANDARDS_OUT_PATH/Keyman.System.Standards.ISO6393ToBCP47Registry.pas"
+
+SUBTAG_DATA="$STANDARDS_DATA_PATH/language-subtag-registry/language-subtag-registry"
+SUBTAG_PAS="$STANDARDS_OUT_PATH/Keyman.System.Standards.BCP47SubtagRegistry.pas"
+
+SUPPRESS_DATA="$STANDARDS_DATA_PATH/language-subtag-registry/language-subtag-registry"
+SUPPRESS_PAS="$STANDARDS_OUT_PATH/Keyman.System.Standards.BCP47SuppressScriptRegistry.pas"
+
+LCID_DATA="$STANDARDS_DATA_PATH/windows-lcid-to-bcp-47/map_clean_win.txt"
+LCID_PAS="$STANDARDS_OUT_PATH/Keyman.System.Standards.LCIDToBCP47Registry.pas"
+
+LANGTAGS_DATA="$STANDARDS_DATA_PATH/langtags/langtags.json"
+LANGTAGS_PAS="$STANDARDS_OUT_PATH/Keyman.System.Standards.LangTagsRegistry.pas"
+
+function do_build() {
+ delphi_msbuild build_standards_data.dproj "//p:Platform=Win32"
+ "$WIN32_TARGET_PATH/build_standards_data.exe" iso6393 "$ISO6393_DATA" "$ISO6393_PAS"
+ "$WIN32_TARGET_PATH/build_standards_data.exe" suppress "$SUPPRESS_DATA" "$SUPPRESS_PAS"
+ "$WIN32_TARGET_PATH/build_standards_data.exe" subtag "$SUBTAG_DATA" "$SUBTAG_PAS"
+ "$WIN32_TARGET_PATH/build_standards_data.exe" lcid "$LCID_DATA" "$LCID_PAS"
+ "$WIN32_TARGET_PATH/build_standards_data.exe" langtags "$LANGTAGS_DATA" "$LANGTAGS_PAS"
+}
+
+builder_run_action clean:project do_clean
+builder_run_action configure:project configure_windows_build_environment
+builder_run_action build:project do_build
+# builder_run_action test:project do_test
diff --git a/common/windows/delphi/tools/buildunidata/Makefile b/common/windows/delphi/tools/buildunidata/Makefile
deleted file mode 100644
index 0e754c11be..0000000000
--- a/common/windows/delphi/tools/buildunidata/Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# buildunidata Makefile
-#
-
-!include ..\..\Defines.mak
-
-build:
- $(DELPHI_MSBUILD) buildunidata.dproj "/p:Platform=Win32"
-
-run:
- -mkdir $(KEYMAN_ROOT)\common\windows\bin\data
- $(WIN32_TARGET_PATH)\buildunidata.exe $(KEYMAN_ROOT)\common\windows\data $(KEYMAN_ROOT)\common\windows\bin\data\unicodedata.mdb
-
-clean: def-clean
-
-!include ..\..\Target.mak
diff --git a/common/windows/delphi/tools/buildunidata/build.sh b/common/windows/delphi/tools/buildunidata/build.sh
new file mode 100755
index 0000000000..fa96a82192
--- /dev/null
+++ b/common/windows/delphi/tools/buildunidata/build.sh
@@ -0,0 +1,33 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../../../resources/build/build-utils.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe "Build buildunidata tool" clean configure build test
+builder_parse "$@"
+
+#-------------------------------------------------------------------------------------------------------------------
+
+source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
+
+builder_describe_outputs \
+ configure:project /resources/build/win/delphi_environment_generated.inc.sh \
+ build:project /common/windows/delphi/tools/buildunidata/$WIN32_TARGET_PATH/buildunidata.exe
+
+#-------------------------------------------------------------------------------------------------------------------
+
+function do_clean() {
+ rm -rf obj manifest.res manifest.xml *.dproj.local version.res icons.RES icons.res *.identcache
+}
+
+function do_build() {
+ delphi_msbuild buildunidata.dproj "//p:Platform=Win32"
+ # "$WIN32_TARGET_PATH/buildunidata.exe" "$KEYMAN_ROOT/common/windows/data" "$KEYMAN_ROOT/common/windows/bin/data/unicodedata.mdb"
+}
+
+builder_run_action clean:project do_clean
+builder_run_action configure:project configure_windows_build_environment
+builder_run_action build:project do_build
+# builder_run_action test:project do_test
diff --git a/common/windows/delphi/tools/certificates/Makefile b/common/windows/delphi/tools/certificates/Makefile
deleted file mode 100644
index 26155b0e4e..0000000000
--- a/common/windows/delphi/tools/certificates/Makefile
+++ /dev/null
@@ -1,22 +0,0 @@
-!include ..\..\Defines.mak
-
-default:
- @echo The following make targets are available:
- @echo . test-certificate create a test certificate + CA (and install test CA)
-
-test-certificate:
- cd $(COMMON_ROOT)\tools\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
diff --git a/common/windows/delphi/tools/certificates/build.sh b/common/windows/delphi/tools/certificates/build.sh
new file mode 100755
index 0000000000..2cd3871cbd
--- /dev/null
+++ b/common/windows/delphi/tools/certificates/build.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../../../resources/build/build-utils.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe "Build and install test certificates" clean configure build test \
+ "certificates Create test certificates and install root certificates"
+builder_parse "$@"
+
+#-------------------------------------------------------------------------------------------------------------------
+
+source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
+
+builder_describe_outputs \
+ configure:project /resources/build/win/delphi_environment_generated.inc.sh
+
+#-------------------------------------------------------------------------------------------------------------------
+
+function do_certificates() {
+ rm -f KeymanTestCA-sha1.* KeymanTest-sha1.* KeymanTest-sha256.* 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
+}
+
+#builder_run_action clean:project do_clean
+#builder_run_action configure:project configure_windows_build_environment
+#builder_run_action build:project do_build
+builder_run_action certificates:project do_certificates
+# builder_run_action test:project do_test
diff --git a/common/windows/delphi/tools/devtools/Makefile b/common/windows/delphi/tools/devtools/Makefile
deleted file mode 100644
index 9a8856f559..0000000000
--- a/common/windows/delphi/tools/devtools/Makefile
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Devtools Makefile
-#
-
-#
-# Devtools is used to create PathDefines.mak, so
-# it may not be present when we build. So as we
-# don't need it for the build, let's go ahead and
-# delete it (Devtools has all dependencies
-# referenced explictly to avoid chicken-and-egg
-# here).
-#
-EXCLUDEPATHDEFINES=1
-
-!include ..\..\Defines.mak
-
-build:
- $(DELPHI_MSBUILD) devtools.dproj
-
-test-releasebuildcheck: build
- $(DEVTOOLS) -rt
-
-clean: def-clean
-
-!include ..\..\Target.mak
diff --git a/common/windows/delphi/tools/devtools/build.sh b/common/windows/delphi/tools/devtools/build.sh
new file mode 100755
index 0000000000..fd4ced99b9
--- /dev/null
+++ b/common/windows/delphi/tools/devtools/build.sh
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../../../resources/build/build-utils.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe "Build devtools tool" clean configure build test
+builder_parse "$@"
+
+#-------------------------------------------------------------------------------------------------------------------
+
+source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
+
+builder_describe_outputs \
+ configure:project /resources/build/win/delphi_environment_generated.inc.sh \
+ build:project /common/windows/delphi/tools/devtools/$WIN32_TARGET_PATH/devtools.exe
+
+#-------------------------------------------------------------------------------------------------------------------
+
+function do_clean() {
+ rm -rf obj manifest.res manifest.xml *.dproj.local version.res icons.RES icons.res *.identcache
+}
+
+function do_build() {
+ delphi_msbuild devtools.dproj "//p:Platform=Win32"
+ # "$WIN32_TARGET_PATH/buildunidata.exe" "$KEYMAN_ROOT/common/windows/data" "$KEYMAN_ROOT/common/windows/bin/data/unicodedata.mdb"
+}
+
+builder_run_action clean:project do_clean
+builder_run_action configure:project configure_windows_build_environment
+builder_run_action build:project do_build
+# builder_run_action test:project do_test
+
+# TODO
+#: test-releasebuildcheck: build
+# $(DEVTOOLS) -rt
diff --git a/common/windows/delphi/tools/sentrytool/Makefile b/common/windows/delphi/tools/sentrytool/Makefile
deleted file mode 100644
index 30326362d0..0000000000
--- a/common/windows/delphi/tools/sentrytool/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-#
-# Sentrytool Makefile
-#
-
-!include ..\..\Defines.mak
-
-build:
- $(DELPHI_MSBUILD) sentrytool.dproj "/p:Platform=Win32"
-
-clean: def-clean
-
-!include ..\..\Target.mak
diff --git a/common/windows/delphi/tools/sentrytool/build.sh b/common/windows/delphi/tools/sentrytool/build.sh
new file mode 100755
index 0000000000..c3c5af9407
--- /dev/null
+++ b/common/windows/delphi/tools/sentrytool/build.sh
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../../../resources/build/build-utils.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe "Build sentrytool tool" clean configure build test
+builder_parse "$@"
+
+#-------------------------------------------------------------------------------------------------------------------
+
+source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
+
+builder_describe_outputs \
+ configure:project /resources/build/win/delphi_environment_generated.inc.sh \
+ build:project /common/windows/delphi/tools/sentrytool/$WIN32_TARGET_PATH/sentrytool.exe
+
+#-------------------------------------------------------------------------------------------------------------------
+
+function do_clean() {
+ rm -rf obj manifest.res manifest.xml *.dproj.local version.res icons.RES icons.res *.identcache
+}
+
+function do_build() {
+ delphi_msbuild sentrytool.dproj "//p:Platform=Win32"
+}
+
+builder_run_action clean:project do_clean
+builder_run_action configure:project configure_windows_build_environment
+builder_run_action build:project do_build
+# builder_run_action test:project do_test
diff --git a/common/windows/delphi/tools/test-klog/Makefile b/common/windows/delphi/tools/test-klog/Makefile
deleted file mode 100644
index d8a27cbf68..0000000000
--- a/common/windows/delphi/tools/test-klog/Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# Verify klog is disabled
-#
-
-!include ..\..\Defines.mak
-
-verify: clean
- $(DELPHI_MSBUILD) test_klog.dproj "/p:Platform=Win32"
- $(WIN32_TARGET_PATH)\test_klog
-
-build:
- rem no build for test_certcheck
-
-clean: def-clean
-
-!include ..\..\Target.mak
diff --git a/common/windows/delphi/tools/test-klog/build.sh b/common/windows/delphi/tools/test-klog/build.sh
new file mode 100755
index 0000000000..7c9f801a15
--- /dev/null
+++ b/common/windows/delphi/tools/test-klog/build.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../../../resources/build/build-utils.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe "Build test-klog tool" clean configure build test verify
+builder_parse "$@"
+
+#-------------------------------------------------------------------------------------------------------------------
+
+source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
+
+builder_describe_outputs \
+ configure:project /resources/build/win/delphi_environment_generated.inc.sh \
+ build:project /common/windows/delphi/tools/sentrytool/$WIN32_TARGET_PATH/sentrytool.exe
+
+#-------------------------------------------------------------------------------------------------------------------
+
+function do_clean() {
+ rm -rf obj manifest.res manifest.xml *.dproj.local version.res icons.RES icons.res *.identcache
+}
+
+function do_verify() {
+ # verify that the klog module is disabled for release builds
+ do_clean
+ delphi_msbuild test_klog.dproj "//p:Platform=Win32"
+ "$WIN32_TARGET_PATH/test_klog.exe"
+}
+
+builder_run_action clean:project do_clean
+builder_run_action configure:project configure_windows_build_environment
+# builder_run_action build:project do_build
+# builder_run_action test:project do_test
+
+# Kept separate from test as this is not so much a unit test as an environment
+# safety check
+builder_run_action verify:project do_verify
diff --git a/common/windows/delphi/tools/verify_signatures/Makefile b/common/windows/delphi/tools/verify_signatures/Makefile
deleted file mode 100644
index 0f67747665..0000000000
--- a/common/windows/delphi/tools/verify_signatures/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# test for signatures and version information being correct in ?install directory or ?bin directory
-#
-
-!include ..\..\Defines.mak
-
-build:
- $(DELPHI_MSBUILD) verify_signatures.dproj
- copy sigcheck.bin $(WIN32_TARGET_PATH)\sigcheck.exe
-
-clean: def-clean
-
-!include ..\..\Target.mak
diff --git a/common/windows/delphi/tools/verify_signatures/build.sh b/common/windows/delphi/tools/verify_signatures/build.sh
new file mode 100755
index 0000000000..05aa948df7
--- /dev/null
+++ b/common/windows/delphi/tools/verify_signatures/build.sh
@@ -0,0 +1,33 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../../../resources/build/build-utils.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe "Build verify_signatures tool" clean configure build test verify
+builder_parse "$@"
+
+#-------------------------------------------------------------------------------------------------------------------
+
+source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
+
+builder_describe_outputs \
+ configure:project /resources/build/win/delphi_environment_generated.inc.sh \
+ build:project /common/windows/delphi/tools/verify_signatures/$WIN32_TARGET_PATH/verify_signatures.exe
+
+#-------------------------------------------------------------------------------------------------------------------
+
+function do_clean() {
+ rm -rf obj manifest.res manifest.xml *.dproj.local version.res icons.RES icons.res *.identcache
+}
+
+function do_build() {
+ delphi_msbuild verify_signatures.dproj "//p:Platform=Win32"
+ cp sigcheck.bin "$WIN32_TARGET_PATH/sigcheck.exe"
+}
+
+builder_run_action clean:project do_clean
+builder_run_action configure:project configure_windows_build_environment
+builder_run_action build:project do_build
+# builder_run_action test:project do_test
diff --git a/developer/src/Defines.mak b/developer/src/Defines.mak
deleted file mode 100644
index 5ac74ce1b8..0000000000
--- a/developer/src/Defines.mak
+++ /dev/null
@@ -1,22 +0,0 @@
-!IFNDEF KEYMAN_ROOT
-!error KEYMAN_ROOT must be defined
-!ENDIF
-
-WINDOWS_ROOT=$(KEYMAN_ROOT)\windows
-WINDOWS_PROGRAM=$(WINDOWS_ROOT)\bin
-
-COMMON_ROOT=$(KEYMAN_ROOT)\common\windows\delphi
-
-DEVELOPER_ROOT=$(KEYMAN_ROOT)\developer
-DEVELOPER_PROGRAM=$(DEVELOPER_ROOT)\bin
-DEVELOPER_OUTLIB=$(DEVELOPER_ROOT)\lib
-DEVELOPER_DEBUGPATH=$(DEVELOPER_ROOT)\debug
-
-DEVELOPER_DELPHIDPKPARAMS=-Q -B -GD -VT -^$C+ -^$D+ -^$J+ -^$L+ -^$O+ -^$Q- -^$R- -^$W+ -^$Y+ -E. $(DELPHIWARNINGS) -I$(DELPHIINCLUDES) -U$(DELPHIINCLUDES) -R$(DELPHIINCLUDES) -NSVcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Web;Soap;Winapi;System.Win -LE$(DEVELOPER_OUTLIB) -LN$(DEVELOPER_OUTLIB) -NSData -NUobj\Win32\$(TARGET_PATH)
-DEVELOPER_DCC32DPK=cmd /c "$(DCC32PATH)\dcc32.exe" $(DEVELOPER_DELPHIDPKPARAMS)
-
-# Temporary import of windows/src/Defines.mak
-# TODO: include COMMON_ROOT's defines.mak instead
-!include $(WINDOWS_ROOT)\src\Defines.mak
-
-KEYMANCORE=keymancore-2
diff --git a/developer/src/Header.mak b/developer/src/Header.mak
deleted file mode 100644
index 5d142d1941..0000000000
--- a/developer/src/Header.mak
+++ /dev/null
@@ -1,14 +0,0 @@
-!IFNDEF KEYMAN_ROOT
-!error KEYMAN_ROOT must be defined
-!ENDIF
-
-WINDOWS_ROOT=$(KEYMAN_ROOT)\windows
-WINDOWS_PROGRAM=$(WINDOWS_ROOT)\bin
-
-DEVELOPER_ROOT=$(KEYMAN_ROOT)\developer
-DEVELOPER_PROGRAM=$(DEVELOPER_ROOT)\bin
-DEVELOPER_OUTLIB=$(DEVELOPER_ROOT)\lib
-DEVELOPER_DEBUGPATH=$(DEVELOPER_ROOT)\debug
-
-# Temporary import of windows/src/Header.mak
-!include $(WINDOWS_ROOT)\src\Header.mak
diff --git a/developer/src/Makefile b/developer/src/Makefile
deleted file mode 100644
index d7ee0e1199..0000000000
--- a/developer/src/Makefile
+++ /dev/null
@@ -1,293 +0,0 @@
-#
-# Keyman dev Makefile
-#
-
-!ifdef NODELPHI
-DELPHI_TARGETS=
-!else
-# note: inst is not really a delphi target but depends on delphi
-DELPHI_TARGETS=kmconvert tike setup inst
-!endif
-
-TARGETS=build-tools kmcmplib kmanalyze $(DELPHI_TARGETS) kmdecomp samples server kmc api
-
-EXCLUDEPATHDEFINES=1
-MANIFESTS=tike setup
-CLEANS=clean-developer
-
-EXCLUDEPATHDEFINES=1
-BUILDPREREQ=global-versions
-
-!include Header.mak
-
-# ----------------------------------------------------------------------
-
-common: .virtual
- cd $(KEYMAN_ROOT)\common\windows\delphi\components
- $(MAKE) $(TARGET)
- cd $(DEVELOPER_ROOT)\src\common\delphi\components
- $(MAKE) $(TARGET)
-
-imsample: .virtual
- cd $(DEVELOPER_ROOT)\src\imsample
- $(MAKE) $(TARGET)
-
-kmcmplib: global-versions .virtual
- cd $(DEVELOPER_ROOT)\src\kmcmplib
- $(MAKE) $(TARGET)
-
-kmdecomp: .virtual
- cd $(DEVELOPER_ROOT)\src\kmdecomp
- $(MAKE) $(TARGET)
-
-kmanalyze: .virtual
- cd $(DEVELOPER_ROOT)\src\kmanalyze
- $(MAKE) $(TARGET)
-
-kmconvert: .virtual
- cd $(DEVELOPER_ROOT)\src\kmconvert
- $(MAKE) $(TARGET)
-
-tike: redist
- cd $(DEVELOPER_ROOT)\src\tike
- $(MAKE) $(TARGET)
-
-samples: .virtual
- cd $(DEVELOPER_ROOT)\src\samples
- $(MAKE) $(TARGET)
-
-setup: .virtual
- cd $(DEVELOPER_ROOT)\src\setup
- $(MAKE) $(TARGET)
-
-server: .virtual
- cd $(DEVELOPER_ROOT)\src\server
- $(MAKE) $(TARGET)
-
-kmc: kmc-analyze kmc-ldml kmc-keyboard-info kmc-kmn kmc-model kmc-model-info kmc-package
- cd $(DEVELOPER_ROOT)\src\kmc
- $(MAKE) $(TARGET)
-
-kmc-analyze: .virtual
- cd $(DEVELOPER_ROOT)\src\kmc-analyze
- $(MAKE) $(TARGET)
-
-kmc-keyboard-info: .virtual
- cd $(DEVELOPER_ROOT)\src\kmc-keyboard-info
- $(MAKE) $(TARGET)
-
-kmc-kmn: .virtual
- cd $(DEVELOPER_ROOT)\src\kmc-kmn
- $(MAKE) $(TARGET)
-
-kmc-ldml: .virtual
- cd $(DEVELOPER_ROOT)\src\kmc-ldml
- $(MAKE) $(TARGET)
-
-kmc-model: .virtual
- cd $(DEVELOPER_ROOT)\src\kmc-model
- $(MAKE) $(TARGET)
-
-kmc-model-info: .virtual
- cd $(DEVELOPER_ROOT)\src\kmc-model-info
- $(MAKE) $(TARGET)
-
-kmc-package: .virtual
- cd $(DEVELOPER_ROOT)\src\kmc-package
- $(MAKE) $(TARGET)
-
-api: .virtual
- cd $(DEVELOPER_ROOT)
- if $(TARGET) == build $(GIT_BASH_FOR_KEYMAN) build.sh api --no-deps
-
-# ----------------------------------------------------------------------
-
-ext: .virtual
- cd $(DEVELOPER_ROOT)\src\ext
- $(MAKE) $(TARGET)
-
-# ----------------------------------------------------------------------
-
-test: .virtual
- cd $(DEVELOPER_ROOT)\src\test\auto
- $(MAKE) $(TARGET)
- cd $(DEVELOPER_ROOT)\src
-
-# ----------------------------------------------------------------------
-
-redist:
- copy $(KEYMAN_ROOT)\common\windows\delphi\ext\sentry\sentry.dll $(DEVELOPER_ROOT)\bin
- copy $(KEYMAN_ROOT)\common\windows\delphi\ext\sentry\sentry.x64.dll $(DEVELOPER_ROOT)\bin
- copy $(KEYMAN_ROOT)\common\windows\delphi\ext\sentry\crashpad_handler.exe $(DEVELOPER_ROOT)\bin
-
-# ----------------------------------------------------------------------
-
-inst: redist
- cd $(DEVELOPER_ROOT)\src\inst
- $(MAKE) $(TARGET)
-
-# ----------------------------------------------------------------------
-# ----------------------------------------------------------------------
-# release
-# ----------------------------------------------------------------------
-
-release: clean-pathdefines test-release-cef-path test-releasebuildcheck test-releaseexists test-cert test-7zip test-wix test-klog clean clean-output
- cd $(DEVELOPER_ROOT)\src
- echo Continuing Release
- $(MAKE) do-build-release
- echo After build-release
- cd $(DEVELOPER_ROOT)\src
-
-# Build a release
-
-do-build-release:
- echo Starting Release Build
- cd $(COMMON_ROOT)
- $(MAKE) global-versions
- cd $(DEVELOPER_ROOT)\src
- $(MAKE) dirs
- cd $(WINDOWS_ROOT)\src
- $(MAKE) build-tools
- cd $(DEVELOPER_ROOT)\src
- $(MAKE) build-release-dependencies
- $(MAKE) "SIGNCODE_BUILD=SIGNCODE_BUILD" build test
- $(MAKE) signcode
- cd $(DEVELOPER_ROOT)\src\tools\verify_signatures
- $(MAKE) test
-
- cd $(DEVELOPER_ROOT)\src\inst
- $(MAKE)
- cd $(DEVELOPER_ROOT)\src
-
-#
-# Dependencies on Windows are now only ext,global,buildtools and kmbrowserhost
-#
-build-release-dependencies:
- cd $(WINDOWS_ROOT)\src\ext
- $(MAKE) build
-
- cd $(WINDOWS_ROOT)\src\global
- $(MAKE) build
-
- cd $(WINDOWS_ROOT)\src\buildtools
- $(MAKE) build
-
-# TODO: kmbrowserhost should be in global
- cd $(WINDOWS_ROOT)\src\desktop\kmbrowserhost
- $(MAKE) build signcode
-
- cd $(DEVELOPER_ROOT)\src
-
-
-clean-output:
- rd /s/q $(DEVELOPER_ROOT)\bin
- rd /s/q $(DEVELOPER_ROOT)\debug
- rd /s/q $(DEVELOPER_ROOT)\build
- rd /s/q $(DEVELOPER_ROOT)\lib
-
-clean-pathdefines: test-releasebuildcheck
-# test-releasebuildcheck builds devtools for us
- $(DEVTOOLS) -ri
-
-#
-# Test that the CEF file path is accessible from env var KEYMAN_CEF4DELPHI_ROOT
-# and checkout the appropriate version of CEF as determined by CEF_VERSION.md
-#
-test-release-cef-path:
-!ifndef SC_TIMESTAMP
-!ifdef GIT_BASH_FOR_KEYMAN
- $(GIT_BASH_FOR_KEYMAN) $(KEYMAN_ROOT)\common\windows\cef-checkout.sh
-!else
- start /wait $(KEYMAN_ROOT)\common\windows\cef-checkout.sh
-!endif
-!endif
-
-#
-# Test that certificate checking is enabled and that certificate is accessible
-#
-
-test-cert:
- copy $(SC_PFX_SHA1) $(WINDOWS_ROOT)\src\pfx.tmp
- del $(WINDOWS_ROOT)\src\pfx.tmp
-
-#
-# Test that WiX is installed
-#
-
-test-wix:
- if not exist $(WIXPATH)\candle.exe exit 1
-
-#
-# Test that 7-zip is installed
-#
-
-test-7zip:
- if not exist $(WZZIPPATH) exit 1
-
-#
-# Test that klog is disabled
-#
-
-test-klog:
- cd $(COMMON_ROOT)\tools\test-klog
- $(MAKE) verify
- cd $(DEVELOPER_ROOT)\src
-
-#
-# Test that we haven't already built this release
-#
-
-test-releaseexists:
- cd $(DEVELOPER_ROOT)\src\inst
- $(MAKE) test-releaseexists
- cd $(DEVELOPER_ROOT)\src
-
-#
-# Test various release prerequisites, e.g. Debug reg key not set
-#
-
-test-releasebuildcheck: global-versions
- cd $(COMMON_ROOT)\tools\devtools
- $(MAKE) test-releasebuildcheck
- cd $(DEVELOPER_ROOT)\src
-
-#
-# Tools needed to complete a build
-#
-
-build-tools:
- $(MAKE) global-versions
- $(MAKE) common
-!ifdef NODELPHI
- echo Skipping build-tools
-!else
- $(MAKE) build-tools-internal
-!endif
-
-global-versions:
- cd $(COMMON_ROOT)
- @if not exist $(KEYMAN_ROOT)\include\keymanversion_build.h $(MAKE) global-versions
- cd $(DEVELOPER_ROOT)\src
-
-build-tools-internal:
-# We'll build a default PathDefines.mak if it is missing here so we can
-# go on and do the rest of the build. Build all the ext/global/build-tools
-# things we need...
- $(MAKE) devtools-app
- $(DEVTOOLS) -ti
- cd $(WINDOWS_ROOT)\src
- $(MAKE) ext global buildtools
- cd $(DEVELOPER_ROOT)\src
- $(MAKE) ext
-
-# ----------------------------------------------------------------------
-
-clean-developer:
- cd $(DEVELOPER_ROOT)\src
- -del version.txt
-
-!include Target.mak
-
-# ----------------------------------------------------------------------
-# EOF
-# ----------------------------------------------------------------------
diff --git a/developer/src/Target.mak b/developer/src/Target.mak
deleted file mode 100644
index 8c0ad1cd53..0000000000
--- a/developer/src/Target.mak
+++ /dev/null
@@ -1,2 +0,0 @@
-# Temporary import of windows/src/Target.mak
-!include $(WINDOWS_ROOT)\src\Target.mak
diff --git a/developer/src/build.sh b/developer/src/build.sh
index 4adca7e09c..87e83e89a8 100755
--- a/developer/src/build.sh
+++ b/developer/src/build.sh
@@ -5,8 +5,6 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
. "${THIS_SCRIPT%/*}/../../resources/build/build-utils.sh"
## END STANDARD BUILD SCRIPT INCLUDE
-cd "$THIS_SCRIPT_PATH"
-
builder_describe \
"Build Keyman Developer" \
clean \
diff --git a/developer/src/common/build.sh b/developer/src/common/build.sh
index 50a8584008..68897c5c4b 100755
--- a/developer/src/common/build.sh
+++ b/developer/src/common/build.sh
@@ -5,8 +5,6 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
. "${THIS_SCRIPT%/*}/../../../resources/build/build-utils.sh"
## END STANDARD BUILD SCRIPT INCLUDE
-cd "$THIS_SCRIPT_PATH"
-
builder_describe \
"Build Keyman Developer common files" \
clean configure build api test publish install \
diff --git a/developer/src/common/delphi/build.sh b/developer/src/common/delphi/build.sh
index 1523413825..777ae18113 100755
--- a/developer/src/common/delphi/build.sh
+++ b/developer/src/common/delphi/build.sh
@@ -5,15 +5,12 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
. "${THIS_SCRIPT%/*}/../../../../resources/build/build-utils.sh"
## END STANDARD BUILD SCRIPT INCLUDE
-cd "$THIS_SCRIPT_PATH"
-
builder_describe "Build Keyman Developer Delphi components" clean configure build test
builder_parse "$@"
#-------------------------------------------------------------------------------------------------------------------
source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
-WIN32_TARGET="$WIN32_TARGET_PATH/kmconvert.exe"
builder_describe_outputs \
configure:project /resources/build/win/delphi_environment_generated.inc.sh \
diff --git a/developer/src/common/delphi/components/Makefile b/developer/src/common/delphi/components/Makefile
deleted file mode 100644
index c32f6d8a9a..0000000000
--- a/developer/src/common/delphi/components/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# Keyman Developer Delphi components Makefile
-#
-
-!include ..\..\..\Defines.mak
-
-# ----------------------------------------------------------------------
-
-all: keyman-developer-components
-
-build: keyman-developer-components
-
-# ----------------------------------------------------------------------
-
-keyman-developer-components: dirs compile install
-# $(COPY) keyman_components.bpl $(OUTLIB)
-
-compile:
- @-mkdir obj\Win32\$(TARGET_PATH)
- $(DEVELOPER_DCC32DPK) developer_components.dpk
-
-install:
- $(DEVTOOLS) -ip $(DEVELOPER_OUTLIB)\developer_components.bpl
-
-signcode:
- @rem no signcode
-
-symbols:
- @rem no symbols
-
-# ----------------------------------------------------------------------
-# clean target
-# ----------------------------------------------------------------------
-
-clean: def-clean
- -rd /s/q obj
-
-# ----------------------------------------------------------------------
-
-!include ..\..\..\Target.mak
-
-# ----------------------------------------------------------------------
-# EOF
-# ----------------------------------------------------------------------
diff --git a/developer/src/common/web/build.sh b/developer/src/common/web/build.sh
index a9d22e8efc..d9a0aaf4fc 100755
--- a/developer/src/common/web/build.sh
+++ b/developer/src/common/web/build.sh
@@ -5,8 +5,6 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
. "${THIS_SCRIPT%/*}/../../../../resources/build/build-utils.sh"
## END STANDARD BUILD SCRIPT INCLUDE
-cd "$THIS_SCRIPT_PATH"
-
builder_describe \
"Build Keyman Developer common web files" \
clean configure build test \
diff --git a/developer/src/ext/Makefile b/developer/src/ext/Makefile
deleted file mode 100644
index 292430f978..0000000000
--- a/developer/src/ext/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# Keyman Developer ext Makefile - 3rd party components
-#
-
-NOTARGET_SIGNCODE=yes
-
-!ifdef NODELPHI
-TARGETS=.virtual
-!else
-TARGETS=browse4folder jedi mbcolor scfontcombobox common
-!endif
-
-CLEANS=
-
-!include ..\Header.mak
-
-# ----------------------------------------------------------------------
-
-browse4folder: .virtual
- cd $(DEVELOPER_ROOT)\src\ext\browse4folder
- $(MAKE) $(TARGET)
-
-jedi: .virtual
- cd $(DEVELOPER_ROOT)\src\ext\jedi
- $(MAKE) $(TARGET)
-
-mbcolor: .virtual
- cd $(DEVELOPER_ROOT)\src\ext\mbcolor
- $(MAKE) $(TARGET)
-
-scfontcombobox: .virtual
- cd $(DEVELOPER_ROOT)\src\ext\scfontcombobox
- $(MAKE) $(TARGET)
-
-# ----------------------------------------------------------------------
-
-common: .virtual
- cd $(COMMON_ROOT)\ext
- $(MAKE) $(TARGET)
-
-#
-#
-#
-
-reset:
- $(DEVTOOLS) -rp
- $(DEVTOOLS) -ri
-
-!include ..\Target.mak
-
-# ----------------------------------------------------------------------
-# EOF
-# ----------------------------------------------------------------------
diff --git a/developer/src/ext/browse4folder/build.sh b/developer/src/ext/browse4folder/build.sh
index a0d1d91052..d7b40d5b16 100755
--- a/developer/src/ext/browse4folder/build.sh
+++ b/developer/src/ext/browse4folder/build.sh
@@ -5,8 +5,6 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
. "${THIS_SCRIPT%/*}/../../../../resources/build/build-utils.sh"
## END STANDARD BUILD SCRIPT INCLUDE
-cd "$THIS_SCRIPT_PATH"
-
builder_describe "Build browser4folder component" clean configure build test
builder_parse "$@"
diff --git a/developer/src/ext/build.sh b/developer/src/ext/build.sh
index 4243ce15cb..84693b237e 100755
--- a/developer/src/ext/build.sh
+++ b/developer/src/ext/build.sh
@@ -5,8 +5,6 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
. "${THIS_SCRIPT%/*}/../../../resources/build/build-utils.sh"
## END STANDARD BUILD SCRIPT INCLUDE
-cd "$THIS_SCRIPT_PATH"
-
builder_describe \
"Build Keyman Developer third party components" \
clean configure build api test publish install \
diff --git a/developer/src/ext/mbcolor/build.sh b/developer/src/ext/mbcolor/build.sh
index a42ee1bef9..b9120b00d3 100755
--- a/developer/src/ext/mbcolor/build.sh
+++ b/developer/src/ext/mbcolor/build.sh
@@ -5,8 +5,6 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
. "${THIS_SCRIPT%/*}/../../../../resources/build/build-utils.sh"
## END STANDARD BUILD SCRIPT INCLUDE
-cd "$THIS_SCRIPT_PATH"
-
builder_describe "Build mbcolor component" clean configure build test
builder_parse "$@"
diff --git a/developer/src/ext/scfontcombobox/build.sh b/developer/src/ext/scfontcombobox/build.sh
index dc67d71d7f..1b6e44f9f9 100755
--- a/developer/src/ext/scfontcombobox/build.sh
+++ b/developer/src/ext/scfontcombobox/build.sh
@@ -5,8 +5,6 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
. "${THIS_SCRIPT%/*}/../../../../resources/build/build-utils.sh"
## END STANDARD BUILD SCRIPT INCLUDE
-cd "$THIS_SCRIPT_PATH"
-
builder_describe "Build scfontcombobox component" clean configure build test
builder_parse "$@"
diff --git a/developer/src/kmanalyze/build.sh b/developer/src/kmanalyze/build.sh
index 09e6e704c5..650fa726f2 100755
--- a/developer/src/kmanalyze/build.sh
+++ b/developer/src/kmanalyze/build.sh
@@ -5,8 +5,6 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
. "${THIS_SCRIPT%/*}/../../../resources/build/build-utils.sh"
## END STANDARD BUILD SCRIPT INCLUDE
-cd "$THIS_SCRIPT_PATH"
-
builder_describe "Build kmanalyze" clean configure build test publish install
builder_parse "$@"
diff --git a/developer/src/kmc-model-info/Makefile b/developer/src/kmc-model-info/Makefile
deleted file mode 100644
index 878d77f184..0000000000
--- a/developer/src/kmc-model-info/Makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Keyman Developer - kmc Model-Info Compiler Makefile
-#
-
-!include ..\Defines.mak
-
-# We don't depend on configure here because kmc-ldml does that already
-build: .virtual
- $(GIT_BASH_FOR_KEYMAN) build.sh build
-
-configure: .virtual
- $(GIT_BASH_FOR_KEYMAN) build.sh configure
-
-clean: .virtual
- $(GIT_BASH_FOR_KEYMAN) build.sh clean
-
-test: .virtual
- $(GIT_BASH_FOR_KEYMAN) build.sh test
-
-# build.sh bundle must be run from shell as it requires a temp folder to be
-# passed in. See inst/download.in.mak for instantiation.
-
-publish: .virtual
- $(GIT_BASH_FOR_KEYMAN) build.sh publish
-
-signcode:
- @rem nothing to do
-
-wrap-symbols:
- @rem nothing to do
-
-test-manifest:
- @rem nothing to do
-
-install:
- @rem nothing to do
-
-!include ..\Target.mak
diff --git a/developer/src/kmcmplib/Makefile b/developer/src/kmcmplib/Makefile
deleted file mode 100644
index 26aed7fdc2..0000000000
--- a/developer/src/kmcmplib/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# KMCmpLib Makefile
-#
-
-!include ..\Defines.mak
-
-!ifdef GIT_BASH_FOR_KEYMAN
-CALLER=$(GIT_BASH_FOR_KEYMAN)
-!else
-CALLER=start /wait
-!endif
-!ifdef DEBUG
-BUILD_DEBUG=-d
-!else
-BUILD_DEBUG=
-!endif
-
-build: .virtual
- $(CALLER) ./build.sh clean configure build $(BUILD_DEBUG)
-
-clean:
- $(CALLER) ./build.sh clean $(BUILD_DEBUG)
-
-signcode:
- @rem Not required
-
-wrap-symbols:
- @rem Not required
-
-test-manifest:
- @rem This target needed as dependency for TIKE
-
-test:
- $(CALLER) ./build.sh test $(BUILD_DEBUG)
-
-install:
- @rem Not required
-
-!include ..\Target.mak
diff --git a/developer/src/kmconvert/build.sh b/developer/src/kmconvert/build.sh
index 0b690b5be4..b71812b95a 100755
--- a/developer/src/kmconvert/build.sh
+++ b/developer/src/kmconvert/build.sh
@@ -5,8 +5,6 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
. "${THIS_SCRIPT%/*}/../../../resources/build/build-utils.sh"
## END STANDARD BUILD SCRIPT INCLUDE
-cd "$THIS_SCRIPT_PATH"
-
builder_describe "Build kmconvert" clean configure build test publish install
builder_parse "$@"
diff --git a/developer/src/kmdecomp/build.sh b/developer/src/kmdecomp/build.sh
index e9743e3e97..adbf77e3ab 100755
--- a/developer/src/kmdecomp/build.sh
+++ b/developer/src/kmdecomp/build.sh
@@ -5,8 +5,6 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
. "${THIS_SCRIPT%/*}/../../../resources/build/build-utils.sh"
## END STANDARD BUILD SCRIPT INCLUDE
-cd "$THIS_SCRIPT_PATH"
-
builder_describe "Build kmdecomp" clean configure build test publish install
builder_parse "$@"
diff --git a/developer/src/samples/Makefile b/developer/src/samples/Makefile
deleted file mode 100644
index 0f89fff987..0000000000
--- a/developer/src/samples/Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# Samples Makefile
-#
-
-TARGETS=imsample
-!include ..\Header.mak
-
-imsample: .virtual
- cd $(DEVELOPER_ROOT)\src\samples\imsample
- $(MAKE) $(TARGET)
-
-!include ..\Target.mak
-
-# ----------------------------------------------------------------------
-# EOF
-# ----------------------------------------------------------------------
diff --git a/developer/src/samples/build.sh b/developer/src/samples/build.sh
new file mode 100755
index 0000000000..70f8097b78
--- /dev/null
+++ b/developer/src/samples/build.sh
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../resources/build/build-utils.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe \
+ "Build Keyman Developer Samples" \
+ clean \
+ configure \
+ build \
+ "api Analyze API and prepare API documentation" \
+ test \
+ "publish Prepare files for distribution and publish symbols" \
+ "install Install built programs locally" \
+ :imsample
+
+builder_parse "$@"
+
+# builder_describe_outputs \
+# configure /developer/src/tike/xml/layoutbuilder/keymanweb-osk.ttf
+# builder_run_action configure cp "$KEYMAN_ROOT/common/resources/fonts/keymanweb-osk.ttf" "$KEYMAN_ROOT/developer/src/tike/xml/layoutbuilder/"
+
+builder_run_child_actions clean configure build test api publish install
+
+function build_api() {
+ api-documenter markdown -i ../build/api -o ../build/docs
+ # TODO: Copy to help.keyman.com and open PR
+}
+
+builder_run_action api build_api
diff --git a/developer/src/samples/imsample/Makefile b/developer/src/samples/imsample/Makefile
deleted file mode 100644
index e2b3994497..0000000000
--- a/developer/src/samples/imsample/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# imsample Makefile
-#
-
-VERSION_TXT_PATH=..\..
-
-!include ..\..\Defines.mak
-
-build: dirs version.res
- $(MSBUILD) imsample.sln $(MSBUILD_BUILD) "/p:Platform=Win32"
- $(COPY) $(WIN32_TARGET_PATH)\imsample.dll $(DEVELOPER_PROGRAM)
- $(COPY) $(WIN32_TARGET_PATH)\imsample.pdb $(DEVELOPER_PROGRAM)
-
- $(MSBUILD) imsample.sln $(MSBUILD_BUILD) "/p:Platform=x64"
- $(COPY) $(X64_TARGET_PATH)\imsample.x64.dll $(DEVELOPER_PROGRAM)
- $(COPY) $(X64_TARGET_PATH)\imsample.x64.pdb $(DEVELOPER_PROGRAM)
-
-
-signcode:
- $(SIGNCODE) /d "Keyman IMX Sample" $(DEVELOPER_PROGRAM)\imsample.dll
- $(SIGNCODE) /d "Keyman IMX Sample" $(DEVELOPER_PROGRAM)\imsample.x64.dll
-
-
-wrap-symbols:
- $(SYMSTORE) $(DEVELOPER_PROGRAM)\imsample.dll /t keyman-developer
- $(SYMSTORE) $(DEVELOPER_PROGRAM)\imsample.x64.dll /t keyman-developer
- $(SYMSTORE) $(DEVELOPER_DEBUGPATH)\imsample.pdb /t keyman-developer
- $(SYMSTORE) $(DEVELOPER_DEBUGPATH)\imsample.x64.pdb /t keyman-developer
-
-clean: def-clean
- $(MSBUILD) imsample.sln $(MSBUILD_CLEAN)
-
-install:
- @rem
-
-!include ..\..\Target.mak
diff --git a/developer/src/samples/imsample/build.sh b/developer/src/samples/imsample/build.sh
new file mode 100755
index 0000000000..4c44d3c4ef
--- /dev/null
+++ b/developer/src/samples/imsample/build.sh
@@ -0,0 +1,54 @@
+#!/usr/bin/env bash
+## START STANDARD BUILD SCRIPT INCLUDE
+# adjust relative paths as necessary
+THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
+. "${THIS_SCRIPT%/*}/../../../../resources/build/build-utils.sh"
+## END STANDARD BUILD SCRIPT INCLUDE
+
+builder_describe "Build imsample" clean configure build api test publish install
+builder_parse "$@"
+
+#-------------------------------------------------------------------------------------------------------------------
+
+source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
+WIN32_TARGET="$WIN32_TARGET_PATH/imsample.dll"
+X64_TARGET="$X64_TARGET_PATH/imsample.x64.dll"
+
+builder_describe_outputs \
+ configure:project /resources/build/win/delphi_environment_generated.inc.sh \
+ build:project /developer/src/samples/imsample/$X64_TARGET
+
+#-------------------------------------------------------------------------------------------------------------------
+
+function do_clean() {
+ vs_msbuild imsample.sln //t:Clean
+ rm -rf bin obj manifest.res manifest.xml version.res
+}
+
+function do_build() {
+ build_version.res
+ vs_msbuild imsample.sln //t:Build "//p:Platform=Win32"
+ cp "$WIN32_TARGET" "$DEVELOPER_PROGRAM"
+ cp "$WIN32_TARGET_PATH/imsample.pdb" "$DEVELOPER_DEBUGPATH"
+
+ vs_msbuild imsample.sln //t:Build "//p:Platform=x64"
+ cp "$X64_TARGET" "$DEVELOPER_PROGRAM"
+ cp "$X64_TARGET_PATH/imsample.x64.pdb" "$DEVELOPER_DEBUGPATH"
+}
+
+# TODO
+function do_publish() {
+ "$SIGNCODE" //d "Keyman IMX Sample" "$DEVELOPER_PROGRAM/imsample.dll"
+ "$SIGNCODE" //d "Keyman IMX Sample" "$DEVELOPER_PROGRAM/imsample.x64.dll"
+
+ "$SYMSTORE" "$DEVELOPER_PROGRAM/imsample.dll" //t keyman-developer
+ "$SYMSTORE" "$DEVELOPER_PROGRAM/imsample.x64.dll" //t keyman-developer
+ "$SYMSTORE" "$DEVELOPER_DEBUGPATH/imsample.pdb" //t keyman-developer
+ "$SYMSTORE" "$DEVELOPER_DEBUGPATH/imsample.x64.pdb" //t keyman-developer
+}
+
+builder_run_action clean:project do_clean
+builder_run_action configure:project configure_windows_build_environment
+builder_run_action build:project do_build
+# builder_run_action test:project do_test
+builder_run_action publish:project do_publish
diff --git a/developer/src/server/Makefile b/developer/src/server/Makefile
deleted file mode 100644
index d3786f01b8..0000000000
--- a/developer/src/server/Makefile
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# Keyman Developer Server Makefile
-#
-
-!include ..\Defines.mak
-
-build: .virtual
- $(GIT_BASH_FOR_KEYMAN) build.sh configure build test installer
-
-clean: .virtual
-#TODO: move to build.sh `clean` target
- -rd /s/q build
- -rd /s/q dist
- -del tsconfig.tsbuildinfo
-
-signcode:
- $(SIGNCODE) /d "Keyman Developer" $(DEVELOPER_PROGRAM)\server\build\src\win32\console\node-hide-console-window.node
- $(SIGNCODE) /d "Keyman Developer" $(DEVELOPER_PROGRAM)\server\build\src\win32\console\node-hide-console-window.x64.node
- $(SIGNCODE) /d "Keyman Developer" $(DEVELOPER_PROGRAM)\server\build\src\win32\trayicon\addon.node
- $(SIGNCODE) /d "Keyman Developer" $(DEVELOPER_PROGRAM)\server\build\src\win32\trayicon\addon.x64.node
-
-wrap-symbols:
- @rem nothing to do
-
-test-manifest:
- @rem This target needed as dependency for KMDECOMP
-
-install:
- @rem nothing to do
-
-!include ..\Target.mak
-
-
-
diff --git a/developer/src/setup/Makefile b/developer/src/setup/Makefile
deleted file mode 100644
index 565c0f67bb..0000000000
--- a/developer/src/setup/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-#
-# Setup Makefile
-#
-
-!include ..\Defines.mak
-
-build: version.res manifest.res icons
- $(DELPHI_MSBUILD) setup.dproj "/p:Platform=Win32"
- $(SENTRYTOOL_DELPHIPREP) $(WIN32_TARGET_PATH)\setup.exe -dpr setup.dpr
- $(TDS2DBG) $(WIN32_TARGET_PATH)\setup.exe
- $(COPY) $(WIN32_TARGET_PATH)\setup.exe $(DEVELOPER_PROGRAM)
- if exist $(WIN32_TARGET_PATH)\setup.dbg $(COPY) $(WIN32_TARGET_PATH)\setup.dbg $(DEVELOPER_DEBUGPATH)\devsetup.dbg
- -del $(WIN32_TARGET_PATH)\devsetup.dbg
- if exist $(WIN32_TARGET_PATH)\setup.dbg ren $(WIN32_TARGET_PATH)\setup.dbg devsetup.dbg
-
-setup_dialog.res:
- rc setup_dialog.rc
-
-icons:
- rc icons.rc
-
-clean: def-clean
- rem if exist icons\icons.res del icons\icons.res
-
-signcode:
- rem SIGNCODE /d "Keyman Developer Setup" $(DEVELOPER_PROGRAM)\setup.exe
-
-wrap-symbols:
-# This is slightly non-standard due to renamed devsetup.dbg above
-# we should be able to clean this up in the future when we remove the
-# zipped debug symbols
- $(SYMSTORE) $(DEVELOPER_PROGRAM)\setup.exe /t keyman-developer
- $(SYMSTORE) $(DEVELOPER_ROOT)\src\setup\setup.dbg /t keyman-developer
-
-test-manifest:
-# test that (a) linked manifest exists and correct, and (b) has uiAccess=true
- $(MT) -nologo -inputresource:$(DEVELOPER_PROGRAM)\setup.exe -validate_manifest
-
-install:
- @rem
-
-!include ..\Target.mak
diff --git a/developer/src/setup/build.sh b/developer/src/setup/build.sh
index 8825c06929..ae6a4a0f0e 100755
--- a/developer/src/setup/build.sh
+++ b/developer/src/setup/build.sh
@@ -5,8 +5,6 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
. "${THIS_SCRIPT%/*}/../../../resources/build/build-utils.sh"
## END STANDARD BUILD SCRIPT INCLUDE
-cd "$THIS_SCRIPT_PATH"
-
builder_describe "Build Keyman Developer Setup" clean configure build test
builder_parse "$@"
diff --git a/developer/src/tike/Makefile b/developer/src/tike/Makefile
deleted file mode 100644
index 0bc0908db3..0000000000
--- a/developer/src/tike/Makefile
+++ /dev/null
@@ -1,99 +0,0 @@
-#
-# TIKE Makefile
-#
-
-!include ..\Defines.mak
-
-build: version.res manifest.res icons dirs xml xsd pull-core
- cd $(DEVELOPER_ROOT)\src\tike
- $(COPY) $(KEYMAN_ROOT)\common\resources\fonts\keymanweb-osk.ttf $(DEVELOPER_ROOT)\src\tike\xml\layoutbuilder\keymanweb-osk.ttf
- $(DELPHI_MSBUILD) tike.dproj "/p:Platform=Win32"
- $(SENTRYTOOL_DELPHIPREP) $(WIN32_TARGET_PATH)\tike.exe -dpr tike.dpr
- $(TDS2DBG) $(WIN32_TARGET_PATH)\tike.exe
- $(COPY) $(WIN32_TARGET_PATH)\tike.exe $(DEVELOPER_PROGRAM)
- $(COPY) kmlmc.cmd $(DEVELOPER_PROGRAM)
- $(COPY) kmlmp.cmd $(DEVELOPER_PROGRAM)
- $(COPY) kmc.cmd $(DEVELOPER_PROGRAM)
- $(COPY) $(KEYMAN_ROOT)\core\build\x86\$(TARGET_PATH)\src\$(KEYMANCORE).dll $(DEVELOPER_PROGRAM)
- if exist $(WIN32_TARGET_PATH)\tike.dbg $(COPY) $(WIN32_TARGET_PATH)\tike.dbg $(DEVELOPER_DEBUGPATH)
- $(COPY) $(KEYMAN_ROOT)\core\build\x86\$(TARGET_PATH)\src\$(KEYMANCORE).dll $(WIN32_TARGET_PATH)
- $(COPY) $(KEYMAN_ROOT)\core\build\x86\$(TARGET_PATH)\src\$(KEYMANCORE).pdb $(WIN32_TARGET_PATH)
-
-xsd:
- $(COPY) $(KEYMAN_ROOT)\common\schemas\kps\kps.xsd $(DEVELOPER_PROGRAM)
-
-xml: pull-npm sentry-init.js
- cd $(DEVELOPER_ROOT)\src\tike\xml
- -del /q $(DEVELOPER_PROGRAM)\xml\*
- xcopy /s /y * $(DEVELOPER_PROGRAM)\xml
- cd $(DEVELOPER_ROOT)\src\tike
-
-sentry-init.js:
- cd $(DEVELOPER_ROOT)\src\tike\xml\app\lib\sentry
- $(MKVER_U) init.js.in init.js
-
-pull-core:
- cd $(KEYMAN_ROOT)\core
-!ifdef GIT_BASH_FOR_KEYMAN
-!ifdef DEBUG
- $(GIT_BASH_FOR_KEYMAN) build.sh --no-tests clean:x86 configure:x86 build:x86 --debug
-!else
- $(GIT_BASH_FOR_KEYMAN) build.sh --no-tests clean:x86 configure:x86 build:x86
-!endif
-!else
-!ifdef DEBUG
- start /wait ./build.sh --no-tests clean:x86 configure:x86 build:x86 --debug
-!else
- start /wait ./build.sh --no-tests clean:x86 configure:x86 build:x86
-!endif
-!endif
-
-pull-npm:
-#
-# Grab the version of Monaco and any other node modules
-# that we want to use in Keyman Developer, and copy into
-# lib folder for sane paths. If we use more npm modules in the
-# future, we may consolidate the paths at that time.
-#
- cd $(DEVELOPER_ROOT)\src\tike\xml\app
- npm install
- -rd /s/q $(DEVELOPER_ROOT)\src\tike\xml\app\lib\monaco
- xcopy /i /s /y $(DEVELOPER_ROOT)\src\tike\xml\app\node_modules\monaco-editor\min $(DEVELOPER_ROOT)\src\tike\xml\app\lib\monaco\min
- xcopy /i /s /y $(DEVELOPER_ROOT)\src\tike\xml\app\node_modules\monaco-editor\min-maps $(DEVELOPER_ROOT)\src\tike\xml\app\lib\monaco\min-maps
-
-icons:
- rc icons.rc
-
-clean: def-clean
- if exist icons.res del icons.res
-
-signcode:
- $(SIGNCODE) /d "Keyman Developer" $(DEVELOPER_PROGRAM)\tike.exe
- $(SIGNCODE) /d "Keyman Core" $(DEVELOPER_PROGRAM)\$(KEYMANCORE).dll
-# Sign the Sentry executables and libraries here
- $(SIGNCODE) /d "Keyman Developer" $(DEVELOPER_PROGRAM)\sentry.dll
- $(SIGNCODE) /d "Keyman Developer" $(DEVELOPER_PROGRAM)\sentry.x64.dll
- $(SIGNCODE) /d "Keyman Developer" $(DEVELOPER_PROGRAM)\crashpad_handler.exe
-
-wrap-symbols:
- $(SYMSTORE) $(DEVELOPER_PROGRAM)\tike.exe /t keyman-developer
- $(SYMSTORE) $(DEVELOPER_DEBUGPATH)\tike.dbg /t keyman-developer
-
-install:
- $(COPY) $(DEVELOPER_PROGRAM)\tike.exe "$(INSTALLPATH_KEYMANDEVELOPER)\tike.exe"
- $(COPY) $(DEVELOPER_PROGRAM)\$(KEYMANCORE).dll "$(INSTALLPATH_KEYMANDEVELOPER)\$(KEYMANCORE).dll"
-
-test-manifest:
-# test that linked manifest exists and correct
- $(MT) -nologo -inputresource:$(DEVELOPER_PROGRAM)\tike.exe -validate_manifest
-
-generate-app-wxs:
- @echo *******************************************************************************************
- @echo The generated ..\inst\monaco_gen.wxs file will require manual merging with the existing
- @echo monaco.xws. Existing component GUIDs must be maintained per Windows Installer component
- @echo rules (a file at a single location should have a permanent GUID for reference counting).
- @echo *******************************************************************************************
- $(WIXPATH)\heat.exe dir xml\app\lib\monaco\min\vs -gg -o ..\inst\monaco_gen.wxs -cg MonacoFiles -var var.MonacoSourceDir -dr MonacoTargetDir
-
-!include ..\Target.mak
-
diff --git a/developer/src/tike/build.sh b/developer/src/tike/build.sh
index 8420ad6398..9db3ae97a1 100755
--- a/developer/src/tike/build.sh
+++ b/developer/src/tike/build.sh
@@ -5,8 +5,6 @@ THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
. "${THIS_SCRIPT%/*}/../../../resources/build/build-utils.sh"
## END STANDARD BUILD SCRIPT INCLUDE
-cd "$THIS_SCRIPT_PATH"
-
builder_describe "Build Keyman Developer IDE" @/core:x86 clean configure build test publish install
builder_parse "$@"