CMake: Add GAME_INCREMENTAL_BUILD option

Introduce a cmake way to make incremental builds for faster builds when
modifying the game code instead of rebuilding the whole thing everytime.
Turned OFF by default.
This commit is contained in:
Mefiresu 2023-07-29 21:08:35 +02:00
parent e38306414d
commit d73bfe8bb7
3 changed files with 638 additions and 5 deletions

View File

@ -34,11 +34,20 @@ set(GAME_OUTPUT_NAME "Game" CACHE STRING "The name of the built library")
option(GAME_INCLUDE_EDITOR "Whether or not to include editor functions. Defaults to true" ON)
# mmmmeh
set(GAME_SOURCES
${GAME_NAME}/Game.c
${GAME_NAME}/Objects/All.c
)
option(GAME_INCREMENTAL_BUILD "Whether or not to build all objects separately (for quicker dev-->build iterations). Defaults to false." OFF)
if(GAME_INCREMENTAL_BUILD)
include(${GAME_NAME}/Objects.cmake)
set(GAME_SOURCES
${GAME_NAME}/Game.c
${GENERATED_SOURCES}
)
else()
set(GAME_SOURCES
${GAME_NAME}/Game.c
${GAME_NAME}/Objects/All.c
)
endif()
if(GAME_STATIC)
add_library(${GAME_NAME} STATIC ${GAME_SOURCES})

611
SonicMania/Objects.cmake Normal file
View File

