/[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

Contents of /trunk/configure

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6 - (show annotations)
Mon Oct 8 16:18:11 2007 UTC (13 years, 3 months ago) by dpavlin
File size: 34372 byte(s)
++ trunk/HISTORY	(local)
$Id: HISTORY,v 1.772 2005/06/04 12:02:16 debug Exp $
20050428	Disabling the "-fmove-all-movables" option in the configure
		script, because it causes the compile to fail on OpenBSD/sgi.
20050502	Minor updates.
20050503	Removing the WRT54G mode (it was bogus anyway), and adding a
		comment about Windows NT for MIPS in doc/experiments.html.
		Minor updates to the x86 instruction decoding.
20050504	Adding some more x86 instructions.
		Adding support for reading files from ISO9660 CDROMs (including
		gzipped files). It's an ugly hack, but it seems to work.
		Various other minor updates (dev_vga.c, pc_bios.c etc).
20050505	Some more x86-related updates.
		Beginning (what I hope will be) a major code cleanup phase.
		"bootris" (an x86 bootsector) runs :-)
20050506	Adding some more x86 instructions.
20050507	tmpnam => mkstemp.
		Working on a hack to allow VGA charcells to be shown even when
		not running with X11.
		Adding more x86 instructions.
20050508	x86 32-bit SIB addressing fix, and more instructions.
20050509	Adding more x86 instructions.
20050510	Minor documentation updates, and other updates (x86 stuff etc.)
20050511	More x86-related updates.
20050513	Various updates, mostly x86-related. (Trying to fix flag 
		calculation, factoring out the ugly shift/rotate code, and
		some other things.)
20050514	Adding support for loading some old i386 a.out executables.
		Finally beginning the cleanup of machine/PROM/bios dependant
		info.
		Some minor documentation updates.
		Trying to clean up ARCBIOS stuff a little.
20050515	Trying to make it possible to actually use more than one disk
		type per machine (floppy, ide, scsi).
		Trying to clean up the kbd vs PROM console stuff. (For PC and
		ARC emulation modes, mostly.)
		Beginning to add an 8259 interrupt controller, and connecting
		it to the x86 emulation.
20050516	The first x86 interrupts seem to work (keyboard stuff).
		Adding a 8253/8254 programmable interval timer skeleton.
		FreeDOS now reaches a command prompt and can be interacted
		with.
20050517	After some bugfixes, MS-DOS also (sometimes) reaches a
		command prompt now.
		Trying to fix the pckbc to work with MS-DOS' keyb.com, but no
		success yet.
20050518	Adding a simple 32-bit x86 MMU skeleton.
20050519	Some more work on the x86 stuff. (Beginning the work on paging,
		and various other fixes).
20050520	More updates. Working on dev_vga (4-bit graphics modes), adding
		40 columns support to the PC bios emulation.
		Trying to add support for resizing windows when switching
		between graphics modes.
20050521	Many more x86-related updates.
20050522	Correcting the initial stack pointer's sign-extension for
		ARCBIOS emulation (thanks to Alec Voropay for noticing the
		error).
		Continuing on the cleanup (ARCBIOS etc).
		dev_vga updates.
20050523	More x86 updates: trying to add some support for protected mode
		interrupts (via gate descriptors) and many other fixes.
		More ARCBIOS cleanup.
		Adding a device flag which indicates that reads cause no
		side-effects. (Useful for the "dump" command in the debugger,
		and other things.)
		Adding support for directly starting up x86 ELFs, skipping the
		bootloader stage. (Most ELFs, however, are not suitable for
		this.)
20050524	Adding simple 32-bit x86 TSS task switching, but no privilege
		level support yet.
		More work on dev_vga. A small "Copper bars" demo works. :-)
		Adding support for Trap Flag (single-step exceptions), at least
		in real mode, and various other x86-related fixes.
20050525	Adding a new disk image prefix (gH;S;) which can be used to
		override the default nr of heads and sectors per track.
20050527	Various bug fixes, more work on the x86 mode (stack change on
		interrupts between different priv.levels), and some minor
		documentation updates.
20050528	Various fixes (x86 stuff).
20050529	More x86 fixes. An OpenBSD/i386 bootfloppy reaches userland
		and can be interacted with (although there are problems with
		key repetition). NetBSD/i386 triggers a serious CISC-related
		problem: instruction fetches across page boundaries, where
		the later part isn't actually part of the instruction.
20050530	Various minor updates. (Documentation updates, etc.)
20050531	Adding some experimental code (experiments/new_test_*) which
		could be useful for dynamic (but not binary) translation in
		the future.
20050602	Adding a dummy ARM skeleton.
		Fixing the pckbc key repetition problem (by adding release
		scancodes for all keypresses).
20050603	Minor updates for the next release.
20050604	Release testing. Minor updates.

==============  RELEASE 0.3.3  ==============

20050604	There'll probably be a 0.3.3.1 release soon, with some very
		very tiny updates.


