Bochs/bochs/Makefile.in

847 lines
31 KiB
Makefile

# Copyright (C) 2001-2017 The Bochs Project
#
# 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 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
datarootdir = @datarootdir@
mandir = @mandir@
man1dir = $(mandir)/man1
man5dir = $(mandir)/man5
docdir = $(datarootdir)/doc/bochs
sharedir = $(datarootdir)/bochs
top_builddir = .
top_srcdir = $(srcdir)
DESTDIR =
VERSION=@VERSION@
VER_STRING=@VER_STRING@
REL_STRING=@REL_STRING@
MAN_PAGE_1_LIST=bochs bximage bochs-dlx
MAN_PAGE_5_LIST=bochsrc
INSTALL_LIST_SHARE=bios/BIOS-bochs-* bios/VGABIOS* bios/SeaBIOS* bios/bios.bin-* @INSTALL_LIST_FOR_PLATFORM@
INSTALL_LIST_DOC=CHANGES COPYING LICENSE README TODO misc/slirp.conf
INSTALL_LIST_BIN=bochs@EXE@ bximage@EXE@
INSTALL_LIST_BIN_OPTIONAL=bochsdbg@EXE@ @OPTIONAL_TARGET@
INSTALL_LIST_WIN32=$(INSTALL_LIST_SHARE) $(INSTALL_LIST_DOC) $(INSTALL_LIST_BIN) $(INSTALL_LIST_BIN_OPTIONAL)
INSTALL_LIST_MACOSX=$(INSTALL_LIST_SHARE) $(INSTALL_LIST_DOC) bochs.scpt
# for win32 and macosx, these files get renamed to *.txt in install process
TEXT_FILE_LIST=README CHANGES COPYING LICENSE TODO VGABIOS-elpin-LICENSE VGABIOS-lgpl-README SeaBIOS-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
# the GZIP variable is reserved by gzip program
GZIP_BIN=gzip -9
GUNZIP=gunzip
ZIP=zip
UNIX2DOS=unix2dos
LIBTOOL=@LIBTOOL@
DLLTOOL=dlltool
RC_CMD=@RC_CMD@
@SUFFIX_LINE@
srcdir = @srcdir@
VPATH = @srcdir@
SHELL = @SHELL@
@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)
GUI_LINK_OPTS_SDL = @GUI_LINK_OPTS_SDL@
GUI_LINK_OPTS_SDL2 = @GUI_LINK_OPTS_SDL2@
GUI_LINK_OPTS_SVGA = -lvga -lvgagl
GUI_LINK_OPTS_RFB = @RFB_LIBS@
GUI_LINK_OPTS_VNCSRV = @GUI_LINK_OPTS_VNCSRV@
GUI_LINK_OPTS_AMIGAOS =
GUI_LINK_OPTS_WIN32 = -luser32 -lgdi32 -lcomdlg32 -lcomctl32 -lshell32
GUI_LINK_OPTS_WIN32_VCPP = user32.lib gdi32.lib winmm.lib \
comdlg32.lib comctl32.lib advapi32.lib shell32.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 = @DEVICE_LINK_OPTS@
RANLIB = @RANLIB@
CFLAGS_CONSOLE = @CFLAGS@ $(MCH_CFLAGS) $(FLA_FLAGS)
CXXFLAGS_CONSOLE = @CXXFLAGS_CONSOLE@ $(MCH_CFLAGS) $(FLA_FLAGS)
BXIMAGE_LINK_OPTS = @BXIMAGE_LINK_OPTS@
BX_INCDIRS = -I. -I$(srcdir)/. -I@INSTRUMENT_DIR@ -I$(srcdir)/@INSTRUMENT_DIR@
#SUBDIRS = iodev bx_debug
#all install uninstall: config.h#
# for subdir in $(SUBDIRS); do #
# echo making $@ in $$subdir; #
# ($(MAKE) -C $$subdir $(MDEFINES) $@) || exit 1; #
# done#
# gnu flags for clean up
#CFLAGS = -ansi -O -g -Wunused -Wuninitialized
NONINLINE_OBJS = \
logio.o \
main.o \
config.o \
load32bitOShack.o \
pc_system.o \
osdep.o \
plugin.o \
crc.o \
bxthread.o \
@EXTRA_BX_OBJS@
EXTERN_ENVIRONMENT_OBJS = \
main.o \
config.o \
load32bitOShack.o \
pc_system.o
DEBUGGER_LIB = bx_debug/libdebug.a
DISASM_LIB = disasm/libdisasm.a
INSTRUMENT_LIB = @INSTRUMENT_DIR@/libinstrument.a
FPU_LIB = cpu/fpu/libfpu.a
AVX_LIB = cpu/avx/libavx.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@ @OPTIONAL_TARGET@ @BUILD_DOCBOOK_VAR@
@EXTERNAL_DEPENDENCY@
bochs@EXE@: @IODEV_LIB_VAR@ @DISPLAY_LIB_VAR@ @HDIMAGE_LIB_VAR@ @USB_LIB_VAR@ @NETWORK_LIB_VAR@ @SOUND_LIB_VAR@ \
@DEBUGGER_VAR@ cpu/libcpu.a @AVX_LIB_VAR@ cpu/cpudb/libcpudb.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_LIB_VAR@ @DISPLAY_LIB_VAR@ @HDIMAGE_LIB_VAR@ @USB_LIB_VAR@ @NETWORK_LIB_VAR@ @SOUND_LIB_VAR@ \
@DEBUGGER_VAR@ cpu/libcpu.a @AVX_LIB_VAR@ cpu/cpudb/libcpudb.a \
memory/libmemory.a gui/libgui.a \
@DISASM_VAR@ @INSTRUMENT_VAR@ @PLUGIN_LIB@ \
@GDBSTUB_VAR@ @FPU_VAR@ \
@NONPLUGIN_GUI_LINK_OPTS@ \
$(DEVICE_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@ @DISPLAY_LIB_VAR@ @HDIMAGE_LIB_VAR@ @USB_LIB_VAR@ @NETWORK_LIB_VAR@ \
@SOUND_LIB_VAR@ @DEBUGGER_VAR@ cpu/libcpu.a @AVX_LIB_VAR@ cpu/cpudb/libcpudb.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@ @DISPLAY_LIB_VAR@ @HDIMAGE_LIB_VAR@ @USB_LIB_VAR@ @NETWORK_LIB_VAR@ @SOUND_LIB_VAR@ \
cpu/libcpu.a @AVX_LIB_VAR@ cpu/cpudb/libcpudb.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) \
$(BX_OBJS) bochs.exp $(SIMX86_OBJS) \
@IODEV_LIB_VAR@ @DISPLAY_LIB_VAR@ @HDIMAGE_LIB_VAR@ @USB_LIB_VAR@ @NETWORK_LIB_VAR@ @SOUND_LIB_VAR@ \
cpu/libcpu.a @AVX_LIB_VAR@ cpu/cpudb/libcpudb.a memory/libmemory.a gui/libgui.a \
@DEBUGGER_VAR@ @DISASM_VAR@ @INSTRUMENT_VAR@ @PLUGIN_LIB@ \
@GDBSTUB_VAR@ @FPU_VAR@ \
$(GUI_LINK_OPTS) \
$(DEVICE_LINK_OPTS) \
$(MCH_LINK_FLAGS) \
$(SIMX86_LINK_FLAGS) \
$(READLINE_LIB) \
$(EXTRA_LINK_OPTS) \
$(LIBS)
touch .win32_dll_plugin_target
bochs_plugins:
cd gui @COMMAND_SEPARATOR@
$(MAKE) plugins
@CD_UP_ONE@
cd iodev @COMMAND_SEPARATOR@
$(MAKE) plugins
@CD_UP_ONE@
cd iodev/display @COMMAND_SEPARATOR@
$(MAKE) plugins
@CD_UP_TWO@
cd iodev/hdimage @COMMAND_SEPARATOR@
$(MAKE) plugins
@CD_UP_TWO@
cd iodev/usb @COMMAND_SEPARATOR@
$(MAKE) plugins
@CD_UP_TWO@
cd iodev/network @COMMAND_SEPARATOR@
$(MAKE) plugins
@CD_UP_TWO@
cd iodev/sound @COMMAND_SEPARATOR@
$(MAKE) plugins
@CD_UP_TWO@
bximage@EXE@: misc/bximage.o misc/hdimage.o misc/vmware3.o misc/vmware4.o misc/vpc-img.o misc/vbox.o
@LINK_CONSOLE@ $(BXIMAGE_LINK_OPTS) misc/bximage.o misc/hdimage.o misc/vmware3.o misc/vmware4.o misc/vpc-img.o misc/vbox.o
niclist@EXE@: misc/niclist.o
@LINK_CONSOLE@ misc/niclist.o
bxhub@EXE@: misc/bxhub.o misc/netutil.o
@LINK_CONSOLE@ misc/bxhub.o misc/netutil.o @BXHUB_LINK_OPTS@
# compile with console CXXFLAGS, not gui CXXFLAGS
misc/bximage.o: $(srcdir)/misc/bximage.cc $(srcdir)/misc/bswap.h \
$(srcdir)/misc/bxcompat.h $(srcdir)/iodev/hdimage/hdimage.h
$(CXX) @DASH@c $(BX_INCDIRS) $(CXXFLAGS_CONSOLE) $(srcdir)/misc/bximage.cc @OFP@$@
misc/hdimage.o: $(srcdir)/iodev/hdimage/hdimage.cc \
$(srcdir)/iodev/hdimage/hdimage.h $(srcdir)/misc/bxcompat.h
$(CXX) @DASH@c $(BX_INCDIRS) @BXIMAGE_FLAG@ $(CXXFLAGS_CONSOLE) $(srcdir)/iodev/hdimage/hdimage.cc @OFP@$@
misc/vmware3.o: $(srcdir)/iodev/hdimage/vmware3.cc $(srcdir)/iodev/hdimage/vmware3.h \
$(srcdir)/iodev/hdimage/hdimage.h $(srcdir)/misc/bxcompat.h
$(CXX) @DASH@c $(BX_INCDIRS) @BXIMAGE_FLAG@ $(CXXFLAGS_CONSOLE) $(srcdir)/iodev/hdimage/vmware3.cc @OFP@$@
misc/vmware4.o: $(srcdir)/iodev/hdimage/vmware4.cc $(srcdir)/iodev/hdimage/vmware4.h \
$(srcdir)/iodev/hdimage/hdimage.h $(srcdir)/misc/bxcompat.h
$(CXX) @DASH@c $(BX_INCDIRS) @BXIMAGE_FLAG@ $(CXXFLAGS_CONSOLE) $(srcdir)/iodev/hdimage/vmware4.cc @OFP@$@
misc/vpc-img.o: $(srcdir)/iodev/hdimage/vpc-img.cc $(srcdir)/iodev/hdimage/vpc-img.h \
$(srcdir)/iodev/hdimage/hdimage.h $(srcdir)/misc/bxcompat.h
$(CXX) @DASH@c $(BX_INCDIRS) @BXIMAGE_FLAG@ $(CXXFLAGS_CONSOLE) $(srcdir)/iodev/hdimage/vpc-img.cc @OFP@$@
misc/vbox.o: $(srcdir)/iodev/hdimage/vbox.cc $(srcdir)/iodev/hdimage/vbox.h \
$(srcdir)/iodev/hdimage/hdimage.h $(srcdir)/misc/bxcompat.h
$(CXX) @DASH@c $(BX_INCDIRS) @BXIMAGE_FLAG@ $(CXXFLAGS_CONSOLE) $(srcdir)/iodev/hdimage/vbox.cc @OFP@$@
misc/bxhub.o: $(srcdir)/misc/bxhub.cc $(srcdir)/iodev/network/netmod.h \
$(srcdir)/misc/bxcompat.h
$(CC) @DASH@c $(BX_INCDIRS) $(CXXFLAGS_CONSOLE) $(srcdir)/misc/bxhub.cc @OFP@$@
misc/netutil.o: $(srcdir)/iodev/network/netutil.cc $(srcdir)/iodev/network/netutil.h \
$(srcdir)/iodev/network/netmod.h $(srcdir)/misc/bxcompat.h
$(CXX) @DASH@c $(BX_INCDIRS) @BXHUB_FLAG@ $(CXXFLAGS_CONSOLE) $(srcdir)/iodev/network/netutil.cc @OFP@$@
# compile with console CFLAGS, not gui CXXFLAGS
misc/niclist.o: $(srcdir)/misc/niclist.c
$(CC) @DASH@c $(BX_INCDIRS) $(CFLAGS_CONSOLE) $(srcdir)/misc/niclist.c @OFP@$@
$(BX_OBJS): $(BX_INCLUDES)
# cannot use -C option to be compatible with Microsoft nmake
iodev/libiodev.a::
cd iodev @COMMAND_SEPARATOR@
$(MAKE) $(MDEFINES) libiodev.a
@CD_UP_ONE@
iodev/display/libdisplay.a::
cd iodev/display @COMMAND_SEPARATOR@
$(MAKE) $(MDEFINES) libdisplay.a
@CD_UP_TWO@
iodev/hdimage/libhdimage.a::
cd iodev/hdimage @COMMAND_SEPARATOR@
$(MAKE) $(MDEFINES) libhdimage.a
@CD_UP_TWO@
iodev/usb/libusb.a::
cd iodev/usb @COMMAND_SEPARATOR@
$(MAKE) $(MDEFINES) libusb.a
@CD_UP_TWO@
iodev/network/libnetwork.a::
cd iodev/network @COMMAND_SEPARATOR@
$(MAKE) $(MDEFINES) libnetwork.a
@CD_UP_TWO@
iodev/sound/libsound.a::
cd iodev/sound @COMMAND_SEPARATOR@
$(MAKE) $(MDEFINES) libsound.a
@CD_UP_TWO@
bx_debug/libdebug.a::
cd bx_debug @COMMAND_SEPARATOR@
$(MAKE) $(MDEFINES) libdebug.a
@CD_UP_ONE@
cpu/libcpu.a::
cd cpu @COMMAND_SEPARATOR@
$(MAKE) $(MDEFINES) libcpu.a
@CD_UP_ONE@
cpu/avx/libavx.a::
cd cpu/avx @COMMAND_SEPARATOR@
$(MAKE) $(MDEFINES) libavx.a
@CD_UP_TWO@
cpu/cpudb/libcpudb.a::
cd cpu/cpudb @COMMAND_SEPARATOR@
$(MAKE) $(MDEFINES) libcpudb.a
@CD_UP_TWO@
cpu/fpu/libfpu.a::
cd cpu/fpu @COMMAND_SEPARATOR@
$(MAKE) $(MDEFINES) libfpu.a
@CD_UP_TWO@
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@
libbochs.a:
-rm -f libbochs.a
ar rv libbochs.a $(EXTERN_ENVIRONMENT_OBJS)
$(RANLIB) libbochs.a
# for wxWidgets 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 bxversion.rc
$(RC_CMD)$@ $(srcdir)/win32res.rc
#####################################################################
# 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 dl_docbook
-mkdir -p $(INSTDIR)
-cp -p obj-release/*.exe .
for i in $(INSTALL_LIST_WIN32); do if test -f $$i; then cp -p $$i $(INSTDIR); else cp -p $(srcdir)/$$i $(INSTDIR); fi; done
cp $(srcdir)/misc/sb16/sb16ctrl.example $(INSTDIR)/sb16ctrl.txt
cp -p $(srcdir)/misc/sb16/sb16ctrl.exe $(INSTDIR)
cp $(srcdir)/.bochsrc $(INSTDIR)/bochsrc-sample.txt
cp $(srcdir)/TESTFORM.txt $(INSTDIR)
-mkdir $(INSTDIR)/keymaps
cp -p $(srcdir)/gui/keymaps/*.map $(INSTDIR)/keymaps
cat $(DLXLINUX_TAR) | (cd $(INSTDIR) && tar xzvf -)
echo '..\bochs -q' > $(INSTDIR)/dlxlinux/run.bat
dlxrc=$(INSTDIR)/dlxlinux/bochsrc; mv $$dlxrc.txt $$dlxrc.orig && sed < $$dlxrc.orig 's/$$BXSHARE/../' > $$dlxrc.bxrc && rm -f $$dlxrc.orig
mv $(INSTDIR)/README $(INSTDIR)/README.orig
cat $(srcdir)/build/win32/README.win32-binary $(INSTDIR)/README.orig > $(INSTDIR)/README
rm -f $(INSTDIR)/README.orig
for i in $(TEXT_FILE_LIST); do mv $(INSTDIR)/$$i $(INSTDIR)/$$i.txt; done
cd $(INSTDIR); $(UNIX2DOS) *.txt */*.txt
-mkdir -p $(INSTDIR)/docs
$(GUNZIP) -c $(srcdir)/doc/docbook/bochsdoc.tar.gz | $(TAR) -xvf - -C $(INSTDIR)/docs
cd $(INSTDIR); 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
for i in $(INSTALL_LIST_BIN); do if test -f $$i; then install $$i $(DESTDIR)$(bindir); else install $(srcdir)/$$i $(DESTDIR)$(bindir); fi; done
-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
install_libtool_plugins::
for i in $(DESTDIR)$(plugdir); do mkdir -p $$i && test -d $$i && test -w $$i; done
for i in gui iodev; do \
find $$i -type f -name '*.la' -exec $(LIBTOOL) --mode=install install '{}' $(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
for i in gui iodev; do \
find $$i -type f -name '*.dll' -exec cp '{}' $(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 install -m 644 $$i $(DESTDIR)$(sharedir); else install -m 644 $(srcdir)/$$i $(DESTDIR)$(sharedir); fi; done
-mkdir $(DESTDIR)$(sharedir)/keymaps
for i in $(srcdir)/gui/keymaps/*.map; do install -m 644 $$i $(DESTDIR)$(sharedir)/keymaps/; done
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 install -m 644 $$i $(DESTDIR)$(docdir); else install -m 644 $(srcdir)/$$i $(DESTDIR)$(docdir); fi; done
$(RM) -f $(DESTDIR)$(docdir)/README
$(CAT) $(srcdir)/build/linux/README.linux-binary $(srcdir)/README > $(DESTDIR)$(docdir)/README
install -m 644 $(srcdir)/.bochsrc $(DESTDIR)$(docdir)/bochsrc-sample.txt
# docbook section: the -C option can be used here
build_docbook::
$(MAKE) -C doc/docbook
dl_docbook::
$(MAKE) -C doc/docbook dl_docs
install_docbook: build_docbook
$(MAKE) -C doc/docbook install
clean_docbook::
$(MAKE) -C doc/docbook clean
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_BIN) -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_BIN) -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_BIN) $(DESTDIR)$(sharedir)/dlxlinux/hd10meg.img
$(CHMOD) 644 $(DESTDIR)$(sharedir)/dlxlinux/*
for i in bochs-dlx; do cp $(srcdir)/build/linux/$$i $(DESTDIR)$(bindir)/$$i; $(CHMOD) 755 $(DESTDIR)$(bindir)/$$i; done
uninstall::
$(RM) -rf $(DESTDIR)$(sharedir)
$(RM) -rf $(DESTDIR)$(docdir)
$(RM) -rf $(DESTDIR)$(libdir)/bochs
for i in $(INSTALL_LIST_BIN); do rm -f $(DESTDIR)$(bindir)/$$i; done
-for i in $(INSTALL_LIST_BIN_OPTIONAL); 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
VS2013_WORKSPACE_ZIP=build/win32/vs2013ex-workspace.zip
VS2013_WORKSPACE_FILES=vs2013/bochs.sln vs2013/*.vcxproj
vs2013workspace:
zip $(VS2013_WORKSPACE_ZIP) $(VS2013_WORKSPACE_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 $(VS2013_WORKSPACE_ZIP)
$(MAKE) zip
tar:
NAME=`pwd|$(SED) 's/.*\///'`; (cd ..; $(RM) -f $$NAME.zip; tar cf - $$NAME | $(GZIP_BIN) > $$NAME.tar.gz); ls -l ../$$NAME.tar.gz
zip:
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
clean:
@RMCOMMAND@ *.o
@RMCOMMAND@ *.a
@RMCOMMAND@ bochs
@RMCOMMAND@ bochs.exe
@RMCOMMAND@ bximage
@RMCOMMAND@ bximage.exe
@RMCOMMAND@ bxhub
@RMCOMMAND@ bxhub.exe
@RMCOMMAND@ niclist
@RMCOMMAND@ niclist.exe
@RMCOMMAND@ bochs.out
@RMCOMMAND@ bochsout.txt
@RMCOMMAND@ *.exp *.lib
@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' -o -name '.DS_Store'`
@RMCOMMAND@ bxversion.h bxversion.rc build/linux/bochs-dlx _rpm_top *.rpm
@RMCOMMAND@ build/win32/nsis/Makefile build/win32/nsis/bochs.nsi
@RMCOMMAND@ build/macosx/Info.plist build/macosx/script_compiled.rsrc
@RMCOMMAND@ libtool
@RMCOMMAND@ ltdlconf.h
clean_pcidev::
cd host/linux/pcidev @COMMAND_SEPARATOR@
$(MAKE) clean
@CD_UP_THREE@
all-clean: clean @CLEAN_DOCBOOK_VAR@ @CLEAN_PCIDEV_VAR@
cd iodev @COMMAND_SEPARATOR@
$(MAKE) clean
@CD_UP_ONE@
cd iodev/display @COMMAND_SEPARATOR@
$(MAKE) clean
@CD_UP_TWO@
cd iodev/hdimage @COMMAND_SEPARATOR@
$(MAKE) clean
@CD_UP_TWO@
cd iodev/usb @COMMAND_SEPARATOR@
$(MAKE) clean
@CD_UP_TWO@
cd iodev/network @COMMAND_SEPARATOR@
$(MAKE) clean
@CD_UP_TWO@
cd iodev/sound @COMMAND_SEPARATOR@
$(MAKE) clean
@CD_UP_TWO@
cd bx_debug @COMMAND_SEPARATOR@
$(MAKE) clean
@CD_UP_ONE@
cd cpu @COMMAND_SEPARATOR@
$(MAKE) clean
@CD_UP_ONE@
cd cpu/avx @COMMAND_SEPARATOR@
$(MAKE) clean
@CD_UP_TWO@
cd cpu/cpudb @COMMAND_SEPARATOR@
$(MAKE) clean
@CD_UP_TWO@
cd cpu/fpu @COMMAND_SEPARATOR@
$(MAKE) clean
@CD_UP_TWO@
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@
dist-clean: local-dist-clean
cd iodev @COMMAND_SEPARATOR@
$(MAKE) dist-clean
@CD_UP_ONE@
cd iodev/display @COMMAND_SEPARATOR@
$(MAKE) dist-clean
@CD_UP_TWO@
cd iodev/hdimage @COMMAND_SEPARATOR@
$(MAKE) dist-clean
@CD_UP_TWO@
cd iodev/usb @COMMAND_SEPARATOR@
$(MAKE) dist-clean
@CD_UP_TWO@
cd iodev/network @COMMAND_SEPARATOR@
$(MAKE) dist-clean
@CD_UP_TWO@
cd iodev/sound @COMMAND_SEPARATOR@
$(MAKE) dist-clean
@CD_UP_TWO@
cd bx_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 cpu/avx @COMMAND_SEPARATOR@
$(MAKE) dist-clean
@CD_UP_TWO@
cd cpu/cpudb @COMMAND_SEPARATOR@
$(MAKE) dist-clean
@CD_UP_TWO@
cd cpu/fpu @COMMAND_SEPARATOR@
$(MAKE) dist-clean
@CD_UP_TWO@
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 doc/docbook @COMMAND_SEPARATOR@
$(MAKE) dist-clean
@CD_UP_TWO@
cd host/linux/pcidev @COMMAND_SEPARATOR@
$(MAKE) dist-clean
@CD_UP_THREE@
@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 SVN
# 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 SVN 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_man @INSTALL_DOCBOOK_VAR@
-mkdir -p $(DESTDIR)$(sharedir)
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
$(CPMAC) $(srcdir)/.bochsrc $(DESTDIR)$(sharedir)/bochsrc-sample.txt
-mkdir $(DESTDIR)$(sharedir)/keymaps
$(CPMAC) $(srcdir)/gui/keymaps/*.map $(DESTDIR)$(sharedir)/keymaps
cat $(DLXLINUX_TAR) | (cd $(DESTDIR)$(sharedir) && tar xzvf -)
dlxrc=$(DESTDIR)$(sharedir)/dlxlinux/bochsrc.txt; mv "$$dlxrc" "$$dlxrc.orig" && sed < "$$dlxrc.orig" 's/\/usr\/local\/bochs\/latest/../' > "$$dlxrc" && rm -f "$$dlxrc.orig"
mv $(srcdir)/README $(srcdir)/README.orig
cat $(srcdir)/build/macosx/README.macosx-binary $(srcdir)/README.orig > $(DESTDIR)$(sharedir)/README
rm -f $(DESTDIR)$(sharedir)/README.orig
$(CPMAC) $(SCRIPT_EXEC) $(DESTDIR)$(sharedir)/dlxlinux
# for i in $(TEXT_FILE_LIST); do mv $(srcdir)/$$i $(DESTDIR)$(sharedir)/$$i.txt; done
###########################################
# dependencies generated by
# gcc -MM -I. -Iinstrument/stubs *.cc | sed -e 's/\.cc/.@CPP_SUFFIX@/g' -e 's,cpu/,cpu/,g'
###########################################
bxthread.o: bxthread.@CPP_SUFFIX@ bochs.h config.h osdep.h bx_debug/debug.h \
config.h osdep.h gui/siminterface.h cpudb.h gui/paramtree.h \
memory/memory-bochs.h pc_system.h gui/gui.h \
instrument/stubs/instrument.h bxthread.h
config.o: config.@CPP_SUFFIX@ bochs.h config.h osdep.h bx_debug/debug.h config.h \
osdep.h gui/siminterface.h cpudb.h gui/paramtree.h memory/memory-bochs.h \
pc_system.h gui/gui.h instrument/stubs/instrument.h bxversion.h \
iodev/iodev.h bochs.h plugin.h extplugin.h param_names.h param_names.h \
cpudb.h
crc.o: crc.@CPP_SUFFIX@ config.h
gdbstub.o: gdbstub.@CPP_SUFFIX@ bochs.h config.h osdep.h bx_debug/debug.h config.h \
osdep.h gui/siminterface.h cpudb.h gui/paramtree.h memory/memory-bochs.h \
pc_system.h gui/gui.h instrument/stubs/instrument.h param_names.h \
cpu/cpu.h cpu/decoder/decoder.h cpu/i387.h cpu/fpu/softfloat.h \
cpu/fpu/tag_w.h cpu/fpu/status_w.h cpu/fpu/control_w.h cpu/crregs.h \
cpu/descriptor.h cpu/decoder/instr.h cpu/lazy_flags.h cpu/tlb.h \
cpu/icache.h cpu/apic.h cpu/xmm.h cpu/vmx.h cpu/svm.h cpu/cpuid.h \
cpu/stack.h cpu/access.h
load32bitOShack.o: load32bitOShack.@CPP_SUFFIX@ bochs.h config.h osdep.h \
bx_debug/debug.h config.h osdep.h gui/siminterface.h cpudb.h \
gui/paramtree.h memory/memory-bochs.h pc_system.h gui/gui.h \
instrument/stubs/instrument.h param_names.h cpu/cpu.h \
cpu/decoder/decoder.h cpu/i387.h cpu/fpu/softfloat.h cpu/fpu/tag_w.h \
cpu/fpu/status_w.h cpu/fpu/control_w.h cpu/crregs.h cpu/descriptor.h \
cpu/decoder/instr.h cpu/lazy_flags.h cpu/tlb.h cpu/icache.h cpu/apic.h \
cpu/xmm.h cpu/vmx.h cpu/svm.h cpu/cpuid.h cpu/access.h iodev/iodev.h \
bochs.h plugin.h extplugin.h param_names.h
logio.o: logio.@CPP_SUFFIX@ bochs.h config.h osdep.h bx_debug/debug.h config.h \
osdep.h gui/siminterface.h cpudb.h gui/paramtree.h memory/memory-bochs.h \
pc_system.h gui/gui.h instrument/stubs/instrument.h bxthread.h cpu/cpu.h \
cpu/decoder/decoder.h cpu/i387.h cpu/fpu/softfloat.h cpu/fpu/tag_w.h \
cpu/fpu/status_w.h cpu/fpu/control_w.h cpu/crregs.h cpu/descriptor.h \
cpu/decoder/instr.h cpu/lazy_flags.h cpu/tlb.h cpu/icache.h cpu/apic.h \
cpu/xmm.h cpu/vmx.h cpu/svm.h cpu/cpuid.h cpu/access.h
main.o: main.@CPP_SUFFIX@ bochs.h config.h osdep.h bx_debug/debug.h config.h \
osdep.h gui/siminterface.h cpudb.h gui/paramtree.h memory/memory-bochs.h \
pc_system.h gui/gui.h instrument/stubs/instrument.h bxversion.h \
param_names.h gui/textconfig.h cpu/cpu.h cpu/decoder/decoder.h \
cpu/i387.h cpu/fpu/softfloat.h cpu/fpu/tag_w.h cpu/fpu/status_w.h \
cpu/fpu/control_w.h cpu/crregs.h cpu/descriptor.h cpu/decoder/instr.h \
cpu/lazy_flags.h cpu/tlb.h cpu/icache.h cpu/apic.h cpu/xmm.h cpu/vmx.h \
cpu/svm.h cpu/cpuid.h cpu/access.h iodev/iodev.h bochs.h plugin.h \
extplugin.h param_names.h
osdep.o: osdep.@CPP_SUFFIX@ bochs.h config.h osdep.h bx_debug/debug.h config.h \
osdep.h gui/siminterface.h cpudb.h gui/paramtree.h memory/memory-bochs.h \
pc_system.h gui/gui.h instrument/stubs/instrument.h bxthread.h
pc_system.o: pc_system.@CPP_SUFFIX@ bochs.h config.h osdep.h bx_debug/debug.h \
config.h osdep.h gui/siminterface.h cpudb.h gui/paramtree.h \
memory/memory-bochs.h pc_system.h gui/gui.h \
instrument/stubs/instrument.h cpu/cpu.h cpu/decoder/decoder.h cpu/i387.h \
cpu/fpu/softfloat.h cpu/fpu/tag_w.h cpu/fpu/status_w.h \
cpu/fpu/control_w.h cpu/crregs.h cpu/descriptor.h cpu/decoder/instr.h \
cpu/lazy_flags.h cpu/tlb.h cpu/icache.h cpu/apic.h cpu/xmm.h cpu/vmx.h \
cpu/svm.h cpu/cpuid.h cpu/access.h iodev/iodev.h bochs.h plugin.h \
extplugin.h param_names.h
plugin.o: plugin.@CPP_SUFFIX@ bochs.h config.h osdep.h bx_debug/debug.h config.h \
osdep.h gui/siminterface.h cpudb.h gui/paramtree.h memory/memory-bochs.h \
pc_system.h gui/gui.h instrument/stubs/instrument.h iodev/iodev.h \
bochs.h plugin.h extplugin.h param_names.h plugin.h