@ -0,0 +1,611 @@
set(GENERATED_SOURCES
${GAME_NAME}/Objects/Helpers/ParticleHelpers.c
${GAME_NAME}/Objects/Helpers/DrawHelpers.c
${GAME_NAME}/Objects/Helpers/GameProgress.c
${GAME_NAME}/Objects/Helpers/LogHelpers.c
${GAME_NAME}/Objects/Helpers/TimeAttackData.c
${GAME_NAME}/Objects/Helpers/ColorHelpers.c
${GAME_NAME}/Objects/Helpers/ReplayDB.c
${GAME_NAME}/Objects/Helpers/PlayerProbe.c
${GAME_NAME}/Objects/Helpers/BadnikHelpers.c
${GAME_NAME}/Objects/Helpers/MathHelpers.c
${GAME_NAME}/Objects/Helpers/CompetitionSession.c
${GAME_NAME}/Objects/Helpers/Options.c
${GAME_NAME}/Objects/Helpers/PlayerHelpers.c
${GAME_NAME}/Objects/FBZ/FlameSpring.c
${GAME_NAME}/Objects/FBZ/FoldingPlatform.c
${GAME_NAME}/Objects/FBZ/Crane.c
${GAME_NAME}/Objects/FBZ/PropellerShaft.c
${GAME_NAME}/Objects/FBZ/FBZTrash.c
${GAME_NAME}/Objects/FBZ/Clucker.c
${GAME_NAME}/Objects/FBZ/FBZ2Outro.c
${GAME_NAME}/Objects/FBZ/SwitchDoor.c
${GAME_NAME}/Objects/FBZ/WarpDoor.c
${GAME_NAME}/Objects/FBZ/Tuesday.c
${GAME_NAME}/Objects/FBZ/Mine.c
${GAME_NAME}/Objects/FBZ/BigSqueeze.c
${GAME_NAME}/Objects/FBZ/TwistingDoor.c
${GAME_NAME}/Objects/FBZ/HangGlider.c
${GAME_NAME}/Objects/FBZ/SpiralPlatform.c
${GAME_NAME}/Objects/FBZ/LightBarrier.c
${GAME_NAME}/Objects/FBZ/FBZStorm.c
${GAME_NAME}/Objects/FBZ/TetherBall.c
${GAME_NAME}/Objects/FBZ/Blaster.c
${GAME_NAME}/Objects/FBZ/Propeller.c
${GAME_NAME}/Objects/FBZ/FBZMissile.c
${GAME_NAME}/Objects/FBZ/ElectroMagnet.c
${GAME_NAME}/Objects/FBZ/FBZFan.c
${GAME_NAME}/Objects/FBZ/HangPoint.c
${GAME_NAME}/Objects/FBZ/Launcher.c
${GAME_NAME}/Objects/FBZ/SpiderMobile.c
${GAME_NAME}/Objects/FBZ/MagSpikeBall.c
${GAME_NAME}/Objects/FBZ/Cylinder.c
${GAME_NAME}/Objects/FBZ/FBZSinkTrash.c
${GAME_NAME}/Objects/FBZ/FBZ1Outro.c
${GAME_NAME}/Objects/FBZ/MagPlatform.c
${GAME_NAME}/Objects/FBZ/FBZSetup.c
${GAME_NAME}/Objects/FBZ/Technosqueek.c
${GAME_NAME}/Objects/Unused/Wisp.c
${GAME_NAME}/Objects/Unused/TargetBumper.c
${GAME_NAME}/Objects/Unused/SpearBlock.c
${GAME_NAME}/Objects/Unused/Pendulum.c
${GAME_NAME}/Objects/Unused/WallCrawl.c
${GAME_NAME}/Objects/Global/SuperSparkle.c
${GAME_NAME}/Objects/Global/Camera.c
${GAME_NAME}/Objects/Global/InvisibleBlock.c
${GAME_NAME}/Objects/Global/HUD.c
${GAME_NAME}/Objects/Global/Ring.c
${GAME_NAME}/Objects/Global/ActClear.c
${GAME_NAME}/Objects/Global/Debris.c
${GAME_NAME}/Objects/Global/Announcer.c
${GAME_NAME}/Objects/Global/SpeedGate.c
${GAME_NAME}/Objects/Global/StarPost.c
${GAME_NAME}/Objects/Global/Competition.c
${GAME_NAME}/Objects/Global/Player.c
${GAME_NAME}/Objects/Global/PauseMenu.c
${GAME_NAME}/Objects/Global/ItemBox.c
${GAME_NAME}/Objects/Global/GameOver.c
${GAME_NAME}/Objects/Global/ScoreBonus.c
${GAME_NAME}/Objects/Global/Spikes.c
${GAME_NAME}/Objects/Global/Zone.c
${GAME_NAME}/Objects/Global/Spring.c
${GAME_NAME}/Objects/Global/SignPost.c
${GAME_NAME}/Objects/Global/NoSwap.c
${GAME_NAME}/Objects/Global/SaveGame.c
${GAME_NAME}/Objects/Global/InvincibleStars.c
${GAME_NAME}/Objects/Global/Dust.c
${GAME_NAME}/Objects/Global/APICallback.c
${GAME_NAME}/Objects/Global/ImageTrail.c
${GAME_NAME}/Objects/Global/EggPrison.c
${GAME_NAME}/Objects/Global/PlaneSwitch.c
${GAME_NAME}/Objects/Global/TimeAttackGate.c
${GAME_NAME}/Objects/Global/DialogRunner.c
${GAME_NAME}/Objects/Global/COverlay.c
${GAME_NAME}/Objects/Global/ReplayRecorder.c
${GAME_NAME}/Objects/Global/BoundsMarker.c
${GAME_NAME}/Objects/Global/Shield.c
${GAME_NAME}/Objects/Global/SpecialRing.c
${GAME_NAME}/Objects/Global/TitleCard.c
${GAME_NAME}/Objects/Global/Explosion.c
${GAME_NAME}/Objects/Global/Music.c
${GAME_NAME}/Objects/Global/Animals.c
${GAME_NAME}/Objects/Global/Soundboard.c
${GAME_NAME}/Objects/Global/DebugMode.c
${GAME_NAME}/Objects/Global/Localization.c
${GAME_NAME}/Objects/Global/EncoreRoute.c
${GAME_NAME}/Objects/BSS/BSS_Palette.c
${GAME_NAME}/Objects/BSS/BSS_Horizon.c
${GAME_NAME}/Objects/BSS/BSS_Collected.c
${GAME_NAME}/Objects/BSS/BSS_HUD.c
${GAME_NAME}/Objects/BSS/BSS_Collectable.c
${GAME_NAME}/Objects/BSS/BSS_Setup.c
${GAME_NAME}/Objects/BSS/BSS_Player.c
${GAME_NAME}/Objects/BSS/BSS_Message.c
${GAME_NAME}/Objects/UFO/UFO_Message.c
${GAME_NAME}/Objects/UFO/UFO_Springboard.c
${GAME_NAME}/Objects/UFO/UFO_Shadow.c
${GAME_NAME}/Objects/UFO/SpecialClear.c
${GAME_NAME}/Objects/UFO/UFO_Circuit.c
${GAME_NAME}/Objects/UFO/UFO_Dust.c
${GAME_NAME}/Objects/UFO/UFO_HUD.c
${GAME_NAME}/Objects/UFO/UFO_Plasma.c
${GAME_NAME}/Objects/UFO/UFO_Camera.c
${GAME_NAME}/Objects/UFO/UFO_Player.c
${GAME_NAME}/Objects/UFO/UFO_Decoration.c
${GAME_NAME}/Objects/UFO/UFO_ItemBox.c
${GAME_NAME}/Objects/UFO/UFO_Setup.c
${GAME_NAME}/Objects/UFO/UFO_SpeedLines.c
${GAME_NAME}/Objects/UFO/UFO_Sphere.c
${GAME_NAME}/Objects/UFO/UFO_Ring.c
${GAME_NAME}/Objects/UFO/UFO_Water.c
${GAME_NAME}/Objects/Menu/UIWidgets.c
${GAME_NAME}/Objects/Menu/ManiaModeMenu.c
${GAME_NAME}/Objects/Menu/UIDiorama.c
${GAME_NAME}/Objects/Menu/UISaveSlot.c
${GAME_NAME}/Objects/Menu/OptionsMenu.c
${GAME_NAME}/Objects/Menu/LevelSelect.c
${GAME_NAME}/Objects/Menu/UILeaderboard.c
${GAME_NAME}/Objects/Menu/UIShifter.c
${GAME_NAME}/Objects/Menu/UICreditsText.c
${GAME_NAME}/Objects/Menu/UIVideo.c
${GAME_NAME}/Objects/Menu/UIBackground.c
${GAME_NAME}/Objects/Menu/UIUsernamePopup.c
${GAME_NAME}/Objects/Menu/UIVsZoneButton.c
${GAME_NAME}/Objects/Menu/UITAZoneModule.c
${GAME_NAME}/Objects/Menu/UIRankButton.c
${GAME_NAME}/Objects/Menu/DASetup.c
${GAME_NAME}/Objects/Menu/UIChoice.c
${GAME_NAME}/Objects/Menu/UITABanner.c
${GAME_NAME}/Objects/Menu/ExtrasMenu.c
${GAME_NAME}/Objects/Menu/UIReplayCarousel.c
${GAME_NAME}/Objects/Menu/UIDialog.c
${GAME_NAME}/Objects/Menu/UIVsScoreboard.c
${GAME_NAME}/Objects/Menu/UIOptionPanel.c
${GAME_NAME}/Objects/Menu/UIButton.c
${GAME_NAME}/Objects/Menu/DAControl.c
${GAME_NAME}/Objects/Menu/UICharButton.c
${GAME_NAME}/Objects/Menu/UIHeading.c
${GAME_NAME}/Objects/Menu/MenuParam.c
${GAME_NAME}/Objects/Menu/UIResPicker.c
${GAME_NAME}/Objects/Menu/UIWaitSpinner.c
${GAME_NAME}/Objects/Menu/UIButtonLabel.c
${GAME_NAME}/Objects/Menu/UIText.c
${GAME_NAME}/Objects/Menu/UIVsRoundPicker.c
${GAME_NAME}/Objects/Menu/UIVsCharSelector.c
${GAME_NAME}/Objects/Menu/UITransition.c
${GAME_NAME}/Objects/Menu/E3MenuSetup.c
${GAME_NAME}/Objects/Menu/UIWinSize.c
${GAME_NAME}/Objects/Menu/MainMenu.c
${GAME_NAME}/Objects/Menu/LogoSetup.c
${GAME_NAME}/Objects/Menu/TimeAttackMenu.c
${GAME_NAME}/Objects/Menu/UIVsResults.c
${GAME_NAME}/Objects/Menu/ThanksSetup.c
${GAME_NAME}/Objects/Menu/UISlider.c
${GAME_NAME}/Objects/Menu/UISubHeading.c
${GAME_NAME}/Objects/Menu/UICarousel.c
${GAME_NAME}/Objects/Menu/MenuSetup.c
${GAME_NAME}/Objects/Menu/UIPopover.c
${GAME_NAME}/Objects/Menu/UIControl.c
${GAME_NAME}/Objects/Menu/UIModeButton.c
${GAME_NAME}/Objects/Menu/DemoMenu.c
${GAME_NAME}/Objects/Menu/CompetitionMenu.c
${GAME_NAME}/Objects/Menu/UIPicture.c
${GAME_NAME}/Objects/Menu/UIMedallionPanel.c
${GAME_NAME}/Objects/Menu/UIInfoLabel.c
${GAME_NAME}/Objects/Menu/UIButtonPrompt.c
${GAME_NAME}/Objects/Menu/UIKeyBinder.c
${GAME_NAME}/Objects/PGZ/Woodrow.c
${GAME_NAME}/Objects/PGZ/SP500.c
${GAME_NAME}/Objects/PGZ/PSZ2Setup.c
${GAME_NAME}/Objects/PGZ/Turntable.c
${GAME_NAME}/Objects/PGZ/Ink.c
${GAME_NAME}/Objects/PGZ/PSZ2Intro.c
${GAME_NAME}/Objects/PGZ/PSZ1Setup.c
${GAME_NAME}/Objects/PGZ/Press.c
${GAME_NAME}/Objects/PGZ/PSZLauncher.c
${GAME_NAME}/Objects/PGZ/WoodChipper.c
${GAME_NAME}/Objects/PGZ/PSZEggman.c
${GAME_NAME}/Objects/PGZ/HeavyShinobi.c
${GAME_NAME}/Objects/PGZ/FrostThrower.c
${GAME_NAME}/Objects/PGZ/PSZDoor.c
${GAME_NAME}/Objects/PGZ/Shuriken.c
${GAME_NAME}/Objects/PGZ/DoorTrigger.c
${GAME_NAME}/Objects/PGZ/SP500MkII.c
${GAME_NAME}/Objects/PGZ/PSZ2Outro.c
${GAME_NAME}/Objects/PGZ/InkWipe.c
${GAME_NAME}/Objects/PGZ/PaperRoller.c
${GAME_NAME}/Objects/PGZ/PrintBlock.c
${GAME_NAME}/Objects/PGZ/Ice.c
${GAME_NAME}/Objects/PGZ/PSZ1Intro.c
${GAME_NAME}/Objects/PGZ/Snowflakes.c
${GAME_NAME}/Objects/PGZ/IceBomba.c
${GAME_NAME}/Objects/PGZ/Dragonfly.c
${GAME_NAME}/Objects/PGZ/IceSpring.c
${GAME_NAME}/Objects/PGZ/PetalPile.c
${GAME_NAME}/Objects/PGZ/Crate.c
${GAME_NAME}/Objects/PGZ/Acetone.c
${GAME_NAME}/Objects/PGZ/Shiversaw.c
${GAME_NAME}/Objects/PGZ/JuggleSaw.c
${GAME_NAME}/Objects/PGZ/Newspaper.c
${GAME_NAME}/Objects/Credits/AnimalHBH.c
${GAME_NAME}/Objects/Credits/TAEmerald.c
${GAME_NAME}/Objects/Credits/TryAgain.c
${GAME_NAME}/Objects/Credits/EncoreGoodEnd.c
${GAME_NAME}/Objects/Credits/CreditsSetup.c
${GAME_NAME}/Objects/Credits/TryAgainE.c
${GAME_NAME}/Objects/HCZ/ScrewMobile.c
${GAME_NAME}/Objects/HCZ/PullChain.c
${GAME_NAME}/Objects/HCZ/Fan.c
${GAME_NAME}/Objects/HCZ/Spear.c
${GAME_NAME}/Objects/HCZ/ButtonDoor.c
${GAME_NAME}/Objects/HCZ/HangConveyor.c
${GAME_NAME}/Objects/HCZ/Blastoid.c
${GAME_NAME}/Objects/HCZ/Gondola.c
${GAME_NAME}/Objects/HCZ/TwistingSlide.c
${GAME_NAME}/Objects/HCZ/Whirlpool.c
${GAME_NAME}/Objects/HCZ/Jellygnite.c
${GAME_NAME}/Objects/HCZ/MegaChopper.c
${GAME_NAME}/Objects/HCZ/Pointdexter.c
${GAME_NAME}/Objects/HCZ/Current.c
${GAME_NAME}/Objects/HCZ/Jawz.c
${GAME_NAME}/Objects/HCZ/HCZSpikeBall.c
${GAME_NAME}/Objects/HCZ/HCZOneWayDoor.c
${GAME_NAME}/Objects/HCZ/BreakBar.c
${GAME_NAME}/Objects/HCZ/DiveEggman.c
${GAME_NAME}/Objects/HCZ/TurboSpiker.c
${GAME_NAME}/Objects/HCZ/HandLauncher.c
${GAME_NAME}/Objects/HCZ/LaundroMobile.c
${GAME_NAME}/Objects/HCZ/DCEvent.c
${GAME_NAME}/Objects/HCZ/HCZSetup.c
${GAME_NAME}/Objects/HCZ/HCZ1Intro.c
${GAME_NAME}/Objects/HCZ/Buggernaut.c
${GAME_NAME}/Objects/HCZ/WaterGush.c
${GAME_NAME}/Objects/ERZ/PhantomShield.c
${GAME_NAME}/Objects/ERZ/ERZGunner.c
${GAME_NAME}/Objects/ERZ/PhantomRuby.c
${GAME_NAME}/Objects/ERZ/ERZSetup.c
${GAME_NAME}/Objects/ERZ/ERZStart.c
${GAME_NAME}/Objects/ERZ/ERZShinobi.c
${GAME_NAME}/Objects/ERZ/PKingAttack.c
${GAME_NAME}/Objects/ERZ/PhantomRider.c
${GAME_NAME}/Objects/ERZ/PhantomHand.c
${GAME_NAME}/Objects/ERZ/ERZMystic.c
${GAME_NAME}/Objects/ERZ/PhantomKing.c
${GAME_NAME}/Objects/ERZ/PhantomGunner.c
${GAME_NAME}/Objects/ERZ/ERZRider.c
${GAME_NAME}/Objects/ERZ/PhantomMissile.c
${GAME_NAME}/Objects/ERZ/RingField.c
${GAME_NAME}/Objects/ERZ/ERZOutro.c
${GAME_NAME}/Objects/ERZ/PhantomMystic.c
${GAME_NAME}/Objects/ERZ/KleptoMobile.c
${GAME_NAME}/Objects/ERZ/PhantomEgg.c
${GAME_NAME}/Objects/ERZ/PhantomShinobi.c
${GAME_NAME}/Objects/ERZ/ERZKing.c
${GAME_NAME}/Objects/Title/TitleLogo.c
${GAME_NAME}/Objects/Title/TitleEggman.c
${GAME_NAME}/Objects/Title/TitleSonic.c
${GAME_NAME}/Objects/Title/Title3DSprite.c
${GAME_NAME}/Objects/Title/TitleSetup.c
${GAME_NAME}/Objects/Title/TitleBG.c
${GAME_NAME}/Objects/LRZ/RockDrill.c
${GAME_NAME}/Objects/LRZ/LRZFireball.c
${GAME_NAME}/Objects/LRZ/LavaGeyser.c
${GAME_NAME}/Objects/LRZ/ThoughtBubble.c
${GAME_NAME}/Objects/LRZ/DashLift.c
${GAME_NAME}/Objects/LRZ/HeavyKing.c
${GAME_NAME}/Objects/LRZ/Drillerdroid.c
${GAME_NAME}/Objects/LRZ/Rexon.c
${GAME_NAME}/Objects/LRZ/LRZRockPile.c
${GAME_NAME}/Objects/LRZ/LRZ1Outro.c
${GAME_NAME}/Objects/LRZ/TurretSwitch.c
${GAME_NAME}/Objects/LRZ/WalkerLegs.c
${GAME_NAME}/Objects/LRZ/HPZEmerald.c
${GAME_NAME}/Objects/LRZ/LRZ1Intro.c
${GAME_NAME}/Objects/LRZ/LRZ3Cutscene.c
${GAME_NAME}/Objects/LRZ/Stalactite.c
${GAME_NAME}/Objects/LRZ/LRZConvSwitch.c
${GAME_NAME}/Objects/LRZ/LRZ1Setup.c
${GAME_NAME}/Objects/LRZ/LRZConvItem.c
${GAME_NAME}/Objects/LRZ/LRZConvControl.c
${GAME_NAME}/Objects/LRZ/HeavyRider.c
${GAME_NAME}/Objects/LRZ/LRZSpikeBall.c
${GAME_NAME}/Objects/LRZ/RisingLava.c
${GAME_NAME}/Objects/LRZ/SkyTeleporter.c
${GAME_NAME}/Objects/LRZ/LRZSpiral.c
${GAME_NAME}/Objects/LRZ/Toxomister.c
${GAME_NAME}/Objects/LRZ/LRZ2Setup.c
${GAME_NAME}/Objects/LRZ/KingAttack.c
${GAME_NAME}/Objects/LRZ/Iwamodoki.c
${GAME_NAME}/Objects/LRZ/BuckwildBall.c
${GAME_NAME}/Objects/LRZ/Turbine.c
${GAME_NAME}/Objects/LRZ/LRZ3Setup.c
${GAME_NAME}/Objects/LRZ/Flamethrower.c
${GAME_NAME}/Objects/LRZ/LRZ3OutroK.c
${GAME_NAME}/Objects/LRZ/SpikeCrusher.c
${GAME_NAME}/Objects/LRZ/Fireworm.c
${GAME_NAME}/Objects/LRZ/KingClaw.c
${GAME_NAME}/Objects/LRZ/DrillerdroidO.c
${GAME_NAME}/Objects/LRZ/LRZConvDropper.c
${GAME_NAME}/Objects/LRZ/OrbitSpike.c
${GAME_NAME}/Objects/LRZ/LavaFall.c
${GAME_NAME}/Objects/LRZ/LRZConveyor.c
${GAME_NAME}/Objects/LRZ/LRZ3Outro.c
${GAME_NAME}/Objects/SSZ/JunctionWheel.c
${GAME_NAME}/Objects/SSZ/SSZEggman.c
${GAME_NAME}/Objects/SSZ/Kanabun.c
${GAME_NAME}/Objects/SSZ/YoyoPulley.c
${GAME_NAME}/Objects/SSZ/HotaruHiWatt.c
${GAME_NAME}/Objects/SSZ/RTeleporter.c
${GAME_NAME}/Objects/SSZ/EggTower.c
${GAME_NAME}/Objects/SSZ/FlowerPod.c
${GAME_NAME}/Objects/SSZ/Constellation.c
${GAME_NAME}/Objects/SSZ/SSZ3Cutscene.c
${GAME_NAME}/Objects/SSZ/SDashWheel.c
${GAME_NAME}/Objects/SSZ/SSZ1Intro.c
${GAME_NAME}/Objects/SSZ/MSBomb.c
${GAME_NAME}/Objects/SSZ/SSZ1Outro.c
${GAME_NAME}/Objects/SSZ/Bungee.c
${GAME_NAME}/Objects/SSZ/MonarchPlans.c
${GAME_NAME}/Objects/SSZ/TTCutscene.c
${GAME_NAME}/Objects/SSZ/Firework.c
${GAME_NAME}/Objects/SSZ/SSZ2Setup.c
${GAME_NAME}/Objects/SSZ/MetalSonic.c
${GAME_NAME}/Objects/SSZ/Beanstalk.c
${GAME_NAME}/Objects/SSZ/MSOrb.c
${GAME_NAME}/Objects/SSZ/SilverSonic.c
${GAME_NAME}/Objects/SSZ/Fireflies.c
${GAME_NAME}/Objects/SSZ/MSHologram.c
${GAME_NAME}/Objects/SSZ/MSFactory.c
${GAME_NAME}/Objects/SSZ/SSZSpikeBall.c
${GAME_NAME}/Objects/SSZ/BouncePlant.c
${GAME_NAME}/Objects/SSZ/SSZSpotlight.c
${GAME_NAME}/Objects/SSZ/Kabasira.c
${GAME_NAME}/Objects/SSZ/HotaruMKII.c
${GAME_NAME}/Objects/SSZ/SparkRail.c
${GAME_NAME}/Objects/SSZ/UncurlPlant.c
${GAME_NAME}/Objects/SSZ/SpikeFlail.c
${GAME_NAME}/Objects/SSZ/Hotaru.c
${GAME_NAME}/Objects/SSZ/Dango.c
${GAME_NAME}/Objects/SSZ/GigaMetal.c
${GAME_NAME}/Objects/SSZ/MSPanel.c
${GAME_NAME}/Objects/SSZ/TimeTravelSetup.c
${GAME_NAME}/Objects/SSZ/TimePost.c
${GAME_NAME}/Objects/SSZ/HiLoSign.c
${GAME_NAME}/Objects/SSZ/SSZ1Setup.c
${GAME_NAME}/Objects/Puyo/PuyoMatch.c
${GAME_NAME}/Objects/Puyo/PuyoBean.c
${GAME_NAME}/Objects/Puyo/PuyoScore.c
${GAME_NAME}/Objects/Puyo/PuyoIndicator.c
${GAME_NAME}/Objects/Puyo/PuyoGame.c
${GAME_NAME}/Objects/Puyo/PuyoAI.c
${GAME_NAME}/Objects/Puyo/PuyoLabel.c
${GAME_NAME}/Objects/Puyo/PuyoLevelSelect.c
${GAME_NAME}/Objects/Puyo/PuyoAttack.c
${GAME_NAME}/Objects/Summary/SummaryEmerald.c
${GAME_NAME}/Objects/Summary/Summary.c
${GAME_NAME}/Objects/Common/FlingRamp.c
${GAME_NAME}/Objects/Common/PlatformControl.c
${GAME_NAME}/Objects/Common/Decoration.c
${GAME_NAME}/Objects/Common/Button.c
${GAME_NAME}/Objects/Common/Projectile.c
${GAME_NAME}/Objects/Common/TilePlatform.c
${GAME_NAME}/Objects/Common/ParallaxSprite.c
${GAME_NAME}/Objects/Common/BreakableWall.c
${GAME_NAME}/Objects/Common/SpinBooster.c
${GAME_NAME}/Objects/Common/CollapsingPlatform.c
${GAME_NAME}/Objects/Common/BGSwitch.c
${GAME_NAME}/Objects/Common/Water.c
${GAME_NAME}/Objects/Common/Platform.c
${GAME_NAME}/Objects/Common/ForceUnstick.c
${GAME_NAME}/Objects/Common/Eggman.c
${GAME_NAME}/Objects/Common/PlatformNode.c
${GAME_NAME}/Objects/Common/ForceSpin.c
${GAME_NAME}/Objects/Common/Palette.c
${GAME_NAME}/Objects/Common/GenericTrigger.c
${GAME_NAME}/Objects/AIZ/AIZRockPile.c
${GAME_NAME}/Objects/AIZ/MonkeyDude.c
${GAME_NAME}/Objects/AIZ/Bloominator.c
${GAME_NAME}/Objects/AIZ/AIZSetup.c
${GAME_NAME}/Objects/AIZ/AIZKingClaw.c
${GAME_NAME}/Objects/AIZ/SchrodingersCapsule.c
${GAME_NAME}/Objects/AIZ/AIZTornado.c
${GAME_NAME}/Objects/AIZ/Rhinobot.c
${GAME_NAME}/Objects/AIZ/AIZEggRobo.c
${GAME_NAME}/Objects/AIZ/EncoreIntro.c
${GAME_NAME}/Objects/AIZ/AIZEncoreTutorial.c
${GAME_NAME}/Objects/AIZ/AIZTornadoPath.c
${GAME_NAME}/Objects/AIZ/Sweep.c
${GAME_NAME}/Objects/AIZ/FernParallax.c
${GAME_NAME}/Objects/SBZ/Bomb.c
${GAME_NAME}/Objects/SBZ/Orbinaut.c
${GAME_NAME}/Objects/SBZ/Caterkiller.c
${GAME_NAME}/Objects/MMZ/BladePole.c
${GAME_NAME}/Objects/MMZ/MMZLightning.c
${GAME_NAME}/Objects/MMZ/Scarab.c
${GAME_NAME}/Objects/MMZ/PohBee.c
${GAME_NAME}/Objects/MMZ/MMZSetup.c
${GAME_NAME}/Objects/MMZ/ConveyorPlatform.c
${GAME_NAME}/Objects/MMZ/Piston.c
${GAME_NAME}/Objects/MMZ/Gachapandora.c
${GAME_NAME}/Objects/MMZ/EggPistonsMKII.c
${GAME_NAME}/Objects/MMZ/MMZWheel.c
${GAME_NAME}/Objects/MMZ/MatryoshkaBom.c
${GAME_NAME}/Objects/MMZ/MechaBu.c
${GAME_NAME}/Objects/MMZ/ConveyorWheel.c
${GAME_NAME}/Objects/MMZ/VanishPlatform.c
${GAME_NAME}/Objects/MMZ/RPlaneShifter.c
${GAME_NAME}/Objects/MMZ/SizeLaser.c
${GAME_NAME}/Objects/MMZ/SpikeCorridor.c
${GAME_NAME}/Objects/MMZ/BuzzSaw.c
${GAME_NAME}/Objects/MMZ/PlaneSeeSaw.c
${GAME_NAME}/Objects/MMZ/ConveyorBelt.c
${GAME_NAME}/Objects/MMZ/MMZ2Outro.c
${GAME_NAME}/Objects/MMZ/FarPlane.c
${GAME_NAME}/Objects/CPZ/Spiny.c
${GAME_NAME}/Objects/CPZ/RotatingStair.c
${GAME_NAME}/Objects/CPZ/CaterkillerJr.c
${GAME_NAME}/Objects/CPZ/TippingPlatform.c
${GAME_NAME}/Objects/CPZ/Ball.c
${GAME_NAME}/Objects/CPZ/ChemicalPool.c
${GAME_NAME}/Objects/CPZ/StickyPlatform.c
${GAME_NAME}/Objects/CPZ/Syringe.c
${GAME_NAME}/Objects/CPZ/CPZBoss.c
${GAME_NAME}/Objects/CPZ/Reagent.c
${GAME_NAME}/Objects/CPZ/DNARiser.c
${GAME_NAME}/Objects/CPZ/TwistedTubes.c
${GAME_NAME}/Objects/CPZ/Staircase.c
${GAME_NAME}/Objects/CPZ/ChemicalBall.c
${GAME_NAME}/Objects/CPZ/ChemBubble.c
${GAME_NAME}/Objects/CPZ/CPZShutter.c
${GAME_NAME}/Objects/CPZ/CPZ1Intro.c
${GAME_NAME}/Objects/CPZ/Bubbler.c
${GAME_NAME}/Objects/CPZ/Grabber.c
${GAME_NAME}/Objects/CPZ/CPZ2Outro.c
${GAME_NAME}/Objects/CPZ/CPZSetup.c
${GAME_NAME}/Objects/CPZ/AmoebaDroid.c
${GAME_NAME}/Objects/CPZ/TubeSpring.c
${GAME_NAME}/Objects/CPZ/TransportTube.c
${GAME_NAME}/Objects/CPZ/SpeedBooster.c
${GAME_NAME}/Objects/CPZ/OneWayDoor.c
${GAME_NAME}/Objects/CPZ/Springboard.c
${GAME_NAME}/Objects/HPZ/Redz.c
${GAME_NAME}/Objects/HPZ/Stegway.c
${GAME_NAME}/Objects/HPZ/Batbot.c
${GAME_NAME}/Objects/OOZ/Sol.c
${GAME_NAME}/Objects/OOZ/Octus.c
${GAME_NAME}/Objects/OOZ/PushSpring.c
${GAME_NAME}/Objects/OOZ/Valve.c
${GAME_NAME}/Objects/OOZ/Aquis.c
${GAME_NAME}/Objects/OOZ/Smog.c
${GAME_NAME}/Objects/OOZ/OOZ2Outro.c
${GAME_NAME}/Objects/OOZ/GasPlatform.c
${GAME_NAME}/Objects/OOZ/OOZ1Outro.c
${GAME_NAME}/Objects/OOZ/OOZFlames.c
${GAME_NAME}/Objects/OOZ/Hatch.c
${GAME_NAME}/Objects/OOZ/BallCannon.c
${GAME_NAME}/Objects/OOZ/OOZSetup.c
${GAME_NAME}/Objects/OOZ/MegaOctus.c
${GAME_NAME}/Objects/OOZ/MeterDroid.c
${GAME_NAME}/Objects/OOZ/PullSwitch.c
${GAME_NAME}/Objects/MSZ/MSZCutsceneST.c
${GAME_NAME}/Objects/MSZ/SeltzerWater.c
${GAME_NAME}/Objects/MSZ/SideBarrel.c
${GAME_NAME}/Objects/MSZ/Vultron.c
${GAME_NAME}/Objects/MSZ/SwingRope.c
${GAME_NAME}/Objects/MSZ/TornadoPath.c
${GAME_NAME}/Objects/MSZ/EggLoco.c
${GAME_NAME}/Objects/MSZ/SeltzerBottle.c
${GAME_NAME}/Objects/MSZ/Cactula.c
${GAME_NAME}/Objects/MSZ/LightBulb.c
${GAME_NAME}/Objects/MSZ/Armadiloid.c
${GAME_NAME}/Objects/MSZ/RotatingSpikes.c
${GAME_NAME}/Objects/MSZ/MSZCutsceneK.c
${GAME_NAME}/Objects/MSZ/BarStool.c
${GAME_NAME}/Objects/MSZ/CollapsingSand.c
${GAME_NAME}/Objects/MSZ/Hatterkiller.c
${GAME_NAME}/Objects/MSZ/DBTower.c
${GAME_NAME}/Objects/MSZ/LocoSmoke.c
${GAME_NAME}/Objects/MSZ/PaintingEyes.c
${GAME_NAME}/Objects/MSZ/MSZ2Cutscene.c
${GAME_NAME}/Objects/MSZ/Tornado.c
${GAME_NAME}/Objects/MSZ/Flipper.c
${GAME_NAME}/Objects/MSZ/MSZ1KIntro.c
${GAME_NAME}/Objects/MSZ/MSZSetup.c
${GAME_NAME}/Objects/MSZ/HeavyMystic.c
${GAME_NAME}/Objects/MSZ/Rattlekiller.c
${GAME_NAME}/Objects/MSZ/GiantPistol.c
${GAME_NAME}/Objects/MSZ/RollerMKII.c
${GAME_NAME}/Objects/MSZ/Honkytonk.c
${GAME_NAME}/Objects/MSZ/UberCaterkiller.c
${GAME_NAME}/Objects/MSZ/Pinata.c
${GAME_NAME}/Objects/MSZ/MSZSpotlight.c
${GAME_NAME}/Objects/MSZ/SeeSaw.c
${GAME_NAME}/Objects/MSZ/Bumpalo.c
${GAME_NAME}/Objects/Pinball/PBL_Camera.c
${GAME_NAME}/Objects/Pinball/PBL_Sector.c
${GAME_NAME}/Objects/Pinball/PBL_Setup.c
${GAME_NAME}/Objects/Pinball/PBL_TargetBumper.c
${GAME_NAME}/Objects/Pinball/PBL_HUD.c
${GAME_NAME}/Objects/Pinball/PBL_Flipper.c
${GAME_NAME}/Objects/Pinball/PBL_Bumper.c
${GAME_NAME}/Objects/Pinball/PBL_Ring.c
${GAME_NAME}/Objects/Pinball/PBL_Player.c
${GAME_NAME}/Objects/Pinball/PBL_Crane.c
${GAME_NAME}/Objects/Continue/ContinuePlayer.c
${GAME_NAME}/Objects/Continue/ContinueSetup.c
${GAME_NAME}/Objects/TMZ/BallHog.c
${GAME_NAME}/Objects/TMZ/TMZCable.c
${GAME_NAME}/Objects/TMZ/SentryBug.c
${GAME_NAME}/Objects/TMZ/TurboTurtle.c
${GAME_NAME}/Objects/TMZ/CrimsonEye.c
${GAME_NAME}/Objects/TMZ/TMZ1Setup.c
${GAME_NAME}/Objects/TMZ/FlasherMKII.c
${GAME_NAME}/Objects/TMZ/TMZBarrier.c
${GAME_NAME}/Objects/TMZ/MagnetSphere.c
${GAME_NAME}/Objects/TMZ/TeeterTotter.c
${GAME_NAME}/Objects/TMZ/MonarchBG.c
${GAME_NAME}/Objects/TMZ/JacobsLadder.c
${GAME_NAME}/Objects/TMZ/WallBumper.c
${GAME_NAME}/Objects/TMZ/MetalArm.c
${GAME_NAME}/Objects/TMZ/TMZ3Setup.c
${GAME_NAME}/Objects/TMZ/TMZFlames.c
${GAME_NAME}/Objects/TMZ/EscapeCar.c
${GAME_NAME}/Objects/TMZ/CrashTest.c
${GAME_NAME}/Objects/TMZ/LargeGear.c
${GAME_NAME}/Objects/TMZ/TMZ1Outro.c
${GAME_NAME}/Objects/TMZ/TMZAlert.c
${GAME_NAME}/Objects/TMZ/LaunchSpring.c
${GAME_NAME}/Objects/TMZ/TMZ2Setup.c
${GAME_NAME}/Objects/TMZ/TMZ2Outro.c
${GAME_NAME}/Objects/TMZ/GymBar.c
${GAME_NAME}/Objects/TMZ/PopOut.c
${GAME_NAME}/Objects/Cutscene/ChaosEmerald.c
${GAME_NAME}/Objects/Cutscene/FXFade.c
${GAME_NAME}/Objects/Cutscene/FXSpinRay.c
${GAME_NAME}/Objects/Cutscene/FXWaveRing.c
${GAME_NAME}/Objects/Cutscene/RubyPortal.c
${GAME_NAME}/Objects/Cutscene/FXTrail.c
${GAME_NAME}/Objects/Cutscene/FXRuby.c
${GAME_NAME}/Objects/Cutscene/CutsceneHBH.c
${GAME_NAME}/Objects/Cutscene/CutsceneSeq.c
${GAME_NAME}/Objects/Cutscene/CutsceneRules.c
${GAME_NAME}/Objects/Cutscene/FXExpandRing.c
${GAME_NAME}/Objects/GHZ/CheckerBall.c
${GAME_NAME}/Objects/GHZ/GHZCutsceneK.c
${GAME_NAME}/Objects/GHZ/BuzzBomber.c
${GAME_NAME}/Objects/GHZ/GHZCutsceneST.c
${GAME_NAME}/Objects/GHZ/Newtron.c
${GAME_NAME}/Objects/GHZ/GHZSetup.c
${GAME_NAME}/Objects/GHZ/Motobug.c
${GAME_NAME}/Objects/GHZ/DERobot.c
${GAME_NAME}/Objects/GHZ/DDWrecker.c
${GAME_NAME}/Objects/GHZ/BurningLog.c
${GAME_NAME}/Objects/GHZ/CorkscrewPath.c
${GAME_NAME}/Objects/GHZ/Chopper.c
${GAME_NAME}/Objects/GHZ/SpikeLog.c
${GAME_NAME}/Objects/GHZ/Bridge.c
${GAME_NAME}/Objects/GHZ/ZipLine.c
${GAME_NAME}/Objects/GHZ/Crabmeat.c
${GAME_NAME}/Objects/GHZ/Batbrain.c
${GAME_NAME}/Objects/GHZ/GHZ2Outro.c
${GAME_NAME}/Objects/GHZ/WaterfallSound.c
${GAME_NAME}/Objects/GHZ/Splats.c
${GAME_NAME}/Objects/GHZ/Fireball.c
${GAME_NAME}/Objects/SPZ/PopcornKernel.c
${GAME_NAME}/Objects/SPZ/MicDrop.c
${GAME_NAME}/Objects/SPZ/EggJankenPart.c
${GAME_NAME}/Objects/SPZ/CircleBumper.c
${GAME_NAME}/Objects/SPZ/Funnel.c
${GAME_NAME}/Objects/SPZ/SPZ2Outro.c
${GAME_NAME}/Objects/SPZ/LottoMachine.c
${GAME_NAME}/Objects/SPZ/EggJanken.c
${GAME_NAME}/Objects/SPZ/Shutterbug.c
${GAME_NAME}/Objects/SPZ/ShopWindow.c
${GAME_NAME}/Objects/SPZ/CableWarp.c
${GAME_NAME}/Objects/SPZ/SPZ2Setup.c
${GAME_NAME}/Objects/SPZ/FilmReel.c
${GAME_NAME}/Objects/SPZ/Canista.c
${GAME_NAME}/Objects/SPZ/TVPole.c
${GAME_NAME}/Objects/SPZ/SPZ1Intro.c
${GAME_NAME}/Objects/SPZ/LoveTester.c
${GAME_NAME}/Objects/SPZ/FilmProjector.c
${GAME_NAME}/Objects/SPZ/DirectorChair.c
${GAME_NAME}/Objects/SPZ/EggTV.c
${GAME_NAME}/Objects/SPZ/Clapperboard.c
${GAME_NAME}/Objects/SPZ/SPZ1Setup.c
${GAME_NAME}/Objects/SPZ/Letterboard.c
${GAME_NAME}/Objects/SPZ/PathInverter.c
${GAME_NAME}/Objects/SPZ/PopcornMachine.c
${GAME_NAME}/Objects/SPZ/LottoBall.c
${GAME_NAME}/Objects/SPZ/GreenScreen.c
${GAME_NAME}/Objects/SPZ/PimPom.c
${GAME_NAME}/Objects/SPZ/WeatherTV.c
${GAME_NAME}/Objects/SPZ/WeatherMobile.c
${GAME_NAME}/Objects/SPZ/LEDPanel.c
${GAME_NAME}/Objects/SPZ/SpinSign.c
${GAME_NAME}/Objects/SPZ/HeavyGunner.c
${GAME_NAME}/Objects/SPZ/TVVan.c
${GAME_NAME}/Objects/SPZ/Tubinaut.c
${GAME_NAME}/Objects/SPZ/RockemSockem.c
${GAME_NAME}/Objects/SPZ/TVFlyingBattery.c
)

13
SonicMania/objectcmake.py Normal file
View File

@ -0,0 +1,13 @@
import os
filenames = []
for dir_, _, files in os.walk("Objects"):
for file_name in files:
rel_dir = os.path.relpath(dir_, "Objects")
filenames.append(f"{rel_dir}/{file_name}")
files = ["\t${GAME_NAME}/Objects/" + f + "\n" for f in filenames if f.endswith(".c") and not f.endswith("All.c")]
with open("Objects.cmake", "w") as f:
f.writelines(["set(GENERATED_SOURCES\n"] + files + [")"])