spiegel-keyman/windows/src/engine/kmcomapi/build.sh

80 lines
3.2 KiB
Bash
Executable file

#!/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/builder.inc.sh"
## END STANDARD BUILD SCRIPT INCLUDE
builder_describe "COM API library" \
@/common/include \
@/common/windows/delphi \
clean configure build test publish install edit
builder_parse "$@"
#-------------------------------------------------------------------------------------------------------------------
source "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
WIN32_TARGET="$WIN32_TARGET_PATH/kmcomapi.dll"
builder_describe_outputs \
configure:project /resources/build/win/delphi_environment_generated.inc.sh \
build:project /windows/src/engine/kmcomapi/$WIN32_TARGET
#-------------------------------------------------------------------------------------------------------------------
function do_clean() {
clean_windows_project_files
rm -f kbd_noicon.res kmcomapi.tlb
}
function do_build() {
create-windows-output-folders
build_version.res
build_manifest.res
run_in_vs_env rc kbd_noicon.rc
run_in_vs_env gentlb -Tkmcomapi.tlb kmcomapi.ridl
delphi_msbuild kmcomapi.dproj "//p:Platform=Win32"
sentrytool_delphiprep "$WIN32_TARGET" kmcomapi.dpr
tds2dbg "$WIN32_TARGET"
delphi_msbuild kmcomapi.dproj "//p:Platform=Win64"
# Delphi does not allow us to build to a different target filename so we rename after build
mv -f "$WIN64_TARGET_PATH/kmcomapi.dll" "$WIN64_TARGET_PATH/kmcomapi.x64.dll"
cp "$WIN32_TARGET" "$WINDOWS_PROGRAM_ENGINE"
builder_if_release_build_level cp "$WIN32_TARGET_PATH/kmcomapi.dbg" "$WINDOWS_DEBUGPATH_ENGINE/kmcomapi.dbg"
cp "$WIN64_TARGET_PATH/kmcomapi.x64.dll" "$WINDOWS_PROGRAM_ENGINE/kmcomapi.x64.dll"
# x64 Delphi symbols not supported: cp "$WIN64_TARGET_PATH/kmcomapi.dbg" "$WINDOWS_PROGRAM_ENGINE/kmcomapi.x64.dbg"
}
function do_publish() {
wrap-signcode //d "Keyman Engine for Windows" "$WINDOWS_PROGRAM_ENGINE/kmcomapi.dll"
wrap-signcode //d "Keyman Engine for Windows" "$WINDOWS_PROGRAM_ENGINE/kmcomapi.x64.dll"
wrap-symstore "$WINDOWS_PROGRAM_ENGINE/kmcomapi.dll" //t keyman-engine-windows
wrap-symstore "$WINDOWS_PROGRAM_ENGINE/kmcomapi.x64.dll" //t keyman-engine-windows
wrap-symstore "$WINDOWS_DEBUGPATH_ENGINE/kmcomapi.dbg" //t keyman-engine-windows
# No support for 64-bit delphi symbols
}
function do_install() {
regsvr32 //s //u "$INSTALLPATH_KEYMANENGINE/kmcomapi.dll"
cp "$WINDOWS_PROGRAM_ENGINE/kmcomapi.dll" "$INSTALLPATH_KEYMANENGINE/kmcomapi.dll"
regsvr32 //s "$INSTALLPATH_KEYMANENGINE/kmcomapi.dll"
regsvr32 //s //u "$INSTALLPATH_KEYMANENGINE/kmcomapi.x64.dll"
cp "$WINDOWS_PROGRAM_ENGINE/kmcomapi.x64.dll" "$INSTALLPATH_KEYMANENGINE/kmcomapi.x64.dll"
regsvr32 //s "$INSTALLPATH_KEYMANENGINE/kmcomapi.x64.dll"
}
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
builder_run_action install:project do_install
builder_run_action edit:project start kmcompapi.dproj