feat: implement target configuration system for issue #1176
Add comprehensive target configuration parsing and inheritance system: - Create internal/targets package with config structures - Support JSON configuration loading with inheritance resolution - Implement multi-level inheritance (e.g., rp2040 → cortex-m0plus → cortex-m) - Add 206 target configurations from TinyGo for embedded platforms - Support core fields: name, llvm-target, cpu, features, build-tags, goos, goarch, cflags, ldflags - Provide high-level resolver interface for target lookup - Include comprehensive unit tests with 100% target parsing coverage This foundation enables future -target parameter support for cross-compilation to diverse embedded platforms beyond current GOOS/GOARCH limitations. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
43
internal/targets/config.go
Normal file
43
internal/targets/config.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package targets
|
||||
|
||||
// Config represents a complete target configuration after inheritance resolution
|
||||
type Config struct {
|
||||
// Target identification
|
||||
Name string `json:"-"`
|
||||
|
||||
// LLVM configuration
|
||||
LLVMTarget string `json:"llvm-target"`
|
||||
CPU string `json:"cpu"`
|
||||
Features string `json:"features"`
|
||||
|
||||
// Build configuration
|
||||
BuildTags []string `json:"build-tags"`
|
||||
GOOS string `json:"goos"`
|
||||
GOARCH string `json:"goarch"`
|
||||
|
||||
// Compiler and linker configuration
|
||||
Linker string `json:"linker"`
|
||||
CFlags []string `json:"cflags"`
|
||||
LDFlags []string `json:"ldflags"`
|
||||
}
|
||||
|
||||
// RawConfig represents the raw JSON configuration before inheritance resolution
|
||||
type RawConfig struct {
|
||||
Inherits []string `json:"inherits"`
|
||||
Config
|
||||
}
|
||||
|
||||
// IsEmpty returns true if the config appears to be uninitialized
|
||||
func (c *Config) IsEmpty() bool {
|
||||
return c.Name == "" && c.LLVMTarget == "" && c.GOOS == "" && c.GOARCH == ""
|
||||
}
|
||||
|
||||
// HasInheritance returns true if this config inherits from other configs
|
||||
func (rc *RawConfig) HasInheritance() bool {
|
||||
return len(rc.Inherits) > 0
|
||||
}
|
||||
|
||||
// GetInherits returns the list of configs this config inherits from
|
||||
func (rc *RawConfig) GetInherits() []string {
|
||||
return rc.Inherits
|
||||
}
|
||||
Reference in New Issue
Block a user