174 lines
5.4 KiB
Fish
174 lines
5.4 KiB
Fish
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 3ds nds
|
|
if test -z "$DEVKITPRO"
|
|
echo 'Please set DEVKITPRO!'
|
|
return 1
|
|
end
|
|
if test -z "$DEVKITARM"
|
|
echo 'Please set DEVKITARM!'
|
|
return 1
|
|
end
|
|
|
|
set PATH $DEVKITARM/bin $PATH
|
|
set -g cross_host arm-none-eabi
|
|
set -g objfw_configure_flags --with-$argv[1]
|
|
case amiga
|
|
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 not 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 macos
|
|
if test -z "$retro68_path"
|
|
echo 'Please set retro68_path!'
|
|
return 1
|
|
end
|
|
|
|
set PATH $retro68_path/bin $PATH
|
|
|
|
switch $argv[2]
|
|
case m68k
|
|
set -g cross_host m68k-apple-macos
|
|
case ppc
|
|
set -g cross_host powerpc-apple-macos
|
|
end
|
|
|
|
if test (count $argv) != 2 -o -z "$cross_host"
|
|
echo 'Usage: cross macos m68k|ppc'
|
|
return 1
|
|
end
|
|
case mingw
|
|
set -l pkg
|
|
switch $argv[2]
|
|
case i686 x86_64
|
|
set pkg mingw-w64-$argv[2]-gcc
|
|
set -g cross_host $argv[2]-w64-mingw32
|
|
end
|
|
|
|
if test (count $argv) != 2 -o -z "$cross_host"
|
|
echo 'Usage: cross mingw i686|x86_64'
|
|
return 1
|
|
end
|
|
|
|
set -l prefix (pkg_info -qp $pkg | awk '/^@cwd/ { print $2; exit }')
|
|
|
|
if test -z "$prefix"
|
|
echo 'Please install $pkg from pkgsrc!'
|
|
return 1
|
|
end
|
|
|
|
set PATH $prefix/cross/$cross_host/bin $PATH
|
|
case morphos
|
|
set -l prefix (pkg_info -qp ppc-morphos-gcc-11 |
|
|
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-11
|
|
set -gx CXX ppc-morphos-g++-11
|
|
set -gx OBJC ppc-morphos-gcc-11
|
|
set -gx OBJCXX ppc-morphos-g++-11
|
|
set -g cross_host ppc-morphos
|
|
case switch
|
|
if test -z "$DEVKITPRO"
|
|
echo 'Please set DEVKITPRO!'
|
|
return 1
|
|
end
|
|
if test -z "$DEVKITA64"
|
|
echo 'Please set DEVKITA64!'
|
|
return 1
|
|
end
|
|
|
|
set PATH $DEVKITA64/bin $DEVKITPRO/tools/bin $PATH
|
|
set -g cross_host aarch64-none-elf
|
|
set -g objfw_configure_flags --with-nintendo-switch
|
|
case wii wii-u
|
|
if test -z "$DEVKITPRO"
|
|
echo 'Please set DEVKITPRO!'
|
|
return 1
|
|
end
|
|
if test -z "$DEVKITPPC"
|
|
echo 'Please set DEVKITPPC!'
|
|
return 1
|
|
end
|
|
|
|
set PATH $DEVKITPPC/bin $DEVKITPRO/tools/bin $PATH
|
|
set -g cross_host powerpc-eabi
|
|
set -g objfw_configure_flags --with-$argv[1]
|
|
case '*'
|
|
echo "Unknown target: $argv[1]"
|
|
return 1
|
|
end
|
|
|
|
set -g objfw_configure_flags --host=$cross_host $objfw_configure_flags
|
|
end
|