From 92203045326d5aa8cfb0e5169d17a99e3e8fd009 Mon Sep 17 00:00:00 2001 From: BrettMayson Date: Wed, 6 Dec 2023 21:19:33 -0600 Subject: [PATCH] Tools - Add HEMTT SQF support (#1630) Co-authored-by: PabstMirror Co-authored-by: jonpas --- .hemtt/project.toml | 7 ++----- addons/accessory/{XEH_PREP.sqf => XEH_PREP.hpp} | 0 addons/accessory/XEH_preInit.sqf | 2 +- addons/accessory/XEH_preStart.sqf | 2 +- addons/common/XEH_preInit.sqf | 2 +- .../{backwards_comp.sqf => backwards_comp.inc.sqf} | 0 addons/diagnostic/{XEH_PREP.sqf => XEH_PREP.hpp} | 0 addons/diagnostic/XEH_preInit.sqf | 4 ++-- addons/diagnostic/XEH_preStart.sqf | 2 +- .../{initSettings.sqf => initSettings.inc.sqf} | 0 addons/disposable/{XEH_PREP.sqf => XEH_PREP.hpp} | 0 addons/disposable/XEH_preInit.sqf | 4 ++-- addons/disposable/XEH_preStart.sqf | 2 +- .../{initSettings.sqf => initSettings.inc.sqf} | 0 addons/events/XEH_preInit.sqf | 4 ++-- .../{backwards_comp.sqf => backwards_comp.inc.sqf} | 0 .../{initSettings.sqf => initSettings.inc.sqf} | 0 addons/keybinding/{XEH_PREP.sqf => XEH_PREP.hpp} | 0 addons/keybinding/XEH_preInit.sqf | 2 +- addons/keybinding/XEH_preStart.sqf | 2 +- addons/network/XEH_preInit.sqf | 2 +- .../{initSettings.sqf => initSettings.inc.sqf} | 0 addons/optics/{XEH_PREP.sqf => XEH_PREP.hpp} | 0 addons/optics/XEH_preInit.sqf | 6 +++--- addons/optics/XEH_preStart.sqf | 2 +- .../{initKeybinds.sqf => initKeybinds.inc.sqf} | 0 .../{initSettings.sqf => initSettings.inc.sqf} | 0 addons/settings/{XEH_PREP.sqf => XEH_PREP.hpp} | 0 addons/settings/XEH_preInit.sqf | 4 ++-- addons/settings/XEH_preStart.sqf | 2 +- addons/settings/fnc_addSetting.sqf | 2 +- addons/settings/fnc_gui_addonChanged.sqf | 2 +- addons/settings/fnc_init.sqf | 2 +- ...eateCategory.sqf => gui_createCategory.inc.sqf} | 0 .../{initSettings.sqf => initSettings.inc.sqf} | 0 addons/ui/XEH_preInit.sqf | 2 +- .../ui/{initSettings.sqf => initSettings.inc.sqf} | 0 sqfc.json | 6 +----- tools/sqfvmChecker.py | 14 ++++++-------- 39 files changed, 34 insertions(+), 43 deletions(-) rename addons/accessory/{XEH_PREP.sqf => XEH_PREP.hpp} (100%) rename addons/common/{backwards_comp.sqf => backwards_comp.inc.sqf} (100%) rename addons/diagnostic/{XEH_PREP.sqf => XEH_PREP.hpp} (100%) rename addons/diagnostic/{initSettings.sqf => initSettings.inc.sqf} (100%) rename addons/disposable/{XEH_PREP.sqf => XEH_PREP.hpp} (100%) rename addons/disposable/{initSettings.sqf => initSettings.inc.sqf} (100%) rename addons/events/{backwards_comp.sqf => backwards_comp.inc.sqf} (100%) rename addons/events/{initSettings.sqf => initSettings.inc.sqf} (100%) rename addons/keybinding/{XEH_PREP.sqf => XEH_PREP.hpp} (100%) rename addons/network/{initSettings.sqf => initSettings.inc.sqf} (100%) rename addons/optics/{XEH_PREP.sqf => XEH_PREP.hpp} (100%) rename addons/optics/{initKeybinds.sqf => initKeybinds.inc.sqf} (100%) rename addons/optics/{initSettings.sqf => initSettings.inc.sqf} (100%) rename addons/settings/{XEH_PREP.sqf => XEH_PREP.hpp} (100%) rename addons/settings/{gui_createCategory.sqf => gui_createCategory.inc.sqf} (100%) rename addons/settings/{initSettings.sqf => initSettings.inc.sqf} (100%) rename addons/ui/{initSettings.sqf => initSettings.inc.sqf} (100%) diff --git a/.hemtt/project.toml b/.hemtt/project.toml index 39060b6e91..9585b57612 100644 --- a/.hemtt/project.toml +++ b/.hemtt/project.toml @@ -16,14 +16,11 @@ include = [ [version] git_hash = 0 +# Unused in HEMTT v1.11 or higher, kept for backwards compatibility [asc] enabled = true exclude = [ - "/initsettings.sqf", - "/initkeybinds.sqf", - "/xeh_prep.sqf", - "/backwards_comp.sqf", - "settings/gui_createcategory.sqf", + ".inc.sqf", "diagnostic/fnc_isdebugconsoleallowed.sqf", "xeh/fnc_initdisplay.sqf", "xeh/fnc_startloadingscreen.sqf", diff --git a/addons/accessory/XEH_PREP.sqf b/addons/accessory/XEH_PREP.hpp similarity index 100% rename from addons/accessory/XEH_PREP.sqf rename to addons/accessory/XEH_PREP.hpp diff --git a/addons/accessory/XEH_preInit.sqf b/addons/accessory/XEH_preInit.sqf index 07b57c31f4..68e45359e2 100644 --- a/addons/accessory/XEH_preInit.sqf +++ b/addons/accessory/XEH_preInit.sqf @@ -2,7 +2,7 @@ if (!hasInterface) exitWith {}; -#include "XEH_PREP.sqf" +#include "XEH_PREP.hpp" GVAR(usageHash) = createHashMap; diff --git a/addons/accessory/XEH_preStart.sqf b/addons/accessory/XEH_preStart.sqf index 43f1adee32..022888575e 100644 --- a/addons/accessory/XEH_preStart.sqf +++ b/addons/accessory/XEH_preStart.sqf @@ -1,3 +1,3 @@ #include "script_component.hpp" -#include "XEH_PREP.sqf" +#include "XEH_PREP.hpp" diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 459b7734ae..f75233a190 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -54,7 +54,7 @@ GVAR(addons) = call (uiNamespace getVariable [QGVAR(addons), {[]}]); activateAddons GVAR(addons); // BWC -#include "backwards_comp.sqf" +#include "backwards_comp.inc.sqf" // fix changing direction of remote units not working with zeus ["ModuleCurator_F", "init", { diff --git a/addons/common/backwards_comp.sqf b/addons/common/backwards_comp.inc.sqf similarity index 100% rename from addons/common/backwards_comp.sqf rename to addons/common/backwards_comp.inc.sqf diff --git a/addons/diagnostic/XEH_PREP.sqf b/addons/diagnostic/XEH_PREP.hpp similarity index 100% rename from addons/diagnostic/XEH_PREP.sqf rename to addons/diagnostic/XEH_PREP.hpp diff --git a/addons/diagnostic/XEH_preInit.sqf b/addons/diagnostic/XEH_preInit.sqf index 8bd5965d8e..f728206377 100644 --- a/addons/diagnostic/XEH_preInit.sqf +++ b/addons/diagnostic/XEH_preInit.sqf @@ -5,8 +5,8 @@ LOG(MSG_INIT); ADDON = false; -#include "XEH_PREP.sqf" -#include "initSettings.sqf" +#include "XEH_PREP.hpp" +#include "initSettings.inc.sqf" [QGVAR(debug), {_this call CBA_fnc_debug}] call CBA_fnc_addEventHandler; diff --git a/addons/diagnostic/XEH_preStart.sqf b/addons/diagnostic/XEH_preStart.sqf index a0f80b8b1b..788d387984 100644 --- a/addons/diagnostic/XEH_preStart.sqf +++ b/addons/diagnostic/XEH_preStart.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -#include "XEH_PREP.sqf" +#include "XEH_PREP.hpp" PREP(initExtendedDebugConsole); PREP(initTargetDebugConsole); diff --git a/addons/diagnostic/initSettings.sqf b/addons/diagnostic/initSettings.inc.sqf similarity index 100% rename from addons/diagnostic/initSettings.sqf rename to addons/diagnostic/initSettings.inc.sqf diff --git a/addons/disposable/XEH_PREP.sqf b/addons/disposable/XEH_PREP.hpp similarity index 100% rename from addons/disposable/XEH_PREP.sqf rename to addons/disposable/XEH_PREP.hpp diff --git a/addons/disposable/XEH_preInit.sqf b/addons/disposable/XEH_preInit.sqf index 5d982efe8f..123957c902 100644 --- a/addons/disposable/XEH_preInit.sqf +++ b/addons/disposable/XEH_preInit.sqf @@ -2,11 +2,11 @@ ADDON = false; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" if (configProperties [configFile >> "CBA_DisposableLaunchers"] isEqualTo []) exitWith {}; -#include "XEH_PREP.sqf" +#include "XEH_PREP.hpp" ["loadout", { params ["_unit"]; diff --git a/addons/disposable/XEH_preStart.sqf b/addons/disposable/XEH_preStart.sqf index 6e8139e838..5ec2b6e9da 100644 --- a/addons/disposable/XEH_preStart.sqf +++ b/addons/disposable/XEH_preStart.sqf @@ -5,4 +5,4 @@ PREP(initDisplayInventory); if (configProperties [configFile >> "CBA_DisposableLaunchers"] isEqualTo []) exitWith {}; -#include "XEH_PREP.sqf" +#include "XEH_PREP.hpp" diff --git a/addons/disposable/initSettings.sqf b/addons/disposable/initSettings.inc.sqf similarity index 100% rename from addons/disposable/initSettings.sqf rename to addons/disposable/initSettings.inc.sqf diff --git a/addons/events/XEH_preInit.sqf b/addons/events/XEH_preInit.sqf index 456f78e24c..ddfec72160 100644 --- a/addons/events/XEH_preInit.sqf +++ b/addons/events/XEH_preInit.sqf @@ -27,8 +27,8 @@ if (isServer) then { }; }; -#include "backwards_comp.sqf" -#include "initSettings.sqf" +#include "backwards_comp.inc.sqf" +#include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/events/backwards_comp.sqf b/addons/events/backwards_comp.inc.sqf similarity index 100% rename from addons/events/backwards_comp.sqf rename to addons/events/backwards_comp.inc.sqf diff --git a/addons/events/initSettings.sqf b/addons/events/initSettings.inc.sqf similarity index 100% rename from addons/events/initSettings.sqf rename to addons/events/initSettings.inc.sqf diff --git a/addons/keybinding/XEH_PREP.sqf b/addons/keybinding/XEH_PREP.hpp similarity index 100% rename from addons/keybinding/XEH_PREP.sqf rename to addons/keybinding/XEH_PREP.hpp diff --git a/addons/keybinding/XEH_preInit.sqf b/addons/keybinding/XEH_preInit.sqf index 0b060d509e..ac5d3e7aa5 100644 --- a/addons/keybinding/XEH_preInit.sqf +++ b/addons/keybinding/XEH_preInit.sqf @@ -3,7 +3,7 @@ SCRIPT(XEH_preInit); if (!hasInterface) exitWith {}; -#include "XEH_PREP.sqf" +#include "XEH_PREP.hpp" ADDON = false; diff --git a/addons/keybinding/XEH_preStart.sqf b/addons/keybinding/XEH_preStart.sqf index 67b38dd71f..02c29374e2 100644 --- a/addons/keybinding/XEH_preStart.sqf +++ b/addons/keybinding/XEH_preStart.sqf @@ -2,7 +2,7 @@ if (!hasInterface) exitWith {}; -#include "XEH_PREP.sqf" +#include "XEH_PREP.hpp" private _supportedKeys = [ DIK_ESCAPE, diff --git a/addons/network/XEH_preInit.sqf b/addons/network/XEH_preInit.sqf index 9677020c6e..06e9e1bf70 100644 --- a/addons/network/XEH_preInit.sqf +++ b/addons/network/XEH_preInit.sqf @@ -2,7 +2,7 @@ ADDON = false; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" // Restore loadouts lost by the naked unit bug [QGVAR(validateLoadout), { diff --git a/addons/network/initSettings.sqf b/addons/network/initSettings.inc.sqf similarity index 100% rename from addons/network/initSettings.sqf rename to addons/network/initSettings.inc.sqf diff --git a/addons/optics/XEH_PREP.sqf b/addons/optics/XEH_PREP.hpp similarity index 100% rename from addons/optics/XEH_PREP.sqf rename to addons/optics/XEH_PREP.hpp diff --git a/addons/optics/XEH_preInit.sqf b/addons/optics/XEH_preInit.sqf index b2a76bbd9a..c0297a706b 100644 --- a/addons/optics/XEH_preInit.sqf +++ b/addons/optics/XEH_preInit.sqf @@ -2,17 +2,17 @@ ADDON = false; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" if (configProperties [configFile >> "CBA_PIPItems"] isEqualTo [] && { configProperties [configFile >> "CBA_CarryHandleTypes"] isEqualTo [] }) exitWith {}; -#include "XEH_PREP.sqf" +#include "XEH_PREP.hpp" if (!hasInterface) exitWith {}; -#include "initKeybinds.sqf" +#include "initKeybinds.inc.sqf" QGVAR(pauseOpticLayer) cutText ["", "PLAIN"]; diff --git a/addons/optics/XEH_preStart.sqf b/addons/optics/XEH_preStart.sqf index ae827bb360..b67e7a710d 100644 --- a/addons/optics/XEH_preStart.sqf +++ b/addons/optics/XEH_preStart.sqf @@ -7,4 +7,4 @@ if (configProperties [configFile >> "CBA_PIPItems"] isEqualTo [] && { configProperties [configFile >> "CBA_CarryHandleTypes"] isEqualTo [] }) exitWith {}; -#include "XEH_PREP.sqf" +#include "XEH_PREP.hpp" diff --git a/addons/optics/initKeybinds.sqf b/addons/optics/initKeybinds.inc.sqf similarity index 100% rename from addons/optics/initKeybinds.sqf rename to addons/optics/initKeybinds.inc.sqf diff --git a/addons/optics/initSettings.sqf b/addons/optics/initSettings.inc.sqf similarity index 100% rename from addons/optics/initSettings.sqf rename to addons/optics/initSettings.inc.sqf diff --git a/addons/settings/XEH_PREP.sqf b/addons/settings/XEH_PREP.hpp similarity index 100% rename from addons/settings/XEH_PREP.sqf rename to addons/settings/XEH_PREP.hpp diff --git a/addons/settings/XEH_preInit.sqf b/addons/settings/XEH_preInit.sqf index 317e4db323..cc231ed6af 100644 --- a/addons/settings/XEH_preInit.sqf +++ b/addons/settings/XEH_preInit.sqf @@ -4,7 +4,7 @@ ADDON = false; // Don't prep functions if already prepped by CBA_fnc_addSetting to avoid log spam. if (isNil QFUNC(init)) then { - #include "XEH_PREP.sqf" + #include "XEH_PREP.hpp" }; //#define DEBUG_MODE_FULL @@ -42,7 +42,7 @@ if (isNil QFUNC(init)) then { #endif // --- init settings namespaces -#include "initSettings.sqf" +#include "initSettings.inc.sqf" // --- event to refresh missionNamespace value if setting has changed and call public event as well as execute setting script [QGVAR(refreshSetting), { diff --git a/addons/settings/XEH_preStart.sqf b/addons/settings/XEH_preStart.sqf index 6e5b518303..311d4b294a 100644 --- a/addons/settings/XEH_preStart.sqf +++ b/addons/settings/XEH_preStart.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -#include "XEH_PREP.sqf" +#include "XEH_PREP.hpp" PREP(initDisplayMain); diff --git a/addons/settings/fnc_addSetting.sqf b/addons/settings/fnc_addSetting.sqf index 11d45398f7..b2151fdb8c 100644 --- a/addons/settings/fnc_addSetting.sqf +++ b/addons/settings/fnc_addSetting.sqf @@ -47,7 +47,7 @@ Author: // Prep functions if not yet prepped to avoid race condition. if (isNil QFUNC(init)) then { - #include "XEH_PREP.sqf" + #include "XEH_PREP.hpp" }; call FUNC(init) == 0 diff --git a/addons/settings/fnc_gui_addonChanged.sqf b/addons/settings/fnc_gui_addonChanged.sqf index 643f76cfda..ebe402506a 100644 --- a/addons/settings/fnc_gui_addonChanged.sqf +++ b/addons/settings/fnc_gui_addonChanged.sqf @@ -21,7 +21,7 @@ uiNamespace setVariable [QGVAR(addonIndex), _index]; private _selectedSource = uiNamespace getVariable QGVAR(source); if !(_display getVariable [_selectedAddon, false]) then { - #include "gui_createCategory.sqf" + #include "gui_createCategory.inc.sqf" _display setVariable [_selectedAddon, true]; }; diff --git a/addons/settings/fnc_init.sqf b/addons/settings/fnc_init.sqf index 3b35a49812..b3972e0bff 100644 --- a/addons/settings/fnc_init.sqf +++ b/addons/settings/fnc_init.sqf @@ -51,7 +51,7 @@ if (canSuspend) exitWith { }; // --- init settings system, makes this function useable in preInit without having to add "CBA_settings" to requiredAddons -#include "initSettings.sqf" +#include "initSettings.inc.sqf" params [ ["_setting", "", [""]], diff --git a/addons/settings/gui_createCategory.sqf b/addons/settings/gui_createCategory.inc.sqf similarity index 100% rename from addons/settings/gui_createCategory.sqf rename to addons/settings/gui_createCategory.inc.sqf diff --git a/addons/settings/initSettings.sqf b/addons/settings/initSettings.inc.sqf similarity index 100% rename from addons/settings/initSettings.sqf rename to addons/settings/initSettings.inc.sqf diff --git a/addons/ui/XEH_preInit.sqf b/addons/ui/XEH_preInit.sqf index cee1d51c14..86fcaae834 100644 --- a/addons/ui/XEH_preInit.sqf +++ b/addons/ui/XEH_preInit.sqf @@ -2,7 +2,7 @@ ADDON = false; -#include "initSettings.sqf" +#include "initSettings.inc.sqf" if (hasInterface) then { call COMPILE_FILE(flexiMenu\init); diff --git a/addons/ui/initSettings.sqf b/addons/ui/initSettings.inc.sqf similarity index 100% rename from addons/ui/initSettings.sqf rename to addons/ui/initSettings.inc.sqf diff --git a/sqfc.json b/sqfc.json index 59e77fb47d..6deade7e6f 100644 --- a/sqfc.json +++ b/sqfc.json @@ -6,11 +6,7 @@ "P:/" ], "excludeList": [ - "\\initsettings.sqf", - "\\initkeybinds.sqf", - "\\xeh_prep.sqf", - "\\backwards_comp.sqf", - "settings\\gui_createcategory.sqf", + ".inc.sqf", "diagnostic\\fnc_isdebugconsoleallowed.sqf", "xeh\\fnc_initdisplay.sqf", "xeh\\fnc_startloadingscreen.sqf", diff --git a/tools/sqfvmChecker.py b/tools/sqfvmChecker.py index 45144cdad8..a1db19a049 100644 --- a/tools/sqfvmChecker.py +++ b/tools/sqfvmChecker.py @@ -7,7 +7,7 @@ addon_base_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) files_to_ignore_lower = [ - x.lower() for x in ["initSettings.sqf", "initKeybinds.sqf", "XEH_PREP.sqf", "backwards_comp.sqf", "gui_createCategory.sqf", "test_settings_comments.sqf", "test_settings_comments_eof.sqf", "test_settings_multiline.sqf", "test_settings_regular.sqf", "test_settings_unicode.sqf"] + x.lower() for x in ["test_settings_comments.sqf", "test_settings_comments_eof.sqf", "test_settings_multiline.sqf", "test_settings_regular.sqf", "test_settings_unicode.sqf"] ] sqfvm_exe = os.path.join(addon_base_path, "sqfvm.exe") virtual_paths = [ @@ -23,7 +23,7 @@ def get_files_to_process(basePath): for root, _dirs, files in os.walk(os.path.join(addon_base_path, "addons")): for file in files: if file.endswith(".sqf") or file == "config.cpp": - if file.lower() in files_to_ignore_lower: + if file.endswith(".inc.sqf") or file.lower() in files_to_ignore_lower: continue skipPreprocessing = False for addonTomlPath in [os.path.join(root, "addon.toml"), os.path.join(os.path.dirname(root), "addon.toml")]: @@ -31,7 +31,7 @@ def get_files_to_process(basePath): with open(addonTomlPath, "rb") as f: tomlFile = tomllib.load(f) try: - skipPreprocessing = not tomlFile.get('rapify')['enabled'] + skipPreprocessing = tomlFile.get('tools')['sqfvm_skipConfigChecks'] except: pass if file == "config.cpp" and skipPreprocessing: @@ -41,7 +41,7 @@ def get_files_to_process(basePath): return arma_files -def process_file(filePath, skipA3Warnings=True): +def process_file(filePath, skipA3Warnings=True, skipPragmaHemtt=True): with open(filePath, "r", encoding="utf-8", errors="ignore") as file: content = file.read() if content.startswith("//pragma SKIP_COMPILE"): @@ -70,10 +70,8 @@ def process_file(filePath, skipA3Warnings=True): if line.startswith("[ERR]"): fileHasError = True if not ( - skipA3Warnings - and line.startswith("[WRN]") - and ("a3/" in line) - and (("Unexpected IFDEF" in line) or ("defined twice" in line)) + (skipA3Warnings and line.startswith("[WRN]") and ("a3/" in line) and (("Unexpected IFDEF" in line) or ("defined twice" in line))) + or (skipPragmaHemtt and line.startswith("[WRN]") and ("Unknown pragma instruction 'hemtt'" in line)) ): print(" {}".format(line)) return fileHasError