![Volker Ruppert](/assets/img/avatar_default.png)
These changes are based on the SF patch #742670. It did not work with plugins disabled. Here is the descriiption of patch #742670: the library dependencies (see objdump -p file) in the main bochs binary and the gui plugins are wrong: - the gui plugins don't depend on their respective gui libraries - the main bochs binary depends on all the gui libraries this doesn't seem much of a problem, since the needed libraries are loaded anyway, but it's problematic when building packages for binary distribution of bochs. in Debian, the package building tools will set package dependencies according to the library dependencies of each file, so the result is: - the main bochs package depends on all libraries. this includes libwx, libsdl, libncurses and xlibs. - the indivudual plugin packages don't depend on any gui library so when a user wants to run bochs with the curses gui and installs the bochs-curses package, he/she will be forced to install Xfree86, WxWindows and GTK+ on his/her system. the attached patch fixes the problem by moving the linker flags related to GUI libraries to the right makefile (gui/Makefile.in)
741 lines
27 KiB
Makefile
741 lines
27 KiB
Makefile
# Copyright (C) 2002 MandrakeSoft S.A.
|
|
#
|
|
# MandrakeSoft S.A.
|
|
# 43, rue d'Aboukir
|
|
# 75002 Paris - France
|
|
# http://www.linux-mandrake.com/
|
|
# http://www.mandrakesoft.com/
|
|
#
|
|
# This library is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU Lesser General Public
|
|
# License as published by the Free Software Foundation; either
|
|
# version 2 of the License, or (at your option) any later version.
|
|
#
|
|
# This library is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
# Lesser General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Lesser General Public
|
|
# License along with this library; if not, write to the Free Software
|
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
#
|
|
####################################################
|
|
# NOTE: To be compatibile with nmake (microsoft vc++) please follow
|
|
# the following rules:
|
|
# use $(VAR) not ${VAR}
|
|
|
|
prefix = @prefix@
|
|
exec_prefix = @exec_prefix@
|
|
srcdir = @srcdir@
|
|
VPATH = @srcdir@
|
|
bindir = @bindir@
|
|
libdir = @libdir@
|
|
plugdir = @libdir@/bochs/plugins
|
|
mandir = @mandir@
|
|
man1dir = $(mandir)/man1
|
|
man5dir = $(mandir)/man5
|
|
docdir = $(prefix)/share/doc/bochs
|
|
sharedir = $(prefix)/share/bochs
|
|
top_builddir = .
|
|
top_srcdir = $(srcdir)
|
|
|
|
DESTDIR =
|
|
|
|
VERSION=@VERSION@
|
|
VER_STRING=@VER_STRING@
|
|
REL_STRING=@REL_STRING@
|
|
MAN_PAGE_1_LIST=bochs bximage bxcommit bochs-dlx
|
|
MAN_PAGE_5_LIST=bochsrc
|
|
INSTALL_LIST_SHARE=bios/BIOS-* bios/VGABIOS* @INSTALL_LIST_FOR_PLATFORM@
|
|
INSTALL_LIST_DOC=CHANGES COPYING README
|
|
INSTALL_LIST_BIN=bochs bximage bxcommit
|
|
INSTALL_LIST_BIN_OPTIONAL=bochsdbg
|
|
INSTALL_LIST_WIN32=$(INSTALL_LIST_SHARE) $(INSTALL_LIST_DOC) $(INSTALL_LIST_BIN) $(INSTALL_LIST_BIN_OPTIONAL) niclist
|
|
INSTALL_LIST_MACOSX=$(INSTALL_LIST_SHARE) $(INSTALL_LIST_DOC) bochs.app bochs.scpt bximage bxcommit
|
|
INSTALL_LIST_X11=install-x11-fonts test-x11-fonts font/vga.pcf
|
|
# for win32 and macosx, these files get renamed to *.txt in install process
|
|
TEXT_FILE_LIST=README CHANGES COPYING VGABIOS-elpin-LICENSE VGABIOS-lgpl-README
|
|
CP=cp
|
|
CAT=cat
|
|
RM=rm
|
|
MV=mv
|
|
LN_S=ln -sf
|
|
DLXLINUX_TAR=dlxlinux4.tar.gz
|
|
DLXLINUX_TAR_URL=http://bochs.sourceforge.net/guestos/$(DLXLINUX_TAR)
|
|
DLXLINUX_ROMFILE=BIOS-bochs-latest
|
|
GUNZIP=gunzip
|
|
WGET=wget
|
|
SED=sed
|
|
MKDIR=mkdir
|
|
RMDIR=rmdir
|
|
TAR=tar
|
|
CHMOD=chmod
|
|
GZIP=gzip -9
|
|
GUNZIP=gunzip
|
|
ZIP=zip
|
|
UNIX2DOS=unix2dos
|
|
LIBTOOL=@LIBTOOL@
|
|
DLLTOOL=dlltool
|
|
|
|
@SUFFIX_LINE@
|
|
|
|
srcdir = @srcdir@
|
|
VPATH = @srcdir@
|
|
|
|
SHELL = /bin/sh
|
|
|
|
@SET_MAKE@
|
|
|
|
CC = @CC@
|
|
CXX = @CXX@
|
|
CFLAGS = @CFLAGS@ @GUI_CFLAGS@ $(MCH_CFLAGS) $(FLA_FLAGS) @DEFINE_PLUGIN_PATH@ -DBX_SHARE_PATH='"$(sharedir)"'
|
|
CXXFLAGS = @CXXFLAGS@ @GUI_CXXFLAGS@ $(MCH_CFLAGS) $(FLA_FLAGS) @DEFINE_PLUGIN_PATH@ -DBX_SHARE_PATH='"$(sharedir)"'
|
|
|
|
LDFLAGS = @LDFLAGS@
|
|
LIBS = @LIBS@
|
|
# To compile with readline:
|
|
# linux needs just -lreadline
|
|
# solaris needs -lreadline -lcurses
|
|
X_LIBS = @X_LIBS@
|
|
X_PRE_LIBS = @X_PRE_LIBS@
|
|
GUI_LINK_OPTS_X = $(X_LIBS) $(X_PRE_LIBS) -lX11 -lXpm
|
|
GUI_LINK_OPTS_SDL = `sdl-config --cflags --libs`
|
|
GUI_LINK_OPTS_SVGA = -lvga -lvgagl
|
|
GUI_LINK_OPTS_BEOS = -lbe
|
|
GUI_LINK_OPTS_RFB = @RFB_LIBS@
|
|
GUI_LINK_OPTS_AMIGAOS =
|
|
GUI_LINK_OPTS_WIN32 = -luser32 -lgdi32 -lcomdlg32 -lcomctl32
|
|
GUI_LINK_OPTS_WIN32_VCPP = user32.lib gdi32.lib winmm.lib \
|
|
comdlg32.lib comctl32.lib wsock32.lib
|
|
GUI_LINK_OPTS_MACOS =
|
|
GUI_LINK_OPTS_CARBON = -framework Carbon
|
|
GUI_LINK_OPTS_NOGUI =
|
|
GUI_LINK_OPTS_TERM = @GUI_LINK_OPTS_TERM@
|
|
GUI_LINK_OPTS_WX = @GUI_LINK_OPTS_WX@
|
|
GUI_LINK_OPTS = @GUI_LINK_OPTS@ @DEVICE_LINK_OPTS@
|
|
RANLIB = @RANLIB@
|
|
|
|
CFLAGS_CONSOLE = @CFLAGS@ $(MCH_CFLAGS) $(FLA_FLAGS)
|
|
CXXFLAGS_CONSOLE = @CXXFLAGS@ $(MCH_CFLAGS) $(FLA_FLAGS)
|
|
|
|
BX_INCDIRS = -I. -I$(srcdir)/. -I@INSTRUMENT_DIR@ -I$(srcdir)/@INSTRUMENT_DIR@
|
|
|
|
#SUBDIRS = iodev debug
|
|
|
|
#all install uninstall: config.h#
|
|
# for subdir in $(SUBDIRS); do #
|
|
# echo making $@ in $$subdir; #
|
|
# (cd $$subdir && $(MAKE) $(MDEFINES) $@) || exit 1; #
|
|
# done#
|
|
|
|
|
|
|
|
# gnu flags for clean up
|
|
#CFLAGS = -ansi -O -g -Wunused -Wuninitialized
|
|
|
|
|
|
NONINLINE_OBJS = \
|
|
logio.o \
|
|
main.o \
|
|
load32bitOShack.o \
|
|
state_file.o \
|
|
pc_system.o \
|
|
osdep.o \
|
|
plugin.o \
|
|
@EXTRA_BX_OBJS@
|
|
|
|
EXTERN_ENVIRONMENT_OBJS = \
|
|
main.o \
|
|
load32bitOShack.o \
|
|
state_file.o \
|
|
pc_system.o
|
|
|
|
DEBUGGER_LIB = debug/libdebug.a
|
|
DISASM_LIB = disasm/libdisasm.a
|
|
INSTRUMENT_LIB = @INSTRUMENT_DIR@/libinstrument.a
|
|
FPU_LIB = fpu/libfpu.a
|
|
READLINE_LIB = @READLINE_LIB@
|
|
EXTRA_LINK_OPTS = @EXTRA_LINK_OPTS@
|
|
|
|
GDBSTUB_OBJS = gdbstub.o
|
|
|
|
BX_OBJS = @NONINLINE_VAR@
|
|
|
|
BX_INCLUDES = bochs.h config.h osdep.h
|
|
|
|
|
|
.@CPP_SUFFIX@.o:
|
|
$(CXX) @DASH@c $(BX_INCDIRS) $(CXXFLAGS) @CXXFP@$< @OFP@$@
|
|
.c.o:
|
|
$(CC) @DASH@c $(BX_INCDIRS) $(CFLAGS) $(FPU_FLAGS) $< @OFP@$@
|
|
|
|
|
|
all: @PRIMARY_TARGET@ @PLUGIN_TARGET@ bximage@EXE@ bxcommit@EXE@ @BUILD_DOCBOOK_VAR@
|
|
|
|
@EXTERNAL_DEPENDENCY@
|
|
|
|
bochs@EXE@: @IODEV_LIB_VAR@ @DEBUGGER_VAR@ \
|
|
cpu/libcpu.a memory/libmemory.a gui/libgui.a \
|
|
@DISASM_VAR@ @INSTRUMENT_VAR@ $(BX_OBJS) \
|
|
$(SIMX86_OBJS) @FPU_VAR@ @GDBSTUB_VAR@ @PLUGIN_VAR@
|
|
@LINK@ -export-dynamic $(BX_OBJS) $(SIMX86_OBJS) \
|
|
iodev/libiodev.a cpu/libcpu.a memory/libmemory.a gui/libgui.a \
|
|
@DEBUGGER_VAR@ @DISASM_VAR@ @INSTRUMENT_VAR@ @PLUGIN_VAR@ \
|
|
@GDBSTUB_VAR@ @FPU_VAR@ \
|
|
@NONPLUGIN_GUI_LINK_OPTS@ \
|
|
$(MCH_LINK_FLAGS) \
|
|
$(SIMX86_LINK_FLAGS) \
|
|
$(READLINE_LIB) \
|
|
$(EXTRA_LINK_OPTS) \
|
|
$(LIBS)
|
|
|
|
# Special make target for cygwin/mingw using dlltool instead of
|
|
# libtool. This creates a .DEF file, and exports file, an import library,
|
|
# and then links bochs.exe with the exports file.
|
|
.win32_dll_plugin_target: @IODEV_LIB_VAR@ @DEBUGGER_VAR@ \
|
|
cpu/libcpu.a memory/libmemory.a gui/libgui.a \
|
|
@DISASM_VAR@ @INSTRUMENT_VAR@ $(BX_OBJS) \
|
|
$(SIMX86_OBJS) @FPU_VAR@ @GDBSTUB_VAR@ @PLUGIN_VAR@
|
|
$(DLLTOOL) --export-all-symbols --output-def bochs.def \
|
|
$(BX_OBJS) $(SIMX86_OBJS) \
|
|
@IODEV_LIB_VAR@ cpu/libcpu.a memory/libmemory.a gui/libgui.a \
|
|
@DEBUGGER_VAR@ @DISASM_VAR@ @INSTRUMENT_VAR@ @PLUGIN_VAR@ \
|
|
@GDBSTUB_VAR@ @FPU_VAR@
|
|
$(DLLTOOL) --dllname bochs.exe --def bochs.def --output-lib dllexports.a
|
|
$(DLLTOOL) --dllname bochs.exe --output-exp bochs.exp --def bochs.def
|
|
$(CXX) -o bochs.exe $(CXXFLAGS) $(LDFLAGS) -export-dynamic \
|
|
$(BX_OBJS) bochs.exp $(SIMX86_OBJS) \
|
|
@IODEV_LIB_VAR@ cpu/libcpu.a memory/libmemory.a gui/libgui.a \
|
|
@DEBUGGER_VAR@ @DISASM_VAR@ @INSTRUMENT_VAR@ @PLUGIN_VAR@ \
|
|
@GDBSTUB_VAR@ @FPU_VAR@ \
|
|
@NONPLUGIN_GUI_LINK_OPTS@ \
|
|
$(MCH_LINK_FLAGS) \
|
|
$(SIMX86_LINK_FLAGS) \
|
|
$(READLINE_LIB) \
|
|
$(EXTRA_LINK_OPTS) \
|
|
$(LIBS)
|
|
touch .win32_dll_plugin_target
|
|
|
|
bochs_plugins:
|
|
cd gui && $(MAKE) plugins
|
|
cd iodev && $(MAKE) plugins
|
|
|
|
bximage@EXE@: misc/bximage.o
|
|
@LINK_CONSOLE@ misc/bximage.o
|
|
|
|
bxcommit@EXE@: misc/bxcommit.o
|
|
@LINK_CONSOLE@ misc/bxcommit.o
|
|
|
|
# compile with console CXXFLAGS, not gui CXXFLAGS
|
|
misc/bximage.o: $(srcdir)/misc/bximage.c
|
|
$(CC) @DASH@c $(BX_INCDIRS) $(CFLAGS_CONSOLE) @CXXFP@$(srcdir)/misc/bximage.c @OFP@$@
|
|
|
|
misc/bxcommit.o: $(srcdir)/misc/bxcommit.c
|
|
$(CC) @DASH@c $(BX_INCDIRS) $(CFLAGS_CONSOLE) @CXXFP@$(srcdir)/misc/bxcommit.c @OFP@$@
|
|
|
|
niclist@EXE@: misc/niclist.o
|
|
@LINK@ misc/niclist.o
|
|
|
|
$(BX_OBJS): $(BX_INCLUDES)
|
|
|
|
bxversion.h:
|
|
$(RM) -f bxversion.h
|
|
echo '/////////////////////////////////////////////////////////////////////////' > bxversion.h
|
|
echo '// $$Id: Makefile.in,v 1.149 2003-05-24 17:09:21 vruppert Exp $$' >> bxversion.h
|
|
echo '/////////////////////////////////////////////////////////////////////////' >> bxversion.h
|
|
echo '// This file is generated by "make bxversion.h"' >> bxversion.h
|
|
echo "#define VER_STRING \"$(VER_STRING)\"" >> bxversion.h
|
|
echo "#define REL_STRING \"$(REL_STRING)\"" >> bxversion.h
|
|
|
|
iodev/libiodev.a::
|
|
cd iodev @COMMAND_SEPARATOR@
|
|
$(MAKE) $(MDEFINES) libiodev.a
|
|
@CD_UP_ONE@
|
|
|
|
debug/libdebug.a::
|
|
cd debug @COMMAND_SEPARATOR@
|
|
$(MAKE) $(MDEFINES) libdebug.a
|
|
@CD_UP_ONE@
|
|
|
|
cpu/libcpu.a::
|
|
cd cpu @COMMAND_SEPARATOR@
|
|
$(MAKE) $(MDEFINES) libcpu.a
|
|
@CD_UP_ONE@
|
|
|
|
memory/libmemory.a::
|
|
cd memory @COMMAND_SEPARATOR@
|
|
$(MAKE) $(MDEFINES) libmemory.a
|
|
@CD_UP_ONE@
|
|
|
|
gui/libgui.a::
|
|
cd gui @COMMAND_SEPARATOR@
|
|
$(MAKE) $(MDEFINES) libgui.a
|
|
@CD_UP_ONE@
|
|
|
|
disasm/libdisasm.a::
|
|
cd disasm @COMMAND_SEPARATOR@
|
|
$(MAKE) $(MDEFINES) libdisasm.a
|
|
@CD_UP_ONE@
|
|
|
|
@INSTRUMENT_DIR@/libinstrument.a::
|
|
cd @INSTRUMENT_DIR@ @COMMAND_SEPARATOR@
|
|
$(MAKE) $(MDEFINES) libinstrument.a
|
|
@CD_UP_TWO@
|
|
|
|
fpu/libfpu.a::
|
|
cd fpu @COMMAND_SEPARATOR@
|
|
$(MAKE) $(MDEFINES) libfpu.a
|
|
@CD_UP_ONE@
|
|
|
|
libbochs.a:
|
|
-rm -f libbochs.a
|
|
ar rv libbochs.a $(EXTERN_ENVIRONMENT_OBJS)
|
|
$(RANLIB) libbochs.a
|
|
|
|
libbochs_cpu.a: @DEBUGGER_VAR@ $(BX_OBJS)
|
|
-rm -f libbochs_cpu.a
|
|
ar rv libbochs_cpu.a $(BX_OBJS)
|
|
$(RANLIB) libbochs_cpu.a
|
|
|
|
# for wxWindows port, on win32 platform
|
|
wxbochs_resources.o: wxbochs.rc
|
|
windres $(srcdir)/wxbochs.rc -o $@ --include-dir=`@WX_CONFIG@ --prefix`/include
|
|
|
|
# for win32 gui
|
|
win32res.o: win32res.rc
|
|
windres $(srcdir)/win32res.rc -o $@
|
|
|
|
#####################################################################
|
|
# Install target for all platforms.
|
|
#####################################################################
|
|
|
|
install: all @INSTALL_TARGET@
|
|
|
|
#####################################################################
|
|
# Install target for win32
|
|
#
|
|
# This is intended to be run in cygwin, since it has better scripting
|
|
# tools.
|
|
#####################################################################
|
|
|
|
install_win32: download_dlx @INSTALL_DOCBOOK_VAR@
|
|
-mkdir -p $(prefix)
|
|
cp obj-release/*.exe .
|
|
for i in $(INSTALL_LIST_WIN32) niclist; do if test -f $$i; then cp $$i $(prefix); else cp $(srcdir)/$$i $(prefix); fi; done
|
|
cp $(srcdir)/misc/sb16/sb16ctrl.example $(prefix)/sb16ctrl.txt
|
|
cp $(srcdir)/misc/sb16/sb16ctrl.exe $(prefix)
|
|
#cat $(srcdir)/build/win32/DOC-win32.htm | $(SED) -e 's/@VERSION@/$(VERSION)/g' > $(prefix)/DOC-win32.htm
|
|
cp $(srcdir)/.bochsrc $(prefix)/bochsrc-sample.txt
|
|
-mkdir $(prefix)/keymaps
|
|
cp $(srcdir)/gui/keymaps/*.map $(prefix)/keymaps
|
|
cat $(DLXLINUX_TAR) | (cd $(prefix) && tar xzvf -)
|
|
echo '..\bochs' > $(prefix)/dlxlinux/start.bat
|
|
dlxrc=$(prefix)/dlxlinux/bochsrc.txt; mv $$dlxrc $$dlxrc.orig && sed < $$dlxrc.orig 's/\/usr\/local\/bochs\/latest/../' > $$dlxrc && rm -f $$dlxrc.orig
|
|
mv $(prefix)/README $(prefix)/README.orig
|
|
cat $(srcdir)/build/win32/README.win32-binary $(prefix)/README.orig > $(prefix)/README
|
|
rm -f $(prefix)/README.orig
|
|
for i in $(TEXT_FILE_LIST); do mv $(prefix)/$$i $(prefix)/$$i.txt; done
|
|
cd $(prefix); $(UNIX2DOS) *.txt */*.txt
|
|
cd $(prefix); NAME=`pwd|$(SED) 's/.*\///'`; (cd ..; $(ZIP) $$NAME.zip -r $$NAME); ls -l ../$$NAME.zip
|
|
|
|
#####################################################################
|
|
# install target for unix
|
|
#####################################################################
|
|
|
|
install_unix: install_bin @INSTALL_PLUGINS_VAR@ install_man install_share install_doc @INSTALL_DOCBOOK_VAR@
|
|
|
|
install_bin::
|
|
for i in $(DESTDIR)$(bindir); do mkdir -p $$i && test -d $$i && test -w $$i; done
|
|
if test -f install-x11-fonts; then $(CHMOD) a+x install-x11-fonts; fi
|
|
if test -f test-x11-fonts; then $(CHMOD) a+x test-x11-fonts; fi
|
|
for i in $(INSTALL_LIST_BIN); do if test -f $$i; then cp $$i $(DESTDIR)$(bindir); else cp $(srcdir)/$$i $(DESTDIR)$(bindir); fi; done
|
|
-for i in $(INSTALL_LIST_BIN_OPTIONAL); do if test -f $$i; then cp $$i $(DESTDIR)$(bindir); else cp $(srcdir)/$$i $(DESTDIR)$(bindir); fi; done
|
|
|
|
install_libtool_plugins::
|
|
for i in $(DESTDIR)$(plugdir); do mkdir -p $$i && test -d $$i && test -w $$i; done
|
|
list=`cd gui && echo *.la`; for i in $$list; do $(LIBTOOL) cp gui/$$i $(DESTDIR)$(plugdir); done
|
|
list=`cd iodev && echo *.la`; for i in $$list; do $(LIBTOOL) cp iodev/$$i $(DESTDIR)$(plugdir); done
|
|
$(LIBTOOL) --finish $(DESTDIR)$(plugdir)
|
|
|
|
install_dll_plugins::
|
|
for i in $(DESTDIR)$(plugdir); do mkdir -p $$i && test -d $$i && test -w $$i; done
|
|
list=`cd gui && echo *.dll`; for i in $$list; do cp gui/$$i $(DESTDIR)$(plugdir); done
|
|
list=`cd iodev && echo *.dll`; for i in $$list; do cp iodev/$$i $(DESTDIR)$(plugdir); done
|
|
|
|
install_share::
|
|
for i in $(DESTDIR)$(sharedir); do mkdir -p $$i && test -d $$i && test -w $$i; done
|
|
for i in $(INSTALL_LIST_SHARE); do if test -f $$i; then cp $$i $(DESTDIR)$(sharedir); else cp $(srcdir)/$$i $(DESTDIR)$(sharedir); fi; done
|
|
$(CP) -r $(srcdir)/gui/keymaps $(DESTDIR)$(sharedir)
|
|
|
|
install_doc::
|
|
for i in $(DESTDIR)$(docdir); do mkdir -p $$i && test -d $$i && test -w $$i; done
|
|
for i in $(INSTALL_LIST_DOC); do if test -f $$i; then cp $$i $(DESTDIR)$(docdir); else cp $(srcdir)/$$i $(DESTDIR)$(docdir); fi; done
|
|
$(RM) -f $(DESTDIR)$(docdir)/README
|
|
$(CAT) $(srcdir)/build/linux/README.linux-binary $(srcdir)/README > $(DESTDIR)$(docdir)/README
|
|
$(CP) $(srcdir)/.bochsrc $(DESTDIR)$(docdir)/bochsrc-sample.txt
|
|
|
|
|
|
build_docbook::
|
|
cd doc/docbook; make
|
|
|
|
dl_docbook::
|
|
cd doc/docbook; make dl_docs
|
|
|
|
install_docbook: build_docbook
|
|
cd doc/docbook; make install
|
|
|
|
install_man::
|
|
-mkdir -p $(DESTDIR)$(man1dir)
|
|
-mkdir -p $(DESTDIR)$(man5dir)
|
|
for i in $(MAN_PAGE_1_LIST); do cat $(srcdir)/doc/man/$$i.1 | $(SED) 's/@version@/$(VERSION)/g' | $(GZIP) -c > $(DESTDIR)$(man1dir)/$$i.1.gz; chmod 644 $(DESTDIR)$(man1dir)/$$i.1.gz; done
|
|
for i in $(MAN_PAGE_5_LIST); do cat $(srcdir)/doc/man/$$i.5 | $(GZIP) -c > $(DESTDIR)$(man5dir)/$$i.5.gz; chmod 644 $(DESTDIR)$(man5dir)/$$i.5.gz; done
|
|
|
|
download_dlx: $(DLXLINUX_TAR)
|
|
|
|
$(DLXLINUX_TAR):
|
|
$(RM) -f $(DLXLINUX_TAR)
|
|
$(WGET) $(DLXLINUX_TAR_URL)
|
|
test -f $(DLXLINUX_TAR)
|
|
|
|
unpack_dlx: $(DLXLINUX_TAR)
|
|
rm -rf dlxlinux
|
|
$(GUNZIP) -c $(DLXLINUX_TAR) | $(TAR) -xvf -
|
|
test -d dlxlinux
|
|
(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)
|
|
|
|
install_dlx:
|
|
$(RM) -rf $(DESTDIR)$(sharedir)/dlxlinux
|
|
cp -r dlxlinux $(DESTDIR)$(sharedir)/dlxlinux
|
|
$(CHMOD) 755 $(DESTDIR)$(sharedir)/dlxlinux
|
|
$(GZIP) $(DESTDIR)$(sharedir)/dlxlinux/hd10meg.img
|
|
$(CHMOD) 644 $(DESTDIR)$(sharedir)/dlxlinux/*
|
|
for i in bochs-dlx; do cp $(srcdir)/build/linux/$$i $(bindir)/$$i; $(CHMOD) 755 $(DESTDIR)$(bindir)/$$i; done
|
|
|
|
uninstall::
|
|
$(RM) -rf $(DESTDIR)$(sharedir)
|
|
$(RM) -rf $(DESTDIR)$(docdir)
|
|
for i in bochs bximage bxcommit bochs-dlx; do rm -f $(DESTDIR)$(bindir)/$$i; done
|
|
for i in $(MAN_PAGE_1_LIST); do $(RM) -f $(man1dir)/$$i.1.gz; done
|
|
for i in $(MAN_PAGE_5_LIST); do $(RM) -f $(man5dir)/$$i.5.gz; done
|
|
|
|
V6WORKSPACE_ZIP=build/win32/workspace.zip
|
|
V6WORKSPACE_FILES=bochs.dsw bochs.dsp bochs.opt cpu/cpu.dsp \
|
|
memory/memory.dsp iodev/iodev.dsp instrument/stubs/stubs.dsp \
|
|
gui/gui.dsp fpu/fpu.dsp disasm/disasm.dsp debug/debug.dsp \
|
|
misc/niclist.dsp bximage.dsp
|
|
|
|
v6workspace:
|
|
zip $(V6WORKSPACE_ZIP) $(V6WORKSPACE_FILES)
|
|
|
|
########
|
|
# the win32_snap target is used to create a ZIP of bochs sources configured
|
|
# for VC++. This ZIP is stuck on the website every once in a while to make
|
|
# it easier for VC++ users to compile bochs. First, you should
|
|
# run "sh .conf.win32-vcpp" to configure the source code, then do
|
|
# "make win32_snap" to unzip the workspace files and create the ZIP.
|
|
########
|
|
win32_snap:
|
|
unzip $(V6WORKSPACE_ZIP)
|
|
make zip
|
|
|
|
tar:
|
|
NAME=`pwd|$(SED) 's/.*\///'`; (cd ..; tar cf - $$NAME | $(GZIP) > $$NAME.tar.gz); ls -l ../$$NAME.tar.gz
|
|
|
|
zip:
|
|
NAME=`pwd|$(SED) 's/.*\///'`; (cd ..; $(ZIP) $$NAME.zip -r $$NAME); ls -l ../$$NAME.zip
|
|
|
|
clean:
|
|
@RMCOMMAND@ *.o
|
|
@RMCOMMAND@ *.a
|
|
@RMCOMMAND@ bochs
|
|
@RMCOMMAND@ bochs.exe
|
|
@RMCOMMAND@ bximage
|
|
@RMCOMMAND@ bximage.exe
|
|
@RMCOMMAND@ bxcommit
|
|
@RMCOMMAND@ bxcommit.exe
|
|
@RMCOMMAND@ niclist
|
|
@RMCOMMAND@ niclist.exe
|
|
@RMCOMMAND@ bochs.out
|
|
@RMCOMMAND@ bochsout.txt
|
|
@RMCOMMAND@ bochs.exp
|
|
@RMCOMMAND@ bochs.def
|
|
@RMCOMMAND@ bochs.scpt
|
|
@RMCOMMAND@ -rf bochs.app
|
|
@RMCOMMAND@ -rf .libs
|
|
@RMCOMMAND@ .win32_dll_plugin_target
|
|
|
|
local-dist-clean: clean
|
|
@RMCOMMAND@ config.h config.status config.log config.cache
|
|
@RMCOMMAND@ .dummy `find . -name '*.dsp' -o -name '*.dsw' -o -name '*.opt'`
|
|
@RMCOMMAND@ bxversion.h install-x11-fonts build/linux/bochs-dlx _rpm_top *.rpm
|
|
@RMCOMMAND@ libtool
|
|
@RMCOMMAND@ ltdlconf.h
|
|
|
|
all-clean: clean
|
|
cd iodev @COMMAND_SEPARATOR@
|
|
$(MAKE) clean
|
|
@CD_UP_ONE@
|
|
cd debug @COMMAND_SEPARATOR@
|
|
$(MAKE) clean
|
|
@CD_UP_ONE@
|
|
cd cpu @COMMAND_SEPARATOR@
|
|
$(MAKE) clean
|
|
@CD_UP_ONE@
|
|
cd memory @COMMAND_SEPARATOR@
|
|
$(MAKE) clean
|
|
@CD_UP_ONE@
|
|
cd gui @COMMAND_SEPARATOR@
|
|
$(MAKE) clean
|
|
@CD_UP_ONE@
|
|
cd disasm @COMMAND_SEPARATOR@
|
|
$(MAKE) clean
|
|
@CD_UP_ONE@
|
|
cd @INSTRUMENT_DIR@ @COMMAND_SEPARATOR@
|
|
$(MAKE) clean
|
|
@CD_UP_TWO@
|
|
cd misc @COMMAND_SEPARATOR@
|
|
$(MAKE) clean
|
|
@CD_UP_ONE@
|
|
cd fpu @COMMAND_SEPARATOR@
|
|
$(MAKE) clean
|
|
@CD_UP_ONE@
|
|
cd doc/docbook @COMMAND_SEPARATOR@
|
|
$(MAKE) clean
|
|
@CD_UP_TWO@
|
|
|
|
dist-clean: local-dist-clean
|
|
cd iodev @COMMAND_SEPARATOR@
|
|
$(MAKE) dist-clean
|
|
@CD_UP_ONE@
|
|
cd debug @COMMAND_SEPARATOR@
|
|
$(MAKE) dist-clean
|
|
@CD_UP_ONE@
|
|
cd bios @COMMAND_SEPARATOR@
|
|
$(MAKE) dist-clean
|
|
@CD_UP_ONE@
|
|
cd cpu @COMMAND_SEPARATOR@
|
|
$(MAKE) dist-clean
|
|
@CD_UP_ONE@
|
|
cd memory @COMMAND_SEPARATOR@
|
|
$(MAKE) dist-clean
|
|
@CD_UP_ONE@
|
|
cd gui @COMMAND_SEPARATOR@
|
|
$(MAKE) dist-clean
|
|
@CD_UP_ONE@
|
|
cd disasm @COMMAND_SEPARATOR@
|
|
$(MAKE) dist-clean
|
|
@CD_UP_ONE@
|
|
cd @INSTRUMENT_DIR@ @COMMAND_SEPARATOR@
|
|
$(MAKE) dist-clean
|
|
@CD_UP_TWO@
|
|
cd misc @COMMAND_SEPARATOR@
|
|
$(MAKE) dist-clean
|
|
@CD_UP_ONE@
|
|
cd fpu @COMMAND_SEPARATOR@
|
|
$(MAKE) dist-clean
|
|
@CD_UP_ONE@
|
|
cd doc/docbook @COMMAND_SEPARATOR@
|
|
$(MAKE) dist-clean
|
|
@CD_UP_TWO@
|
|
@RMCOMMAND@ Makefile
|
|
|
|
###########################################
|
|
# Build app on MacOS X
|
|
###########################################
|
|
MACOSX_STUFF=build/macosx
|
|
MACOSX_STUFF_SRCDIR=$(srcdir)/$(MACOSX_STUFF)
|
|
APP=bochs.app
|
|
APP_PLATFORM=MacOS
|
|
SCRIPT_EXEC=bochs.scpt
|
|
SCRIPT_DATA=$(MACOSX_STUFF_SRCDIR)/script.data
|
|
SCRIPT_R=$(MACOSX_STUFF_SRCDIR)/script.r
|
|
SCRIPT_APPLESCRIPT=$(MACOSX_STUFF_SRCDIR)/bochs.applescript
|
|
SCRIPT_COMPILED_RSRC=$(MACOSX_STUFF)/script_compiled.rsrc
|
|
REZ=/Developer/Tools/Rez
|
|
CPMAC=/Developer/Tools/CpMac
|
|
RINCLUDES=/System/Library/Frameworks/Carbon.framework/Libraries/RIncludes
|
|
REZ_ARGS=-append -i $RINCLUDES -d SystemSevenOrLater=1 -useDF
|
|
STANDALONE_LIBDIR=`pwd`/$(APP)/Contents/$(APP_PLATFORM)/lib
|
|
OSACOMPILE=/usr/bin/osacompile
|
|
SETFILE=/Developer/Tools/Setfile
|
|
|
|
# On a MacOS X machine, you run rez, osacompile, and setfile to
|
|
# produce the script executable, which has both a data fork and a
|
|
# resource fork. Ideally, we would just recompile the whole
|
|
# executable at build time, but unfortunately this cannot be done on
|
|
# the SF compile farm through an ssh connection because osacompile
|
|
# needs to be run locally for some reason. Solution: If the script
|
|
# sources are changed, rebuild the executable on a MacOSX machine,
|
|
# split it into its data and resource forks and check them into CVS
|
|
# as separate files. Then at release time, all that's left to do is
|
|
# put the data and resource forks back together to make a working script.
|
|
# (This can be done through ssh.)
|
|
#
|
|
# Sources:
|
|
# 1. script.r: resources for the script
|
|
# 2. script.data: binary data for the script
|
|
# 3. bochs.applescript: the source of the script
|
|
#
|
|
# NOTE: All of this will fail if you aren't building on an HFS+
|
|
# filesystem! On the SF compile farm building in your user directory
|
|
# will fail, while doing the build in /tmp will work ok.
|
|
|
|
# check if this filesystem supports resource forks at all
|
|
test_hfsplus:
|
|
$(RM) -rf test_hfsplus
|
|
echo data > test_hfsplus
|
|
# if you get "Not a directory", then this filesystem doesn't support resources
|
|
echo resource > test_hfsplus/rsrc
|
|
# test succeeded
|
|
$(RM) -rf test_hfsplus
|
|
|
|
# Step 1 (must be done locally on MacOSX, only when sources change)
|
|
# Compile and pull out just the resource fork. The resource fork is
|
|
# checked into CVS as script_compiled.rsrc. Note that we don't need
|
|
# to check in the data fork of tmpscript because it is identical to the
|
|
# script.data input file.
|
|
$(SCRIPT_COMPILED_RSRC): $(SCRIPT_R) $(SCRIPT_APPLESCRIPT)
|
|
$(RM) -f tmpscript
|
|
$(CP) -f $(SCRIPT_DATA) tmpscript
|
|
$(REZ) -append $(SCRIPT_R) -o tmpscript
|
|
$(OSACOMPILE) -o tmpscript $(SCRIPT_APPLESCRIPT)
|
|
$(CP) tmpscript/rsrc $(SCRIPT_COMPILED_RSRC)
|
|
$(RM) -f tmpscript
|
|
|
|
# Step 2 (can be done locally or remotely on MacOSX)
|
|
# Combine the data fork and resource fork, and set attributes.
|
|
$(SCRIPT_EXEC): $(SCRIPT_DATA) $(SCRIPT_COMPILED_RSRC)
|
|
rm -f $(SCRIPT_EXEC)
|
|
$(CP) $(SCRIPT_DATA) $(SCRIPT_EXEC)
|
|
if test ! -f $(SCRIPT_COMPILED_RSRC); then $(CP) $(srcdir)/$(SCRIPT_COMPILED_RSRC) $(SCRIPT_COMPILED_RSRC); fi
|
|
$(CP) $(SCRIPT_COMPILED_RSRC) $(SCRIPT_EXEC)/rsrc
|
|
$(SETFILE) -t "APPL" -c "aplt" $(SCRIPT_EXEC)
|
|
|
|
$(APP)/.build: bochs test_hfsplus $(SCRIPT_EXEC)
|
|
rm -f $(APP)/.build
|
|
$(MKDIR) -p $(APP)
|
|
$(MKDIR) -p $(APP)/Contents
|
|
$(CP) -f $(MACOSX_STUFF)/Info.plist $(APP)/Contents
|
|
$(CP) -f $(MACOSX_STUFF_SRCDIR)/pbdevelopment.plist $(APP)/Contents
|
|
echo -n "APPL????" > $(APP)/Contents/PkgInfo
|
|
$(MKDIR) -p $(APP)/Contents/$(APP_PLATFORM)
|
|
$(CP) bochs $(APP)/Contents/$(APP_PLATFORM)
|
|
$(MKDIR) -p $(APP)/Contents/Resources
|
|
$(REZ) $(REZ_ARGS) $(MACOSX_STUFF_SRCDIR)/bochs.r -o $(APP)/Contents/Resources/bochs.rsrc
|
|
$(CP) -f $(MACOSX_STUFF_SRCDIR)/bochs-icn.icns $(APP)/Contents/Resources
|
|
ls -ld $(APP) $(SCRIPT_EXEC) $(SCRIPT_EXEC)/rsrc
|
|
touch $(APP)/.build
|
|
|
|
$(APP)/.build_plugins: $(APP)/.build bochs_plugins
|
|
rm -f $(APP)/.build_plugins
|
|
$(MKDIR) -p $(STANDALONE_LIBDIR);
|
|
list=`cd gui && echo *.la`; for i in $$list; do $(LIBTOOL) cp gui/$$i $(STANDALONE_LIBDIR); done;
|
|
list=`cd iodev && echo *.la`; for i in $$list; do $(LIBTOOL) cp iodev/$$i $(STANDALONE_LIBDIR); done;
|
|
$(LIBTOOL) --finish $(STANDALONE_LIBDIR);
|
|
touch $(APP)/.build_plugins
|
|
|
|
install_macosx: all download_dlx @INSTALL_DOCBOOK_VAR@
|
|
-mkdir -p $(prefix)
|
|
for i in $(INSTALL_LIST_MACOSX); do if test -e $$i; then $(CPMAC) -r $$i $(prefix); else $(CPMAC) -r $(srcdir)/$$i $(prefix); fi; done
|
|
$(CPMAC) $(srcdir)/.bochsrc $(prefix)/bochsrc-sample.txt
|
|
-mkdir $(prefix)/keymaps
|
|
$(CPMAC) $(srcdir)/gui/keymaps/*.map $(prefix)/keymaps
|
|
cat $(DLXLINUX_TAR) | (cd $(prefix) && tar xzvf -)
|
|
dlxrc=$(prefix)/dlxlinux/bochsrc.txt; mv "$$dlxrc" "$$dlxrc.orig" && sed < "$$dlxrc.orig" 's/\/usr\/local\/bochs\/latest/../' > "$$dlxrc" && rm -f "$$dlxrc.orig"
|
|
mv $(prefix)/README $(prefix)/README.orig
|
|
cat $(srcdir)/build/macosx/README.macosx-binary $(prefix)/README.orig > $(prefix)/README
|
|
rm -f $(prefix)/README.orig
|
|
$(CPMAC) $(SCRIPT_EXEC) $(prefix)/dlxlinux
|
|
for i in $(TEXT_FILE_LIST); do mv $(prefix)/$$i $(prefix)/$$i.txt; done
|
|
|
|
###########################################
|
|
# BeOS make target.
|
|
# Build the binary normally, then copy the resource attributes.
|
|
###########################################
|
|
.bochs_beos_target: bochs@EXE@
|
|
unzip $(srcdir)/build/beos/resource.zip
|
|
copyattr -t ICON BeBochs.rsrc bochs
|
|
copyattr -t MICN BeBochs.rsrc bochs
|
|
|
|
###########################################
|
|
# dependencies generated by
|
|
# gcc -MM -I. -Iinstrument/stubs *.cc | sed -e 's/\.cc/.@CPP_SUFFIX@/g' -e 's,cpu/,cpu/,g'
|
|
###########################################
|
|
gdbstub.o: gdbstub.@CPP_SUFFIX@ bochs.h config.h osdep.h debug/debug.h \
|
|
bxversion.h gui/siminterface.h state_file.h cpu/cpu.h \
|
|
cpu/lazy_flags.h cpu/i387.h memory/memory.h pc_system.h gui/gui.h \
|
|
gui/textconfig.h gui/keymap.h iodev/iodev.h iodev/pci.h iodev/pci2isa.h \
|
|
iodev/vga.h iodev/biosdev.h iodev/cmos.h iodev/dma.h iodev/floppy.h \
|
|
iodev/harddrv.h iodev/cdrom.h iodev/keyboard.h iodev/parallel.h \
|
|
iodev/pic.h iodev/pit.h iodev/pit_wrap.h iodev/pit82c54.h \
|
|
iodev/serial.h iodev/unmapped.h iodev/eth.h iodev/ne2k.h \
|
|
iodev/guest2host.h iodev/slowdown_timer.h plugin.h \
|
|
instrument/stubs/instrument.h
|
|
load32bitOShack.o: load32bitOShack.@CPP_SUFFIX@ bochs.h config.h osdep.h \
|
|
debug/debug.h bxversion.h gui/siminterface.h state_file.h cpu/cpu.h \
|
|
cpu/lazy_flags.h cpu/i387.h memory/memory.h pc_system.h gui/gui.h \
|
|
gui/textconfig.h gui/keymap.h iodev/iodev.h iodev/pci.h iodev/pci2isa.h \
|
|
iodev/vga.h iodev/biosdev.h iodev/cmos.h iodev/dma.h iodev/floppy.h \
|
|
iodev/harddrv.h iodev/cdrom.h iodev/keyboard.h iodev/parallel.h \
|
|
iodev/pic.h iodev/pit.h iodev/pit_wrap.h iodev/pit82c54.h \
|
|
iodev/serial.h iodev/unmapped.h iodev/eth.h iodev/ne2k.h \
|
|
iodev/guest2host.h iodev/slowdown_timer.h plugin.h \
|
|
instrument/stubs/instrument.h
|
|
logio.o: logio.@CPP_SUFFIX@ bochs.h config.h osdep.h debug/debug.h bxversion.h \
|
|
gui/siminterface.h state_file.h cpu/cpu.h cpu/lazy_flags.h cpu/i387.h \
|
|
memory/memory.h pc_system.h gui/gui.h gui/textconfig.h gui/keymap.h \
|
|
iodev/iodev.h iodev/pci.h iodev/pci2isa.h iodev/vga.h iodev/biosdev.h \
|
|
iodev/cmos.h iodev/dma.h iodev/floppy.h iodev/harddrv.h iodev/cdrom.h \
|
|
iodev/keyboard.h iodev/parallel.h iodev/pic.h iodev/pit.h \
|
|
iodev/pit_wrap.h iodev/pit82c54.h iodev/serial.h iodev/unmapped.h \
|
|
iodev/eth.h iodev/ne2k.h iodev/guest2host.h iodev/slowdown_timer.h \
|
|
plugin.h instrument/stubs/instrument.h
|
|
main.o: main.@CPP_SUFFIX@ bochs.h config.h osdep.h debug/debug.h bxversion.h \
|
|
gui/siminterface.h state_file.h cpu/cpu.h cpu/lazy_flags.h cpu/i387.h \
|
|
memory/memory.h pc_system.h gui/gui.h gui/textconfig.h gui/keymap.h \
|
|
iodev/iodev.h iodev/pci.h iodev/pci2isa.h iodev/vga.h iodev/biosdev.h \
|
|
iodev/cmos.h iodev/dma.h iodev/floppy.h iodev/harddrv.h iodev/cdrom.h \
|
|
iodev/keyboard.h iodev/parallel.h iodev/pic.h iodev/pit.h \
|
|
iodev/pit_wrap.h iodev/pit82c54.h iodev/serial.h iodev/unmapped.h \
|
|
iodev/eth.h iodev/ne2k.h iodev/guest2host.h iodev/slowdown_timer.h \
|
|
plugin.h instrument/stubs/instrument.h
|
|
osdep.o: osdep.@CPP_SUFFIX@ bochs.h config.h osdep.h debug/debug.h bxversion.h \
|
|
gui/siminterface.h state_file.h cpu/cpu.h cpu/lazy_flags.h cpu/i387.h \
|
|
memory/memory.h pc_system.h gui/gui.h gui/textconfig.h gui/keymap.h \
|
|
iodev/iodev.h iodev/pci.h iodev/pci2isa.h iodev/vga.h iodev/biosdev.h \
|
|
iodev/cmos.h iodev/dma.h iodev/floppy.h iodev/harddrv.h iodev/cdrom.h \
|
|
iodev/keyboard.h iodev/parallel.h iodev/pic.h iodev/pit.h \
|
|
iodev/pit_wrap.h iodev/pit82c54.h iodev/serial.h iodev/unmapped.h \
|
|
iodev/eth.h iodev/ne2k.h iodev/guest2host.h iodev/slowdown_timer.h \
|
|
plugin.h instrument/stubs/instrument.h
|
|
pc_system.o: pc_system.@CPP_SUFFIX@ bochs.h config.h osdep.h debug/debug.h \
|
|
bxversion.h gui/siminterface.h state_file.h cpu/cpu.h \
|
|
cpu/lazy_flags.h cpu/i387.h memory/memory.h pc_system.h gui/gui.h \
|
|
gui/textconfig.h gui/keymap.h iodev/iodev.h iodev/pci.h iodev/pci2isa.h \
|
|
iodev/vga.h iodev/biosdev.h iodev/cmos.h iodev/dma.h iodev/floppy.h \
|
|
iodev/harddrv.h iodev/cdrom.h iodev/keyboard.h iodev/parallel.h \
|
|
iodev/pic.h iodev/pit.h iodev/pit_wrap.h iodev/pit82c54.h \
|
|
iodev/serial.h iodev/unmapped.h iodev/eth.h iodev/ne2k.h \
|
|
iodev/guest2host.h iodev/slowdown_timer.h plugin.h \
|
|
instrument/stubs/instrument.h
|
|
plugin.o: plugin.@CPP_SUFFIX@ bochs.h config.h osdep.h debug/debug.h bxversion.h \
|
|
gui/siminterface.h state_file.h cpu/cpu.h cpu/lazy_flags.h cpu/i387.h \
|
|
memory/memory.h pc_system.h gui/gui.h gui/textconfig.h gui/keymap.h \
|
|
iodev/iodev.h iodev/pci.h iodev/pci2isa.h iodev/vga.h iodev/biosdev.h \
|
|
iodev/cmos.h iodev/dma.h iodev/floppy.h iodev/harddrv.h iodev/cdrom.h \
|
|
iodev/keyboard.h iodev/parallel.h iodev/pic.h iodev/pit.h \
|
|
iodev/pit_wrap.h iodev/pit82c54.h iodev/serial.h iodev/unmapped.h \
|
|
iodev/eth.h iodev/ne2k.h iodev/guest2host.h iodev/slowdown_timer.h \
|
|
plugin.h instrument/stubs/instrument.h
|
|
state_file.o: state_file.@CPP_SUFFIX@ bochs.h config.h osdep.h debug/debug.h \
|
|
bxversion.h gui/siminterface.h state_file.h cpu/cpu.h \
|
|
cpu/lazy_flags.h cpu/i387.h memory/memory.h pc_system.h gui/gui.h \
|
|
gui/textconfig.h gui/keymap.h iodev/iodev.h iodev/pci.h iodev/pci2isa.h \
|
|
iodev/vga.h iodev/biosdev.h iodev/cmos.h iodev/dma.h iodev/floppy.h \
|
|
iodev/harddrv.h iodev/cdrom.h iodev/keyboard.h iodev/parallel.h \
|
|
iodev/pic.h iodev/pit.h iodev/pit_wrap.h iodev/pit82c54.h \
|
|
iodev/serial.h iodev/unmapped.h iodev/eth.h iodev/ne2k.h \
|
|
iodev/guest2host.h iodev/slowdown_timer.h plugin.h \
|
|
instrument/stubs/instrument.h
|