1 #!/bin/sh
2 ###############################################################################
3 #
4 # Copyright (C) 2003-2005 Anders Gavare. All rights reserved.
5 #
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions are met:
8 #
9 # 1. Redistributions of source code must retain the above copyright
10 # notice, this list of conditions and the following disclaimer.
11 # 2. Redistributions in binary form must reproduce the above copyright
12 # notice, this list of conditions and the following disclaimer in the
13 # documentation and/or other materials provided with the distribution.
14 # 3. The name of the author may not be used to endorse or promote products
15 # derived from this software without specific prior written permission.
16 #
17 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 # SUCH DAMAGE.
28 #
29 #
30 # $Id: configure,v 1.132 2005/06/04 12:05:50 debug Exp $
31 #
32 # This is a minimal configure script, hardcoded for GXemul. This script
33 # figures out which compiler flags will work, and creates Makefiles in
34 # sub-directories. A config.h file is also created.
35 #
36 #
37 # ---> FOR NORMAL USE, JUST RUN ./configure WITHOUT OPTIONS!
38 #
39 #
40 # To compile the emulator with profiling (during development), use
41 # CFLAGS="-pg", run the emulator, and then run 'gprof gxemul' and study
42 # the results.
43 #
44 #
45 # The main things that are detected by this script:
46 #
47 # o) special hacks for some OSes
48 # o) which compiler to use (overridden by setting CC)
49 # o) which compiler flags to use (overridden by setting CFLAGS)
50 # o) X11 flags and libraries (TODO: should be possible to override)
51 # o) binary translation (on supported platforms)
52 # o) prefetch capability (TODO: this is assumed on Alpha, but not all
53 # Alphas have it...)
54 #
55 ###############################################################################
56
57 ENABLEALPHA=NO
58 ENABLEARM=NO
59 ENABLEHPPA=NO
60 ENABLEMIPS=YES
61 ENABLEPPC=YES
62 ENABLESPARC=NO
63 ENABLEURISC=YES
64 ENABLEX86=NO
65 STABLE=YES
66
67 if [ z"$*" != z ]; then
68 # Parse command line options:
69 for a in $*; do
70 if [ z$a = z--disable-x ]; then
71 NOX11=YES
72 else if [ z$a = z--always32 ]; then
73 ALWAYS32=YES
74 else if [ z$a = z--disable-bintrans ]; then
75 NOBINTRANS=YES
76 else if [ z$a = z--enable-bintrans ]; then
77 NOBINTRANS=NO
78 else if [ z$a = z--disable-mips16 ]; then
79 MIPS16=NO
80 else if [ z$a = z--enable-mips16 ]; then
81 MIPS16=YES
82 else if [ z$a = z--disable-alpha ]; then
83 ENABLEALPHA=NO
84 else if [ z$a = z--enable-alpha ]; then
85 ENABLEALPHA=YES
86 else if [ z$a = z--disable-arm ]; then
87 ENABLEARM=NO
88 else if [ z$a = z--enable-arm ]; then
89 ENABLEARM=YES
90 else if [ z$a = z--disable-hppa ]; then
91 ENABLEHPPA=NO
92 else if [ z$a = z--enable-hppa ]; then
93 ENABLEHPPA=YES
94 else if [ z$a = z--disable-mips ]; then
95 ENABLEMIPS=NO
96 else if [ z$a = z--enable-mips ]; then
97 ENABLEMIPS=YES
98 else if [ z$a = z--disable-ppc ]; then
99 ENABLEPPC=NO
100 else if [ z$a = z--enable-ppc ]; then
101 ENABLEPPC=YES
102 else if [ z$a = z--disable-sparc ]; then
103 ENABLESPARC=NO
104 else if [ z$a = z--enable-sparc ]; then
105 ENABLESPARC=YES
106 else if [ z$a = z--disable-urisc ]; then
107 ENABLEURISC=NO
108 else if [ z$a = z--enable-urisc ]; then
109 ENABLEURISC=YES
110 else if [ z$a = z--disable-x86 ]; then
111 ENABLEX86=NO
112 else if [ z$a = z--enable-x86 ]; then
113 ENABLEX86=YES
114 else if [ z$a = z--disable-delays ]; then
115 DELAYS=NO
116 else if [ z$a = z--enable-delays ]; then
117 DELAYS=YES
118 else if [ z$a = z--disable-caches ]; then
119 CACHES=NO
120 else if [ z$a = z--enable-caches ]; then
121 CACHES=YES
122 else if [ z$a = z--help ]; then
123 echo "usage: $0 [options]"
124 printf "\nDevelopment (debug) options:\n"
125 echo " --always32 enable" \
126 "ALWAYS_SIGNEXTEND_32 (for hunting down"
127 echo " 32/64-bit bugs)"
128 printf "\nGeneral options:\n"
129 echo " --disable-bintrans configure without" \
130 "bintrans, even if the host supports it"
131 printf " --enable-caches enable cache emulation"
132 printf " (BUGGY)\n"
133 echo " --enable-delays enable instruction" \
134 "latency/delay emulation"
135 echo " --disable-x don't include X11 support"
136 printf "\nCPU selection options:\n"
137 if [ z$STABLE = zNO ]; then
138 printf " --enable-alpha "
139 printf "enable Alpha CPU emulation"
140 printf " (NOT YET)\n"
141 printf " --enable-arm "
142 printf "enable ARM CPU emulation"
143 printf " (NOT YET)\n"
144 printf " --enable-hppa "
145 printf "enable HPPA CPU emulation"
146 printf " (NOT YET)\n"
147 fi
148 echo " --disable-mips disable MIPS CPU emulation"
149 echo " --disable-ppc disable PPC CPU emulation"
150 if [ z$STABLE = zNO ]; then
151 printf " --enable-sparc "
152 printf "enable SPARC CPU emulation"
153 printf " (NOT YET)\n"
154 fi
155 echo " --disable-urisc disable URISC CPU emulation"
156 if [ z$STABLE = zNO ]; then
157 printf " --enable-x86 "
158 printf "enable x86 CPU emulation"
159 printf " (NOT YET)\n"
160 fi
161 printf "\nMIPS-specific options:\n"
162 printf " --enable-mips16 enable MIPS16 instruction"
163 printf " support (NOT YET)\n\n"
164 exit
165 else
166 echo "Invalid option: $a"
167 echo "Run $0 --help to get a list of" \
168 "available options."
169 exit
170 fi; fi; fi; fi; fi; fi; fi; fi; fi; fi; fi; fi; fi; fi; fi
171 fi; fi; fi; fi; fi; fi; fi; fi; fi; fi; fi; fi
172 done
173 fi
174
175
176 ###############################################################################
177 #
178 # Configure options:
179 #
180 # This creates a config.h file, which is then included from include/misc.h.
181 #
182 ###############################################################################
183
184 # Head of config.h:
185 printf "/*
186 * THIS FILE IS AUTOMATICALLY CREATED BY configure!
187 * DON'T EDIT THIS FILE MANUALLY, IT WILL BE OVERWRITTEN.
188 */
189 \n#ifndef CONFIG_H\n#define CONFIG_H\n\n" > config.h
190
191
192 # Figure out if VERSION should be defined.
193 X=`basename \`pwd\`|cut -d \- -f 2-`
194 if [ z"$X" = zgxemul ]; then
195 echo '# No VERSION defined.' >> _Makefile.header
196 else
197 printf "#define VERSION \"$X\"\n" >> config.h
198 fi
199
200
201 ZZ=`echo compiled on \`uname\`/\`uname -m\`, \`date\``
202 printf "#define COMPILE_DATE \"$ZZ\"\n" >> config.h
203
204
205
206 # Support for various CPU types:
207 if [ z$MIPS16 = zYES ]; then
208 printf 'Enabling MIPS16 support. '
209 printf 'NOTE: MIPS16 support is not really working yet.\n'
210 printf "#define ENABLE_MIPS16\n" >> config.h
211 fi
212 if [ z$ENABLEALPHA = zYES ]; then
213 printf "#define ENABLE_ALPHA\n" >> config.h
214 if [ z$STABLE = zNO ]; then
215 printf "\nWARNING: Alpha emulation enabled, but it isn't really"
216 printf " implemented yet.\n\n"
217 else
218 printf "Not in the stable release.\n"
219 exit
220 fi
221 fi
222 if [ z$ENABLEARM = zYES ]; then
223 printf "#define ENABLE_ARM\n" >> config.h
224 if [ z$STABLE = zNO ]; then
225 printf "\nWARNING: ARM emulation enabled, but it isn't really"
226 printf " implemented yet.\n\n"
227 else
228 printf "Not in the stable release.\n"
229 exit
230 fi
231 fi
232 if [ z$ENABLEHPPA = zYES ]; then
233 printf "#define ENABLE_HPPA\n" >> config.h
234 if [ z$STABLE = zNO ]; then
235 printf "\nWARNING: HPPA emulation enabled, but it isn't really"
236 printf " implemented yet.\n\n"
237 else
238 printf "Not in the stable release.\n"
239 exit
240 fi
241 fi
242 if [ z$ENABLEMIPS = zYES ]; then
243 printf "#define ENABLE_MIPS\n" >> config.h
244 fi
245 if [ z$ENABLEPPC = zYES ]; then
246 printf "#define ENABLE_PPC\n" >> config.h
247 fi
248 if [ z$ENABLESPARC = zYES ]; then
249 printf "#define ENABLE_SPARC\n" >> config.h
250 if [ z$STABLE = zNO ]; then
251 printf "\nWARNING: SPARC emulation enabled, but it isn't really"
252 printf " implemented yet.\n\n"
253 else
254 printf "Not in the stable release.\n"
255 exit
256 fi
257 fi
258 if [ z$ENABLEURISC = zYES ]; then
259 printf "#define ENABLE_URISC\n" >> config.h
260 fi
261 if [ z$ENABLEX86 = zYES ]; then
262 printf "#define ENABLE_X86\n" >> config.h
263 if [ z$STABLE = zNO ]; then
264 printf "\nWARNING: X86 emulation enabled, but it isn't really"
265 printf " working yet.\n\n"
266 else
267 printf "Not in the stable release.\n"
268 exit
269 fi
270 fi
271
272
273 # Instruction delay/latency emulation:
274 if [ z$DELAYS = zYES ]; then
275 echo 'Enabling Instruction delay/latency emulation.'
276 printf "#define ENABLE_INSTRUCTION_DELAYS\n" >> config.h
277 fi
278
279
280 # Instruction delay/latency emulation:
281 if [ z$ALWAYS32 = zYES ]; then
282 echo 'Enabling ALWAYS_SIGNEXTEND_32. (NOTE:' \
283 'This slows down everything.)'
284 printf "#define ALWAYS_SIGNEXTEND_32\n" >> config.h
285 fi
286
287
288 # Cache emulation:
289 if [ z$CACHES = zYES ]; then
290 echo 'Enabling Cache emulation. (EXPERIMENTAL)'
291 printf "#define ENABLE_CACHE_EMULATION\n" >> config.h
292
293 if [ z$DELAYS != zYES ]; then
294 printf 'WARNING: Cache emulation without instruction '
295 printf 'delay/latency emulation\n'
296 printf ' (--delays) will not produce correct '
297 printf 'cache miss penalties and such.\n'
298 fi
299
300 printf "\nNOTE: Cache emulation enabled, but right now it triggers "
301 printf "weird bugs in the\n emulator. You have been warned.\n\n"
302 fi
303
304
305 ###############################################################################
306 #
307 # Special hacks for some host OSes:
308 #
309 ###############################################################################
310
311 if [ z"`uname|cut -c 1-6`" = zCYGWIN ]; then
312 CYGWIN=YES
313
314 if [ z"$CC" = z ]; then
315 # Assume gcc on Cygwin (Windows) systems.
316 CC=gcc
317 fi
318 fi
319
320 if [ z"`uname`" = zHP-UX ]; then
321 HPUX=YES
322
323 if [ z$CC = z ]; then
324 if [ -f /usr/local/pa64/bin/gcc ]; then
325 CC=/usr/local/pa64/bin/gcc
326 fi
327 fi
328 fi
329
330 if [ z"`uname`" = zOSF1 ]; then
331 OSF1=YES
332 fi
333
334
335 ###############################################################################
336 #
337 # Create the Makefile header:
338 #
339 ###############################################################################
340
341 rm -f _Makefile.header
342
343 printf "#
344 # DO NOT EDIT THIS FILE! It is automagically created by
345 # the configure script, based on Makefile.skel.
346 #\n\n" >> _Makefile.header
347
348
349 echo 'int main(int argc, char *argv[]) { return 0; }' > _testprog.c
350
351
352 # Try to detect which C compiler to use, if CC is not set:
353 printf "checking which C compiler to use... "
354
355 if [ z"$CC" = z ]; then
356 CC=cc
357
358 # Try gcc first:
359 printf "#!/bin/sh\ngcc _testprog.c -o _testprog >" > _test.sh
360 printf " /dev/null 2> /dev/null\n" >> _test.sh
361 chmod 755 _test.sh
362 ./_test.sh > /dev/null 2> /dev/null
363 if [ -x _testprog ]; then
364 CC=gcc
365 fi
366 rm -f _testprog
367
368 # If both gcc and cc exist, then cc might be a vendor specific
369 # compiler which produces faster code than gcc (eg on Solaris):
370 printf "#!/bin/sh\ncc _testprog.c -o _testprog >" > _test.sh
371 printf " /dev/null 2> /dev/null\n" >> _test.sh
372 chmod 755 _test.sh
373 ./_test.sh > /dev/null 2> /dev/null
374 if [ -x _testprog ]; then
375 CC=cc
376 fi
377 rm -f _testprog
378
379 # Try ccc (FreeBSD/Alpha):
380 printf "#!/bin/sh\nccc _testprog.c -o _testprog >" > _test.sh
381 printf " /dev/null 2> /dev/null\n" >> _test.sh
382 chmod 755 _test.sh
383 ./_test.sh > /dev/null 2> /dev/null
384 if [ -x _testprog ]; then
385 CC="ccc"
386 fi
387 rm -f _testprog
388
389 rm -f _test.sh
390 fi
391
392
393 rm -f _testprog
394 printf "$CC $CFLAGS"
395
396
397 CCTYPE="generic"
398
399 if $CC $CFLAGS -V 2> /dev/null | grep ompaq 1> /dev/null 2> /dev/null; then
400 COMPAQCC=YES
401 CCTYPE="Compaq CC"
402 fi
403
404 if $CC $CFLAGS -V 2>&1 | grep Sun 1> /dev/null 2> /dev/null; then
405 SUNCC=YES
406 CCTYPE="Solaris CC"
407 fi
408
409 if $CC $CFLAGS -v 2>&1 | grep gcc 1> /dev/null 2> /dev/null; then
410 GCCCC=YES
411 CCTYPE="GNU CC"
412 fi
413
414 if [ z$CYGWIN = zYES ]; then
415 CCTYPE="$CCTYPE (Cygwin)"
416 fi
417
418 echo " ($CCTYPE)"
419
420
421 if [ z$NOX11 = z ]; then
422 printf "checking for X11 headers and libs\n"
423
424 # Try to compile a small X11 test program:
425 printf "#include <X11/Xlib.h>
426 #include <stdio.h>
427 Display *dis;
428 void f(void) {
429 dis = XOpenDisplay(NULL);
430 }
431 int main(int argc, char *argv[])
432 { return 0; }
433 " > _test_x11.c
434
435 XOK=0
436
437 XINCLUDE=-I/usr/X11R6/include
438 $CC $CFLAGS _test_x11.c -c -o _test_x11.o $XINCLUDE 2> /dev/null
439
440 XLIB="-L/usr/X11R6/lib -lX11"
441 $CC $CFLAGS _test_x11.o -o _test_x11 $XLIB 2> /dev/null
442
443 if [ -x _test_x11 ]; then
444 XOK=1
445 fi
446
447 rm -f _test_x11 _test_x11.o
448
449 if [ z$XOK = z0 ]; then
450 XINCLUDE=""
451 $CC $CFLAGS _test_x11.c -c -o _test_x11.o \
452 $XINCLUDE 2> /dev/null
453
454 # -lsocket for Solaris
455 XLIB="-lX11 -lsocket"
456 $CC $CFLAGS _test_x11.o -o _test_x11 $XLIB 2> /dev/null
457
458 if [ -x _test_x11 ]; then
459 XOK=1
460 fi
461 rm -f _test_x11 _test_x11.o
462 fi
463
464 if [ z`uname` = zNetBSD ]; then
465 echo "Using NetBSD hack for X11 libs..."
466 XLIB="$XLIB -Wl,-rpath,/usr/X11R6/lib"
467 fi
468
469 if [ z`uname` = zOpenBSD ]; then
470 if [ z`uname -m` = zarc ]; then
471 echo "Using old OpenBSD/arc hack for X11 libs..."
472 XLIB="$XLIB -Wl,-rpath,/usr/X11R6/lib"
473 fi
474 fi
475
476 if [ z$XOK = z0 ]; then
477 echo "Failed to compile X11 test program." \
478 "Configuring without X11."
479 else
480 printf "X11 headers: $XINCLUDE\n"
481 printf "X11 libraries: $XLIB\n"
482 echo "XINCLUDE=$XINCLUDE" >> _Makefile.header
483 echo "XLIB=$XLIB" >> _Makefile.header
484 printf "#define WITH_X11\n" >> config.h
485 fi
486
487 rm -f _test_x11.c
488 fi
489
490
491 if [ z$HPUX = zYES ]; then
492 CFLAGS="-D_XOPEN_SOURCE_EXTENDED $CFLAGS"
493 printf "#define HPUX\n" >> config.h
494 fi
495
496
497 if [ z$OSF1 = zYES ]; then
498 CFLAGS="-D_XOPEN_SOURCE=500 -D_OSF_SOURCE -D_POSIX_PII_SOCKET $CFLAGS"
499 fi
500
501
502 # Check for weird 'alpha' define.
503 printf "checking for weird 'alpha' define... "
504 printf "#include <stdio.h>\nint main(int argc, char *argv[]){
505 #ifdef alpha
506 printf(\"1\");
507 #undef alpha
508 #ifdef alpha
509 printf(\"2\");
510 #endif
511 #endif
512 printf(\"\\\n\");return 0;}\n" > _testm.c
513 $CC $CFLAGS _testm.c -o _testm 2> /dev/null
514 if [ ! -x _testm ]; then
515 printf "\nWARNING! COULD NOT COMPILE alpha define TEST"
516 printf " PROGRAM AT ALL!\n"
517 else
518 if [ z`./_testm` = z1 ]; then
519 printf "yes, workaround applied\n"
520 echo "#undef alpha" >> config.h
521 else
522 if [ z`./_testm` = z12 ]; then
523 printf "yes, but workaround not possible\n"
524 exit
525 else
526 printf "no\n"
527 fi
528 fi
529 fi
530 rm -f _testm*
531
532
533 # Check for weird 'hppa' define.
534 printf "checking for weird 'hppa' define... "
535 printf "#include <stdio.h>\nint main(int argc, char *argv[]){
536 #ifdef hppa
537 printf(\"1\");
538 #undef hppa
539 #ifdef hppa
540 printf(\"2\");
541 #endif
542 #endif
543 printf(\"\\\n\");return 0;}\n" > _testm.c
544 $CC $CFLAGS _testm.c -o _testm 2> /dev/null
545 if [ ! -x _testm ]; then
546 printf "\nWARNING! COULD NOT COMPILE hppa define TEST"
547 printf " PROGRAM AT ALL!\n"
548 else
549 if [ z`./_testm` = z1 ]; then
550 printf "yes, workaround applied\n"
551 echo "#undef hppa" >> config.h
552 else
553 if [ z`./_testm` = z12 ]; then
554 printf "yes, but workaround not possible\n"
555 exit
556 else
557 printf "no\n"
558 fi
559 fi
560 fi
561 rm -f _testm*
562
563
564 # Some OSes on MIPS seems to define 'mips' to 1. (eg OpenBSD/arc)
565 printf "checking for weird 'mips' define... "
566 printf "#include <stdio.h>\nint main(int argc, char *argv[]){
567 #ifdef mips
568 printf(\"1\");
569 #undef mips
570 #ifdef mips
571 printf(\"2\");
572 #endif
573 #endif
574 printf(\"\\\n\");return 0;}\n" > _testm.c
575 $CC $CFLAGS _testm.c -o _testm 2> /dev/null
576 if [ ! -x _testm ]; then
577 printf "\nWARNING! COULD NOT COMPILE mips define TEST"
578 printf " PROGRAM AT ALL!\n"
579 else
580 if [ z`./_testm` = z1 ]; then
581 printf "yes, workaround applied\n"
582 echo "#undef mips" >> config.h
583 else
584 if [ z`./_testm` = z12 ]; then
585 printf "yes, but workaround not possible\n"
586 exit
587 else
588 printf "no\n"
589 fi
590 fi
591 fi
592 rm -f _testm*
593
594
595 # Similar to the mips define check above, although I don't know if
596 # any OS actually defined ppc like this.
597 printf "checking for weird 'ppc' define... "
598 printf "#include <stdio.h>\nint main(int argc, char *argv[]){
599 #ifdef ppc
600 printf(\"1\");
601 #undef ppc
602 #ifdef ppc
603 printf(\"2\");
604 #endif
605 #endif
606 printf(\"\\\n\");return 0;}\n" > _testm.c
607 $CC $CFLAGS _testm.c -o _testm 2> /dev/null
608 if [ ! -x _testm ]; then
609 printf "\nWARNING! COULD NOT COMPILE ppc define TEST"
610 printf " PROGRAM AT ALL!\n"
611 else
612 if [ z`./_testm` = z1 ]; then
613 printf "yes, workaround applied\n"
614 echo "#undef ppc" >> config.h
615 else
616 if [ z`./_testm` = z12 ]; then
617 printf "yes, but workaround not possible\n"
618 exit
619 else
620 printf "no\n"
621 fi
622 fi
623 fi
624 rm -f _testm*
625
626
627 # Similar to the mips define check above, although I don't know if
628 # any OS actually defined sparc like this.
629 printf "checking for weird 'sparc' define... "
630 printf "#include <stdio.h>\nint main(int argc, char *argv[]){
631 #ifdef sparc
632 printf(\"1\");
633 #undef sparc
634 #ifdef sparc
635 printf(\"2\");
636 #endif
637 #endif
638 printf(\"\\\n\");return 0;}\n" > _testm.c
639 $CC $CFLAGS _testm.c -o _testm 2> /dev/null
640 if [ ! -x _testm ]; then
641 printf "\nWARNING! COULD NOT COMPILE sparc define TEST "
642 printf "PROGRAM AT ALL!\n"
643 else
644 if [ z`./_testm` = z1 ]; then
645 printf "yes, workaround applied\n"
646 echo "#undef sparc" >> config.h
647 else
648 if [ z`./_testm` = z12 ]; then
649 printf "yes, but workaround not possible\n"
650 exit
651 else
652 printf "no\n"
653 fi
654 fi
655 fi
656 rm -f _testm*
657
658
659 # CWARNINGS:
660 printf "checking whether -Wall can be used... "
661 $CC $CFLAGS _testprog.c -o _testprog -Wall 2> /dev/null
662 if [ -x _testprog ]; then
663 printf "yes\n"
664 CWARNINGS="-Wall $CWARNINGS"
665
666 # Compaq's compiler always seems to warn about the long long type,
667 # and unusedtop suppresses warnings about include files being
668 # included more than once.
669 if [ z"$COMPAQCC" = zYES ]; then
670 CWARNINGS="$CWARNINGS -msg_disable longlongtype,unusedtop"
671 fi
672 else
673 printf "no\n"
674 fi
675 rm -f _testprog
676
677
678 if [ z"$COMPAQCC" = zYES ]; then
679 # -O4 is possible, but is -O3 better?
680 CFLAGS="-O4 $CFLAGS"
681 else
682 if [ z"`uname`" = zSunOS ]; then
683 # "cc", the system's default compiler:
684 if [ z"$SUNCC" = zYES ]; then
685 CFLAGS="-xO5 -xdepend $CFLAGS"
686 fi
687 printf "#define SOLARIS\n" >> config.h
688 OTHERLIBS="-lsocket $OTHERLIBS"
689 else
690 # gcc or something else:
691 $CC $CFLAGS _testprog.c -o _testprog -O 2> /dev/null
692 if [ -x _testprog ]; then
693 rm -f _testprog
694 $CC $CFLAGS _testprog.c -o _testprog -O2 2> /dev/null
695 if [ -x _testprog ]; then
696 CFLAGS="-O2 $CFLAGS"
697 else
698 CFLAGS="-O $CFLAGS"
699 fi
700 fi
701 fi
702 fi
703 rm -f _testprog
704
705
706 # -fschedule-insns causes bugs on i386 with gcc,
707 # but works OK on my alpha with ccc (compaq's cc).
708 if [ z"$COMPAQCC" = zYES ]; then
709 printf "checking whether -fschedule-insns2 can be used... "
710 $CC $CFLAGS _testprog.c -o _testprog -fschedule-insns2 2> /dev/null
711 if [ -x _testprog ]; then
712 CFLAGS="-fschedule-insns2 $CFLAGS"
713 printf "yes\n"
714 else
715 printf "no\n"
716 fi
717 rm -f _testprog
718
719 printf "checking whether -fschedule-insns can be used... "
720 $CC $CFLAGS _testprog.c -o _testprog -fschedule-insns 2> /dev/null
721 if [ -x _testprog ]; then
722 CFLAGS="-fschedule-insns $CFLAGS"
723 printf "yes\n"
724 else
725 printf "no\n"
726 fi
727 rm -f _testprog
728
729 # # -intrinsics
730 # $CC $CFLAGS _testprog.c -o _testprog -intrinsics 2> /dev/null
731 # if [ -x _testprog ]; then
732 # CFLAGS="-intrinsics $CFLAGS"
733 # fi
734 # rm -f _testprog
735
736 # -fast
737 printf "checking whether -fast can be used... "
738 $CC $CFLAGS _testprog.c -o _testprog -fast 2> /dev/null
739 if [ -x _testprog ]; then
740 CFLAGS="-fast $CFLAGS"
741 printf "yes\n"
742 else
743 printf "no\n"
744 fi
745 rm -f _testprog
746 fi
747
748
749 # -fpeephole
750 printf "checking whether -fpeephole can be used... "
751 $CC $CFLAGS -fpeephole _testprog.c -o _testprog > _testprog.stdout 2>&1
752 cat _testprog.stdout >> _testprog.error
753 if grep peephole _testprog.error > /dev/null 2>&1; then
754 printf "no\n"
755 else
756 if [ -x _testprog ]; then
757 CFLAGS="-fpeephole $CFLAGS"
758 printf "yes\n"
759 else
760 printf "no\n"
761 fi
762 fi
763 rm -f _testprog _testprog.error _testprog.stdout
764
765
766 # -fomit-frame-pointer
767 printf "checking whether -fomit-frame-pointer can be used... "
768 $CC $CFLAGS -fomit-frame-pointer _testprog.c -o \
769 _testprog 1> _testprog.stdout 2>&1
770 cat _testprog.stdout >> _testprog.error
771 if grep frame _testprog.error > /dev/null 2>&1; then
772 printf "no\n"
773 else
774 if [ -x _testprog ]; then
775 CFLAGS="-fomit-frame-pointer $CFLAGS"
776 printf "yes\n"
777 else
778 printf "no\n"
779 fi
780 fi
781 rm -f _testprog _testprog.error _testprog.stdout
782
783
784 # -lrt for nanosleep?
785 printf "checking whether -lrt is required for nanosleep... "
786 printf "#include <time.h>\n#include <stdio.h>
787 int main(int argc, char *argv[]){nanosleep(NULL,NULL);return 0;}\n" > _testns.c
788 $CC $CFLAGS _testns.c -o _testns 2> /dev/null
789 if [ ! -x _testns ]; then
790 $CC $CFLAGS -lrt _testns.c -o _testns 2> /dev/null
791 if [ ! -x _testns ]; then
792 printf "WARNING! COULD NOT COMPILE WITH nanosleep AT ALL!\n"
793 else
794 # -lrt for nanosleep
795 OTHERLIBS="-lrt $OTHERLIBS"
796 printf "yes\n"
797 fi
798 else
799 printf "no\n"
800 fi
801 rm -f _testns.c _testns
802
803
804 # -lresolv for inet_pton?
805 printf "checking whether -lresolv is required for inet_pton... "
806 printf "int inet_pton(void); int main(int argc, " > _testr.c
807 printf "char *argv[]) { return inet_pton(); }\n" >> _testr.c
808 $CC $CFLAGS _testr.c -o _testr 2> /dev/null
809 if [ ! -x _testr ]; then
810 $CC $CFLAGS _testr.c -lresolv -o _testr 2> /dev/null
811 if [ ! -x _testr ]; then
812 $CC $CFLAGS _testr.c -lresolv -lnsl -o _testr 2> /dev/null
813 if [ ! -x _testr ]; then
814 printf "no, using inet_aton\n"
815 else
816 # -lresolv -lnsl for inet_pton
817 OTHERLIBS="-lresolv -lnsl $OTHERLIBS"
818 printf "yes (and -lnsl)\n"
819 printf "#define HAVE_INET_PTON\n" >> config.h
820 fi
821 else
822 # -lresolv for inet_pton
823 OTHERLIBS="-lresolv $OTHERLIBS"
824 printf "yes\n"
825 printf "#define HAVE_INET_PTON\n" >> config.h
826 fi
827 else
828 printf "no\n"
829 printf "#define HAVE_INET_PTON\n" >> config.h
830 fi
831 rm -f _testr.[co] _testr
832
833
834 # -lm?
835 printf "checking for math libs..."
836 printf "#include <math.h>\nint main(int argc, char *argv[]) { " > _testr.c
837 printf "double x = sqrt((double)argc); return (int)x; }\n" >> _testr.c
838 $CC $CFLAGS _testr.c -o _testr 2> /dev/null
839 if [ ! -x _testr ]; then
840 $CC $CFLAGS _testr.c -lm -o _testr 2> /dev/null
841 if [ ! -x _testr ]; then
842 $CC $CFLAGS _testr.c -lm -lcpml -o _testr 2> /dev/null
843 if [ ! -x _testr ]; then
844 printf "\nWARNING! Could not compile math test "
845 printf "at all!\nContinuing anyway.\n\n"
846 else
847 # -lm AND -lcpml
848 OTHERLIBS="-lm -lcpml $OTHERLIBS"
849 printf " -lm -lcpml\n"
850 fi
851 else
852 # Normal -lm
853 OTHERLIBS="-lm $OTHERLIBS"
854 printf " -lm\n"
855 fi
856 else
857 printf " none needed\n"
858 fi
859 rm -f _testr.[co] _testr
860
861
862 # strtoull missing?
863 printf "checking for strtoull... "
864 printf "#include <stdlib.h>
865 #include <limits.h>
866 #include <stdio.h>
867 int main(int argc, char *argv[]) {
868 long long x = strtoull(argv[1], NULL, 0); return 0;}\n" > _tests.c
869 $CC $CFLAGS _tests.c -o _tests 2> /dev/null
870 if [ ! -x _tests ]; then
871 printf "missing, using mystrtoull\n"
872 printf "#define strtoull mystrtoull\n" >> config.h
873 else
874 printf "found\n"
875 fi
876 rm -f _tests.[co] _tests
877
878
879 # mkstemp missing?
880 printf "checking for mkstemp... "
881 printf "#include <unistd.h>
882 int main(int argc, char *argv[]) { int x; char *y = \"abc\";
883 x = mkstemp(y); return 0;}\n" > _tests.c
884 $CC $CFLAGS _tests.c -o _tests 2> /dev/null
885 if [ ! -x _tests ]; then
886 printf "missing, using workaround\n"
887 printf "#define mkstemp mymkstemp\n" >> config.h
888 else
889 printf "found\n"
890 fi
891 rm -f _tests.[co] _tests
892
893
894 # fseeko missing?
895 printf "checking for fseeko... "
896 printf "#include <stdlib.h>
897 #include <limits.h>
898 #include <stdio.h>
899 #include <sys/types.h>
900 int main(int argc, char *argv[]) { fseeko(NULL, 0, 0); return 0;}\n" > _tests.c
901 $CC $CFLAGS _tests.c -o _tests 2> /dev/null
902 if [ ! -x _tests ]; then
903 printf "missing\n"
904 printf "WARNING! fseeko missing from libc. Using a hack, "
905 printf "which probably doesn't work.\n"
906 printf "#define HACK_FSEEKO\n" >> config.h
907 else
908 printf "found\n"
909 fi
910 rm -f _tests.[co] _tests
911
912
913 # socklen_t missing?
914 # (for example really old OpenBSD/arc 2.3, inside the emulator)
915 printf "checking for socklen_t... "
916 printf "#include <stdlib.h>
917 #include <stdio.h>
918 #include <sys/types.h>
919 #include <sys/socket.h>
920 int main(int argc, char *argv[]) { socklen_t x; return 0;}\n" > _tests.c
921 $CC $CFLAGS _tests.c -o _tests 2> /dev/null
922 if [ ! -x _tests ]; then
923 printf "no, using int\n"
924 CFLAGS="$CFLAGS -Dsocklen_t=int"
925 else
926 printf "socklen_t\n"
927 fi
928 rm -f _tests.[co] _tests
929
930
931 # MAP_ANON missing? (On some HP-UX systems? Use MAP_ANONYMOUS instead.)
932 printf "checking for MAP_ANON... "
933 rm -f _tests
934 printf "#include <stdio.h>
935 #include <sys/types.h>
936 #include <sys/mman.h>
937 int main(int argc, char *argv[]) { int x = MAP_ANON; return 0;}\n" > _tests.c
938 $CC $CFLAGS _tests.c -o _tests 2> /dev/null
939 if [ ! -x _tests ]; then
940 printf "#include <stdio.h>
941 #include <sys/types.h>
942 #include <sys/mman.h>
943 int main(int argc, char *argv[])
944 { int x = MAP_ANONYMOUS; return 0;}\n" > _tests.c
945 $CC $CFLAGS _tests.c -o _tests 2> /dev/null
946 if [ ! -x _tests ]; then
947 printf "no\n\n"
948 printf "WARNING! Neither MAP_ANON nor MAP_ANONYMOUS work on "
949 printf "this system.\nPlease try to compile anyway, and report"
950 printf " to me whether it builds/runs or not.\n\n"
951 printf "#define MAP_ANON 0\n" >> config.h
952 printf "#define NO_MAP_ANON\n" >> config.h
953 else
954 printf "using MAP_ANONYMOUS\n"
955 printf "#define MAP_ANON MAP_ANONYMOUS\n" >> config.h
956 fi
957 else
958 printf "yes\n"
959 fi
960 rm -f _tests.[co] _tests
961
962
963 # Check for 64-bit off_t:
964 printf "checking for 64-bit off_t... "
965 printf "#include <stdio.h>\n#include <inttypes.h>\n#include <sys/types.h>\n
966 int main(int argc, char *argv[]){printf(\"%%i\\\n\",
967 (int)sizeof(off_t));return 0;}\n" > _testoff.c
968 $CC $CFLAGS _testoff.c -o _testoff 2> /dev/null
969 if [ ! -x _testoff ]; then
970 printf "\nWARNING! COULD NOT COMPILE off_t TEST PROGRAM AT ALL!\n"
971 else
972 if [ z`./_testoff` = z8 ]; then
973 printf "yes\n"
974 else
975 $CC $CFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \
976 _testoff.c -o _testoff 2> /dev/null
977 if [ ! -x _testoff ]; then
978 printf "\nWARNING! COULD NOT COMPILE off_t TEST "
979 printf "PROGRAM!\n"
980 else
981 if [ z`./_testoff` = z8 ]; then
982 CFLAGS="-D_FILE_OFFSET_BITS=64 $CFLAGS"
983 CFLAGS="-D_LARGEFILE_SOURCE $CFLAGS"
984 printf "using -D_FILE_OFFSET_BITS=64"
985 printf " -D_LARGEFILE_SOURCE\n"
986 else
987 printf "NO\n"
988 printf "Warning! No 64-bit off_t. Continuing "
989 printf "anyway.\n"
990 fi
991 fi
992 fi
993 fi
994 rm -f _testoff.c _testoff
995
996
997 # Check for u_int8_t etc:
998 printf "checking for u_int8_t... "
999 printf "#include <stdio.h>\n#include <inttypes.h>\n#include <sys/types.h>\n
1000 int main(int argc, char *argv[]){printf(\"%%i\\\n\",
1001 (int)sizeof(u_int8_t));return 0;}\n" > _testuint.c
1002 $CC $CFLAGS _testuint.c -o _testuint 2> /dev/null
1003 if [ ! -x _testuint ]; then
1004 rm -f _testuint*
1005 printf "#include <stdio.h>\n#include <inttypes.h>
1006 \n#include <sys/types.h>\nint main(int argc, char *argv[])
1007 {printf(\"%%i\\\n\", (int)sizeof(uint8_t));return 0;}\n" > _testuint.c
1008 $CC $CFLAGS _testuint.c -o _testuint 2> /dev/null
1009 if [ ! -x _testuint ]; then
1010 printf "no\n\nERROR: No u_int8_t or uint8_t. Aborting\n"
1011 # TODO: Automagically detect using various combinations
1012 # of char, int, short, long etc.
1013 exit
1014 fi
1015
1016 printf "typedef uint8_t u_int8_t;\n" >> config.h
1017 printf "typedef uint16_t u_int16_t;\n" >> config.h
1018 printf "typedef uint32_t u_int32_t;\n" >> config.h
1019 printf "typedef uint64_t u_int64_t;\n" >> config.h
1020 printf "uint8_t\n"
1021 else
1022 printf "yes\n"
1023 fi
1024 rm -f _testuint.c _testuint
1025
1026
1027 ###############################################################################
1028 #
1029 # Dynamic binary translation (BINTRANS):
1030 #
1031 ###############################################################################
1032
1033 printf "checking for bintrans backend... "
1034
1035 BINTRANS=NO
1036
1037 if [ z$ENABLEMIPS = zNO ]; then
1038 printf "NO!\nTEMPORARY HACK/PROBLEM: Disabling bintrans for now,\n"
1039 printf "until things have stabilized.\n"
1040 NOBINTRANS=YES
1041 fi
1042
1043 if [ z$NOBINTRANS = zYES ]; then
1044 printf "disabled\n"
1045 else
1046 # Alpha:
1047 if [ z"`uname -m`" = zalpha ]; then
1048 printf "#define ALPHA\n" >> config.h
1049 printf "#define BINTRANS\n" >> config.h
1050 printf "Alpha\n"
1051 BINTRANS=YES
1052 fi
1053
1054 # x86: (all machines ending in "86" are treated as i386)
1055 if [ z"`uname -m|rev|cut -c1-2`" = z68 ]; then
1056 printf "#define I386\n" >> config.h
1057 printf "#define BINTRANS\n" >> config.h
1058 printf "i386\n"
1059 BINTRANS=YES
1060 fi
1061
1062 # MIPS not yet
1063 # # MIPS:
1064 # if [ z"`uname -m`" = zmips ]; then
1065 # printf "#define MIPS\n" >> config.h
1066 # printf "#define BINTRANS\n" >> config.h
1067 # printf "MIPS\n"
1068 # BINTRANS=YES
1069 # fi
1070
1071 # # UltraSPARC:
1072 # if [ z"`uname -m`" = zsun4u ]; then
1073 # printf "#define SPARCV9\n" >> config.h
1074 # printf "#define BINTRANS\n" >> config.h
1075 # printf "SPARC V9\n"
1076 # BINTRANS=YES
1077 # else
1078 # if [ z"`uname -m`" = zsparc64 ]; then
1079 # printf "#define SPARCV9\n" >> config.h
1080 # printf "#define BINTRANS\n" >> config.h
1081 # printf "SPARC V9\n"
1082 # BINTRANS=YES
1083 # fi
1084 # fi
1085
1086 if [ z$BINTRANS = zNO ]; then
1087 printf "not supported yet on this arch\n"
1088 fi
1089 fi
1090
1091
1092 ###############################################################################
1093
1094 # Prefetch support?
1095 printf "checking for asm prefetch support... "
1096 if [ z"`uname -m`" = zalpha ]; then
1097 rm -f _alpha_asm_test.c _alpha_asm_test
1098 printf 'int main(int argc, char *argv[])
1099 { int x; int *y = &x; asm ("ldl $31,0(%%0)" : : "g" (y));
1100 return 0; }\n' > _alpha_asm_test.c
1101 $CC $CFLAGS -O2 _alpha_asm_test.c -o _alpha_asm_test \
1102 > /dev/null 2> /dev/null
1103 if [ -x _alpha_asm_test ]; then
1104 # printf "#define HAVE_PREFETCH\n" >> config.h
1105 printf "#define PREFETCH(x) asm(\"ldl" >> config.h
1106 printf " \$31,0(%%0)\" : : \"g\" (x))\n" >> config.h
1107 echo "yes"
1108 PREFSUP=YES
1109 fi
1110 rm -f _alpha_asm_test.c _alpha_asm_test
1111 fi
1112 if [ z$PREFSUP = z ]; then
1113 printf "#define PREFETCH(x) { }\n" >> config.h
1114 echo "no"
1115 fi
1116
1117
1118 ###############################################################################
1119
1120 INCLUDE=-Iinclude/
1121 DINCLUDE=-I../include/
1122
1123 echo C compiler flags: $CFLAGS $CWARNINGS
1124 echo Linker flags: $OTHERLIBS
1125 echo "CWARNINGS=$CWARNINGS" >> _Makefile.header
1126 echo "COPTIM=$CFLAGS" >> _Makefile.header
1127 echo "INCLUDE=$INCLUDE" >> _Makefile.header
1128 echo "DINCLUDE=$DINCLUDE" >> _Makefile.header
1129 echo "CC=$CC" >> _Makefile.header
1130 echo "OTHERLIBS=$OTHERLIBS" >> _Makefile.header
1131 echo "" >> _Makefile.header
1132
1133
1134 printf "Regression test setup: (not really needed to build gxemul)\n"
1135
1136
1137 ## 64-bit HPPA cross-assembler:
1138 #
1139 #HPPA=''
1140 #if [ z$ENABLEHPPA = zYES ]; then
1141 # printf "Checking for a GNU cross-assembler for 64-bit HPPA... "
1142 # echo 'nop' > _testprog.s
1143 #
1144 # for HPPA_TRY in hppa64-unknown-elf hppa64-elf; do
1145 # printf '#!/bin/sh\n'$HPPA_TRY'-as _testprog.s' > _test.sh
1146 # printf ' -o _testprog.o\n' >> _test.sh
1147 # chmod 755 _test.sh
1148 # rm -f _testprog.o
1149 # ./_test.sh > /dev/null 2> /dev/null
1150 # if [ -f _testprog.o ]; then
1151 # HPPA=$HPPA_TRY
1152 # break
1153 # fi
1154 # rm -f _testprog.o
1155 # done
1156 #
1157 # if [ z$HPPA = z ]; then
1158 # echo "none"
1159 # else
1160 # echo $HPPA"-gcc"
1161 # fi
1162 #fi
1163 #rm -f _testprog* _test.sh
1164 #
1165 ## TODO: are these ok? 64-bit mode!
1166 ##echo "HPPA_CC="$HPPA"-gcc -g -O2 -fno-builtin -fschedule-insns" \
1167 ## >> _Makefile.header
1168 #echo "HPPA_AS="$HPPA"-as " >> _Makefile.header
1169 #echo "HPPA_LD="$HPPA"-ld -Ttext 0xa800000000030000 -e main" \
1170 # "--oformat=elf64-bigmips" >> _Makefile.header
1171 #echo "" >> _Makefile.header
1172
1173
1174 # 64-bit MIPS cross-compiler:
1175
1176 MIPS=''
1177 if [ z$ENABLEMIPS = zYES ]; then
1178 printf "Checking for a GNU cross-compiler for 64-bit MIPS... "
1179 echo 'int f(int x) { return x; }' > _testprog.c
1180
1181 for MIPS_TRY in mips64-unknown-elf mips64-elf mips-unknown-elf64; do
1182 printf '#!/bin/sh\n'$MIPS_TRY'-gcc _testprog.c -c\n' > _test.sh
1183 chmod 755 _test.sh
1184 rm -f _testprog.o
1185 ./_test.sh > /dev/null 2> /dev/null
1186 if [ -f _testprog.o ]; then
1187 MIPS=$MIPS_TRY
1188 break
1189 fi
1190 rm -f _testprog.o
1191 done
1192
1193 if [ z$MIPS = z ]; then
1194 echo "none"
1195 else
1196 echo $MIPS"-gcc"
1197 fi
1198 fi
1199 rm -f _testprog* _test.sh
1200
1201 echo "MIPS_CC="$MIPS"-gcc -g -O2 -fno-builtin -fschedule-insns" \
1202 "-mips64 -mabi=64" >> _Makefile.header
1203 echo "MIPS_AS="$MIPS"-as -mabi=64 -mips64" >> _Makefile.header
1204 echo "MIPS_LD="$MIPS"-ld -Ttext 0xa800000000030000 -e main" \
1205 "--oformat=elf64-bigmips" >> _Makefile.header
1206 echo "" >> _Makefile.header
1207
1208
1209 ## PPC64 cross-assembler:
1210 #
1211 #PPC=''
1212 #if [ z$ENABLEPPC = zYES ]; then
1213 # printf "Checking for a GNU cross-assembler for 64-bit PPC... "
1214 # echo 'nop' > _testprog.s
1215 #
1216 # for a in ppc64 powerpc64; do
1217 # for b in unknown; do
1218 # for c in elf elf64 linux linux64 aix aix5; do
1219 # PPC_TRY=$a-$b-$c
1220 # printf '#!/bin/sh\n'$PPC_TRY'-as _testprog.s' > _test.sh
1221 # printf ' -o _testprog.o\n' >> _test.sh
1222 # chmod 755 _test.sh
1223 # rm -f _testprog.o
1224 # ./_test.sh > /dev/null 2> /dev/null
1225 # if [ -f _testprog.o ]; then
1226 # PPC=$PPC_TRY
1227 # break
1228 # fi
1229 # rm -f _testprog.o
1230 # done
1231 # done
1232 # done
1233 #
1234 # if [ z$PPC = z ]; then
1235 # echo "none"
1236 # else
1237 # echo $PPC"-as"
1238 # fi
1239 #fi
1240 #rm -f _testprog* _test.sh
1241 #
1242 ##echo "PPC_CC="$PPC"-gcc -g -O2 -fno-builtin" >> _Makefile.header
1243 #echo "PPC_AS="$PPC"-as" >> _Makefile.header
1244 #echo "PPC_LD="$PPC"-ld -e main" >> _Makefile.header
1245 #echo "" >> _Makefile.header
1246
1247
1248 ## SPARC64 cross-compiler:
1249 #
1250 #SPARC=''
1251 #if [ z$ENABLESPARC = zYES ]; then
1252 # printf "Checking for a GNU cross-compiler for 64-bit SPARC... "
1253 # echo 'int f(int x) { return x; }' > _testprog.c
1254 #
1255 # for a in sparc64; do
1256 # for b in unknown; do
1257 # for c in elf elf64; do
1258 # SPARC_TRY=$a-$b-$c
1259 # printf '#!/bin/sh\n'$SPARC_TRY'-gcc _testprog.c -c' > _test.sh
1260 # printf ' -o _testprog.o\n' >> _test.sh
1261 # chmod 755 _test.sh
1262 # rm -f _testprog.o
1263 # ./_test.sh > /dev/null 2> /dev/null
1264 # if [ -f _testprog.o ]; then
1265 # SPARC=$SPARC_TRY
1266 # break
1267 # fi
1268 # rm -f _testprog.o
1269 # done
1270 # done
1271 # done
1272 #
1273 # if [ z$SPARC = z ]; then
1274 # echo "none"
1275 # else
1276 # echo $SPARC"-gcc"
1277 # fi
1278 #fi
1279 #rm -f _testprog* _test.sh
1280 #
1281 #echo "SPARC_CC="$SPARC"-gcc -g -O2 -fno-builtin" >> _Makefile.header
1282 #echo "SPARC_AS="$SPARC"-as" >> _Makefile.header
1283 #echo "SPARC_LD="$SPARC"-ld -e main" >> _Makefile.header
1284 #echo "" >> _Makefile.header
1285
1286
1287 # Create the Makefiles:
1288
1289 for a in . src src/devices src/devices/fonts tests; do
1290 echo "creating $a/Makefile"
1291 touch $a/Makefile
1292 cat _Makefile.header > $a/Makefile
1293 cat $a/Makefile.skel >> $a/Makefile
1294 done
1295
1296 # Tail of config.h:
1297 printf "\n#endif /* CONFIG_H */\n" >> config.h
1298
1299 # Remove temporary Makefile header:
1300 rm -f _Makefile.header
1301
1302 echo Configured. You may now run make to build gxemul.

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.26