xref: /openbmc/qemu/Makefile (revision 612384d77146639cebdc9b71c87ee4a94bf44501)
17d13299dSbellardinclude config.mak
2766a487aSbellard
37d13299dSbellardCFLAGS=-Wall -O2 -g
431e31b8aSbellardLDFLAGS=-g
5766a487aSbellardLIBS=
6766a487aSbellardDEFINES=-DHAVE_BYTESWAP_H
77d13299dSbellard
87d13299dSbellardifeq ($(ARCH),i386)
97d13299dSbellardCFLAGS+=-fomit-frame-pointer
10ca735206SbellardOP_CFLAGS=$(CFLAGS) -mpreferred-stack-boundary=2
11ca735206Sbellardifeq ($(GCC_MAJOR),3)
12ca735206SbellardOP_CFLAGS+= -falign-functions=0
13ca735206Sbellardelse
14ca735206SbellardOP_CFLAGS+= -malign-functions=0
15ca735206Sbellardendif
16766a487aSbellardendif
17766a487aSbellard
18766a487aSbellardifeq ($(ARCH),ppc)
19927f621eSbellardOP_CFLAGS=$(CFLAGS)
20766a487aSbellardendif
21766a487aSbellard
22ca735206Sbellardifeq ($(GCC_MAJOR),3)
23ca735206Sbellard# very important to generate a return at the end of every operation
24ca735206SbellardOP_CFLAGS+=-fno-reorder-blocks -fno-optimize-sibling-calls
25ca735206Sbellardendif
26ca735206Sbellard
27766a487aSbellard#########################################################
28766a487aSbellard
290ecfa993SbellardDEFINES+=-D_GNU_SOURCE
30766a487aSbellardLDSCRIPT=$(ARCH).ld
31927f621eSbellardLIBS+=-ldl -lm
327d13299dSbellard
337d13299dSbellard# profiling code
347d13299dSbellardifdef TARGET_GPROF
357d13299dSbellardLDFLAGS+=-p
36dc99065bSbellardmain.o: CFLAGS+=-p
377d13299dSbellardendif
3831e31b8aSbellard
39*612384d7SbellardOBJS= elfload.o main.o thunk.o syscall.o libgemu.a
40*612384d7Sbellard
41*612384d7SbellardLIBOBJS+=translate-i386.o op-i386.o exec-i386.o
420ecfa993Sbellard# NOTE: the disassembler code is only needed for debugging
43*612384d7SbellardLIBOBJS+=i386-dis.o dis-buf.o
4431e31b8aSbellardSRCS = $(OBJS:.o=.c)
4531e31b8aSbellard
4631e31b8aSbellardall: gemu
4731e31b8aSbellard
4831e31b8aSbellardgemu: $(OBJS)
49367e86e8Sbellard	$(CC) -Wl,-T,$(LDSCRIPT) $(LDFLAGS) -o $@ $^  $(LIBS)
5031e31b8aSbellard
5131e31b8aSbellarddepend: $(SRCS)
5231e31b8aSbellard	$(CC) -MM $(CFLAGS) $^ 1>.depend
5331e31b8aSbellard
54*612384d7Sbellard# libgemu
55*612384d7Sbellard
56*612384d7Sbellardlibgemu.a: $(LIBOBJS)
57*612384d7Sbellard	rm -f $@
58*612384d7Sbellard	$(AR) rcs $@ $(LIBOBJS)
59*612384d7Sbellard
60367e86e8Sbellarddyngen: dyngen.c
61367e86e8Sbellard	$(HOST_CC) -O2 -Wall -g $< -o $@
62367e86e8Sbellard
63367e86e8Sbellardtranslate-i386.o: translate-i386.c op-i386.h cpu-i386.h
64367e86e8Sbellard
65367e86e8Sbellardop-i386.h: op-i386.o dyngen
66367e86e8Sbellard	./dyngen -o $@ $<
67367e86e8Sbellard
68367e86e8Sbellardop-i386.o: op-i386.c opreg_template.h ops_template.h
69927f621eSbellard	$(CC) $(OP_CFLAGS) $(DEFINES) -c -o $@ $<
70367e86e8Sbellard
7131e31b8aSbellard%.o: %.c
7231e31b8aSbellard	$(CC) $(CFLAGS) $(DEFINES) -c -o $@ $<
7331e31b8aSbellard
7431e31b8aSbellardclean:
757d13299dSbellard	$(MAKE) -C tests clean
76*612384d7Sbellard	rm -f *.o  *.a *~ gemu dyngen TAGS
7731e31b8aSbellard
787d13299dSbellarddistclean: clean
797d13299dSbellard	rm -f config.mak config.h
807d13299dSbellard
81*612384d7Sbellardinstall: gemu
82*612384d7Sbellard	install -m755 -s gemu $(prefix)/bin
83*612384d7Sbellard
84367e86e8Sbellard# various test targets
85367e86e8Sbellardtest speed: gemu
86367e86e8Sbellard	make -C tests $@
8731e31b8aSbellard
88367e86e8SbellardTAGS:
89367e86e8Sbellard	etags *.[ch] i386/*.[ch]
9031e31b8aSbellard
91586314f2SbellardFILES= \
92586314f2SbellardCOPYING.LIB  dyngen.c    ioctls.h          ops_template.h  syscall_types.h\
93586314f2SbellardMakefile     elf.h       linux_bin.h       segment.h       thunk.c\
94586314f2SbellardTODO         elfload.c   main.c            signal.c        thunk.h\
9568decc7cSbellardcpu-i386.h   gemu.h      op-i386.c opc-i386.h syscall-i386.h  translate-i386.c\
96586314f2Sbellarddis-asm.h    gen-i386.h  op-i386.h         syscall.c\
97586314f2Sbellarddis-buf.c    i386-dis.c  opreg_template.h  syscall_defs.h\
987d13299dSbellardi386.ld ppc.ld exec-i386.h exec-i386.c configure VERSION \
9977f8dd5aSbellardtests/Makefile\
100586314f2Sbellardtests/test-i386.c tests/test-i386-shift.h tests/test-i386.h\
101*612384d7Sbellardtests/test-i386-muldiv.h tests/test-i386-code16.S\
102*612384d7Sbellardtests/hello.c tests/hello tests/sha1.c \
103*612384d7Sbellardtests/testsig.c tests/testclone.c tests/testthread.c
104586314f2Sbellard
105586314f2SbellardFILE=gemu-$(VERSION)
106586314f2Sbellard
107586314f2Sbellardtar:
108586314f2Sbellard	rm -rf /tmp/$(FILE)
109586314f2Sbellard	mkdir -p /tmp/$(FILE)
110586314f2Sbellard	cp -P $(FILES) /tmp/$(FILE)
111586314f2Sbellard	( cd /tmp ; tar zcvf ~/$(FILE).tar.gz $(FILE) )
112586314f2Sbellard	rm -rf /tmp/$(FILE)
113586314f2Sbellard
11431e31b8aSbellardifneq ($(wildcard .depend),)
11531e31b8aSbellardinclude .depend
11631e31b8aSbellardendif
117