/[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 22 - (show annotations)
Mon Oct 8 16:19:37 2007 UTC (13 years, 1 month ago) by dpavlin
File size: 33849 byte(s)
++ trunk/HISTORY	(local)
$Id: HISTORY,v 1.1121 2006/02/18 21:03:08 debug Exp $
20051126	Cobalt and PReP now work with the 21143 NIC.
		Continuing on Alpha dyntrans things.
		Fixing some more left-shift-by-24 to unsigned.
20051127	Working on OpenFirmware emulation; major cleanup/redesign.
		Progress on MacPPC emulation: NetBSD detects two CPUs (when
		running with -n 2), framebuffer output (for text) works.
		Adding quick-hack Bandit PCI controller and "gc" interrupt
		controller for MacPPC.
20051128	Changing from a Bandit to a Uni-North controller for macppc.
		Continuing on OpenFirmware and MacPPC emulation in general
		(obio controller, and wdc attached to the obio seems to work).
20051129	More work on MacPPC emulation (adding a dummy ADB controller).
		Continuing the PCI bus cleanup (endianness and tag composition)
		and rewriting all PCI controllers' access functions.
20051130	Various minor PPC dyntrans optimizations.
		Manually inlining some parts of the framebuffer redraw routine.
		Slowly beginning the conversion of the old MIPS emulation into
		dyntrans (but this will take quite some time to get right).
		Generalizing quick_pc_to_pointers.
20051201	Documentation update (David Muse has made available a kernel
		which simplifies Debian/DECstation installation).
		Continuing on the ADB bus controller.
20051202	Beginning a rewrite of the Zilog serial controller (dev_zs).
20051203	Continuing on the zs rewrite (now called dev_z8530); conversion
		to devinit style.
		Reworking some of the input-only vs output-only vs input-output
		details of src/console.c, better warning messages, and adding
		a debug dump.
		Removing the concept of "device state"; it wasn't really used.
		Changing some debug output (-vv should now be used to show all
		details about devices and busses; not shown during normal
		startup anymore).
		Beginning on some SPARC instruction disassembly support.
20051204	Minor PPC updates (WALNUT skeleton stuff).
		Continuing on the MIPS dyntrans rewrite.
		More progress on the ADB controller (a keyboard is "detected"
		by NetBSD and OpenBSD).
		Downgrading OpenBSD/arc as a guest OS from "working" to
		"almost working" in the documentation.
		Progress on Algor emulation ("v3" PCI controller).
20051205	Minor updates.
20051207	Sorting devices according to address; this reduces complexity
		of device lookups from O(n) to O(log n) in memory_rw (but no
		real performance increase (yet) in experiments).
20051210	Beginning the work on native dyntrans backends (by making a
		simple skeleton; so far only for Alpha hosts).
20051211	Some very minor SPARC updates.
20051215	Fixing a bug in the MIPS mul (note: not mult) instruction,
		so it also works with non-64-bit emulation. (Thanks to Alec
		Voropay for noticing the problem.)
20051216	More work on the fake/empty/simple/skeleton/whatever backend;
		performance doesn't increase, so this isn't really worth it,
		but it was probably worth it to prepare for a real backend
		later.
20051219	More instr call statistics gathering and analysis stuff.
20051220	Another fix for MIPS 'mul'. Also converting mul and {d,}cl{o,z}
		to dyntrans.
		memory_ppc.c syntax error fix (noticed by Peter Valchev).
		Beginning to move out machines from src/machine.c into
		individual files in src/machines (in a way similar to the
		autodev system for devices).
20051222	Updating the documentation regarding NetBSD/pmax 3.0.
20051223	- " - NetBSD/cats 3.0.
20051225	- " - NetBSD/hpcmips 3.0.
20051226	Continuing on the machine registry redesign.
		Adding support for ARM rrx (33-bit rotate).
		Fixing some signed/unsigned issues (exposed by gcc -W).
20051227	Fixing the bug which prevented a NetBSD/prep 3.0 install kernel
		from starting (triggered when an mtmsr was the last instruction
		on a page). Unfortunately not enough to get the kernel to run
		as well as the 2.1 kernels did.
20051230	Some dyntrans refactoring.
20051231	Continuing on the machine registry redesign.
20060101-10	Continuing... moving more machines. Moving MD interrupt stuff
		from machine.c into a new src/machines/interrupts.c.
20060114	Adding various mvmeppc machine skeletons.
20060115	Continuing on mvme* stuff. NetBSD/mvmeppc prints boot messages
		(for MVME1600) and reaches the root device prompt, but no
		specific hardware devices are emulated yet.
20060116	Minor updates to the mvme1600 emulation mode; the Eagle PCI bus
		seems to work without much modification, and a 21143 can be
		detected, interrupts might work (but untested so far).
		Adding a fake MK48Txx (mkclock) device, for NetBSD/mvmeppc.
20060121	Adding an aux control register for ARM. (A BIG thank you to
		Olivier Houchard for tracking down this bug.)
20060122	Adding more ARM instructions (smulXY), and dev_iq80321_7seg.
20060124	Adding disassembly of more ARM instructions (mia*, mra/mar),
		and some semi-bogus XScale and i80321 registers.
20060201-02	Various minor updates. Moving the last machines out of
		machine.c.
20060204	Adding a -c command line option, for running debugger commands
		before the simulation starts, but after all files have been
		loaded.
		Minor iq80321-related updates.
20060209	Minor hacks (DEVINIT macro, etc).
		Preparing for the generalization of the 64-bit dyntrans address
		translation subsystem.
20060216	Adding ARM ldrd (double-register load).
20060217	Continuing on various ARM-related stuff.
20060218	More progress on the ATA/wdc emulation for NetBSD/iq80321.
		NetBSD/evbarm can now be installed :-)  Updating the docs, etc.
		Continuing on Algor emulation.

==============  RELEASE 0.3.8  ==============


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

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.26