ADDED config/fish/functions/cross.fish Index: config/fish/functions/cross.fish ================================================================== --- config/fish/functions/cross.fish +++ config/fish/functions/cross.fish @@ -0,0 +1,98 @@ +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