1# Copyright (C) 2001-2021  The Bochs Project
2#
3# This library is free software; you can redistribute it and/or
4# modify it under the terms of the GNU Lesser General Public
5# License as published by the Free Software Foundation; either
6# version 2 of the License, or (at your option) any later version.
7#
8# This library is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11# Lesser General Public License for more details.
12#
13# You should have received a copy of the GNU Lesser General Public
14# License along with this library; if not, write to the Free Software
15# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
16#
17####################################################
18# NOTE: To be compatibile with nmake (microsoft vc++) please follow
19# the following rules:
20#   use $(VAR) not ${VAR}
21
22prefix          = @prefix@
23exec_prefix     = @exec_prefix@
24srcdir          = @srcdir@
25VPATH = @srcdir@
26bindir          = @bindir@
27libdir          = @libdir@
28plugdir         = @libdir@/bochs/plugins
29datarootdir     = @datarootdir@
30mandir          = @mandir@
31man1dir         = $(mandir)/man1
32man5dir         = $(mandir)/man5
33docdir          = /usr/local/share/doc/bochs
34sharedir        = /usr/local/share/bochs
35top_builddir    = .
36top_srcdir      = $(srcdir)
37
38DESTDIR =
39
40VERSION=@VERSION@
41REL_STRING=@REL_STRING@
42MAN_PAGE_1_LIST=bochs bximage bochs-dlx
43MAN_PAGE_5_LIST=bochsrc
44INSTALL_LIST_SHARE=bios/BIOS-bochs-* bios/VGABIOS* bios/SeaBIOS* bios/SeaVGABIOS* bios/bios.bin-* bios/vgabios-cirrus.bin-* @INSTALL_LIST_FOR_PLATFORM@
45INSTALL_LIST_DOC=CHANGES COPYING LICENSE README TODO misc/slirp.conf misc/vnet.conf
46INSTALL_LIST_BIN=bochs@EXE@ bximage@EXE@
47INSTALL_LIST_BIN_OPTIONAL=bochsdbg@EXE@ @OPTIONAL_TARGET@
48INSTALL_LIST_WIN32=$(INSTALL_LIST_SHARE) $(INSTALL_LIST_DOC) $(INSTALL_LIST_BIN) $(INSTALL_LIST_BIN_OPTIONAL)
49INSTALL_LIST_MACOSX=$(INSTALL_LIST_SHARE) $(INSTALL_LIST_DOC) bochs.scpt
50# for win32 and macosx, these files get renamed to *.txt in install process
51TEXT_FILE_LIST=README CHANGES COPYING LICENSE TODO VGABIOS-elpin-LICENSE VGABIOS-lgpl-README SeaBIOS-README SeaVGABIOS-README
52CP=cp
53CAT=cat
54RM=rm
55MV=mv
56LN_S=ln -sf
57DLXLINUX_TAR=dlxlinux4.tar.gz
58DLXLINUX_TAR_URL=https://bochs.sourceforge.io/guestos/$(DLXLINUX_TAR)
59DLXLINUX_ROMFILE=BIOS-bochs-latest
60GUNZIP=gunzip
61WGET=@WGET@
62SED=sed
63MKDIR=mkdir
64RMDIR=rmdir
65TAR=tar
66CHMOD=chmod
67# the GZIP variable is reserved by gzip program
68GZIP_BIN=gzip -9
69GUNZIP=gunzip
70ZIP=zip
71UNIX2DOS=unix2dos
72LIBTOOL=@LIBTOOL@
73DLLTOOL=dlltool
74RC_CMD=@RC_CMD@
75
76@SUFFIX_LINE@
77
78srcdir = @srcdir@
79VPATH = @srcdir@
80
81SHELL = @SHELL@
82
83@SET_MAKE@
84
85CC = @CC@
86CXX = @CXX@
87CFLAGS = @CFLAGS@ @GUI_CFLAGS@ $(MCH_CFLAGS) $(FLA_FLAGS) @DEFINE_PLUGIN_PATH@ -DBX_SHARE_PATH='"$(sharedir)"'
88CXXFLAGS = @CXXFLAGS@ @GUI_CXXFLAGS@ $(MCH_CFLAGS) $(FLA_FLAGS) @DEFINE_PLUGIN_PATH@ -DBX_SHARE_PATH='"$(sharedir)"'
89
90LDFLAGS = @LDFLAGS@
91LIBS = @LIBS@
92# To compile with readline:
93#   linux needs just -lreadline
94#   solaris needs -lreadline -lcurses
95X_LIBS = @X_LIBS@
96X_PRE_LIBS = @X_PRE_LIBS@
97GUI_LINK_OPTS_X = $(X_LIBS) $(X_PRE_LIBS)
98GUI_LINK_OPTS_SDL = @GUI_LINK_OPTS_SDL@
99GUI_LINK_OPTS_SDL2 = @GUI_LINK_OPTS_SDL2@
100GUI_LINK_OPTS_SVGA =  -lvga -lvgagl
101GUI_LINK_OPTS_RFB = @RFB_LIBS@
102GUI_LINK_OPTS_VNCSRV = @GUI_LINK_OPTS_VNCSRV@
103GUI_LINK_OPTS_AMIGAOS =
104GUI_LINK_OPTS_WIN32 = -luser32 -lgdi32 -lcomdlg32 -lcomctl32 -lshell32
105GUI_LINK_OPTS_WIN32_VCPP = user32.lib gdi32.lib winmm.lib \
106  comdlg32.lib comctl32.lib advapi32.lib shell32.lib
107GUI_LINK_OPTS_MACOS =
108GUI_LINK_OPTS_CARBON = -framework Carbon
109GUI_LINK_OPTS_NOGUI =
110GUI_LINK_OPTS_TERM = @GUI_LINK_OPTS_TERM@
111GUI_LINK_OPTS_WX = @GUI_LINK_OPTS_WX@
112GUI_LINK_OPTS = @GUI_LINK_OPTS@
113DEVICE_LINK_OPTS = @DEVICE_LINK_OPTS@
114RANLIB = @RANLIB@
115
116CFLAGS_CONSOLE = @CFLAGS@ $(MCH_CFLAGS) $(FLA_FLAGS)
117CXXFLAGS_CONSOLE = @CXXFLAGS_CONSOLE@ $(MCH_CFLAGS) $(FLA_FLAGS)
118BXIMAGE_LINK_OPTS = @BXIMAGE_LINK_OPTS@
119
120BX_INCDIRS = -I. -I$(srcdir)/. -I@INSTRUMENT_DIR@ -I$(srcdir)/@INSTRUMENT_DIR@
121
122#SUBDIRS = iodev bx_debug
123
124#all install uninstall: config.h#
125#        for subdir in $(SUBDIRS); do #
126#          echo making $@ in $$subdir; #
127#          ($(MAKE) -C $$subdir $(MDEFINES) $@) || exit 1; #
128#        done#
129
130
131
132# gnu flags for clean up
133#CFLAGS  = -ansi -O -g -Wunused -Wuninitialized
134
135
136NONINLINE_OBJS = \
137	logio.o \
138	main.o \
139	config.o \
140	pc_system.o \
141	osdep.o \
142	plugin.o \
143	crc.o \
144	bxthread.o \
145	@EXTRA_BX_OBJS@
146
147EXTERN_ENVIRONMENT_OBJS = \
148	main.o \
149	config.o \
150	pc_system.o
151
152DEBUGGER_LIB   = bx_debug/libdebug.a
153INSTRUMENT_LIB = @INSTRUMENT_DIR@/libinstrument.a
154FPU_LIB        = cpu/fpu/libfpu.a
155AVX_LIB        = cpu/avx/libavx.a
156READLINE_LIB   = @READLINE_LIB@
157EXTRA_LINK_OPTS = @EXTRA_LINK_OPTS@
158
159GDBSTUB_OBJS = gdbstub.o
160
161BX_OBJS = @NONINLINE_VAR@
162
163BX_INCLUDES = bochs.h config.h osdep.h
164
165
166.@CPP_SUFFIX@.o:
167	$(CXX) @DASH@c $(BX_INCDIRS) $(CXXFLAGS) @CXXFP@$< @OFP@$@
168.c.o:
169	$(CC) @DASH@c $(BX_INCDIRS) $(CFLAGS) $(FPU_FLAGS) $< @OFP@$@
170
171
172all: @PRIMARY_TARGET@ @PLUGIN_TARGET@ bximage@EXE@ @OPTIONAL_TARGET@ @BUILD_DOCBOOK_VAR@
173
174@EXTERNAL_DEPENDENCY@
175
176bochs@EXE@: @IODEV_LIB_VAR@ @DISPLAY_LIB_VAR@ @HDIMAGE_LIB_VAR@ @USB_LIB_VAR@ @NETWORK_LIB_VAR@ @SOUND_LIB_VAR@ \
177		@DEBUGGER_VAR@ cpu/libcpu.a @AVX_LIB_VAR@ cpu/cpudb/libcpudb.a memory/libmemory.a \
178		gui/libgui.a @INSTRUMENT_VAR@ $(BX_OBJS) \
179		$(SIMX86_OBJS) @FPU_VAR@ @GDBSTUB_VAR@ @PLUGIN_VAR@
180	@LINK@ @EXPORT_DYNAMIC@ $(BX_OBJS) $(SIMX86_OBJS) \
181		@IODEV_LIB_VAR@ @DISPLAY_LIB_VAR@ @HDIMAGE_LIB_VAR@ @USB_LIB_VAR@ @NETWORK_LIB_VAR@ @SOUND_LIB_VAR@ \
182		@DEBUGGER_VAR@ cpu/libcpu.a @AVX_LIB_VAR@ cpu/cpudb/libcpudb.a \
183		 memory/libmemory.a gui/libgui.a \
184		@INSTRUMENT_VAR@ @PLUGIN_LIB@ \
185		@GDBSTUB_VAR@ @FPU_VAR@ \
186		@NONPLUGIN_GUI_LINK_OPTS@ \
187		$(DEVICE_LINK_OPTS) \
188		$(MCH_LINK_FLAGS) \
189		$(SIMX86_LINK_FLAGS) \
190		$(READLINE_LIB) \
191		$(EXTRA_LINK_OPTS) \
192		$(LIBS)
193
194# Special make target for cygwin/mingw using dlltool instead of
195# libtool.  This creates a .DEF file, and exports file, an import library,
196# and then links bochs.exe with the exports file.
197.win32_dll_plugin_target: @IODEV_LIB_VAR@ @DISPLAY_LIB_VAR@ @HDIMAGE_LIB_VAR@ @USB_LIB_VAR@ @NETWORK_LIB_VAR@ \
198		@SOUND_LIB_VAR@ @DEBUGGER_VAR@ cpu/libcpu.a @AVX_LIB_VAR@ cpu/cpudb/libcpudb.a \
199		memory/libmemory.a gui/libgui.a @INSTRUMENT_VAR@ \
200		$(BX_OBJS) $(SIMX86_OBJS) @FPU_VAR@ @GDBSTUB_VAR@ @PLUGIN_VAR@
201	$(DLLTOOL) --export-all-symbols --output-def bochs.def \
202		$(BX_OBJS) $(SIMX86_OBJS) \
203		@IODEV_LIB_VAR@ @DISPLAY_LIB_VAR@ @HDIMAGE_LIB_VAR@ @USB_LIB_VAR@ @NETWORK_LIB_VAR@ @SOUND_LIB_VAR@ \
204		cpu/libcpu.a @AVX_LIB_VAR@ cpu/cpudb/libcpudb.a memory/libmemory.a gui/libgui.a \
205		@DEBUGGER_VAR@ @INSTRUMENT_VAR@ @PLUGIN_VAR@ \
206		@GDBSTUB_VAR@ @FPU_VAR@
207	$(DLLTOOL) --dllname bochs.exe --def bochs.def --output-lib dllexports.a
208	$(DLLTOOL) --dllname bochs.exe --output-exp bochs.exp --def bochs.def
209	$(CXX) -o bochs.exe $(CXXFLAGS) $(LDFLAGS) \
210	    $(BX_OBJS) bochs.exp $(SIMX86_OBJS) \
211		@IODEV_LIB_VAR@ @DISPLAY_LIB_VAR@ @HDIMAGE_LIB_VAR@ @USB_LIB_VAR@ @NETWORK_LIB_VAR@ @SOUND_LIB_VAR@ \
212		cpu/libcpu.a @AVX_LIB_VAR@ cpu/cpudb/libcpudb.a memory/libmemory.a gui/libgui.a \
213		@DEBUGGER_VAR@ @INSTRUMENT_VAR@ @PLUGIN_LIB@ \
214		@GDBSTUB_VAR@ @FPU_VAR@ \
215		$(GUI_LINK_OPTS) \
216		$(DEVICE_LINK_OPTS) \
217		$(MCH_LINK_FLAGS) \
218		$(SIMX86_LINK_FLAGS) \
219		$(READLINE_LIB) \
220		$(EXTRA_LINK_OPTS) \
221		$(LIBS)
222	touch .win32_dll_plugin_target
223
224bochs_plugins:
225	cd gui @COMMAND_SEPARATOR@
226	$(MAKE) plugins
227	@CD_UP_ONE@
228	cd iodev @COMMAND_SEPARATOR@
229	$(MAKE) plugins
230	@CD_UP_ONE@
231	cd iodev/display @COMMAND_SEPARATOR@
232	$(MAKE) plugins
233	@CD_UP_TWO@
234	cd iodev/hdimage @COMMAND_SEPARATOR@
235	$(MAKE) plugins
236	@CD_UP_TWO@
237	cd iodev/usb @COMMAND_SEPARATOR@
238	$(MAKE) plugins
239	@CD_UP_TWO@
240	cd iodev/network @COMMAND_SEPARATOR@
241	$(MAKE) plugins
242	@CD_UP_TWO@
243	cd iodev/sound @COMMAND_SEPARATOR@
244	$(MAKE) plugins
245	@CD_UP_TWO@
246
247bximage@EXE@: misc/bximage.o misc/hdimage.o misc/vmware3.o misc/vmware4.o misc/vpc.o misc/vbox.o
248	@LINK_CONSOLE@ $(BXIMAGE_LINK_OPTS) misc/bximage.o misc/hdimage.o misc/vmware3.o misc/vmware4.o misc/vpc.o misc/vbox.o
249
250niclist@EXE@: misc/niclist.o
251	@LINK_CONSOLE@ misc/niclist.o
252
253bxhub@EXE@: misc/bxhub.o misc/netutil.o
254	@LINK_CONSOLE@ misc/bxhub.o misc/netutil.o @BXHUB_LINK_OPTS@
255
256# compile with console CXXFLAGS, not gui CXXFLAGS
257misc/bximage.o: $(srcdir)/misc/bximage.cc $(srcdir)/misc/bswap.h \
258  $(srcdir)/misc/bxcompat.h $(srcdir)/iodev/hdimage/hdimage.h
259	$(CXX) @DASH@c $(BX_INCDIRS) $(CXXFLAGS_CONSOLE) $(srcdir)/misc/bximage.cc @OFP@$@
260
261misc/hdimage.o: $(srcdir)/iodev/hdimage/hdimage.cc \
262  $(srcdir)/iodev/hdimage/hdimage.h $(srcdir)/misc/bxcompat.h
263	$(CXX) @DASH@c $(BX_INCDIRS) @BXIMAGE_FLAG@ $(CXXFLAGS_CONSOLE) $(srcdir)/iodev/hdimage/hdimage.cc @OFP@$@
264
265misc/vmware3.o: $(srcdir)/iodev/hdimage/vmware3.cc $(srcdir)/iodev/hdimage/vmware3.h \
266  $(srcdir)/iodev/hdimage/hdimage.h $(srcdir)/misc/bxcompat.h
267	$(CXX) @DASH@c $(BX_INCDIRS) @BXIMAGE_FLAG@ $(CXXFLAGS_CONSOLE) $(srcdir)/iodev/hdimage/vmware3.cc @OFP@$@
268
269misc/vmware4.o: $(srcdir)/iodev/hdimage/vmware4.cc $(srcdir)/iodev/hdimage/vmware4.h \
270  $(srcdir)/iodev/hdimage/hdimage.h $(srcdir)/misc/bxcompat.h
271	$(CXX) @DASH@c $(BX_INCDIRS) @BXIMAGE_FLAG@ $(CXXFLAGS_CONSOLE) $(srcdir)/iodev/hdimage/vmware4.cc @OFP@$@
272
273misc/vpc.o: $(srcdir)/iodev/hdimage/vpc.cc $(srcdir)/iodev/hdimage/vpc.h \
274  $(srcdir)/iodev/hdimage/hdimage.h $(srcdir)/misc/bxcompat.h
275	$(CXX) @DASH@c $(BX_INCDIRS) @BXIMAGE_FLAG@ $(CXXFLAGS_CONSOLE) $(srcdir)/iodev/hdimage/vpc.cc @OFP@$@
276
277misc/vbox.o: $(srcdir)/iodev/hdimage/vbox.cc $(srcdir)/iodev/hdimage/vbox.h \
278  $(srcdir)/iodev/hdimage/hdimage.h $(srcdir)/misc/bxcompat.h
279	$(CXX) @DASH@c $(BX_INCDIRS) @BXIMAGE_FLAG@ $(CXXFLAGS_CONSOLE) $(srcdir)/iodev/hdimage/vbox.cc @OFP@$@
280
281misc/bxhub.o: $(srcdir)/misc/bxhub.cc $(srcdir)/iodev/network/netmod.h \
282  $(srcdir)/iodev/network/netutil.h $(srcdir)/misc/bxcompat.h
283	$(CC) @DASH@c $(BX_INCDIRS) $(CXXFLAGS_CONSOLE) $(srcdir)/misc/bxhub.cc @OFP@$@
284
285misc/netutil.o: $(srcdir)/iodev/network/netutil.cc $(srcdir)/iodev/network/netutil.h \
286  $(srcdir)/iodev/network/netmod.h $(srcdir)/misc/bxcompat.h
287	$(CXX) @DASH@c $(BX_INCDIRS) @BXHUB_FLAG@ $(CXXFLAGS_CONSOLE) $(srcdir)/iodev/network/netutil.cc @OFP@$@
288
289# compile with console CFLAGS, not gui CXXFLAGS
290misc/niclist.o: $(srcdir)/misc/niclist.c
291	$(CC) @DASH@c $(BX_INCDIRS) $(CFLAGS_CONSOLE) $(srcdir)/misc/niclist.c @OFP@$@
292
293$(BX_OBJS): $(BX_INCLUDES)
294
295# cannot use -C option to be compatible with Microsoft nmake
296iodev/libiodev.a::
297	cd iodev @COMMAND_SEPARATOR@
298	$(MAKE) $(MDEFINES) libiodev.a
299	@CD_UP_ONE@
300
301iodev/display/libdisplay.a::
302	cd iodev/display @COMMAND_SEPARATOR@
303	$(MAKE) $(MDEFINES) libdisplay.a
304	@CD_UP_TWO@
305
306iodev/hdimage/libhdimage.a::
307	cd iodev/hdimage @COMMAND_SEPARATOR@
308	$(MAKE) $(MDEFINES) libhdimage.a
309	@CD_UP_TWO@
310
311iodev/usb/libusb.a::
312	cd iodev/usb @COMMAND_SEPARATOR@
313	$(MAKE) $(MDEFINES) libusb.a
314	@CD_UP_TWO@
315
316iodev/network/libnetwork.a::
317	cd iodev/network @COMMAND_SEPARATOR@
318	$(MAKE) $(MDEFINES) libnetwork.a
319	@CD_UP_TWO@
320
321iodev/sound/libsound.a::
322	cd iodev/sound @COMMAND_SEPARATOR@
323	$(MAKE) $(MDEFINES) libsound.a
324	@CD_UP_TWO@
325
326bx_debug/libdebug.a::
327	cd bx_debug @COMMAND_SEPARATOR@
328	$(MAKE) $(MDEFINES) libdebug.a
329	@CD_UP_ONE@
330
331cpu/libcpu.a::
332	cd cpu @COMMAND_SEPARATOR@
333	$(MAKE) $(MDEFINES) libcpu.a
334	@CD_UP_ONE@
335
336cpu/avx/libavx.a::
337	cd cpu/avx @COMMAND_SEPARATOR@
338	$(MAKE) $(MDEFINES) libavx.a
339	@CD_UP_TWO@
340
341cpu/cpudb/libcpudb.a::
342	cd cpu/cpudb @COMMAND_SEPARATOR@
343	$(MAKE) $(MDEFINES) libcpudb.a
344	@CD_UP_TWO@
345
346cpu/fpu/libfpu.a::
347	cd cpu/fpu @COMMAND_SEPARATOR@
348	$(MAKE) $(MDEFINES) libfpu.a
349	@CD_UP_TWO@
350
351memory/libmemory.a::
352	cd memory @COMMAND_SEPARATOR@
353	$(MAKE) $(MDEFINES) libmemory.a
354	@CD_UP_ONE@
355
356gui/libgui.a::
357	cd gui @COMMAND_SEPARATOR@
358	$(MAKE) $(MDEFINES) libgui.a
359	@CD_UP_ONE@
360
361@INSTRUMENT_DIR@/libinstrument.a::
362	cd @INSTRUMENT_DIR@ @COMMAND_SEPARATOR@
363	$(MAKE) $(MDEFINES) libinstrument.a
364	@CD_UP_TWO@
365
366libbochs.a:
367	-rm -f libbochs.a
368	ar rv libbochs.a $(EXTERN_ENVIRONMENT_OBJS)
369	$(RANLIB) libbochs.a
370
371# for wxWidgets port, on win32 platform
372wxbochs_resources.o: wxbochs.rc win32res.rc bxversion.rc
373	windres $(srcdir)/wxbochs.rc -o $@ --include-dir=`@WX_CONFIG@ --prefix`/include
374
375# for win32 gui
376win32res.o: win32res.rc bxversion.rc
377	$(RC_CMD)$@ $(srcdir)/win32res.rc
378
379#####################################################################
380# Install target for all platforms.
381#####################################################################
382
383install: all @INSTALL_TARGET@
384
385#####################################################################
386# Install target for win32
387#
388# This is intended to be run in cygwin, since it has better scripting
389# tools.
390#####################################################################
391
392install_win32: download_dlx dl_docbook
393	-mkdir -p $(INSTDIR)
394	-cp -p obj-release/*.exe .
395	for i in $(INSTALL_LIST_WIN32); do if test -f $$i; then cp -p $$i $(INSTDIR); else cp -p $(srcdir)/$$i $(INSTDIR); fi; done
396	cp $(srcdir)/misc/sb16/sb16ctrl.example $(INSTDIR)/sb16ctrl.txt
397	cp -p $(srcdir)/misc/sb16/sb16ctrl.exe $(INSTDIR)
398	cp $(srcdir)/.bochsrc $(INSTDIR)/bochsrc-sample.txt
399	cp $(srcdir)/TESTFORM.txt $(INSTDIR)
400	-mkdir $(INSTDIR)/keymaps
401	cp -p $(srcdir)/gui/keymaps/*.map $(INSTDIR)/keymaps
402	cat $(DLXLINUX_TAR) | (cd $(INSTDIR) && tar xzvf -)
403	echo '..\bochs -q' > $(INSTDIR)/dlxlinux/run.bat
404	dlxrc=$(INSTDIR)/dlxlinux/bochsrc; mv $$dlxrc.txt $$dlxrc.orig && sed < $$dlxrc.orig 's/$$BXSHARE/../' > $$dlxrc.bxrc && rm -f $$dlxrc.orig
405	mv $(INSTDIR)/README $(INSTDIR)/README.orig
406	cat $(srcdir)/build/win32/README.win32-binary $(INSTDIR)/README.orig > $(INSTDIR)/README
407	rm -f $(INSTDIR)/README.orig
408	for i in $(TEXT_FILE_LIST); do mv $(INSTDIR)/$$i $(INSTDIR)/$$i.txt; done
409	cd $(INSTDIR); $(UNIX2DOS) *.txt */*.txt
410	-mkdir -p $(INSTDIR)/docs
411	$(GUNZIP) -c $(srcdir)/doc/docbook/bochsdoc.tar.gz | $(TAR) -xvf - -C $(INSTDIR)/docs
412	cd $(INSTDIR); NAME=`pwd|$(SED) 's/.*\///'`; (cd ..; $(ZIP) $$NAME.zip -r $$NAME); ls -l ../$$NAME.zip
413
414#####################################################################
415# install target for unix
416#####################################################################
417
418install_unix: install_bin @INSTALL_PLUGINS_VAR@ install_man install_share @INSTALL_DOCBOOK_VAR@
419
420install_bin::
421	for i in $(DESTDIR)$(bindir); do mkdir -p $$i && test -d $$i && test -w $$i; done
422	for i in $(INSTALL_LIST_BIN); do if test -f $$i; then install $$i $(DESTDIR)$(bindir); else install $(srcdir)/$$i $(DESTDIR)$(bindir); fi; done
423	-for i in $(INSTALL_LIST_BIN_OPTIONAL); do if test -f $$i; then install $$i $(DESTDIR)$(bindir); else install $(srcdir)/$$i $(DESTDIR)$(bindir); fi; done
424
425install_libtool_plugins::
426	for i in $(DESTDIR)$(plugdir); do mkdir -p $$i && test -d $$i && test -w $$i; done
427	for i in gui iodev; do \
428		find $$i -type f -name '*.la' -exec $(LIBTOOL) --mode=install install '{}' $(DESTDIR)$(plugdir) ';'; done
429	$(LIBTOOL) --finish $(DESTDIR)$(plugdir)
430
431install_dll_plugins::
432	for i in $(DESTDIR)$(plugdir); do mkdir -p $$i && test -d $$i && test -w $$i; done
433	for i in gui iodev; do \
434		find $$i -type f -name '*.dll' -exec cp '{}' $(DESTDIR)$(plugdir) ';'; done
435
436install_share::
437	for i in $(DESTDIR)$(sharedir);	do mkdir -p $$i && test -d $$i && test -w $$i; done
438	for i in $(INSTALL_LIST_SHARE); do if test -f $$i; then install -m 644 $$i $(DESTDIR)$(sharedir); else install -m 644 $(srcdir)/$$i $(DESTDIR)$(sharedir); fi; done
439	-mkdir $(DESTDIR)$(sharedir)/keymaps
440	for i in $(srcdir)/gui/keymaps/*.map; do install -m 644 $$i $(DESTDIR)$(sharedir)/keymaps/; done
441
442install_doc::
443	for i in $(DESTDIR)$(docdir); do mkdir -p $$i && test -d $$i && test -w $$i; done
444	for i in $(INSTALL_LIST_DOC); do if test -f $$i; then install -m 644 $$i $(DESTDIR)$(docdir); else install -m 644 $(srcdir)/$$i $(DESTDIR)$(docdir); fi; done
445	$(RM) -f $(DESTDIR)$(docdir)/README
446	$(CAT) $(srcdir)/build/linux/README.linux-binary $(srcdir)/README > $(DESTDIR)$(docdir)/README
447	install -m 644 $(srcdir)/.bochsrc $(DESTDIR)$(docdir)/bochsrc-sample.txt
448
449
450# docbook section: the -C option can be used here
451build_docbook::
452	$(MAKE) -C doc/docbook
453
454dl_docbook::
455	$(MAKE) -C doc/docbook dl_docs
456
457install_docbook: build_docbook
458	$(MAKE) -C doc/docbook install
459
460clean_docbook::
461	$(MAKE) -C doc/docbook clean
462
463install_man::
464	-mkdir -p $(DESTDIR)$(man1dir)
465	-mkdir -p $(DESTDIR)$(man5dir)
466	for i in $(MAN_PAGE_1_LIST); do cat $(srcdir)/doc/man/$$i.1 | $(SED) 's/@version@/$(VERSION)/g' | $(GZIP_BIN) -c >  $(DESTDIR)$(man1dir)/$$i.1.gz; chmod 644 $(DESTDIR)$(man1dir)/$$i.1.gz; done
467	for i in $(MAN_PAGE_5_LIST); do cat $(srcdir)/doc/man/$$i.5 | $(GZIP_BIN) -c >  $(DESTDIR)$(man5dir)/$$i.5.gz; chmod 644 $(DESTDIR)$(man5dir)/$$i.5.gz; done
468
469download_dlx: $(DLXLINUX_TAR)
470
471$(DLXLINUX_TAR):
472	$(RM) -f $(DLXLINUX_TAR)
473	$(WGET) $(DLXLINUX_TAR_URL)
474	test -f $(DLXLINUX_TAR)
475
476unpack_dlx: $(DLXLINUX_TAR)
477	rm -rf dlxlinux
478	$(GUNZIP) -c $(DLXLINUX_TAR) | $(TAR) -xvf -
479	test -d dlxlinux
480	(cd dlxlinux; $(MV) bochsrc.txt bochsrc.txt.orig; $(SED) -e "s/1\.1\.2/$(VERSION)/g"  -e 's,/usr/local/bochs/latest,$(prefix)/share/bochs,g' < bochsrc.txt.orig > bochsrc.txt; rm -f bochsrc.txt.orig)
481
482install_dlx:
483	$(RM) -rf $(DESTDIR)$(sharedir)/dlxlinux
484	cp -r dlxlinux $(DESTDIR)$(sharedir)/dlxlinux
485	$(CHMOD) 755 $(DESTDIR)$(sharedir)/dlxlinux
486	$(GZIP_BIN) $(DESTDIR)$(sharedir)/dlxlinux/hd10meg.img
487	$(CHMOD) 644 $(DESTDIR)$(sharedir)/dlxlinux/*
488	for i in bochs-dlx; do cp $(srcdir)/build/linux/$$i $(DESTDIR)$(bindir)/$$i; $(CHMOD) 755 $(DESTDIR)$(bindir)/$$i; done
489
490uninstall::
491	$(RM) -rf $(DESTDIR)$(sharedir)
492	$(RM) -rf $(DESTDIR)$(docdir)
493	$(RM) -rf $(DESTDIR)$(libdir)/bochs
494	for i in $(INSTALL_LIST_BIN); do rm -f $(DESTDIR)$(bindir)/$$i; done
495	-for i in $(INSTALL_LIST_BIN_OPTIONAL); do rm -f $(DESTDIR)$(bindir)/$$i; done
496	for i in $(MAN_PAGE_1_LIST); do $(RM) -f $(man1dir)/$$i.1.gz; done
497	for i in $(MAN_PAGE_5_LIST); do $(RM) -f $(man5dir)/$$i.5.gz; done
498
499VS2019_WORKSPACE_ZIP=build/win32/vs2019-workspace.zip
500VS2019_WORKSPACE_FILES=vs2019/bochs.sln vs2019/*.vcxproj
501
502vs2019workspace:
503	zip $(VS2019_WORKSPACE_ZIP) $(VS2019_WORKSPACE_FILES)
504
505########
506# the win32_snap target is used to create a ZIP of bochs sources configured
507# for VC++.  This ZIP is stuck on the website every once in a while to make
508# it easier for VC++ users to compile bochs.  First, you should
509# run "sh .conf.win32-vcpp" to configure the source code, then do
510# "make win32_snap" to unzip the workspace files and create the ZIP.
511########
512win32_snap:
513	unzip $(VS2019_WORKSPACE_ZIP)
514	$(MAKE) zip
515
516tar:
517	NAME=`pwd|$(SED) 's/.*\///'`; (cd ..; $(RM) -f $$NAME.zip; tar cf - $$NAME | $(GZIP_BIN) > $$NAME.tar.gz); ls -l ../$$NAME.tar.gz
518
519zip:
520	NAME=`pwd|$(SED) 's/.*\///'`; (cd ..; $(RM) -f $$NAME-msvc-src.zip; $(ZIP) $$NAME-msvc-src.zip -r $$NAME -x \*.svn\* ); ls -l ../$$NAME-msvc-src.zip
521
522clean:
523	@RMCOMMAND@ *.o
524	@RMCOMMAND@ *.a
525	@RMCOMMAND@ bochs
526	@RMCOMMAND@ bochs.exe
527	@RMCOMMAND@ bximage
528	@RMCOMMAND@ bximage.exe
529	@RMCOMMAND@ bxhub
530	@RMCOMMAND@ bxhub.exe
531	@RMCOMMAND@ niclist
532	@RMCOMMAND@ niclist.exe
533	@RMCOMMAND@ bochs.out
534	@RMCOMMAND@ bochsout.txt
535	@RMCOMMAND@ *.exp *.lib
536	@RMCOMMAND@ bochs.def
537	@RMCOMMAND@ bochs.scpt
538	@RMCOMMAND@ -rf bochs.app
539	@RMCOMMAND@ -rf .libs
540	@RMCOMMAND@ .win32_dll_plugin_target
541
542local-dist-clean: clean
543	@RMCOMMAND@ config.h config.status config.log config.cache
544	@RMCOMMAND@ .dummy `find . -name '*.dsp' -o -name '*.dsw' -o -name '*.opt' -o -name '.DS_Store'`
545	@RMCOMMAND@ bxversion.h bxversion.rc build/linux/bochs-dlx _rpm_top *.rpm
546	@RMCOMMAND@ build/win32/nsis/Makefile build/win32/nsis/bochs.nsi
547	@RMCOMMAND@ build/macosx/Info.plist build/macosx/script_compiled.rsrc
548	@RMCOMMAND@ libtool
549	@RMCOMMAND@ ltdlconf.h
550
551clean_pcidev::
552	cd host/linux/pcidev @COMMAND_SEPARATOR@
553	$(MAKE) clean
554	@CD_UP_THREE@
555
556all-clean: clean @CLEAN_DOCBOOK_VAR@ @CLEAN_PCIDEV_VAR@
557	cd iodev @COMMAND_SEPARATOR@
558	$(MAKE) clean
559	@CD_UP_ONE@
560	cd iodev/display @COMMAND_SEPARATOR@
561	$(MAKE) clean
562	@CD_UP_TWO@
563	cd iodev/hdimage @COMMAND_SEPARATOR@
564	$(MAKE) clean
565	@CD_UP_TWO@
566	cd iodev/usb @COMMAND_SEPARATOR@
567	$(MAKE) clean
568	@CD_UP_TWO@
569	cd iodev/network @COMMAND_SEPARATOR@
570	$(MAKE) clean
571	@CD_UP_TWO@
572	cd iodev/sound @COMMAND_SEPARATOR@
573	$(MAKE) clean
574	@CD_UP_TWO@
575	cd bx_debug @COMMAND_SEPARATOR@
576	$(MAKE) clean
577	@CD_UP_ONE@
578	cd cpu @COMMAND_SEPARATOR@
579	$(MAKE) clean
580	@CD_UP_ONE@
581	cd cpu/avx @COMMAND_SEPARATOR@
582	$(MAKE) clean
583	@CD_UP_TWO@
584	cd cpu/cpudb @COMMAND_SEPARATOR@
585	$(MAKE) clean
586	@CD_UP_TWO@
587	cd cpu/fpu @COMMAND_SEPARATOR@
588	$(MAKE) clean
589	@CD_UP_TWO@
590	cd memory @COMMAND_SEPARATOR@
591	$(MAKE) clean
592	@CD_UP_ONE@
593	cd gui @COMMAND_SEPARATOR@
594	$(MAKE) clean
595	@CD_UP_ONE@
596	cd @INSTRUMENT_DIR@ @COMMAND_SEPARATOR@
597	$(MAKE) clean
598	@CD_UP_TWO@
599	cd misc @COMMAND_SEPARATOR@
600	$(MAKE) clean
601	@CD_UP_ONE@
602
603dist-clean: local-dist-clean
604	cd iodev @COMMAND_SEPARATOR@
605	$(MAKE) dist-clean
606	@CD_UP_ONE@
607	cd iodev/display @COMMAND_SEPARATOR@
608	$(MAKE) dist-clean
609	@CD_UP_TWO@
610	cd iodev/hdimage @COMMAND_SEPARATOR@
611	$(MAKE) dist-clean
612	@CD_UP_TWO@
613	cd iodev/usb @COMMAND_SEPARATOR@
614	$(MAKE) dist-clean
615	@CD_UP_TWO@
616	cd iodev/network @COMMAND_SEPARATOR@
617	$(MAKE) dist-clean
618	@CD_UP_TWO@
619	cd iodev/sound @COMMAND_SEPARATOR@
620	$(MAKE) dist-clean
621	@CD_UP_TWO@
622	cd bx_debug @COMMAND_SEPARATOR@
623	$(MAKE) dist-clean
624	@CD_UP_ONE@
625	cd bios @COMMAND_SEPARATOR@
626	$(MAKE) dist-clean
627	@CD_UP_ONE@
628	cd cpu @COMMAND_SEPARATOR@
629	$(MAKE) dist-clean
630	@CD_UP_ONE@
631	cd cpu/avx @COMMAND_SEPARATOR@
632	$(MAKE) dist-clean
633	@CD_UP_TWO@
634	cd cpu/cpudb @COMMAND_SEPARATOR@
635	$(MAKE) dist-clean
636	@CD_UP_TWO@
637	cd cpu/fpu @COMMAND_SEPARATOR@
638	$(MAKE) dist-clean
639	@CD_UP_TWO@
640	cd memory @COMMAND_SEPARATOR@
641	$(MAKE) dist-clean
642	@CD_UP_ONE@
643	cd gui @COMMAND_SEPARATOR@
644	$(MAKE) dist-clean
645	@CD_UP_ONE@
646	cd @INSTRUMENT_DIR@ @COMMAND_SEPARATOR@
647	$(MAKE) dist-clean
648	@CD_UP_TWO@
649	cd misc @COMMAND_SEPARATOR@
650	$(MAKE) dist-clean
651	@CD_UP_ONE@
652	cd doc/docbook @COMMAND_SEPARATOR@
653	$(MAKE) dist-clean
654	@CD_UP_TWO@
655	cd host/linux/pcidev @COMMAND_SEPARATOR@
656	$(MAKE) dist-clean
657	@CD_UP_THREE@
658	@RMCOMMAND@ Makefile
659
660###########################################
661# Build app on MacOS X
662###########################################
663MACOSX_STUFF=build/macosx
664MACOSX_STUFF_SRCDIR=$(srcdir)/$(MACOSX_STUFF)
665APP=bochs.app
666APP_PLATFORM=MacOS
667SCRIPT_EXEC=bochs.scpt
668SCRIPT_DATA=$(MACOSX_STUFF_SRCDIR)/script.data
669SCRIPT_R=$(MACOSX_STUFF_SRCDIR)/script.r
670SCRIPT_APPLESCRIPT=$(MACOSX_STUFF_SRCDIR)/bochs.applescript
671SCRIPT_COMPILED_RSRC=$(MACOSX_STUFF)/script_compiled.rsrc
672REZ=/Developer/Tools/Rez
673CPMAC=/Developer/Tools/CpMac
674RINCLUDES=/System/Library/Frameworks/Carbon.framework/Libraries/RIncludes
675REZ_ARGS=-append -i $RINCLUDES -d SystemSevenOrLater=1 -useDF
676STANDALONE_LIBDIR=`pwd`/$(APP)/Contents/$(APP_PLATFORM)/lib
677OSACOMPILE=/usr/bin/osacompile
678SETFILE=/Developer/Tools/SetFile
679
680# On a MacOS X machine, you run rez, osacompile, and setfile to
681# produce the script executable, which has both a data fork and a
682# resource fork.  Ideally, we would just recompile the whole
683# executable at build time, but unfortunately this cannot be done on
684# the SF compile farm through an ssh connection because osacompile
685# needs to be run locally for some reason.  Solution: If the script
686# sources are changed, rebuild the executable on a MacOSX machine,
687# split it into its data and resource forks and check them into SVN
688# as separate files.  Then at release time, all that's left to do is
689# put the data and resource forks back together to make a working script.
690# (This can be done through ssh.)
691#
692# Sources:
693# 1. script.r: resources for the script
694# 2. script.data: binary data for the script
695# 3. bochs.applescript: the source of the script
696#
697# NOTE: All of this will fail if you aren't building on an HFS+
698# filesystem!  On the SF compile farm building in your user directory
699# will fail, while doing the build in /tmp will work ok.
700
701# check if this filesystem supports resource forks at all
702test_hfsplus:
703	$(RM) -rf test_hfsplus
704	echo data > test_hfsplus
705	# if you get "Not a directory", then this filesystem doesn't support resources
706	echo resource > test_hfsplus/rsrc
707	# test succeeded
708	$(RM) -rf test_hfsplus
709
710# Step 1 (must be done locally on MacOSX, only when sources change)
711# Compile and pull out just the resource fork.  The resource fork is
712# checked into SVN as script_compiled.rsrc.  Note that we don't need
713# to check in the data fork of tmpscript because it is identical to the
714# script.data input file.
715$(SCRIPT_COMPILED_RSRC): $(SCRIPT_R) $(SCRIPT_APPLESCRIPT)
716	$(RM) -f tmpscript
717	$(CP) -f $(SCRIPT_DATA) tmpscript
718	$(REZ) -append $(SCRIPT_R) -o tmpscript
719	$(OSACOMPILE) -o tmpscript $(SCRIPT_APPLESCRIPT)
720	$(CP) tmpscript/rsrc $(SCRIPT_COMPILED_RSRC)
721	$(RM) -f tmpscript
722
723# Step 2 (can be done locally or remotely on MacOSX)
724# Combine the data fork and resource fork, and set attributes.
725$(SCRIPT_EXEC): $(SCRIPT_DATA) $(SCRIPT_COMPILED_RSRC)
726	rm -f $(SCRIPT_EXEC)
727	$(CP) $(SCRIPT_DATA) $(SCRIPT_EXEC)
728	if test ! -f $(SCRIPT_COMPILED_RSRC); then $(CP) $(srcdir)/$(SCRIPT_COMPILED_RSRC) $(SCRIPT_COMPILED_RSRC); fi
729	$(CP) $(SCRIPT_COMPILED_RSRC) $(SCRIPT_EXEC)/rsrc
730	$(SETFILE) -t "APPL" -c "aplt" $(SCRIPT_EXEC)
731
732$(APP)/.build: bochs test_hfsplus $(SCRIPT_EXEC)
733	rm -f $(APP)/.build
734	$(MKDIR) -p $(APP)
735	$(MKDIR) -p $(APP)/Contents
736	$(CP) -f $(MACOSX_STUFF)/Info.plist $(APP)/Contents
737	$(CP) -f $(MACOSX_STUFF_SRCDIR)/pbdevelopment.plist $(APP)/Contents
738	echo -n "APPL????"  > $(APP)/Contents/PkgInfo
739	$(MKDIR) -p $(APP)/Contents/$(APP_PLATFORM)
740	$(CP) bochs $(APP)/Contents/$(APP_PLATFORM)
741	$(MKDIR) -p $(APP)/Contents/Resources
742	$(REZ) $(REZ_ARGS) $(MACOSX_STUFF_SRCDIR)/bochs.r -o $(APP)/Contents/Resources/bochs.rsrc
743	$(CP) -f $(MACOSX_STUFF_SRCDIR)/bochs-icn.icns $(APP)/Contents/Resources
744	ls -ld $(APP) $(SCRIPT_EXEC) $(SCRIPT_EXEC)/rsrc
745	touch $(APP)/.build
746
747$(APP)/.build_plugins: $(APP)/.build bochs_plugins
748	rm -f $(APP)/.build_plugins
749	$(MKDIR) -p $(STANDALONE_LIBDIR);
750	list=`cd gui && echo *.la`; for i in $$list; do $(LIBTOOL) cp gui/$$i $(STANDALONE_LIBDIR); done;
751	list=`cd iodev && echo *.la`; for i in $$list; do $(LIBTOOL) cp iodev/$$i $(STANDALONE_LIBDIR); done;
752	$(LIBTOOL) --finish $(STANDALONE_LIBDIR);
753	touch $(APP)/.build_plugins
754
755install_macosx: all download_dlx install_man @INSTALL_DOCBOOK_VAR@
756	-mkdir -p $(DESTDIR)$(sharedir)
757	for i in $(INSTALL_LIST_MACOSX); do if test -e $$i; then $(CPMAC) -r $$i $(DESTDIR)$(sharedir); else $(CPMAC) -r $(srcdir)/$$i $(DESTDIR)$(sharedir); fi; done
758	$(CPMAC) $(srcdir)/.bochsrc $(DESTDIR)$(sharedir)/bochsrc-sample.txt
759	-mkdir $(DESTDIR)$(sharedir)/keymaps
760	$(CPMAC) $(srcdir)/gui/keymaps/*.map $(DESTDIR)$(sharedir)/keymaps
761	cat $(DLXLINUX_TAR) | (cd $(DESTDIR)$(sharedir) && tar xzvf -)
762	dlxrc=$(DESTDIR)$(sharedir)/dlxlinux/bochsrc.txt; mv "$$dlxrc" "$$dlxrc.orig" && sed < "$$dlxrc.orig" 's/\/usr\/local\/bochs\/latest/../' > "$$dlxrc" && rm -f "$$dlxrc.orig"
763	mv $(srcdir)/README $(srcdir)/README.orig
764	cat $(srcdir)/build/macosx/README.macosx-binary $(srcdir)/README.orig > $(DESTDIR)$(sharedir)/README
765	rm -f $(DESTDIR)$(sharedir)/README.orig
766	$(CPMAC) $(SCRIPT_EXEC) $(DESTDIR)$(sharedir)/dlxlinux
767#	for i in $(TEXT_FILE_LIST); do mv $(srcdir)/$$i $(DESTDIR)$(sharedir)/$$i.txt; done
768
769###########################################
770# dependencies generated by
771#  gcc -MM -I. -Iinstrument/stubs *.cc | sed -e 's/\.cc/.@CPP_SUFFIX@/g' -e 's,cpu/,cpu/,g'
772###########################################
773bxdisasm.o: bxdisasm.@CPP_SUFFIX@ config.h cpu/decoder/instr.h
774bxthread.o: bxthread.@CPP_SUFFIX@ bochs.h config.h osdep.h gui/paramtree.h logio.h \
775 instrument/stubs/instrument.h misc/bswap.h bxthread.h
776config.o: config.@CPP_SUFFIX@ bochs.h config.h osdep.h gui/paramtree.h logio.h \
777 cpudb.h instrument/stubs/instrument.h misc/bswap.h bxversion.h \
778 iodev/iodev.h bochs.h plugin.h extplugin.h param_names.h pc_system.h \
779 bx_debug/debug.h config.h osdep.h memory/memory-bochs.h \
780 gui/siminterface.h gui/paramtree.h gui/gui.h iodev/hdimage/hdimage.h \
781 iodev/network/netmod.h iodev/sound/soundmod.h iodev/usb/usb_common.h \
782 param_names.h
783crc.o: crc.@CPP_SUFFIX@ config.h
784gdbstub.o: gdbstub.@CPP_SUFFIX@ bochs.h config.h osdep.h gui/paramtree.h logio.h \
785 instrument/stubs/instrument.h misc/bswap.h param_names.h \
786 cpu/cpu.h bx_debug/debug.h config.h osdep.h cpu/decoder/decoder.h \
787 cpu/i387.h cpu/fpu/softfloat.h cpu/fpu/tag_w.h cpu/fpu/status_w.h \
788 cpu/fpu/control_w.h cpu/crregs.h cpu/descriptor.h cpu/decoder/instr.h \
789 cpu/lazy_flags.h cpu/tlb.h cpu/icache.h cpu/apic.h cpu/xmm.h cpu/vmx.h \
790 cpu/cpuid.h cpu/stack.h cpu/access.h
791logio.o: logio.@CPP_SUFFIX@ bochs.h config.h osdep.h gui/paramtree.h logio.h \
792 instrument/stubs/instrument.h misc/bswap.h gui/siminterface.h \
793 gui/paramtree.h pc_system.h bxthread.h cpu/cpu.h bx_debug/debug.h \
794 config.h osdep.h cpu/decoder/decoder.h cpu/i387.h cpu/fpu/softfloat.h \
795 cpu/fpu/tag_w.h cpu/fpu/status_w.h cpu/fpu/control_w.h cpu/crregs.h \
796 cpu/descriptor.h cpu/decoder/instr.h cpu/lazy_flags.h cpu/tlb.h \
797 cpu/icache.h cpu/apic.h cpu/xmm.h cpu/vmx.h cpu/cpuid.h cpu/access.h
798main.o: main.@CPP_SUFFIX@ bochs.h config.h osdep.h gui/paramtree.h logio.h \
799 instrument/stubs/instrument.h misc/bswap.h bxversion.h param_names.h \
800 config.h cpu/cpu.h bx_debug/debug.h osdep.h \
801 cpu/decoder/decoder.h cpu/i387.h cpu/fpu/softfloat.h cpu/fpu/tag_w.h \
802 cpu/fpu/status_w.h cpu/fpu/control_w.h cpu/crregs.h cpu/descriptor.h \
803 cpu/decoder/instr.h cpu/lazy_flags.h cpu/tlb.h cpu/icache.h cpu/apic.h \
804 cpu/xmm.h cpu/vmx.h cpu/cpuid.h cpu/access.h iodev/iodev.h bochs.h \
805 plugin.h extplugin.h param_names.h pc_system.h memory/memory-bochs.h \
806 gui/siminterface.h gui/paramtree.h gui/gui.h iodev/hdimage/hdimage.h \
807 iodev/network/netmod.h iodev/sound/soundmod.h iodev/usb/usb_common.h
808osdep.o: osdep.@CPP_SUFFIX@ bochs.h config.h osdep.h gui/paramtree.h logio.h \
809 instrument/stubs/instrument.h misc/bswap.h bxthread.h
810pc_system.o: pc_system.@CPP_SUFFIX@ bochs.h config.h osdep.h gui/paramtree.h \
811 logio.h instrument/stubs/instrument.h misc/bswap.h cpu/cpu.h \
812 bx_debug/debug.h config.h osdep.h cpu/decoder/decoder.h cpu/i387.h \
813 cpu/fpu/softfloat.h cpu/fpu/tag_w.h cpu/fpu/status_w.h \
814 cpu/fpu/control_w.h cpu/crregs.h cpu/descriptor.h cpu/decoder/instr.h \
815 cpu/lazy_flags.h cpu/tlb.h cpu/icache.h cpu/apic.h cpu/xmm.h cpu/vmx.h \
816 cpu/cpuid.h cpu/access.h iodev/iodev.h bochs.h plugin.h extplugin.h \
817 param_names.h pc_system.h memory/memory-bochs.h gui/siminterface.h \
818 gui/paramtree.h gui/gui.h
819plugin.o: plugin.@CPP_SUFFIX@ bochs.h config.h osdep.h gui/paramtree.h logio.h \
820 instrument/stubs/instrument.h misc/bswap.h iodev/iodev.h bochs.h \
821 plugin.h extplugin.h param_names.h pc_system.h bx_debug/debug.h config.h \
822 osdep.h memory/memory-bochs.h gui/siminterface.h gui/paramtree.h \
823 gui/gui.h plugin.h
824