diff --git a/.efrocachemap b/.efrocachemap index 2114edb3..1a98b554 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -3932,24 +3932,24 @@ "assets/build/windows/Win32/ucrtbased.dll": "https://files.ballistica.net/cache/ba1/b5/85/f8b6d0558ddb87267f34254b1450", "assets/build/windows/Win32/vc_redist.x86.exe": "https://files.ballistica.net/cache/ba1/1c/e1/4a1a2eddda2f4aebd5f8b64ab08e", "assets/build/windows/Win32/vcruntime140d.dll": "https://files.ballistica.net/cache/ba1/50/8d/bc2600ac9491f1b14d659709451f", - "build/prefab/full/linux_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/09/63/c5e389ac3affd7614b3754251445", - "build/prefab/full/linux_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/a1/4f/a00f7d56d98ca0b23c9cc037cca8", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/6f/b4/97b5f96e4f6e559b6c49da500c6c", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/41/30/a34428927841e75600131ff0890a", - "build/prefab/full/mac_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/8d/be/da1e640553e577a11b347ed4bab5", - "build/prefab/full/mac_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/6d/b9/1837173cd127df9196aa5276d2ba", - "build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/52/d7/0a4f8dc06af71baf641100f0fb66", - "build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/4d/bd/6e50404a6654c8d9a49c0239d9c8", - "build/prefab/full/windows_x86/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/74/e4/18e6e35da6f21bb23ba9ebe3ff5d", - "build/prefab/full/windows_x86/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/d8/09/3e0406fd36ecce862c7579f52e5e", - "build/prefab/full/windows_x86_server/debug/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/b0/ac/0afa5453d5fef6b4022f5f8ddf11", - "build/prefab/full/windows_x86_server/release/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/08/ba/7f4028d075966d4da22232a160ed", + "build/prefab/full/linux_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/72/93/a41a9777570bee533ab3259f1597", + "build/prefab/full/linux_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/2d/40/964c6b36393b12b459433dcda36c", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/e3/d6/e286d413e60a2e6a43b5773d6441", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/20/97/d4a3ccde682ec984a67b3d683f54", + "build/prefab/full/mac_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/82/25/c1d9b277444a9aa46be5f1eec44a", + "build/prefab/full/mac_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/9c/05/36d55f280f9676e3098ed9aa6a78", + "build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/8a/8c/0a3d0b30186fec5b189a5f0407cb", + "build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/30/1c/f554338c290026fb45bd52e9e1a7", + "build/prefab/full/windows_x86/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/fa/e5/e624e868b0fc00a2413ae4b9432c", + "build/prefab/full/windows_x86/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/e8/1e/418931e11d12072c869808579592", + "build/prefab/full/windows_x86_server/debug/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/21/21/de5c6e124de4675b11d0c73ceb28", + "build/prefab/full/windows_x86_server/release/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/11/f3/037c95d8bbb74730bdef686526a5", "build/prefab/lib/linux_x86_64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/1a/4a/bd980abb5c7078d1e144d19fa63d", "build/prefab/lib/linux_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/fd/cd/3397d744c7405740df4d4ae567f0", "build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/34/c2/24a9ab7d513acdb8ebaa3251611f", "build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/54/40/8e0cc564f49f8963803834ec7995", - "build/prefab/lib/mac_x86_64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/65/1a/10d49195d31407375d360c59ff73", - "build/prefab/lib/mac_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/4e/93/2df517f791ac9b44d4cef5cb269d", - "build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/c1/67/b8523fe51925a3c4458e5a0b6e90", - "build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/0f/36/28df9ad7c6406de309e9ff8d3748" + "build/prefab/lib/mac_x86_64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/62/55/765d22f045d0d4d31a02aeffec7b", + "build/prefab/lib/mac_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/4b/76/aa0554648b65da797eb30b9c4699", + "build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/91/dc/c415fc19cfa0395cc200a5a72e2c", + "build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/cd/d8/ec9c1c0955cc62ea574a4b42a707" } \ No newline at end of file diff --git a/.idea/dictionaries/ericf.xml b/.idea/dictionaries/ericf.xml index d0296a83..a30ab2e5 100644 --- a/.idea/dictionaries/ericf.xml +++ b/.idea/dictionaries/ericf.xml @@ -1571,6 +1571,7 @@ premultiplied premultiply preprocessing + prereq prereqs prevstate priceraw diff --git a/Makefile b/Makefile index 652f3fe5..aae2e772 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,13 @@ # Prefix used for output of docs/changelogs/etc. targets for use in webpages. DOCPREFIX = "ballisticacore_" +# Set env-var BA_ENABLE_IRONY_BUILD_DB=1 to enable creating/updating a +# cmake compile-commands database for use with irony for emacs (and possibly +# other tools). +ifeq ($(BA_ENABLE_IRONY_BUILD_DB),1) + PREREQ_IRONY = .cache/irony/compile_commands.json +endif + ################################################################################ # # @@ -23,7 +30,7 @@ MAC_CLOUDSHELL_HOST ?= homebook-fro help: @tools/pcommand makefile_target_list Makefile -PREREQS = .cache/checkenv .dir-locals.el \ +PREREQS = .cache/checkenv $(PREREQ_IRONY) .dir-locals.el \ .mypy.ini .pycheckers .pylintrc .style.yapf .clang-format \ ballisticacore-cmake/.clang-format .projectile .editorconfig @@ -32,7 +39,7 @@ PREREQS = .cache/checkenv .dir-locals.el \ prereqs: ${PREREQS} prereqs-clean: - @rm -rf ${PREREQS} .irony + @rm -rf ${PREREQS} # Build all assets for all platforms. assets: prereqs @@ -830,5 +837,21 @@ _cmake-simple-ci-server-build: cmake -DCMAKE_BUILD_TYPE=Debug -DHEADLESS=true ${PWD}/ballisticacore-cmake cd build/cmake_simple_ci_server_build && ${MAKE} -j${CPUS} +# Irony in emacs requires us to use cmake to generate a full +# list of compile commands for all files; lets try to keep it up to date +# whenever CMakeLists changes. +.cache/irony/compile_commands.json: ballisticacore-cmake/CMakeLists.txt + @tools/pcommand echo BLU Updating Irony build commands db... + @echo Generating Irony compile-commands-list... + @mkdir -p .cache/irony + @cd .cache/irony \ + && cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Debug \ + ${PWD}/ballisticacore-cmake + @mv .cache/irony/compile_commands.json . \ + && rm -rf .cache/irony \ + && mkdir .cache/irony \ + && mv compile_commands.json .cache/irony + @tools/pcommand echo BLU Created Irony build db at $@ + # Tell make which of these targets don't represent files. .PHONY: _cmake-simple-ci-server-build diff --git a/ballisticacore-cmake/.idea/dictionaries/ericf.xml b/ballisticacore-cmake/.idea/dictionaries/ericf.xml index db864bea..773bfe03 100644 --- a/ballisticacore-cmake/.idea/dictionaries/ericf.xml +++ b/ballisticacore-cmake/.idea/dictionaries/ericf.xml @@ -638,6 +638,7 @@ preloaded preloads premult + prereq printf printnodes printobjects diff --git a/src/ballistica/app/app.h b/src/ballistica/app/app.h index a212a939..2313a445 100644 --- a/src/ballistica/app/app.h +++ b/src/ballistica/app/app.h @@ -22,7 +22,7 @@ class App : public Module { /// This gets run after the constructor completes. /// Any setup that may trigger a virtual method/etc. should go here. - void PostInit(); + auto PostInit() -> void; /// Return whether this class runs its own event loop. /// If true, BallisticaMain() will continuously ask the app for events @@ -36,26 +36,26 @@ class App : public Module { /// ensure they are self-sustaining. For instance, an app relying on /// frame-draws for its main thread event processing may need to /// manually pump events until frame rendering begins. - virtual void PrimeEventPump(); + virtual auto PrimeEventPump() -> void; /// Handle any pending OS events. /// On normal graphical builds this is triggered by RunRenderUpkeepCycle(); /// timer intervals for headless builds, etc. /// Should process any pending OS events, etc. - virtual void RunEvents(); + virtual auto RunEvents() -> void; // These should be called by the window, view-controller, sdl, // or whatever is driving the app. They must be called from the main thread. /// Should be called on mobile when the app is backgrounded. /// Pauses threads, closes network sockets, etc. - void PauseApp(); + auto PauseApp() -> void; auto paused() const -> bool { return actually_paused_; } /// Should be called on mobile when the app is foregrounded. /// Spins threads back up, re-opens network sockets, etc. - void ResumeApp(); + auto ResumeApp() -> void; /// The last time the app was resumed (uses GetRealTime() value). auto last_app_resume_time() const -> millisecs_t { @@ -63,27 +63,28 @@ class App : public Module { } /// Should be called when the window/screen resolution changes. - void SetScreenResolution(float width, float height); + auto SetScreenResolution(float width, float height) -> void; /// Should be called if the platform detects the GL context was lost. - void RebuildLostGLContext(); + auto RebuildLostGLContext() -> void; /// Attempt to draw a frame. - void DrawFrame(bool during_resize = false); + auto DrawFrame(bool during_resize = false) -> void; /// Used on platforms where our main thread event processing is driven by /// frame-draw commands given to us. This should be called after drawing /// a frame in order to bring game state up to date and process OS events. - void RunRenderUpkeepCycle(); + auto RunRenderUpkeepCycle() -> void; /// Called by the graphics-server when drawing completes for a frame. - virtual void DidFinishRenderingFrame(FrameDef* frame); + virtual auto DidFinishRenderingFrame(FrameDef* frame) -> void; /// Return the price of an IAP product as a human-readable string, /// or an empty string if not found. /// FIXME: move this to platform. auto GetProductPrice(const std::string& product) -> std::string; - void SetProductPrice(const std::string& product, const std::string& price); + auto SetProductPrice(const std::string& product, const std::string& price) + -> void; auto done() const -> bool { return done_; } @@ -93,41 +94,43 @@ class App : public Module { return server_wrapper_managed_; } - virtual void OnBootstrapComplete(); + virtual auto OnBootstrapComplete() -> void; // Deferred calls that can be made from other threads. - void PushCursorUpdate(bool vis); - void PushShowOnlineScoreUICall(const std::string& show, + auto PushCursorUpdate(bool vis) -> void; + auto PushShowOnlineScoreUICall(const std::string& show, const std::string& game, - const std::string& game_version); - void PushGetFriendScoresCall(const std::string& game, - const std::string& game_version, void* data); - void PushSubmitScoreCall(const std::string& game, - const std::string& game_version, int64_t score); - void PushAchievementReportCall(const std::string& achievement); - void PushGetScoresToBeatCall(const std::string& level, - const std::string& config, void* py_callback); - void PushOpenURLCall(const std::string& url); - void PushStringEditCall(const std::string& name, const std::string& value, - int max_chars); - void PushSetStressTestingCall(bool enable, int player_count); - void PushPurchaseCall(const std::string& item); - void PushRestorePurchasesCall(); - void PushResetAchievementsCall(); - void PushPurchaseAckCall(const std::string& purchase, - const std::string& order_id); - void PushNetworkSetupCall(int port, int telnet_port, bool enable_telnet, - const std::string& telnet_password); - void PushShutdownCompleteCall(); - void PushInterruptSignalSetupCall(); + const std::string& game_version) -> void; + auto PushGetFriendScoresCall(const std::string& game, + const std::string& game_version, void* data) + -> void; + auto PushSubmitScoreCall(const std::string& game, + const std::string& game_version, int64_t score) + -> void; + auto PushAchievementReportCall(const std::string& achievement) -> void; + auto PushGetScoresToBeatCall(const std::string& level, + const std::string& config, void* py_callback) + -> void; + auto PushOpenURLCall(const std::string& url) -> void; + auto PushStringEditCall(const std::string& name, const std::string& value, + int max_chars) -> void; + auto PushSetStressTestingCall(bool enable, int player_count) -> void; + auto PushPurchaseCall(const std::string& item) -> void; + auto PushRestorePurchasesCall() -> void; + auto PushResetAchievementsCall() -> void; + auto PushPurchaseAckCall(const std::string& purchase, + const std::string& order_id) -> void; + auto PushNetworkSetupCall(int port, int telnet_port, bool enable_telnet, + const std::string& telnet_password) -> void; + auto PushShutdownCompleteCall() -> void; + auto PushInterruptSignalSetupCall() -> void; private: - void UpdateStressTesting(); - void UpdatePauseResume(); - void OnPause(); - void OnResume(); - void ShutdownComplete(); + auto UpdatePauseResume() -> void; + auto OnPause() -> void; + auto OnResume() -> void; + auto ShutdownComplete() -> void; bool done_{}; bool server_wrapper_managed_{}; bool sys_paused_app_{}; diff --git a/src/ballistica/ballistica.cc b/src/ballistica/ballistica.cc index 933b4485..4bab72f6 100644 --- a/src/ballistica/ballistica.cc +++ b/src/ballistica/ballistica.cc @@ -29,7 +29,7 @@ namespace ballistica { // These are set automatically via script; don't change here. -const int kAppBuildNumber = 20221; +const int kAppBuildNumber = 20223; const char* kAppVersion = "1.5.27"; // Our standalone globals. diff --git a/tools/batools/updateproject.py b/tools/batools/updateproject.py index 57b0246c..bd32c562 100755 --- a/tools/batools/updateproject.py +++ b/tools/batools/updateproject.py @@ -180,16 +180,10 @@ class Updater: sys.exit(255) def _update_compile_commands_file(self) -> None: - # Only do this in private repo: - if self._public: - return - # Update our local compile-commands file based on any changes to - # our cmake stuff. Do this at end so cmake changes already happened. - if not self._check and os.path.exists('ballisticacore-cmake'): - if os.system('make .irony/compile_commands.json') != 0: - print(f'{Clr.RED}Error updating compile-commands.{Clr.RST}') - sys.exit(255) + # This will update our prereqs which may include compile-commands + # files (.cache/irony/compile_commands.json, etc) + subprocess.run(['make', 'prereqs'], check=True) def _apply_file_changes(self) -> None: # Now write out any project files that have changed