gcc-fat.sh
上传用户:nini_0081
上传日期:2022-07-21
资源大小:2628k
文件大小:5k
源码类别:

多媒体编程

开发平台:

DOS

  1. #!/bin/sh
  2. #
  3. # Build Universal binaries on Mac OS X, thanks Ryan!
  4. #
  5. # Usage: ./configure CC="sh gcc-fat.sh" && make && rm -rf ppc ppc64 x86 x64
  6. # PowerPC 32-bit compiler flags (10.4 runtime compatibility)
  7. GCC_COMPILE_PPC32="gcc-4.0 -arch ppc -mmacosx-version-min=10.4 
  8. -DMAC_OS_X_VERSION_MIN_REQUIRED=1040 
  9. -nostdinc 
  10. -F/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks 
  11. -I/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/powerpc-apple-darwin10/4.0.1/include 
  12. -isystem /Developer/SDKs/MacOSX10.4u.sdk/usr/include"
  13. GCC_LINK_PPC32="
  14. -L/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/powerpc-apple-darwin10/4.0.1 
  15. -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk"
  16. # PowerPC 64-bit compiler flags (10.5 runtime compatibility)
  17. GCC_COMPILE_PPC64="gcc-4.0 -arch ppc64 -mmacosx-version-min=10.5 
  18. -DMAC_OS_X_VERSION_MIN_REQUIRED=1050 
  19. -nostdinc 
  20. -F/Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks 
  21. -I/Developer/SDKs/MacOSX10.5.sdk/usr/lib/gcc/powerpc-apple-darwin10/4.0.1/include 
  22. -isystem /Developer/SDKs/MacOSX10.5.sdk/usr/include"
  23. GCC_LINK_PPC64="
  24. -L/Developer/SDKs/MacOSX10.5.sdk/usr/lib/gcc/powerpc-apple-darwin10/4.0.1/ppc64 
  25. -Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk"
  26. # Intel 32-bit compiler flags (10.4 runtime compatibility)
  27. GCC_COMPILE_X86="gcc-4.0 -arch i386 -mmacosx-version-min=10.4 
  28. -DMAC_OS_X_VERSION_MIN_REQUIRED=1040 
  29. -nostdinc 
  30. -F/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks 
  31. -I/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/i686-apple-darwin10/4.0.1/include 
  32. -isystem /Developer/SDKs/MacOSX10.4u.sdk/usr/include"
  33. GCC_LINK_X86="
  34. -L/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/i686-apple-darwin10/4.0.1 
  35. -Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk"
  36. # Intel 64-bit compiler flags (10.5 runtime compatibility)
  37. GCC_COMPILE_X64="gcc-4.0 -arch x86_64 -mmacosx-version-min=10.5 
  38. -DMAC_OS_X_VERSION_MIN_REQUIRED=1050 
  39. -nostdinc 
  40. -F/Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks 
  41. -I/Developer/SDKs/MacOSX10.5.sdk/usr/lib/gcc/i686-apple-darwin10/4.0.1/include 
  42. -isystem /Developer/SDKs/MacOSX10.5.sdk/usr/include"
  43. GCC_LINK_X64="
  44. -L/Developer/SDKs/MacOSX10.5.sdk/usr/lib/gcc/i686-apple-darwin10/4.0.1/x86_64 
  45. -Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk"
  46. # Output both PowerPC and Intel object files
  47. args="$*"
  48. compile=yes
  49. link=yes
  50. while test x$1 != x; do
  51.     case $1 in
  52.         --version) exec gcc $1;;
  53.         -v) exec gcc $1;;
  54.         -V) exec gcc $1;;
  55.         -print-prog-name=*) exec gcc $1;;
  56.         -print-search-dirs) exec gcc $1;;
  57.         -E) GCC_COMPILE_PPC32="$GCC_COMPILE_PPC32 -E"
  58.             GCC_COMPILE_PPC64="$GCC_COMPILE_PPC64 -E"
  59.             GCC_COMPILE_X86="$GCC_COMPILE_X86 -E"
  60.             GCC_COMPILE_X64="$GCC_COMPILE_X64 -E"
  61.             compile=no; link=no;;
  62.         -c) link=no;;
  63.         -o) output=$2;;
  64.         *.c|*.cc|*.cpp|*.S) source=$1;;
  65.     esac
  66.     shift
  67. done
  68. if test x$link = xyes; then
  69.     GCC_COMPILE_PPC32="$GCC_COMPILE_PPC32 $GCC_LINK_PPC32"
  70.     GCC_COMPILE_PPC64="$GCC_COMPILE_PPC64 $GCC_LINK_PPC64"
  71.     GCC_COMPILE_X86="$GCC_COMPILE_X86 $GCC_LINK_X86"
  72.     GCC_COMPILE_X64="$GCC_COMPILE_X64 $GCC_LINK_X64"
  73. fi
  74. if test x"$output" = x; then
  75.     if test x$link = xyes; then
  76.         output=a.out
  77.     elif test x$compile = xyes; then
  78.         output=`echo $source | sed -e 's|.*/||' -e 's|(.*).[^.]*|1|'`.o
  79.     fi
  80. fi
  81. # Compile PPC 32-bit
  82. if test x"$output" != x; then
  83.     dir=ppc/`dirname $output`
  84.     if test -d $dir; then
  85.         :
  86.     else
  87.         mkdir -p $dir
  88.     fi
  89. fi
  90. set -- $args
  91. while test x$1 != x; do
  92.     if test -f "ppc/$1" && test "$1" != "$output"; then
  93.         ppc_args="$ppc_args ppc/$1"
  94.     else
  95.         ppc_args="$ppc_args $1"
  96.     fi
  97.     shift
  98. done
  99. $GCC_COMPILE_PPC32 $ppc_args || exit $?
  100. if test x"$output" != x; then
  101.     cp $output ppc/$output
  102. fi
  103. # Compile PPC 64-bit
  104. if test x"$output" != x; then
  105.     dir=ppc64/`dirname $output`
  106.     if test -d $dir; then
  107.         :
  108.     else
  109.         mkdir -p $dir
  110.     fi
  111. fi
  112. set -- $args
  113. while test x$1 != x; do
  114.     if test -f "ppc64/$1" && test "$1" != "$output"; then
  115.         ppc64_args="$ppc64_args ppc64/$1"
  116.     else
  117.         ppc64_args="$ppc64_args $1"
  118.     fi
  119.     shift
  120. done
  121. $GCC_COMPILE_PPC64 $ppc64_args || exit $?
  122. if test x"$output" != x; then
  123.     cp $output ppc64/$output
  124. fi
  125. # Compile X86 32-bit
  126. if test x"$output" != x; then
  127.     dir=x86/`dirname $output`
  128.     if test -d $dir; then
  129.         :
  130.     else
  131.         mkdir -p $dir
  132.     fi
  133. fi
  134. set -- $args
  135. while test x$1 != x; do
  136.     if test -f "x86/$1" && test "$1" != "$output"; then
  137.         x86_args="$x86_args x86/$1"
  138.     else
  139.         x86_args="$x86_args $1"
  140.     fi
  141.     shift
  142. done
  143. $GCC_COMPILE_X86 $x86_args || exit $?
  144. if test x"$output" != x; then
  145.     cp $output x86/$output
  146. fi
  147. # Compile X86 32-bit
  148. if test x"$output" != x; then
  149.     dir=x64/`dirname $output`
  150.     if test -d $dir; then
  151.         :
  152.     else
  153.         mkdir -p $dir
  154.     fi
  155. fi
  156. set -- $args
  157. while test x$1 != x; do
  158.     if test -f "x64/$1" && test "$1" != "$output"; then
  159.         x64_args="$x64_args x64/$1"
  160.     else
  161.         x64_args="$x64_args $1"
  162.     fi
  163.     shift
  164. done
  165. $GCC_COMPILE_X64 $x64_args || exit $?
  166. if test x"$output" != x; then
  167.     cp $output x64/$output
  168. fi
  169. if test x"$output" != x; then
  170.     lipo -create -o $output ppc/$output ppc64/$output x86/$output x64/$output
  171. fi