To complement K4thos' code snippets I have put together a WeiDU function that may help modders when working with external tools for multiple systems and architectures. I'll post it here for demonstration purposes. I'm also planning to add it along with more functions into future releases of my
tileconv and
tile2ee tools.
GET_SYSTEM_ARCH: Attempts to detect the system architecture Weidu is currently running on (in contrast to
WEIDU_ARCH, which only detects the architecture of the WeiDU binary). Returns either "amd64" for 64-bit environments or "x86" for true 32-bit environments. Falls back to
%WEIDU_ARCH% in case of problems.
DEFINE_ACTION_FUNCTION GET_SYSTEM_ARCH
RET
SYSTEM_ARCH
BEGIN
ACTION_MATCH "%WEIDU_OS%" WITH
win32
BEGIN
<<<<<<<< .../a7#inlined/a7arch.bat
@echo off
if /i "%PROCESSOR_ARCHITECTURE%"=="AMD64" goto AMD64
if /i "%PROCESSOR_ARCHITEW6432%"=="AMD64" goto AMD64
SET a7arch=x86
goto OUT
:AMD64
SET a7arch=amd64
:OUT
echo %a7arch%>override/a7arch.txt
>>>>>>>>
COPY ~.../a7#inlined/a7arch.bat~ ~override/a7arch.bat~
AT_NOW ~call override\a7arch.bat~
DELETE + ~override/a7arch.bat~
COPY - ~override/a7arch.txt~ ~override~
REPLACE_EVALUATE CASE_INSENSITIVE ~amd64~ BEGIN
SPRINT SYSTEM_ARCH ~amd64~
END ~~
DELETE + ~override/a7arch.txt~
END
osx unix
BEGIN
OUTER_SPRINT SYSTEM_ARCH ~x86~
AT_NOW ~echo $(uname -m) >override/a7arch.txt~
COPY - ~override/a7arch.txt~ ~override~
REPLACE_EVALUATE CASE_INSENSITIVE ~x86_64~ BEGIN
SPRINT SYSTEM_ARCH ~amd64~
END ~~
DELETE + ~override/a7arch.txt~
END
DEFAULT
END
ACTION_IF (~%SYSTEM_ARCH%~ STRING_EQUAL ~~) BEGIN
OUTER_SPRINT SYSTEM_ARCH ~%WEIDU_ARCH%~
END
END
// Patch version of GET_SYSTEM_ARCH.
DEFINE_PATCH_FUNCTION GET_SYSTEM_ARCH
RET
SYSTEM_ARCH
BEGIN
INNER_PATCH ~foo~ BEGIN
LPF GET_SYSTEM_ARCH RET SYSTEM_ARCH END
END
END