bellard | 7d13299 | 2003-03-06 23:23:54 +0000 | [diff] [blame] | 1 | include config.mak |
bellard | 766a487 | 2003-02-18 23:35:48 +0000 | [diff] [blame] | 2 | |
bellard | 7d13299 | 2003-03-06 23:23:54 +0000 | [diff] [blame] | 3 | CFLAGS=-Wall -O2 -g |
bellard | 31e31b8 | 2003-02-18 22:55:36 +0000 | [diff] [blame] | 4 | LDFLAGS=-g |
bellard | 766a487 | 2003-02-18 23:35:48 +0000 | [diff] [blame] | 5 | LIBS= |
bellard | 766a487 | 2003-02-18 23:35:48 +0000 | [diff] [blame] | 6 | DEFINES=-DHAVE_BYTESWAP_H |
bellard | 7d13299 | 2003-03-06 23:23:54 +0000 | [diff] [blame] | 7 | |
| 8 | ifeq ($(ARCH),i386) |
| 9 | CFLAGS+=-fomit-frame-pointer |
bellard | ca73520 | 2003-03-18 20:41:34 +0000 | [diff] [blame] | 10 | OP_CFLAGS=$(CFLAGS) -mpreferred-stack-boundary=2 |
| 11 | ifeq ($(GCC_MAJOR),3) |
| 12 | OP_CFLAGS+= -falign-functions=0 |
| 13 | else |
| 14 | OP_CFLAGS+= -malign-functions=0 |
| 15 | endif |
bellard | 27c75a9 | 2003-04-07 21:35:21 +0000 | [diff] [blame] | 16 | # WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object |
| 17 | # that the kernel ELF loader considers as an executable. I think this |
| 18 | # is the simplest way to make it self virtualizable! |
| 19 | LDFLAGS+=-Wl,-shared |
bellard | 766a487 | 2003-02-18 23:35:48 +0000 | [diff] [blame] | 20 | endif |
| 21 | |
| 22 | ifeq ($(ARCH),ppc) |
bellard | 927f621 | 2003-03-02 19:39:42 +0000 | [diff] [blame] | 23 | OP_CFLAGS=$(CFLAGS) |
bellard | 27c75a9 | 2003-04-07 21:35:21 +0000 | [diff] [blame] | 24 | LDFLAGS+=-Wl,-T,ppc.ld |
bellard | 766a487 | 2003-02-18 23:35:48 +0000 | [diff] [blame] | 25 | endif |
| 26 | |
bellard | fd429f2 | 2003-03-30 20:59:46 +0000 | [diff] [blame] | 27 | ifeq ($(ARCH),s390) |
| 28 | OP_CFLAGS=$(CFLAGS) |
bellard | 27c75a9 | 2003-04-07 21:35:21 +0000 | [diff] [blame] | 29 | LDFLAGS+=-Wl,-T,s390.ld |
bellard | fd429f2 | 2003-03-30 20:59:46 +0000 | [diff] [blame] | 30 | endif |
| 31 | |
bellard | ca73520 | 2003-03-18 20:41:34 +0000 | [diff] [blame] | 32 | ifeq ($(GCC_MAJOR),3) |
| 33 | # very important to generate a return at the end of every operation |
| 34 | OP_CFLAGS+=-fno-reorder-blocks -fno-optimize-sibling-calls |
| 35 | endif |
| 36 | |
bellard | 766a487 | 2003-02-18 23:35:48 +0000 | [diff] [blame] | 37 | ######################################################### |
| 38 | |
bellard | 0ecfa99 | 2003-03-03 14:32:43 +0000 | [diff] [blame] | 39 | DEFINES+=-D_GNU_SOURCE |
bellard | 3ef693a | 2003-03-23 20:17:16 +0000 | [diff] [blame] | 40 | LIBS+=-lm |
bellard | 7d13299 | 2003-03-06 23:23:54 +0000 | [diff] [blame] | 41 | |
| 42 | # profiling code |
| 43 | ifdef TARGET_GPROF |
| 44 | LDFLAGS+=-p |
bellard | dc99065 | 2003-03-19 00:00:28 +0000 | [diff] [blame] | 45 | main.o: CFLAGS+=-p |
bellard | 7d13299 | 2003-03-06 23:23:54 +0000 | [diff] [blame] | 46 | endif |
bellard | 31e31b8 | 2003-02-18 22:55:36 +0000 | [diff] [blame] | 47 | |
bellard | 1eb8725 | 2003-04-11 01:12:28 +0000 | [diff] [blame^] | 48 | OBJS= elfload.o main.o syscall.o signal.o path.o |
bellard | 3ef693a | 2003-03-23 20:17:16 +0000 | [diff] [blame] | 49 | SRCS:= $(OBJS:.o=.c) |
| 50 | OBJS+= libqemu.a |
bellard | 612384d | 2003-03-22 17:31:19 +0000 | [diff] [blame] | 51 | |
bellard | 3ef693a | 2003-03-23 20:17:16 +0000 | [diff] [blame] | 52 | LIBOBJS+=thunk.o translate-i386.o op-i386.o exec-i386.o |
bellard | 0ecfa99 | 2003-03-03 14:32:43 +0000 | [diff] [blame] | 53 | # NOTE: the disassembler code is only needed for debugging |
bellard | 612384d | 2003-03-22 17:31:19 +0000 | [diff] [blame] | 54 | LIBOBJS+=i386-dis.o dis-buf.o |
bellard | 31e31b8 | 2003-02-18 22:55:36 +0000 | [diff] [blame] | 55 | |
bellard | 3ef693a | 2003-03-23 20:17:16 +0000 | [diff] [blame] | 56 | all: qemu qemu-doc.html |
bellard | 31e31b8 | 2003-02-18 22:55:36 +0000 | [diff] [blame] | 57 | |
bellard | 3ef693a | 2003-03-23 20:17:16 +0000 | [diff] [blame] | 58 | qemu: $(OBJS) |
bellard | 27c75a9 | 2003-04-07 21:35:21 +0000 | [diff] [blame] | 59 | $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) |
bellard | 31e31b8 | 2003-02-18 22:55:36 +0000 | [diff] [blame] | 60 | |
| 61 | depend: $(SRCS) |
| 62 | $(CC) -MM $(CFLAGS) $^ 1>.depend |
| 63 | |
bellard | 3ef693a | 2003-03-23 20:17:16 +0000 | [diff] [blame] | 64 | # libqemu |
bellard | 612384d | 2003-03-22 17:31:19 +0000 | [diff] [blame] | 65 | |
bellard | 3ef693a | 2003-03-23 20:17:16 +0000 | [diff] [blame] | 66 | libqemu.a: $(LIBOBJS) |
bellard | 612384d | 2003-03-22 17:31:19 +0000 | [diff] [blame] | 67 | rm -f $@ |
| 68 | $(AR) rcs $@ $(LIBOBJS) |
| 69 | |
bellard | 367e86e | 2003-03-01 17:13:26 +0000 | [diff] [blame] | 70 | dyngen: dyngen.c |
| 71 | $(HOST_CC) -O2 -Wall -g $< -o $@ |
| 72 | |
| 73 | translate-i386.o: translate-i386.c op-i386.h cpu-i386.h |
| 74 | |
| 75 | op-i386.h: op-i386.o dyngen |
| 76 | ./dyngen -o $@ $< |
| 77 | |
| 78 | op-i386.o: op-i386.c opreg_template.h ops_template.h |
bellard | 927f621 | 2003-03-02 19:39:42 +0000 | [diff] [blame] | 79 | $(CC) $(OP_CFLAGS) $(DEFINES) -c -o $@ $< |
bellard | 367e86e | 2003-03-01 17:13:26 +0000 | [diff] [blame] | 80 | |
bellard | 31e31b8 | 2003-02-18 22:55:36 +0000 | [diff] [blame] | 81 | %.o: %.c |
| 82 | $(CC) $(CFLAGS) $(DEFINES) -c -o $@ $< |
| 83 | |
| 84 | clean: |
bellard | 7d13299 | 2003-03-06 23:23:54 +0000 | [diff] [blame] | 85 | $(MAKE) -C tests clean |
bellard | 3ef693a | 2003-03-23 20:17:16 +0000 | [diff] [blame] | 86 | rm -f *.o *.a *~ qemu dyngen TAGS |
bellard | 31e31b8 | 2003-02-18 22:55:36 +0000 | [diff] [blame] | 87 | |
bellard | 7d13299 | 2003-03-06 23:23:54 +0000 | [diff] [blame] | 88 | distclean: clean |
| 89 | rm -f config.mak config.h |
| 90 | |
bellard | 3ef693a | 2003-03-23 20:17:16 +0000 | [diff] [blame] | 91 | install: qemu |
| 92 | install -m 755 -s qemu $(prefix)/bin |
bellard | 612384d | 2003-03-22 17:31:19 +0000 | [diff] [blame] | 93 | |
bellard | 367e86e | 2003-03-01 17:13:26 +0000 | [diff] [blame] | 94 | # various test targets |
bellard | 3ef693a | 2003-03-23 20:17:16 +0000 | [diff] [blame] | 95 | test speed: qemu |
bellard | 367e86e | 2003-03-01 17:13:26 +0000 | [diff] [blame] | 96 | make -C tests $@ |
bellard | 31e31b8 | 2003-02-18 22:55:36 +0000 | [diff] [blame] | 97 | |
bellard | 367e86e | 2003-03-01 17:13:26 +0000 | [diff] [blame] | 98 | TAGS: |
| 99 | etags *.[ch] i386/*.[ch] |
bellard | 31e31b8 | 2003-02-18 22:55:36 +0000 | [diff] [blame] | 100 | |
bellard | 3ef693a | 2003-03-23 20:17:16 +0000 | [diff] [blame] | 101 | # documentation |
| 102 | qemu-doc.html: qemu-doc.texi |
| 103 | texi2html -monolithic -number $< |
| 104 | |
bellard | 586314f | 2003-03-03 15:02:29 +0000 | [diff] [blame] | 105 | FILES= \ |
bellard | fd429f2 | 2003-03-30 20:59:46 +0000 | [diff] [blame] | 106 | README README.distrib COPYING COPYING.LIB TODO Changelog VERSION \ |
| 107 | dyngen.c ioctls.h ops_template.h op_string.h syscall_types.h\ |
bellard | 09bfb05 | 2003-04-10 00:03:40 +0000 | [diff] [blame] | 108 | Makefile elf.h thunk.c\ |
bellard | 3ef693a | 2003-03-23 20:17:16 +0000 | [diff] [blame] | 109 | elfload.c main.c signal.c thunk.h\ |
bellard | fd429f2 | 2003-03-30 20:59:46 +0000 | [diff] [blame] | 110 | cpu-i386.h qemu.h op-i386.c opc-i386.h syscall-i386.h translate-i386.c\ |
bellard | 27c75a9 | 2003-04-07 21:35:21 +0000 | [diff] [blame] | 111 | dis-asm.h gen-i386.h syscall.c\ |
bellard | 586314f | 2003-03-03 15:02:29 +0000 | [diff] [blame] | 112 | dis-buf.c i386-dis.c opreg_template.h syscall_defs.h\ |
bellard | 1eb8725 | 2003-04-11 01:12:28 +0000 | [diff] [blame^] | 113 | ppc.ld s390.ld exec-i386.h exec-i386.c path.c configure \ |
bellard | 77f8dd5 | 2003-03-05 22:24:48 +0000 | [diff] [blame] | 114 | tests/Makefile\ |
bellard | 586314f | 2003-03-03 15:02:29 +0000 | [diff] [blame] | 115 | tests/test-i386.c tests/test-i386-shift.h tests/test-i386.h\ |
bellard | 612384d | 2003-03-22 17:31:19 +0000 | [diff] [blame] | 116 | tests/test-i386-muldiv.h tests/test-i386-code16.S\ |
| 117 | tests/hello.c tests/hello tests/sha1.c \ |
bellard | 3ef693a | 2003-03-23 20:17:16 +0000 | [diff] [blame] | 118 | tests/testsig.c tests/testclone.c tests/testthread.c \ |
bellard | fd429f2 | 2003-03-30 20:59:46 +0000 | [diff] [blame] | 119 | tests/runcom.c tests/pi_10.com \ |
bellard | 1eb8725 | 2003-04-11 01:12:28 +0000 | [diff] [blame^] | 120 | tests/test_path.c \ |
bellard | 3ef693a | 2003-03-23 20:17:16 +0000 | [diff] [blame] | 121 | qemu-doc.texi qemu-doc.html |
bellard | 586314f | 2003-03-03 15:02:29 +0000 | [diff] [blame] | 122 | |
bellard | 3ef693a | 2003-03-23 20:17:16 +0000 | [diff] [blame] | 123 | FILE=qemu-$(VERSION) |
bellard | 586314f | 2003-03-03 15:02:29 +0000 | [diff] [blame] | 124 | |
| 125 | tar: |
| 126 | rm -rf /tmp/$(FILE) |
| 127 | mkdir -p /tmp/$(FILE) |
| 128 | cp -P $(FILES) /tmp/$(FILE) |
| 129 | ( cd /tmp ; tar zcvf ~/$(FILE).tar.gz $(FILE) ) |
| 130 | rm -rf /tmp/$(FILE) |
| 131 | |
bellard | d691f66 | 2003-03-24 21:58:34 +0000 | [diff] [blame] | 132 | # generate a binary distribution including the test binary environnment |
| 133 | BINPATH=/usr/local/qemu-i386 |
| 134 | |
| 135 | tarbin: |
bellard | 1eb8725 | 2003-04-11 01:12:28 +0000 | [diff] [blame^] | 136 | tar zcvf /tmp/qemu-$(VERSION)-i386-glibc21.tar.gz \ |
| 137 | $(BINPATH)/etc $(BINPATH)/lib $(BINPATH)/bin $(BINPATH)/usr |
| 138 | tar zcvf /tmp/qemu-$(VERSION)-i386-wine.tar.gz \ |
| 139 | $(BINPATH)/wine |
bellard | d691f66 | 2003-03-24 21:58:34 +0000 | [diff] [blame] | 140 | |
bellard | 31e31b8 | 2003-02-18 22:55:36 +0000 | [diff] [blame] | 141 | ifneq ($(wildcard .depend),) |
| 142 | include .depend |
| 143 | endif |