Coder Social home page Coder Social logo

alexadhy / fyne-cross Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fyne-io/fyne-cross

0.0 0.0 0.0 619 KB

Cross compiler tool for Fyne apps

License: BSD 3-Clause "New" or "Revised" License

Makefile 3.88% Go 85.90% Dockerfile 9.68% Shell 0.54%

fyne-cross's Introduction

Fyne Cross

CI Go Report Card GoDoc version

fyne-cross is a simple tool to cross compile and create distribution packages for Fyne applications using docker images that include Linux, the MinGW compiler for Windows, FreeBSD, and a macOS SDK, along with the Fyne requirements.

Supported targets are:

  • darwin/amd64
  • darwin/arm64
  • freebsd/amd64
  • freebsd/arm64
  • linux/amd64
  • linux/386
  • linux/arm
  • linux/arm64
  • windows/amd64
  • windows/386
  • android (multiple architectures)
  • android/386
  • android/amd64
  • android/arm
  • android/arm64
  • ios

Note:

  • iOS compilation is supported only on darwin hosts. See fyne pre-requisites for details.
  • macOS packaging for public distrubution (release mode) is supported only on darwin hosts.
  • windows packaging for public distrubution (release mode) is supported only on windows hosts.
  • starting from v1.1.0:
    • cross-compile from NOT darwin (i.e. linux) to darwin: the image with the macOS SDK is no more available via docker hub and has to be built manually, see the Build the darwin image section below.
    • cross-compile from darwin to darwin by default will use under the hood the fyne CLI tool and requires Go and the macOS SDK installed on the host.

Requirements

  • go >= 1.13
  • docker

Installation

go get -u github.com/fyne-io/fyne-cross

fyne-cross will be installed in GOPATH/bin, unless GOBIN is set.

Updating docker images

To update to a newer docker image the --pull flag can be specified. If set, fyne-cross will attempt to pull the image required to cross compile the application for the specified target.

For example:

fyne-cross linux --pull

will pull only the fyne-cross:base-latest image required to cross compile for linux target.

Usage

fyne-cross <command> [options]

The commands are:

	darwin        Build and package a fyne application for the darwin OS
	linux         Build and package a fyne application for the linux OS
	windows       Build and package a fyne application for the windows OS
	android       Build and package a fyne application for the android OS
	ios           Build and package a fyne application for the iOS OS
	freebsd       Build and package a fyne application for the freebsd OS
	version       Print the fyne-cross version information

Use "fyne-cross <command> -help" for more information about a command.

Wildcards

The arch flag support wildcards in case want to compile against all supported GOARCH for a specified GOOS

Example:

fyne-cross windows -arch=*

is equivalent to

fyne-cross windows -arch=amd64,386

Example

The example below cross compile and package the fyne examples application

git clone https://github.com/fyne-io/examples.git
cd examples

Compile and package the main example app

fyne-cross linux

Note: by default fyne-cross will compile the package into the current dir.

The command above is equivalent to: fyne-cross linux .

Compile and package a particular example app

fyne-cross linux -output bugs ./cmd/bugs

Build the docker image for OSX/Darwin/Apple cross-compiling

The docker image for darwin is not provided via docker hub and need to build manually since it depends on the macOS SDK.

Please ensure you have read and understood the Xcode license terms before continuing.

To build the image:

  1. Download Command Line Tools for Xcode >= 12.4 (macOS SDK 11.x)
  2. Run: fyne-cross darwin-image --xcode-path /path/to/Command_Line_Tools_for_Xcode_12.5.dmg

The command above will:

  • install the dependencies required by osxcross to package the macOS SDK and compile the macOS cross toolchain.
  • package the macOS SDK
  • compile the macOS cross toolchain
  • build the fyneio/fyne-cross:<ver>-darwin image that will be used by fyne-cross

NOTE: the creation of the image may take several minutes and may require more than 25 GB of free disk space.

[EXPERIMENTAL] Build using a different SDK version

By default fyne-cross will attempt to auto-detect the latest version of SDK provided by the Xcode package. If for any reason a different SDK version is required, it can be specified using the --sdk-version flag.

Example:

fyne-cross darwin-image --sdk-version 11.1 --xcode-path /path/to/Command_Line_Tools_for_Xcode_12.4.dmg

Note: this feature is marked as EXPERIMENTAL

Contribute

  • Fork and clone the repository
  • Make and test your changes
  • Open a pull request against the develop branch

Contributors

See contributors page

Credits

  • osxcross for the macOS Cross toolchain for Linux
  • golang-cross for the inspiration and the docker images used in the initial versions
  • xgo for the inspiration

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.