Add build tags to support both x86 and ARM compilation on macOS (#1069)

* Add build tags to support both x86 and ARM compilation on macOS

* Documentation fix: command line for build under macOS

* Global replace 'macOS X' -> 'macOS'. Fix typo in -tags cmd line param

* `README.md`: fix all `--tags` -> `-tags`

---------

Co-authored-by: Denis Dmitriev <dmitriev@itspartner.net>
sqlite-amalgamation-3420000
Denis Dmitriev 2023-02-23 08:00:03 +03:00 committed by GitHub
parent 819cc0ddf2
commit 85a15a7254
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 18 deletions

View File

@ -40,7 +40,7 @@ This package follows the official [Golang Release Policy](https://golang.org/doc
- [Alpine](#alpine) - [Alpine](#alpine)
- [Fedora](#fedora) - [Fedora](#fedora)
- [Ubuntu](#ubuntu) - [Ubuntu](#ubuntu)
- [Mac OSX](#mac-osx) - [macOS](#mac-osx)
- [Windows](#windows) - [Windows](#windows)
- [Errors](#errors) - [Errors](#errors)
- [User Authentication](#user-authentication) - [User Authentication](#user-authentication)
@ -145,7 +145,7 @@ Click [here](https://golang.org/pkg/go/build/#hdr-Build_Constraints) for more in
If you wish to build this library with additional extensions / features, use the following command: If you wish to build this library with additional extensions / features, use the following command:
```bash ```bash
go build --tags "<FEATURE>" go build -tags "<FEATURE>"
``` ```
For available features, see the extension list. For available features, see the extension list.
@ -154,7 +154,7 @@ When using multiple build tags, all the different tags should be space delimited
Example: Example:
```bash ```bash
go build --tags "icu json1 fts5 secure_delete" go build -tags "icu json1 fts5 secure_delete"
``` ```
### Feature / Extension List ### Feature / Extension List
@ -194,7 +194,7 @@ This package can be compiled for android.
Compile with: Compile with:
```bash ```bash
go build --tags "android" go build -tags "android"
``` ```
For more information see [#201](https://github.com/mattn/go-sqlite3/issues/201) For more information see [#201](https://github.com/mattn/go-sqlite3/issues/201)
@ -219,8 +219,8 @@ This library can be cross-compiled.
In some cases you are required to the `CC` environment variable with the cross compiler. In some cases you are required to the `CC` environment variable with the cross compiler.
## Cross Compiling from MAC OSX ## Cross Compiling from macOS
The simplest way to cross compile from OSX is to use [musl-cross](https://github.com/FiloSottile/homebrew-musl-cross). The simplest way to cross compile from macOS is to use [xgo](https://github.com/karalabe/xgo).
Steps: Steps:
- Install [musl-cross](https://github.com/FiloSottile/homebrew-musl-cross) (`brew install FiloSottile/musl-cross/musl-cross`). - Install [musl-cross](https://github.com/FiloSottile/homebrew-musl-cross) (`brew install FiloSottile/musl-cross/musl-cross`).
@ -241,13 +241,13 @@ To compile this package on Linux, you must install the development tools for you
To compile under linux use the build tag `linux`. To compile under linux use the build tag `linux`.
```bash ```bash
go build --tags "linux" go build -tags "linux"
``` ```
If you wish to link directly to libsqlite3 then you can use the `libsqlite3` build tag. If you wish to link directly to libsqlite3 then you can use the `libsqlite3` build tag.
``` ```
go build --tags "libsqlite3 linux" go build -tags "libsqlite3 linux"
``` ```
### Alpine ### Alpine
@ -270,9 +270,9 @@ sudo yum groupinstall "Development Tools" "Development Libraries"
sudo apt-get install build-essential sudo apt-get install build-essential
``` ```
## Mac OSX ## macOS
OSX should have all the tools present to compile this package. If not, install XCode to add all the developers tools. macOS should have all the tools present to compile this package. If not, install XCode to add all the developers tools.
Required dependency: Required dependency:
@ -280,7 +280,7 @@ Required dependency:
brew install sqlite3 brew install sqlite3
``` ```
For OSX, there is an additional package to install which is required if you wish to build the `icu` extension. For macOS, there is an additional package to install which is required if you wish to build the `icu` extension.
This additional package can be installed with `homebrew`: This additional package can be installed with `homebrew`:
@ -288,16 +288,25 @@ This additional package can be installed with `homebrew`:
brew upgrade icu4c brew upgrade icu4c
``` ```
To compile for Mac OSX: To compile for macOS on x86:
```bash ```bash
go build --tags "darwin" go build -tags "darwin amd64"
```
To compile for macOS on ARM chips:
```bash
go build -tags "darwin arm64"
``` ```
If you wish to link directly to libsqlite3, use the `libsqlite3` build tag: If you wish to link directly to libsqlite3, use the `libsqlite3` build tag:
``` ```
go build --tags "libsqlite3 darwin" # x86
go build -tags "libsqlite3 darwin amd64"
# ARM
go build -tags "libsqlite3 darwin arm64"
``` ```
Additional information: Additional information:

View File

@ -10,8 +10,10 @@ package sqlite3
/* /*
#cgo CFLAGS: -DUSE_LIBSQLITE3 #cgo CFLAGS: -DUSE_LIBSQLITE3
#cgo linux LDFLAGS: -lsqlite3 #cgo linux LDFLAGS: -lsqlite3
#cgo darwin LDFLAGS: -L/usr/local/opt/sqlite/lib -lsqlite3 #cgo darwin,amd64 LDFLAGS: -L/usr/local/opt/sqlite/lib -lsqlite3
#cgo darwin CFLAGS: -I/usr/local/opt/sqlite/include #cgo darwin,amd64 CFLAGS: -I/usr/local/opt/sqlite/include
#cgo darwin,arm64 LDFLAGS: -L/opt/homebrew/opt/sqlite/lib -lsqlite3
#cgo darwin,arm64 CFLAGS: -I/opt/homebrew/opt/sqlite/include
#cgo openbsd LDFLAGS: -lsqlite3 #cgo openbsd LDFLAGS: -lsqlite3
#cgo solaris LDFLAGS: -lsqlite3 #cgo solaris LDFLAGS: -lsqlite3
#cgo windows LDFLAGS: -lsqlite3 #cgo windows LDFLAGS: -lsqlite3

View File

@ -10,8 +10,10 @@ package sqlite3
/* /*
#cgo LDFLAGS: -licuuc -licui18n #cgo LDFLAGS: -licuuc -licui18n
#cgo CFLAGS: -DSQLITE_ENABLE_ICU #cgo CFLAGS: -DSQLITE_ENABLE_ICU
#cgo darwin CFLAGS: -I/usr/local/opt/icu4c/include #cgo darwin,amd64 CFLAGS: -I/usr/local/opt/icu4c/include
#cgo darwin LDFLAGS: -L/usr/local/opt/icu4c/lib #cgo darwin,amd64 LDFLAGS: -L/usr/local/opt/icu4c/lib
#cgo darwin,arm64 CFLAGS: -I/opt/homebrew/opt/icu4c/include
#cgo darwin,arm64 LDFLAGS: -L/opt/homebrew/opt/icu4c/lib
#cgo openbsd LDFLAGS: -lsqlite3 #cgo openbsd LDFLAGS: -lsqlite3
*/ */
import "C" import "C"