configs  Artifact [ae0ce98598]

Artifact ae0ce985989151d4e1fe1e545c4839c15dd764a98ce3c547d718c9319e923082:

  • File config/fish/functions/cross.fish — part of check-in [7666b7ca75] at 2020-02-16 13:32:43 on branch trunk — Add cross, to set up cross-compilation environment

    This matches a collection of functions I had in zsh locally, but merges
    them all into a single command. (user: js size: 3115)


function cross --description 'Set up cross-compilation environment'
    if test (count $argv) = 0
        echo 'Usage: cross platform [architecture1] [architecture2]'
        return 1
    end

    switch $argv[1]
        case amiga
            if test (count $argv) != 2
                echo 'Usage: cross amiga m68k|ppc'
                return 1
            end

            switch $argv[2]
                case m68k
                    if test -z $amiga_gcc_path
                        echo 'Please set amiga_gcc_path!'
                        return 1
                    end

                    set PATH $amiga_gcc_path/bin $PATH
                    set -g cross_host m68k-amigaos
                case ppc
                    if test -z $adtools_path
                        echo 'Please set adtools_path!'
                        return 1
                    end

                    set PATH $adtools_path/bin $PATH
                    set -g cross_host ppc-amigaos
            end

            if test (count $argv) != 2 -o -z $cross_host
                echo 'Usage: cross amiga m68k|ppc'
                return 1
            end
        case ios iossim
            if ! type -q xcrun
                echo 'Can only cross-compile for iOS on a Mac with Xcode!'
                return 1
            end

            set -l sdk_type
            set -l default_archs
            switch $argv[1]
                case ios
                    set sdk_type iphoneos
                    set default_archs arm64
                case iossim
                    set sdk_type iphonesimulator
                    set default_archs x86_64
            end

            set -l sdk (xcrun --show-sdk-path --sdk $sdk_type)
            set -l archs $argv[2..-1]

            if test (count $archs) = 0
                set archs $default_archs
            end

            set -gx CC clang -isysroot $sdk
            set -gx CPP clang -E -isysroot $sdk
            set -gx CXX clang++ -isysroot $sdk
            set -gx CXXPP clang++ -E -isysroot $sdk

            for arch in $archs
                set -a CC -arch $arch
                set -a CXX -arch $arch
            end
            set -a CPP -arch $archs[1]
            set -a CXXPP -arch $archs[1]

            set -gx OBJC $CC
            set -gx OBJCPP $CPP
            set -gx OBJCXX $CXX
            set -gx OBJCPPXX $CXXPP
            set -gx IPHONEOS_DEPLOYMENT_TARGET 10.0
            set -g cross_host $archs[1]-apple-darwin
        case morphos
            set -l prefix (pkg_info -qp ppc-morphos-gcc-9 |
                           awk '/^@cwd/ { print $2; exit }')

            if test -z $prefix
                echo 'Please install ppc-morphos-gcc-9 from pkgsrc!'
                return 1
            end

            set PATH $prefix/gg/bin $PATH
            set -gx CC ppc-morphos-gcc-9
            set -gx CXX ppc-morphos-g++-9
            set -gx OBJC ppc-morphos-gcc-9
            set -gx OBJCXX ppc-morphos-g++-9
            set -g cross_host ppc-morphos
        case '*'
            echo "Unknown target: $argv[1]"
            return 1
    end
end