Add initial FreeBSD support
Этот коммит содержится в:
родитель
3b2a4b64c5
коммит
71a380ce8c
8 изменённых файлов: 25 добавлений и 5 удалений
5
Makefile
5
Makefile
|
@ -62,6 +62,11 @@ $(LIBCLANG_PATH): $(LIBCLANG_FILES)
|
||||||
else ifeq ($(shell uname -s),Darwin)
|
else ifeq ($(shell uname -s),Darwin)
|
||||||
MD5SUM = md5
|
MD5SUM = md5
|
||||||
LIBCLANG_PATH = $(abspath $(LLVM_BUILDDIR))/lib/libclang.a
|
LIBCLANG_PATH = $(abspath $(LLVM_BUILDDIR))/lib/libclang.a
|
||||||
|
else ifeq ($(shell uname -s),FreeBSD)
|
||||||
|
MD5SUM = md5
|
||||||
|
LIBCLANG_PATH = $(abspath $(LLVM_BUILDDIR))/lib/libclang.a
|
||||||
|
START_GROUP = -Wl,--start-group
|
||||||
|
END_GROUP = -Wl,--end-group
|
||||||
else
|
else
|
||||||
LIBCLANG_PATH = $(abspath $(LLVM_BUILDDIR))/lib/libclang.a
|
LIBCLANG_PATH = $(abspath $(LLVM_BUILDDIR))/lib/libclang.a
|
||||||
START_GROUP = -Wl,--start-group
|
START_GROUP = -Wl,--start-group
|
||||||
|
|
|
@ -34,6 +34,12 @@ func init() {
|
||||||
commands["ld.lld"] = append(commands["ld.lld"], "lld", "C:\\Program Files\\LLVM\\bin\\lld.exe")
|
commands["ld.lld"] = append(commands["ld.lld"], "lld", "C:\\Program Files\\LLVM\\bin\\lld.exe")
|
||||||
commands["wasm-ld"] = append(commands["wasm-ld"], "C:\\Program Files\\LLVM\\bin\\wasm-ld.exe")
|
commands["wasm-ld"] = append(commands["wasm-ld"], "C:\\Program Files\\LLVM\\bin\\wasm-ld.exe")
|
||||||
}
|
}
|
||||||
|
// Add the path to the llvm90 installed from ports
|
||||||
|
if runtime.GOOS == "freebsd" {
|
||||||
|
commands["clang"] = append(commands["clang"], "/usr/local/llvm90/bin/clang-9")
|
||||||
|
commands["ld.lld"] = append(commands["ld.lld"], "/usr/local/llvm90/bin/ld.lld")
|
||||||
|
commands["wasm-ld"] = append(commands["wasm-ld"], "/usr/local/llvm90/bin/wasm-ld")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func execCommand(cmdNames []string, args ...string) error {
|
func execCommand(cmdNames []string, args ...string) error {
|
||||||
|
|
|
@ -5,7 +5,9 @@ package cgo
|
||||||
/*
|
/*
|
||||||
#cgo linux CFLAGS: -I/usr/lib/llvm-9/include
|
#cgo linux CFLAGS: -I/usr/lib/llvm-9/include
|
||||||
#cgo darwin CFLAGS: -I/usr/local/opt/llvm@9/include
|
#cgo darwin CFLAGS: -I/usr/local/opt/llvm@9/include
|
||||||
|
#cgo freebsd CFLAGS: -I/usr/local/llvm90/include
|
||||||
#cgo linux LDFLAGS: -L/usr/lib/llvm-9/lib -lclang
|
#cgo linux LDFLAGS: -L/usr/lib/llvm-9/lib -lclang
|
||||||
#cgo darwin LDFLAGS: -L/usr/local/opt/llvm@9/lib -lclang -lffi
|
#cgo darwin LDFLAGS: -L/usr/local/opt/llvm@9/lib -lclang -lffi
|
||||||
|
#cgo freebsd LDFLAGS: -L/usr/local/llvm90/lib -lclang
|
||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
|
|
|
@ -152,7 +152,7 @@ func (c *Compiler) emitSyscall(frame *Frame, call *ssa.CallCommon) (llvm.Value,
|
||||||
return llvm.Value{}, c.makeError(call.Pos(), "unknown GOOS/GOARCH for syscall: "+c.GOOS()+"/"+c.GOARCH())
|
return llvm.Value{}, c.makeError(call.Pos(), "unknown GOOS/GOARCH for syscall: "+c.GOOS()+"/"+c.GOARCH())
|
||||||
}
|
}
|
||||||
switch c.GOOS() {
|
switch c.GOOS() {
|
||||||
case "linux":
|
case "linux", "freebsd":
|
||||||
// Return values: r0, r1 uintptr, err Errno
|
// Return values: r0, r1 uintptr, err Errno
|
||||||
// Pseudocode:
|
// Pseudocode:
|
||||||
// var err uintptr
|
// var err uintptr
|
||||||
|
|
6
main.go
6
main.go
|
@ -452,7 +452,7 @@ func flashUF2UsingMSD(volume, tmppath string) error {
|
||||||
// find standard UF2 info path
|
// find standard UF2 info path
|
||||||
var infoPath string
|
var infoPath string
|
||||||
switch runtime.GOOS {
|
switch runtime.GOOS {
|
||||||
case "linux":
|
case "linux", "freebsd":
|
||||||
infoPath = "/media/*/" + volume + "/INFO_UF2.TXT"
|
infoPath = "/media/*/" + volume + "/INFO_UF2.TXT"
|
||||||
case "darwin":
|
case "darwin":
|
||||||
infoPath = "/Volumes/" + volume + "/INFO_UF2.TXT"
|
infoPath = "/Volumes/" + volume + "/INFO_UF2.TXT"
|
||||||
|
@ -479,7 +479,7 @@ func flashHexUsingMSD(volume, tmppath string) error {
|
||||||
// find expected volume path
|
// find expected volume path
|
||||||
var destPath string
|
var destPath string
|
||||||
switch runtime.GOOS {
|
switch runtime.GOOS {
|
||||||
case "linux":
|
case "linux", "freebsd":
|
||||||
destPath = "/media/*/" + volume
|
destPath = "/media/*/" + volume
|
||||||
case "darwin":
|
case "darwin":
|
||||||
destPath = "/Volumes/" + volume
|
destPath = "/Volumes/" + volume
|
||||||
|
@ -558,6 +558,8 @@ func getDefaultPort() (port string, err error) {
|
||||||
portPath = "/dev/cu.usb*"
|
portPath = "/dev/cu.usb*"
|
||||||
case "linux":
|
case "linux":
|
||||||
portPath = "/dev/ttyACM*"
|
portPath = "/dev/ttyACM*"
|
||||||
|
case "freebsd":
|
||||||
|
portPath = "/dev/cuaU*"
|
||||||
case "windows":
|
case "windows":
|
||||||
cmd := exec.Command("wmic",
|
cmd := exec.Command("wmic",
|
||||||
"PATH", "Win32_SerialPort", "WHERE", "Caption LIKE 'USB Serial%'", "GET", "DeviceID")
|
"PATH", "Win32_SerialPort", "WHERE", "Caption LIKE 'USB Serial%'", "GET", "DeviceID")
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// +build darwin linux,!baremetal
|
// +build darwin linux,!baremetal freebsd,!baremetal
|
||||||
|
|
||||||
package os
|
package os
|
||||||
|
|
||||||
|
|
5
src/runtime/os_freebsd.go
Обычный файл
5
src/runtime/os_freebsd.go
Обычный файл
|
@ -0,0 +1,5 @@
|
||||||
|
// +build freebsd
|
||||||
|
|
||||||
|
package runtime
|
||||||
|
|
||||||
|
const GOOS = "freebsd"
|
|
@ -1,4 +1,4 @@
|
||||||
// +build darwin linux,!baremetal
|
// +build darwin linux,!baremetal freebsd,!baremetal
|
||||||
|
|
||||||
package runtime
|
package runtime
|
||||||
|
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче