/[gxemul]/trunk/configure
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/configure

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 10 by dpavlin, Mon Oct 8 16:18:27 2007 UTC revision 30 by dpavlin, Mon Oct 8 16:20:40 2007 UTC
# Line 1  Line 1 
1  #!/bin/sh  #!/bin/sh
2  ###############################################################################  ###############################################################################
3  #  #
4  #  Copyright (C) 2003-2005  Anders Gavare.  All rights reserved.  #  Copyright (C) 2003-2006  Anders Gavare.  All rights reserved.
5  #  #
6  #  Redistribution and use in source and binary forms, with or without  #  Redistribution and use in source and binary forms, with or without
7  #  modification, are permitted provided that the following conditions are met:  #  modification, are permitted provided that the following conditions are met:
# Line 27  Line 27 
27  #  SUCH DAMAGE.  #  SUCH DAMAGE.
28  #  #
29  #  #
30  #  $Id: configure,v 1.140 2005/06/27 17:31:50 debug Exp $  #  $Id: configure,v 1.228 2006/07/25 21:49:14 debug Exp $
31  #  #
32  #  This is a minimal configure script, hardcoded for GXemul. This script  #  This is a minimal configure script, hardcoded for GXemul. This script
33  #  figures out which compiler flags will work, and creates Makefiles in  #  figures out which compiler flags will work, and creates Makefiles in
# Line 47  Line 47 
47  #    o)  special hacks for some OSes  #    o)  special hacks for some OSes
48  #    o)  which compiler to use  (overridden by setting CC)  #    o)  which compiler to use  (overridden by setting CC)
49  #    o)  which compiler flags to use  (overridden by setting CFLAGS)  #    o)  which compiler flags to use  (overridden by setting CFLAGS)
50  #    o)  X11 flags and libraries  (TODO: should be possible to override)  #    o)  X11 flags and libraries  (TODO: should be possible to override
51  #    o)  binary translation (on supported platforms)  #        via command line options?)
52  #    o)  prefetch capability  (TODO: this is assumed on Alpha, but not all  #
53  #                              Alphas have it...)  #
54  #  #  The general philosophy regarding command line switches is that anything
55  #  TODO:  #  which can be incorporated into the program as a runtime command line option
56  #    o)  do not enable prefetch on Alpha ev4 or ev5, only on pca56 and newer  #  should be, instead of requiring a recompile.
 #    o)  X11 libs and includes via command line options?  
57  #  #
58  ###############################################################################  ###############################################################################
59    
60  ENABLEARM=YES  #  Figure out if this is a stable version (0.x.x).
61  ENABLEMIPS=YES  X=`basename \`pwd\`|cut -d \- -f 2-|cut -c1-2`
62  ENABLEPPC=YES  if [ z"$X" = z0. ]; then
63  ENABLEURISC=YES          #  Stable:
64  ENABLEX86=NO          ENABLEALPHA=YES
65  STABLE=NO          ENABLEARM=YES
66            ENABLEMIPS=YES
67            ENABLEPPC=YES
68    else
69            #  Development:
70            UNSTABLE=YES
71            ENABLEALPHA=YES
72            ENABLEARM=YES
73            ENABLEAVR=YES
74            ENABLEHPPA=YES
75            ENABLEI960=YES
76            ENABLEIA64=YES
77            ENABLEM68K=YES
78            ENABLEMIPS=YES
79            ENABLEPPC=YES
80            ENABLESH=YES
81            ENABLESPARC=YES
82            ENABLETRANSPUTER=YES
83            ENABLEX86=YES
84    fi
85    
86    if [ z"$UNSTABLE" = zYES ]; then
87            printf "###\n###  DEVELOPMENT (UNSTABLE)\n###\n\n"
88    fi
89    
90  if [ z"$*" != z ]; then  if [ z"$*" != z ]; then
91          #  Parse command line options:          #  Parse command line options:
92          for a in $*; do          for a in $*; do
93                  if [ z$a = z--disable-x ]; then                  if [ z$a = z--disable-x ]; then
94                          NOX11=YES                          NOX11=YES
                 else if [ z$a = z--always32 ]; then  
                         ALWAYS32=YES  
                 else if [ z$a = z--tracenull ]; then  
                         TRACENULL=YES  
                 else if [ z$a = z--disable-bintrans ]; then  
                         NOBINTRANS=YES  
                 else if [ z$a = z--enable-bintrans ]; then  
                         NOBINTRANS=NO  
                 else if [ z$a = z--disable-mips16 ]; then  
                         MIPS16=NO  
                 else if [ z$a = z--enable-mips16 ]; then  
                         MIPS16=YES  
                 else if [ z$a = z--disable-arm ]; then  
                         ENABLEARM=NO  
                 else if [ z$a = z--enable-arm ]; then  
                         ENABLEARM=YES  
                 else if [ z$a = z--disable-mips ]; then  
                         ENABLEMIPS=NO  
                 else if [ z$a = z--enable-mips ]; then  
                         ENABLEMIPS=YES  
                 else if [ z$a = z--disable-ppc ]; then  
                         ENABLEPPC=NO  
                 else if [ z$a = z--enable-ppc ]; then  
                         ENABLEPPC=YES  
                 else if [ z$a = z--disable-urisc ]; then  
                         ENABLEURISC=NO  
                 else if [ z$a = z--enable-urisc ]; then  
                         ENABLEURISC=YES  
                 else if [ z$a = z--disable-x86 ]; then  
                         ENABLEX86=NO  
                 else if [ z$a = z--enable-x86 ]; then  
                         ENABLEX86=YES  
                 else if [ z$a = z--disable-delays ]; then  
                         DELAYS=NO  
                 else if [ z$a = z--enable-delays ]; then  
                         DELAYS=YES  
                 else if [ z$a = z--disable-caches ]; then  
                         CACHES=NO  
                 else if [ z$a = z--enable-caches ]; then  
                         CACHES=YES  
95                  else if [ z$a = z--help ]; then                  else if [ z$a = z--help ]; then
96                          echo "usage: $0 [options]"                          printf "usage: $0 [options]\n\n"
97                          printf "\nDevelopment (debug) options:\n"                          echo "  --disable-x         don't include X11 support,"\
98                          echo "  --always32         enable" \                              "even if the host supports it"
99                              "ALWAYS_SIGNEXTEND_32 (for hunting down"                          echo
                         echo "                     32/64-bit bugs)"  
                         echo "  --tracenull        enable" \  
                             "TRACE_NULL_CRASHES (for bug hunting)"  
                         printf "\nGeneral options:\n"  
                         echo "  --disable-bintrans configure without" \  
                             "bintrans, even if the host supports it"  
                         printf "  --enable-caches    enable cache emulation"  
                         printf " (BUGGY)\n"  
                         echo "  --enable-delays    enable instruction" \  
                             "latency/delay emulation"  
                         echo "  --disable-x        don't include X11 support"  
                         printf "\nCPU selection options:\n"  
                         echo "  --disable-arm      disable ARM CPU emulation"  
                         echo "  --disable-mips     disable MIPS CPU emulation"  
                         echo "  --disable-ppc      disable PPC CPU emulation"  
                         echo "  --disable-urisc    disable URISC CPU emulation"  
                         if [ z$STABLE = zNO ]; then  
                                 printf "  --enable-x86       "  
                                 printf "enable x86 CPU emulation"  
                                 printf " (NOT YET)\n"  
                         fi  
                         printf "\nMIPS-specific options:\n"  
                         printf "  --enable-mips16    enable MIPS16 instruction"  
                         printf " support (NOT YET)\n\n"  
100                          exit                          exit
101                  else                  else
102                          echo "Invalid option: $a"                          echo "Invalid option: $a"
103                          echo "Run  $0 --help  to get a list of" \                          echo "Run  $0 --help  to get a list of" \
104                              "available options."                              "available options."
105                          exit                          exit
106                  fi; fi; fi; fi; fi; fi; fi; fi; fi; fi; fi; fi; fi; fi; fi                  fi; fi
                 fi; fi; fi; fi; fi; fi; fi  
