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.
This commit is contained in:
parent
fa3797e7c6
commit
4e65bb8946
1 changed files with 98 additions and 0 deletions
98
config/fish/functions/cross.fish
Normal file
98
config/fish/functions/cross.fish
Normal file
|
@ -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
|
Loading…
Add table
Add a link
Reference in a new issue