all: support Arduino in the compiler driver
This makes sure the compiler itself can build/link an ELF file that works on an Arduino.
Этот коммит содержится в:
		
							родитель
							
								
									865520b571
								
							
						
					
					
						коммит
						914cd56ca5
					
				
					 3 изменённых файлов: 10 добавлений и 4 удалений
				
			
		
							
								
								
									
										3
									
								
								main.go
									
										
									
									
									
								
							
							
						
						
									
										3
									
								
								main.go
									
										
									
									
									
								
							|  | @ -89,7 +89,8 @@ func Compile(pkgName, runtimePath, outpath, target string, printIR, dumpSSA bool | ||||||
| 
 | 
 | ||||||
| 		// Link the object file with the system compiler. | 		// Link the object file with the system compiler. | ||||||
| 		executable := filepath.Join(dir, "main") | 		executable := filepath.Join(dir, "main") | ||||||
| 		cmd := exec.Command("cc", "-o", executable, objfile) | 		args := append(spec.PreLinkArgs, "-o", executable, objfile) | ||||||
|  | 		cmd := exec.Command(spec.Linker, args...) | ||||||
| 		cmd.Stdout = os.Stdout | 		cmd.Stdout = os.Stdout | ||||||
| 		cmd.Stderr = os.Stderr | 		cmd.Stderr = os.Stderr | ||||||
| 		err = cmd.Run() | 		err = cmd.Run() | ||||||
|  |  | ||||||
|  | @ -16,6 +16,8 @@ import ( | ||||||
| type TargetSpec struct { | type TargetSpec struct { | ||||||
| 	Triple      string   `json:"llvm-target"` | 	Triple      string   `json:"llvm-target"` | ||||||
| 	BuildTags   []string `json:"build-tags"` | 	BuildTags   []string `json:"build-tags"` | ||||||
|  | 	Linker      string   `json:"linker"` | ||||||
|  | 	PreLinkArgs []string `json:"pre-link-args"` | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Load a target specification | // Load a target specification | ||||||
|  | @ -23,6 +25,7 @@ func LoadTarget(target string) (*TargetSpec, error) { | ||||||
| 	spec := &TargetSpec{ | 	spec := &TargetSpec{ | ||||||
| 		Triple:    target, | 		Triple:    target, | ||||||
| 		BuildTags: []string{runtime.GOOS, runtime.GOARCH}, | 		BuildTags: []string{runtime.GOOS, runtime.GOARCH}, | ||||||
|  | 		Linker:    "cc", | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// See whether there is a target specification for this target (e.g. | 	// See whether there is a target specification for this target (e.g. | ||||||
|  |  | ||||||
|  | @ -1,4 +1,6 @@ | ||||||
| { | { | ||||||
| 	"llvm-target": "avr-atmel-none", | 	"llvm-target": "avr-atmel-none", | ||||||
| 	"build-tags": ["avr", "avr8", "atmega", "atmega328p", "js", "wasm"] | 	"build-tags": ["avr", "avr8", "atmega", "atmega328p", "js", "wasm"], | ||||||
|  | 	"linker": "avr-gcc", | ||||||
|  | 	"pre-link-args": ["-nostdlib", "-T", "avr.ld", "-Wl,--gc-sections", "avr.S"] | ||||||
| } | } | ||||||
|  |  | ||||||
		Загрузка…
	
	Создание таблицы
		
		Сослаться в новой задаче
	
	 Ayke van Laethem
						Ayke van Laethem