107          done          done
108  fi  fi
109    
# Line 176  else Line 133  else
133  fi  fi
134    
135    
136    if [ z"$UNSTABLE" = zYES ]; then
137            printf "#define UNSTABLE_DEVEL\n" >> config.h
138    fi
139    
140    
141  ZZ=`echo compiled on \`uname\`/\`uname -m\`, \`date\``  ZZ=`echo compiled on \`uname\`/\`uname -m\`, \`date\``
142  printf "#define COMPILE_DATE \"$ZZ\"\n" >> config.h  printf "#define COMPILE_DATE \"$ZZ\"\n" >> config.h
143    
144    
145    
146  #  Support for various CPU types:  #  Support for various CPU types:
147  if [ z$MIPS16 = zYES ]; then  if [ z$ENABLEALPHA = zYES ]; then
148          printf 'Enabling MIPS16 support.  '          printf "#define ENABLE_ALPHA\n" >> config.h
149          printf 'NOTE: MIPS16 support is not really working yet.\n'          CPU_ARCHS="$CPU_ARCHS cpu_alpha.o cpu_alpha_palcode.o memory_alpha.o"
150          printf "#define ENABLE_MIPS16\n" >> config.h          CPU_TOOLS="$CPU_TOOLS generate_alpha_misc"
151  fi  fi
152  if [ z$ENABLEARM = zYES ]; then  if [ z$ENABLEARM = zYES ]; then
153          printf "#define ENABLE_ARM\n" >> config.h          printf "#define ENABLE_ARM\n" >> config.h
154            CPU_ARCHS="$CPU_ARCHS cpu_arm.o cpu_arm_coproc.o memory_arm.o "
155            CPU_ARCHS="$CPU_ARCHS tmp_arm_dpi.o tmp_arm_loadstore.o tmp_arm_r.o"
156            CPU_ARCHS="$CPU_ARCHS tmp_arm_r0.o tmp_arm_r1.o"
157            CPU_ARCHS="$CPU_ARCHS tmp_arm_r2.o tmp_arm_r3.o"
158            CPU_ARCHS="$CPU_ARCHS tmp_arm_r4.o tmp_arm_r5.o"
159            CPU_ARCHS="$CPU_ARCHS tmp_arm_r6.o tmp_arm_r7.o"
160            CPU_ARCHS="$CPU_ARCHS tmp_arm_r8.o tmp_arm_r9.o"
161            CPU_ARCHS="$CPU_ARCHS tmp_arm_ra.o tmp_arm_rb.o"
162            CPU_ARCHS="$CPU_ARCHS tmp_arm_rc.o tmp_arm_rd.o"
163            CPU_ARCHS="$CPU_ARCHS tmp_arm_re.o tmp_arm_rf.o tmp_arm_multi.o"
164            CPU_TOOLS="$CPU_TOOLS generate_arm_dpi generate_arm_r"
165            CPU_TOOLS="$CPU_TOOLS generate_arm_loadstore generate_arm_multi"
166    fi
167    if [ z$ENABLEAVR = zYES ]; then
168            printf "#define ENABLE_AVR\n" >> config.h
169            CPU_ARCHS="$CPU_ARCHS cpu_avr.o"
170    fi
171    if [ z$ENABLEHPPA = zYES ]; then
172            printf "#define ENABLE_HPPA\n" >> config.h
173            CPU_ARCHS="$CPU_ARCHS cpu_hppa.o"
174    fi
175    if [ z$ENABLEI960 = zYES ]; then
176            printf "#define ENABLE_I960\n" >> config.h
177            CPU_ARCHS="$CPU_ARCHS cpu_i960.o"
178    fi
179    if [ z$ENABLEIA64 = zYES ]; then
180            printf "#define ENABLE_IA64\n" >> config.h
181            CPU_ARCHS="$CPU_ARCHS cpu_ia64.o"
182    fi
183    if [ z$ENABLEM68K = zYES ]; then
184            printf "#define ENABLE_M68K\n" >> config.h
185            CPU_ARCHS="$CPU_ARCHS cpu_m68k.o"
186  fi  fi
187  if [ z$ENABLEMIPS = zYES ]; then  if [ z$ENABLEMIPS = zYES ]; then
188          printf "#define ENABLE_MIPS\n" >> config.h          printf "#define ENABLE_MIPS\n" >> config.h
189            CPU_ARCHS="$CPU_ARCHS cpu_mips.o cpu_mips_coproc.o "
190            CPU_ARCHS="$CPU_ARCHS cpu_mips_instr_unaligned.o"
191            CPU_TOOLS="$CPU_TOOLS generate_mips_loadstore"
192  fi  fi
193  if [ z$ENABLEPPC = zYES ]; then  if [ z$ENABLEPPC = zYES ]; then
194          printf "#define ENABLE_PPC\n" >> config.h          printf "#define ENABLE_PPC\n" >> config.h
195            CPU_ARCHS="$CPU_ARCHS cpu_ppc.o"
196            CPU_TOOLS="$CPU_TOOLS generate_ppc_loadstore"
197  fi  fi
198  if [ z$ENABLEURISC = zYES ]; then  if [ z$ENABLESH = zYES ]; then
199          printf "#define ENABLE_URISC\n" >> config.h          printf "#define ENABLE_SH\n" >> config.h
200            CPU_ARCHS="$CPU_ARCHS cpu_sh.o memory_sh.o"
201    fi
202    if [ z$ENABLESPARC = zYES ]; then
203            printf "#define ENABLE_SPARC\n" >> config.h
204            CPU_ARCHS="$CPU_ARCHS cpu_sparc.o"
205            CPU_TOOLS="$CPU_TOOLS generate_sparc_loadstore"
206    fi
207    if [ z$ENABLETRANSPUTER = zYES ]; then
208            printf "#define ENABLE_TRANSPUTER\n" >> config.h
209            CPU_ARCHS="$CPU_ARCHS cpu_transputer.o"
210  fi  fi
211  if [ z$ENABLEX86 = zYES ]; then  if [ z$ENABLEX86 = zYES ]; then
212          printf "#define ENABLE_X86\n" >> config.h          printf "#define ENABLE_X86\n" >> config.h
213          if [ z$STABLE = zNO ]; then          CPU_ARCHS="$CPU_ARCHS cpu_x86.o"
                 printf "\nWARNING: X86 emulation enabled, but it isn't really"  
                 printf " working yet.\n\n"  
         else  
                 printf "Not in the stable release.\n"  
                 exit  
         fi  
 fi  
   
   
 #  Instruction delay/latency emulation:  
 if [ z$DELAYS = zYES ]; then  
         echo 'Enabling Instruction delay/latency emulation.'  
         printf "#define ENABLE_INSTRUCTION_DELAYS\n" >> config.h  
 fi  
   
   
 #  Development option: ALWAYS_SIGNEXTEND_32  
 if [ z$ALWAYS32 = zYES ]; then  
         echo 'Enabling ALWAYS_SIGNEXTEND_32. (NOTE:' \  
             'This slows down everything.)'  
         printf "#define ALWAYS_SIGNEXTEND_32\n" >> config.h  
 fi  
   
   
 #  Development option: TRACE_NULL_CRASHES  
 if [ z$TRACENULL = zYES ]; then  
         echo 'Enabling TRACE_NULL_CRASHES. (NOTE:' \  
             'This slows down the emulator.)'  
         printf "#define TRACE_NULL_CRASHES\n" >> config.h  
214  fi  fi
215    
216    
217  #  Cache emulation:  #  Cache emulation:
218  if [ z$CACHES = zYES ]; then  if [ z$CACHES = zYES ]; then
219          echo 'Enabling Cache emulation. (EXPERIMENTAL)'          echo 'Enabling Cache emulation. (EXPERIMENTAL and BUGGY)'
220          printf "#define ENABLE_CACHE_EMULATION\n" >> config.h          printf "#define ENABLE_CACHE_EMULATION\n" >> config.h
221    
         if [ z$DELAYS != zYES ]; then  
                 printf 'WARNING: Cache emulation without instruction '  
                 printf 'delay/latency emulation\n'  
                 printf '         (--delays) will not produce correct '  
                 printf 'cache miss penalties and such.\n'  
         fi  
   
