// swift-tools-version: 6.0 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription let package = Package( name: "SportsBallEngine", platforms: [ .macOS(.v14), .linux ], products: [ .executable( name: "SportsBallEngine", targets: ["SportsBallEngine"] ), ], dependencies: [ // Add external dependencies here (e.g., GLFW/SDL bindings, Vulkan bindings) // .package(url: "https://github.com/example/swift-vulkan.git", from: "1.0.0"), ], targets: [ // Main executable target .executableTarget( name: "SportsBallEngine", dependencies: [ "EngineCore", "PlatformWin32", "PlatformLinux" ] ), // ====== PLATFORM-AGNOSTIC CORE MODULES ====== // Engine Core - Main loop and scene management .target( name: "EngineCore", dependencies: [ "RendererAPI", "PhysicsEngine", "AssetLoader" ] ), // Renderer API - Protocol definitions only .target( name: "RendererAPI", dependencies: [] ), // Physics Engine - Sports-optimized physics simulation .target( name: "PhysicsEngine", dependencies: [] ), // Asset Loader - 3D models, textures, animations .target( name: "AssetLoader", dependencies: [] ), // ====== PLATFORM-SPECIFIC MODULES ====== // Windows Platform Layer .target( name: "PlatformWin32", dependencies: [ "RendererAPI", "DX12Renderer" ] ), // Linux Platform Layer .target( name: "PlatformLinux", dependencies: [ "RendererAPI", "VulkanRenderer" ] ), // Vulkan Renderer Implementation .target( name: "VulkanRenderer", dependencies: ["RendererAPI"] ), // DirectX 12 Renderer Implementation .target( name: "DX12Renderer", dependencies: ["RendererAPI"] ), // ====== TESTS ====== .testTarget( name: "EngineCoreTests", dependencies: ["EngineCore"] ), ] )