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