222          printf "\nNOTE: Cache emulation enabled, but right now it triggers "          printf "\nNOTE: Cache emulation enabled, but right now it triggers "
223          printf "weird bugs in the\n      emulator. You have been warned.\n\n"          printf "weird bugs in the\n      emulator. You have been warned.\n\n"
224  fi  fi
# Line 325  if [ z"$CC" = z ]; then Line 298  if [ z"$CC" = z ]; then
298          fi          fi
299          rm -f _testprog          rm -f _testprog
300    
301          #  Try ccc (FreeBSD/Alpha):  #       #  Try ccc (FreeBSD/Alpha):
302          printf "#!/bin/sh\nccc _testprog.c -o _testprog >" > _test.sh  #       printf "#!/bin/sh\nccc _testprog.c -o _testprog >" > _test.sh
303          printf " /dev/null 2> /dev/null\n" >> _test.sh  #       printf " /dev/null 2> /dev/null\n" >> _test.sh
304          chmod 755 _test.sh  #       chmod 755 _test.sh
305          ./_test.sh > /dev/null 2> /dev/null  #       ./_test.sh > /dev/null 2> /dev/null
306          if [ -x _testprog ]; then  #       if [ -x _testprog ]; then
307                  CC="ccc"  #               CC="ccc"
308          fi  #       fi
309          rm -f _testprog  #       rm -f _testprog
310    
311          rm -f _test.sh          rm -f _test.sh
312  fi  fi
# Line 448  if [ z$OSF1 = zYES ]; then Line 421  if [ z$OSF1 = zYES ]; then
421  fi  fi
422    
423    
424  #  Check for weird 'alpha' define.  #  Check for 'alpha' define.
425  printf "checking for weird 'alpha' define... "  printf "checking for 'alpha' define... "
426  printf "#include <stdio.h>\nint main(int argc, char *argv[]){  printf "#include <stdio.h>\nint main(int argc, char *argv[]){
427  #ifdef alpha  #ifdef alpha
428  printf(\"1\");  printf(\"1\");
# Line 479  fi Line 452  fi
452  rm -f _testm*  rm -f _testm*
453    
454    
 #  Check for weird 'hppa' define.  
 printf "checking for weird 'hppa' define... "  
 printf "#include <stdio.h>\nint main(int argc, char *argv[]){  
 #ifdef hppa  
 printf(\"1\");  
 #undef hppa  
 #ifdef hppa  
 printf(\"2\");  
 #endif  
 #endif  
 printf(\"\\\n\");return 0;}\n" > _testm.c  
 $CC $CFLAGS _testm.c -o _testm 2> /dev/null  
 if [ ! -x _testm ]; then  
         printf "\nWARNING! COULD NOT COMPILE hppa define TEST"  
         printf " PROGRAM AT ALL!\n"  
 else  
         if [ z`./_testm` = z1 ]; then  
                 printf "yes, workaround applied\n"  
                 echo "#undef hppa" >> config.h  
         else  
                 if [ z`./_testm` = z12 ]; then  
                         printf "yes, but workaround not possible\n"  
                         exit  
                 else  
                         printf "no\n"  
                 fi  
         fi  
 fi  
 rm -f _testm*  
   
   
455  #  Some OSes on MIPS seems to define 'mips' to 1. (eg OpenBSD/arc)  #  Some OSes on MIPS seems to define 'mips' to 1. (eg OpenBSD/arc)
456  printf "checking for weird 'mips' define... "  printf "checking for 'mips' define... "
457  printf "#include <stdio.h>\nint main(int argc, char *argv[]){  printf "#include <stdio.h>\nint main(int argc, char *argv[]){
458  #ifdef mips  #ifdef mips
459  printf(\"1\");  printf(\"1\");
# Line 543  rm -f _testm* Line 485  rm -f _testm*
485    
486  #  Similar to the mips define check above, although I don't know if  #  Similar to the mips define check above, although I don't know if
487  #  any OS actually defined ppc like this.  #  any OS actually defined ppc like this.
488  printf "checking for weird 'ppc' define... "  printf "checking for 'ppc' define... "
489  printf "#include <stdio.h>\nint main(int argc, char *argv[]){  printf "#include <stdio.h>\nint main(int argc, char *argv[]){
490  #ifdef ppc  #ifdef ppc
491  printf(\"1\");  printf(\"1\");
# Line 575  rm -f _testm* Line 517  rm -f _testm*
517    
518  #  Similar to the mips define check above, although I don't know if  #  Similar to the mips define check above, although I don't know if
519  #  any OS actually defined sparc like this.  #  any OS actually defined sparc like this.
520  printf "checking for weird 'sparc' define... "  printf "checking for 'sparc' define... "
521  printf "#include <stdio.h>\nint main(int argc, char *argv[]){  printf "#include <stdio.h>\nint main(int argc, char *argv[]){
522  #ifdef sparc  #ifdef sparc
523  printf(\"1\");  printf(\"1\");
# Line 618  if [ -x _testprog ]; then Line 560  if [ -x _testprog ]; then
560          if [ z"$COMPAQCC" = zYES ]; then          if [ z"$COMPAQCC" = zYES ]; then
561                  CWARNINGS="$CWARNINGS -msg_disable longlongtype,unusedtop"                  CWARNINGS="$CWARNINGS -msg_disable longlongtype,unusedtop"
562          fi          fi
563    
564            if [ z"$UNSTABLE" = zYES ]; then
565                    printf "checking whether -Werror can be used... "
566                    rm -f _testprog
567                    $CC $CFLAGS $CWARNINGS _testprog.c -o _testprog -Werror 2> /dev/null
568                    if [ -x _testprog ]; then
569                            printf "yes\n"
570                            CWARNINGS="$CWARNINGS -Werror"
571                    else
572                            printf "no\n"
573                    fi
574            fi
575  else  else
576          printf "no\n"          printf "no\n"
577  fi  fi
# Line 625  rm -f _testprog Line 579  rm -f _testprog
579    
580    
581  if [ z"$COMPAQCC" = zYES ]; then  if [ z"$COMPAQCC" = zYES ]; then
582          #  -O4 is possible, but is -O3 better?          #  -O4 is possible, but sometimes -O3 is better?
583          CFLAGS="-O4 $CFLAGS"          CFLAGS="-O4 $CFLAGS"
584  else  else
585          if [ z"`uname`" = zSunOS ]; then          if [ z"`uname`" = zSunOS ]; then
# Line 640  else Line 594  else
594                  $CC $CFLAGS _testprog.c -o _testprog -O 2> /dev/null                  $CC $CFLAGS _testprog.c -o _testprog -O 2> /dev/null
595                  if [ -x _testprog ]; then                  if [ -x _testprog ]; then
596                          rm -f _testprog                          rm -f _testprog
597                          $CC $CFLAGS _testprog.c -o _testprog -O2 2> /dev/null                          $CC $CFLAGS _testprog.c -o _testprog -O3 2> /dev/null
598                          if [ -x _testprog ]; then                          if [ -x _testprog ]; then
599                                  CFLAGS="-O2 $CFLAGS"                                  CFLAGS="-O3 $CFLAGS"
600                          else                          else
601                                  CFLAGS="-O $CFLAGS"                                  CFLAGS="-O $CFLAGS"
602                          fi                          fi
# Line 730  fi Line 684  fi
684  rm -f _testprog _testprog.error _testprog.stdout  rm -f _testprog _testprog.error _testprog.stdout
685    
686    
687    #  -g, for development builds
688    if [ z"$UNSTABLE" = zYES ]; then
689            printf "checking whether -g can be used... "
690            if [ z"$COMPAQCC" = zYES ]; then
691                    printf "skipping\n"
692            else
693                    $CC $CFLAGS -g _testprog.c -o _testprog > _testprog.stdout 2>&1
694                    cat _testprog.stdout >> _testprog.error
695                    if [ -x _testprog ]; then
696                            CFLAGS="-g $CFLAGS"
697                            printf "yes\n"
698                    else
699                    printf "no\n"
700                            fi
701            fi
702            rm -f _testprog _testprog.error _testprog.stdout
703    fi
704    
705    
706  #  -lrt for nanosleep?  #  -lrt for nanosleep?
707  printf "checking whether -lrt is required for nanosleep... "  printf "checking whether -lrt is required for nanosleep... "
708  printf "#include <time.h>\n#include <stdio.h>  printf "#include <time.h>\n#include <stdio.h>
# Line 864  printf "#include <stdlib.h> Line 837  printf "#include <stdlib.h>
837  #include <stdio.h>  #include <stdio.h>
838  #include <sys/types.h>  #include <sys/types.h>
839  int main(int argc, char *argv[]) { fseeko(NULL, 0, 0); return 0;}\n" > _tests.c  int main(int argc, char *argv[]) { fseeko(NULL, 0, 0); return 0;}\n" > _tests.c
840  $CC $CFLAGS _tests.c -o _tests 2> /dev/null  $CC $CFLAGS $CWARNINGS _tests.c -o _tests 2> /dev/null
841  if [ ! -x _tests ]; then  if [ ! -x _tests ]; then
842          printf "missing\n"          # Try with _LARGEFILE_SOURCE (hack to make fseeko
843          printf "WARNING! fseeko missing from libc. Using a hack, "          # work on 64-bit Linux):
844          printf "which probably doesn't work.\n"          $CC $CFLAGS -D_LARGEFILE_SOURCE $CWARNINGS _tests.c -o _tests 2> /dev/null
845          printf "#define HACK_FSEEKO\n" >> config.h          if [ ! -x _tests ]; then
846                    printf "missing\n"
847                    printf "WARNING! fseeko missing from libc. Using a hack, "
848                    printf "which probably doesn't work.\n"
849                    printf "#define HACK_FSEEKO\n" >> config.h
850            else
851                    printf "using -D_LARGEFILE_SOURCE hack\n"
852                    CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE"
853            fi
854  else  else
855          printf "found\n"          printf "found\n"
856  fi  fi
# Line 926  fi Line 907  fi
907  rm -f _tests.[co] _tests  rm -f _tests.[co] _tests
908    
909    
910    #  Check for PRIx64 in inttypes.h:
911    printf "checking for PRIx64 in inttypes.h... "
912    printf "#include <inttypes.h>\nint main(int argc, char *argv[])\n
913    {\n#ifdef PRIx64\nreturn 0;\n#else\nreturn 1;\n#endif\n}\n" > _testpri.c
914    $CC $CFLAGS _testpri.c -o _testpri 2> /dev/null
915    if [ ! -x _testpri ]; then
916            printf "\nERROR! COULD NOT COMPILE PRIx64 TEST PROGRAM AT ALL!\n"
917            exit
918    else
919            if ./_testpri; then
920                    printf "yes\n"
921            else
922                    printf "no, using an ugly hack instead, "
923                    printf "#define NO_C99_PRINTF_DEFINES\n" >> config.h
924    
925                    # Try llx first:
926                    printf "#include <stdio.h>\n#include <inttypes.h>\nint main(int argc, char *argv[]){
927                        printf(\"%%llx\\\n\", (int64_t)128);return 0;}\n" > _testpri.c
928                    rm -f _testpri
929                    $CC $CFLAGS $CWARNINGS _testpri.c -o _testpri 2> /dev/null
930                    if [ z`./_testpri` = z80 ]; then
931                            printf "PRIx64=llx\n"
932                            printf "#define NO_C99_64BIT_LONGLONG\n" >> config.h
933                    else
934                            # Try lx too:
935                            printf "#include <stdio.h>\n#include <inttypes.h>\nint main(int argc, char *argv[]){
936                                printf(\"%%lx\\\n\", (int64_t)128);return 0;}\n" > _testpri.c
937                            rm -f _testpri
938                            $CC $CFLAGS $CWARNINGS _testpri.c -o _testpri 2> /dev/null
939                            if [ z`./_testpri` = z80 ]; then
940                                    printf "PRIx64=lx\n"
941                            else
942                                    printf "\nFailed, neither lx nor llx worked!\n"
943                                    exit
944                            fi
945                    fi
946            fi
947    fi
948    rm -f _testpri.c _testpri
949    
950    
951  #  Check for 64-bit off_t:  #  Check for 64-bit off_t:
952  printf "checking for 64-bit off_t... "  printf "checking for 64-bit off_t... "
953  printf "#include <stdio.h>\n#include <inttypes.h>\n#include <sys/types.h>\n  printf "#include <stdio.h>\n#include <inttypes.h>\n#include <sys/types.h>\n
# Line 961  rm -f _testoff.c _testoff Line 983  rm -f _testoff.c _testoff
983    
984    
985  #  Check for u_int8_t etc:  #  Check for u_int8_t etc:
986    #  These are needed because some header files in src/include/ use u_int*
987    #  instead of uint*, and I don't have time to rewrite them all.
988  printf "checking for u_int8_t... "  printf "checking for u_int8_t... "
989  printf "#include <stdio.h>\n#include <inttypes.h>\n#include <sys/types.h>\n  printf "#include <stdio.h>\n#include <inttypes.h>\n#include <sys/types.h>\n
990  int main(int argc, char *argv[]){printf(\"%%i\\\n\",  int main(int argc, char *argv[]){printf(\"%%i\\\n\",
# Line 982  if [ ! -x _testuint ]; then Line 1006  if [ ! -x _testuint ]; then
1006          printf "typedef uint8_t u_int8_t;\n" >> config.h          printf "typedef uint8_t u_int8_t;\n" >> config.h
1007          printf "typedef uint16_t u_int16_t;\n" >> config.h          printf "typedef uint16_t u_int16_t;\n" >> config.h
1008          printf "typedef uint32_t u_int32_t;\n" >> config.h          printf "typedef uint32_t u_int32_t;\n" >> config.h
         printf "typedef uint64_t u_int64_t;\n" >> config.h  
1009          printf "uint8_t\n"          printf "uint8_t\n"
1010  else  else
1011          printf "yes\n"          printf "yes\n"
1012  fi  fi
1013  rm -f _testuint.c _testuint  rm -f _testuint.c _testuint
1014    
1015    printf "checking for u_int64_t... "
1016  ###############################################################################  printf "#include <stdio.h>\n#include <inttypes.h>\n#include <sys/types.h>\n
1017  #  int main(int argc, char *argv[]){printf(\"%%i\\\n\",
1018  #  Dynamic binary translation (BINTRANS):   (int)sizeof(u_int64_t));return 0;}\n" > _testuint.c
1019  #  $CC $CFLAGS _testuint.c -o _testuint 2> /dev/null
1020  ###############################################################################  if [ ! -x _testuint ]; then
1021            rm -f _testuint*
1022  printf "checking for bintrans backend... "          printf "#include <stdio.h>\n#include <inttypes.h>
1023            \n#include <sys/types.h>\nint main(int argc, char *argv[])
1024  BINTRANS=NO          {printf(\"%%i\\\n\", (int)sizeof(uint64_t));return 0;}\n" > _testuint.c
1025            $CC $CFLAGS _testuint.c -o _testuint 2> /dev/null
1026  if [ z$ENABLEMIPS = zNO ]; then          if [ ! -x _testuint ]; then
1027          printf "NO!\nTEMPORARY HACK/PROBLEM: Disabling bintrans for now,\n"                  printf "no\n\nERROR: No u_int64_t or uint64_t. Aborting\n"
1028          printf "until things have stabilized.\n"                  #  TODO: Automagically detect using various combinations
1029          NOBINTRANS=YES                  #  of char, int, short, long etc.
1030  fi                  exit
   
 if [ z$NOBINTRANS = zYES ]; then  
         printf "disabled\n"  
 else  
         #  Alpha:  
         if [ z"`uname -m`" = zalpha ]; then  
                 printf "#define ALPHA\n" >> config.h  
                 printf "#define BINTRANS\n" >> config.h  
                 printf "Alpha\n"  
                 BINTRANS=YES  
         fi  
   
         #  x86:  (all machines ending in "86" are treated as i386)  
         if [ z"`uname -m|rev|cut -c1-2`" = z68 ]; then  
                 printf "#define I386\n" >> config.h  
                 printf "#define BINTRANS\n" >> config.h  
                 printf "i386\n"  
                 BINTRANS=YES  
         fi  
   
 # MIPS not yet  
 #       #  MIPS:  
 #       if [ z"`uname -m`" = zmips ]; then  
 #               printf "#define MIPS\n" >> config.h  
 #               printf "#define BINTRANS\n" >> config.h  
 #               printf "MIPS\n"  
 #               BINTRANS=YES  
 #       fi  
   
 #       #  UltraSPARC:  
 #       if [ z"`uname -m`" = zsun4u ]; then  
 #               printf "#define SPARCV9\n" >> config.h  
 #               printf "#define BINTRANS\n" >> config.h  
 #               printf "SPARC V9\n"  
 #               BINTRANS=YES  
 #       else  
 #               if [ z"`uname -m`" = zsparc64 ]; then  
 #                       printf "#define SPARCV9\n" >> config.h  
 #                       printf "#define BINTRANS\n" >> config.h  
 #                       printf "SPARC V9\n"  
 #                       BINTRANS=YES  
 #               fi  
 #       fi  
   
         if [ z$BINTRANS = zNO ]; then  
                 printf "not supported yet on this arch\n"  
1031          fi          fi
1032    
1033            printf "typedef uint64_t u_int64_t;\n" >> config.h
1034            printf "uint64_t\n"
1035    else
1036            printf "yes\n"
1037  fi  fi
1038    rm -f _testuint.c _testuint
1039    
1040    
1041  ###############################################################################  ###############################################################################
1042    
1043  #  Prefetch support?  #  Host byte order?
1044  printf "checking for asm prefetch support... "  printf "checking host endianness... "
1045  if [ z"`uname -m`" = zalpha ]; then  rm -f _test_end*
1046          rm -f _alpha_asm_test.c _alpha_asm_test  printf '#include <stdio.h>
1047          printf 'int main(int argc, char *argv[])  int main(int argc, char *argv[])
1048           { int x; int *y = &x; asm ("ldl $31,0(%%0)" : : "g" (y));  {  int x = 1; void *xp = (void *)&x; char *p = (char *)xp;
1049            return 0; }\n' > _alpha_asm_test.c  if (*p) printf("little\\\n"); else printf("big\\\n"); }
1050          $CC $CFLAGS -O2 _alpha_asm_test.c -o _alpha_asm_test \  ' > _test_end.c
1051              > /dev/null 2> /dev/null  $CC $CFLAGS _test_end.c -o _test_end 2> /dev/null
1052          if [ -x _alpha_asm_test ]; then  X=`./_test_end`
1053  #               printf "#define HAVE_PREFETCH\n" >> config.h  echo $X
1054                  printf "#define PREFETCH(x) asm(\"ldl" >> config.h  if [ z$X = zlittle ]; then
1055                  printf " \$31,0(%%0)\" : : \"g\" (x))\n" >> config.h          printf "#define HOST_LITTLE_ENDIAN\n" >> config.h
1056                  echo "yes"  else
1057                  PREFSUP=YES          if [ z$X = zbig ]; then
1058          fi                  printf "#define HOST_BIG_ENDIAN\n" >> config.h
1059          rm -f _alpha_asm_test.c _alpha_asm_test          else
1060  fi                  echo "Error! Could not determine host's endianness."
1061  if [ z$PREFSUP = z ]; then                  exit
1062          printf "#define PREFETCH(x) { }\n" >> config.h          fi
         echo "no"  
1063  fi  fi
1064    rm -f _test_end*
1065    
1066  ###############################################################################  ###############################################################################
1067    
1068  INCLUDE=-Iinclude/  INCLUDE=-Iinclude/
1069  DINCLUDE=-I../include/  DINCLUDE=-I../include/
1070    
1071    rm -f _testprog.c
1072    
1073  echo C compiler flags: $CFLAGS $CWARNINGS  echo C compiler flags: $CFLAGS $CWARNINGS
1074  echo Linker flags: $OTHERLIBS  echo Linker flags: $OTHERLIBS
1075  echo "CWARNINGS=$CWARNINGS" >> _Makefile.header  echo "CWARNINGS=$CWARNINGS" >> _Makefile.header
# Line 1094  echo "INCLUDE=$INCLUDE" >> _Makefile.hea Line 1078  echo "INCLUDE=$INCLUDE" >> _Makefile.hea
1078  echo "DINCLUDE=$DINCLUDE" >> _Makefile.header  echo "DINCLUDE=$DINCLUDE" >> _Makefile.header
1079  echo "CC=$CC" >> _Makefile.header  echo "CC=$CC" >> _Makefile.header
1080  echo "OTHERLIBS=$OTHERLIBS" >> _Makefile.header  echo "OTHERLIBS=$OTHERLIBS" >> _Makefile.header
1081    echo "CPU_ARCHS=$CPU_ARCHS" >> _Makefile.header
1082    echo "CPU_TOOLS=$CPU_TOOLS" >> _Makefile.header
1083  echo "" >> _Makefile.header  echo "" >> _Makefile.header
1084    
1085    
 printf "Regression test setup: (not really needed to build gxemul)\n"  
   
   
 #  64-bit MIPS cross-compiler:  
   
 MIPS=''  
 if [ z$ENABLEMIPS = zYES ]; then  
         printf "Checking for a GNU cross-compiler for 64-bit MIPS... "  
         echo 'int f(int x) { return x; }' > _testprog.c  
   
         for MIPS_TRY in mips64-unknown-elf mips64-elf mips-unknown-elf64; do  
                 printf '#!/bin/sh\n'$MIPS_TRY'-gcc _testprog.c -c\n' > _test.sh  
                 chmod 755 _test.sh  
                 rm -f _testprog.o  
                 ./_test.sh > /dev/null 2> /dev/null  
                 if [ -f _testprog.o ]; then  
                         MIPS=$MIPS_TRY  
                         break  
                 fi  
                 rm -f _testprog.o  
         done  
   
         if [ z$MIPS = z ]; then  
                 echo "none"  
         else  
                 echo $MIPS"-gcc"  
         fi  
 fi  
 rm -f _testprog* _test.sh  
   
 echo "MIPS_CC="$MIPS"-gcc -g -O2 -fno-builtin -fschedule-insns" \  
     "-mips64 -mabi=64" >> _Makefile.header  
 echo "MIPS_AS="$MIPS"-as -mabi=64 -mips64" >> _Makefile.header  
 echo "MIPS_LD="$MIPS"-ld -Ttext 0xa800000000030000 -e main" \  
     "--oformat=elf64-bigmips" >> _Makefile.header  
 echo "" >> _Makefile.header  
   
   
 ##  PPC64 cross-assembler:  
 #  
 #PPC=''  
 #if [ z$ENABLEPPC = zYES ]; then  
 #       printf "Checking for a GNU cross-assembler for 64-bit PPC... "  
 #       echo 'nop' > _testprog.s  
 #  
 #       for a in ppc64 powerpc64; do  
 #         for b in unknown; do  
 #           for c in elf elf64 linux linux64 aix aix5; do  
 #               PPC_TRY=$a-$b-$c  
 #               printf '#!/bin/sh\n'$PPC_TRY'-as _testprog.s' > _test.sh  
 #               printf ' -o _testprog.o\n' >> _test.sh  
 #               chmod 755 _test.sh  
 #               rm -f _testprog.o  
 #               ./_test.sh > /dev/null 2> /dev/null  
 #               if [ -f _testprog.o ]; then  
 #                       PPC=$PPC_TRY  
 #                       break  
 #               fi  
 #               rm -f _testprog.o  
 #           done  
 #         done  
 #       done  
 #  
 #       if [ z$PPC = z ]; then  
 #               echo "none"  
 #       else  
 #               echo $PPC"-as"  
 #       fi  
 #fi  
 #rm -f _testprog* _test.sh  
 #  
 ##echo "PPC_CC="$PPC"-gcc -g -O2 -fno-builtin" >> _Makefile.header  
 #echo "PPC_AS="$PPC"-as" >> _Makefile.header  
 #echo "PPC_LD="$PPC"-ld -e main" >> _Makefile.header  
 #echo "" >> _Makefile.header  
   
   
 ##  SPARC64 cross-compiler:  
 #  
 #SPARC=''  
 #if [ z$ENABLESPARC = zYES ]; then  
 #       printf "Checking for a GNU cross-compiler for 64-bit SPARC... "  
 #       echo 'int f(int x) { return x; }' > _testprog.c  
 #  
 #       for a in sparc64; do  
 #         for b in unknown; do  
 #           for c in elf elf64; do  
 #               SPARC_TRY=$a-$b-$c  
 #               printf '#!/bin/sh\n'$SPARC_TRY'-gcc _testprog.c -c' > _test.sh  
 #               printf ' -o _testprog.o\n' >> _test.sh  
 #               chmod 755 _test.sh  
 #               rm -f _testprog.o  
 #               ./_test.sh > /dev/null 2> /dev/null  
 #               if [ -f _testprog.o ]; then  
 #                       SPARC=$SPARC_TRY  
 #                       break  
 #               fi  
 #               rm -f _testprog.o  
 #           done  
 #         done  
 #       done  
 #  
 #       if [ z$SPARC = z ]; then  
 #               echo "none"  
 #       else  
 #               echo $SPARC"-gcc"  
 #       fi  
 #fi  
 #rm -f _testprog* _test.sh  
 #  
 #echo "SPARC_CC="$SPARC"-gcc -g -O2 -fno-builtin" >> _Makefile.header  
 #echo "SPARC_AS="$SPARC"-as" >> _Makefile.header  
 #echo "SPARC_LD="$SPARC"-ld -e main" >> _Makefile.header  
 #echo "" >> _Makefile.header  
   
   
1086  #  Create the Makefiles:  #  Create the Makefiles:
1087    D=". src src/include src/cpus src/debugger src/devices src/devices/fonts"
1088  for a in . src src/devices src/devices/fonts tests; do  D="$D src/machines src/promemul doc"
1089    for a in $D; do
1090          echo "creating $a/Makefile"          echo "creating $a/Makefile"
1091          touch $a/Makefile          touch $a/Makefile
1092          cat _Makefile.header > $a/Makefile          cat _Makefile.header > $a/Makefile

Legend:
Removed from v.10  
changed lines
  Added in v.30

  ViewVC Help
Powered by ViewVC 1.1.26