452 lines
12 KiB
Makefile
452 lines
12 KiB
Makefile
# Copyright (C) 2001 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@
|
|
bindir = @bindir@
|
|
mandir = @mandir@
|
|
man1dir = $(mandir)/man1
|
|
|
|
DESTDIR =
|
|
|
|
VERSION=1.2.cvs
|
|
VER_STRING=cvs-snapshot
|
|
REL_STRING=
|
|
BOCHSDIR=$(prefix)/bochs
|
|
VERSIONDIR=$(BOCHSDIR)/$(VERSION)
|
|
MAN_PAGE_LIST=bochs bochsrc bximage bochs-dlx
|
|
INSTALL_LIST=bios/BIOS-* CHANGES COPYING README bios/VGABIOS* bochs bximage install-x11-fonts test-x11-fonts
|
|
INSTALL_LIST_SED=DOC-linux.html
|
|
BOCHS_SCRIPTS=bochs-docs
|
|
CP=cp
|
|
CAT=cat
|
|
RM=rm
|
|
MV=mv
|
|
LN_S=ln -sf
|
|
RPMSPEC=build/redhat/bochs.rpmspec.template
|
|
DLXLINUX_TAR=dlxlinux2.tar.gz
|
|
DLXLINUX_TAR_URL=http://bochs.sourceforge.net/guestos/$(DLXLINUX_TAR)
|
|
DLXLINUX_ROMFILE=BIOS-bochs-latest
|
|
GUNZIP=gunzip
|
|
WGET=wget
|
|
SED=sed
|
|
SOURCES=/usr/src/redhat/SOURCES
|
|
SPECS=/usr/src/redhat/SPECS
|
|
RPMS=/usr/src/redhat/RPMS
|
|
SRPMS=/usr/src/redhat/SRPMS
|
|
MKDIR=mkdir
|
|
RMDIR=rmdir
|
|
TAR=tar
|
|
RPM=rpm
|
|
CHMOD=chmod
|
|
CHOWN=chown
|
|
GZIP=gzip
|
|
GUNZIP=gunzip
|
|
ZIP=zip
|
|
|
|
@SUFFIX_LINE@
|
|
|
|
srcdir = @srcdir@
|
|
VPATH = @srcdir@
|
|
|
|
SHELL = /bin/sh
|
|
|
|
@SET_MAKE@
|
|
|
|
CC = @CC@
|
|
CXX = @CXX@
|
|
CFLAGS = @CFLAGS@ $(MCH_CFLAGS) $(FLA_FLAGS)
|
|
CXXFLAGS = @CXXFLAGS@ $(MCH_CFLAGS) $(FLA_FLAGS)
|
|
|
|
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
|
|
GUI_LINK_OPTS_BEOS = -lbe
|
|
GUI_LINK_OPTS_RFB = @RFB_LIBS@
|
|
GUI_LINK_OPTS_AMIGAOS =
|
|
GUI_LINK_OPTS_WIN32 = -luser32 -lgdi32 -lwinmm -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 = @GUI_LINK_OPTS@
|
|
RANLIB = @RANLIB@
|
|
|
|
BX_INCDIRS = -I. -I$(srcdir)/. -I@INSTRUMENT_DIR@ -I$(srcdir)/@INSTRUMENT_DIR@
|
|
|
|
MDEFINES = CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" \
|
|
LDFLAGS="$(LDFLAGS)" LIBS="$(LIBS)" \
|
|
X_LIBS="$(X_LIBS)" X_PRE_LIBS="$(X_PRE_LIBS)" \
|
|
prefix="$(prefix)" exec_prefix="$(exec_prefix)" \
|
|
bindir="$(bindir)" infodir="$(infodir)"
|
|
|
|
#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
|
|
|
|
EXTERN_ENVIRONMENT_OBJS = \
|
|
main.o \
|
|
load32bitOShack.o \
|
|
state_file.o \
|
|
pc_system.o
|
|
|
|
DEBUGGER_LIB = debug/libdebug.a
|
|
DISASM_LIB = disasm/libdisasm.a
|
|
DYNAMIC_LIB = dynamic/libdynamic.a
|
|
INSTRUMENT_LIB = @INSTRUMENT_DIR@/libinstrument.a
|
|
FPU_LIB = fpu/libfpu.a
|
|
READLINE_LIB = @READLINE_LIB@
|
|
|
|
BX_OBJS = @NONINLINE_VAR@
|
|
|
|
BX_INCLUDES = bochs.h config.h osdep.h
|
|
|
|
|
|
.@CPP_SUFFIX@.o:
|
|
$(CXX) @DASH@c $(CXXFLAGS) $(BX_INCDIRS) @CXXFP@$< @OFP@$@
|
|
.c.o:
|
|
$(CC) @DASH@c $(CFLAGS) $(FPU_FLAGS) $(BX_INCDIRS) $< @OFP@$@
|
|
|
|
|
|
all: @PRIMARY_TARGET@ bximage@EXE@
|
|
|
|
|
|
@EXTERNAL_DEPENDENCY@
|
|
|
|
bochs@EXE@: @IODEV_LIB_VAR@ @DEBUGGER_VAR@ \
|
|
cpu/libcpu.a memory/libmemory.a gui/libgui.a \
|
|
@DISASM_VAR@ @INSTRUMENT_VAR@ @DYNAMIC_VAR@ $(BX_OBJS) \
|
|
$(SIMX86_OBJS) \
|
|
$(FPU_LIB)
|
|
@LINK@ $(BX_OBJS) \
|
|
$(SIMX86_OBJS) \
|
|
iodev/libiodev.a \
|
|
cpu/libcpu.a memory/libmemory.a gui/libgui.a \
|
|
@DEBUGGER_VAR@ @DISASM_VAR@ @INSTRUMENT_VAR@ @DYNAMIC_VAR@ \
|
|
$(FPU_LIB) \
|
|
$(GUI_LINK_OPTS) \
|
|
$(MCH_LINK_FLAGS) \
|
|
$(SIMX86_LINK_FLAGS) \
|
|
$(READLINE_LIB)
|
|
|
|
bximage@EXE@: misc/bximage.o
|
|
@LINK@ misc/bximage.o
|
|
|
|
$(BX_OBJS): $(BX_INCLUDES)
|
|
|
|
bxversion.h::
|
|
$(RM) -f 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@
|
|
|
|
dynamic/libdynamic.a::
|
|
cd dynamic @COMMAND_SEPARATOR@
|
|
$(MAKE) $(MDEFINES) libdynamic.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
|
|
|
|
install: all install_bin install_man install_fonts
|
|
|
|
install_fonts::
|
|
srcdir=$(srcdir) $(VERSIONDIR)/install-x11-fonts
|
|
|
|
install_bin::
|
|
-mkdir -p $(DESTDIR)$(BOCHSDIR)
|
|
-mkdir -p $(DESTDIR)$(VERSIONDIR)
|
|
-mkdir -p $(DESTDIR)$(bindir)
|
|
test -d $(DESTDIR)$(VERSIONDIR)
|
|
test -w $(DESTDIR)$(VERSIONDIR)
|
|
for i in bochs-docs; do cat $(srcdir)/build/linux/$$i | $(SED) -e 's/@VERSION@/$(VERSION)/g' > $(DESTDIR)$(bindir)/$$i; $(CHMOD) 755 $(DESTDIR)$(bindir)/$$i; done
|
|
for i in $(INSTALL_LIST_SED); do cat $(srcdir)/build/linux/$$i | $(SED) -e 's/@VERSION@/$(VERSION)/g' > $(DESTDIR)$(VERSIONDIR)/$$i; $(CHMOD) 644 $(DESTDIR)$(VERSIONDIR)/$$i; done
|
|
for i in $(INSTALL_LIST); do /bin/cp $(srcdir)/$$i $(DESTDIR)$(VERSIONDIR); done
|
|
$(LN_S) $(VERSIONDIR)/bochs $(DESTDIR)$(bindir)/bochs
|
|
$(LN_S) $(VERSIONDIR)/bximage $(DESTDIR)$(bindir)/bximage
|
|
$(CP) -r $(srcdir)/docs-html $(DESTDIR)$(VERSIONDIR)
|
|
$(RM) -f $(DESTDIR)$(VERSIONDIR)/README
|
|
$(CAT) $(srcdir)/build/linux/README.linux-binary $(srcdir)/README > $(DESTDIR)$(VERSIONDIR)/README
|
|
$(CP) $(srcdir)/font/vga.pcf $(DESTDIR)$(VERSIONDIR)
|
|
$(CP) $(srcdir)/.bochsrc $(DESTDIR)$(VERSIONDIR)/bochsrc-sample.txt
|
|
$(RM) -f $(DESTDIR)$(BOCHSDIR)/latest
|
|
$(LN_S) $(VERSION) $(DESTDIR)$(BOCHSDIR)/latest
|
|
|
|
install_man::
|
|
-mkdir -p $(DESTDIR)$(man1dir)
|
|
for i in $(MAN_PAGE_LIST); do cat $(srcdir)/doc/man/$$i.1 | $(SED) -e 's/@VERSION@/$(VERSION)/g' > $(DESTDIR)$(man1dir)/$$i.1; chmod 644 $(DESTDIR)$(man1dir)/$$i.1; done
|
|
|
|
download_dlx: $(DLXLINUX_TAR)
|
|
|
|
$(DLXLINUX_TAR):
|
|
$(RM) -f $(DLXLINUX_TAR)
|
|
$(WGET) $(DLXLINUX_TAR_URL)
|
|
test -f $(DLXLINUX_TAR)
|
|
|
|
install_dlx::
|
|
make download_dlx
|
|
$(RM) -rf $(BOCHSDIR)/dlxlinux
|
|
$(GUNZIP) -c $(DLXLINUX_TAR) | (cd $(BOCHSDIR); tar -xvf -)
|
|
$(RM) -f $(DLXLINUX_TAR)
|
|
test -d $(BOCHSDIR)/dlxlinux
|
|
(cd $(BOCHSDIR)/dlxlinux; $(MV) bochsrc.txt bochsrc.txt.orig; $(SED) -e "s/1\.1\.2/$(VERSION)/g"< bochsrc.txt.orig > bochsrc.txt; rm -f bochsrc.txt.orig)
|
|
$(CHOWN) -R root.root $(BOCHSDIR)/dlxlinux
|
|
$(CHMOD) 777 $(BOCHSDIR)/dlxlinux
|
|
$(CHMOD) 666 $(BOCHSDIR)/dlxlinux/*
|
|
$(CHMOD) 644 $(BOCHSDIR)/dlxlinux/README
|
|
for i in bochs-dlx; do cat build/linux/$$i | $(SED) -e 's/@VERSION@/$(VERSION)/g' > $(bindir)/$$i; $(CHMOD) 755 $(bindir)/$$i; done
|
|
|
|
uninstall::
|
|
$(RM) -rf $(VERSIONDIR)
|
|
$(RM) -rf $(BOCHSDIR)/dlxlinux
|
|
$(RM) -rf $(BOCHSDIR)/latest
|
|
-$(RMDIR) $(BOCHSDIR)
|
|
for i in bochs bximage bochs-dlx $(BOCHS_SCRIPTS); do rm -f /usr/local/bin/$$i; done
|
|
for i in $(MAN_PAGE_LIST); do $(RM) -f $(man1dir)/$$i.1; done
|
|
|
|
################################################################
|
|
# Building an RPM on Linux
|
|
#
|
|
# This must be done as root on a linux box.
|
|
# The command is:
|
|
# sh .conf.linux; make rpm
|
|
# The binary rpm will appear in /usr/src/redhat/RPMS/i386/bochs-nnnnn.i386.rpm
|
|
# The source rpm will be in /usr/src/redhat/SRPMS/bochs-nnnnn.src.rpm
|
|
################################################################
|
|
rpm:: dist-clean download_dlx
|
|
test -w $(SOURCES)
|
|
test -w $(SPECS)
|
|
rm -f /usr/src/redhat/SPECS/bochs.spec
|
|
$(CAT) $(RPMSPEC) | $(SED) "s/@VERSION@/$(VERSION)/g" > $(SPECS)/bochs.spec
|
|
$(RM) -rf $(SOURCES)/bochs
|
|
$(MKDIR) $(SOURCES)/bochs
|
|
$(TAR) cf - * .??* | (cd $(SOURCES)/bochs && tar xf -)
|
|
(cd $(SOURCES); tar czf bochs.tar.gz bochs)
|
|
$(RPM) -ba $(SPECS)/bochs.spec
|
|
|
|
V6WORKSPACE_ZIP=build/win32/workspace.zip
|
|
V6WORKSPACE_FILES=bochs.dsw bochs.dsp bochs.opt \
|
|
cpu/cpu.dsp cpu/cpu.dsw \
|
|
memory/memory.dsp memory/memory.dsw \
|
|
iodev/iodev.dsp iodev/iodev.dsw \
|
|
instrument/stubs/stubs.dsp instrument/stubs/stubs.dsw \
|
|
gui/gui.dsp gui/gui.dsw \
|
|
fpu/fpu.dsp fpu/fpu.dsw\
|
|
disasm/disasm.dsp disasm/disasm.dsw \
|
|
debug/debug.dsp debug/debug.dsw bximage.dsp
|
|
|
|
v6workspace:
|
|
zip $(V6WORKSPACE_ZIP) $(V6WORKSPACE_FILES)
|
|
|
|
win32_snap:
|
|
sh .conf.win32-vcpp
|
|
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@ */*.o
|
|
@RMCOMMAND@ *.a
|
|
@RMCOMMAND@ */*.a
|
|
@RMCOMMAND@ bochs@EXE@
|
|
@RMCOMMAND@ bximage@EXE@
|
|
@RMCOMMAND@ bochs.out
|
|
@RMCOMMAND@ bochsout.txt
|
|
|
|
local-dist-clean: clean
|
|
@RMCOMMAND@ config.h config.status config.log config.cache
|
|
@RMCOMMAND@ .dummy `find . -name '*.dsp' -o -name '*.dsw' -o -name '*.opt'`
|
|
|
|
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 dynamic @COMMAND_SEPARATOR@
|
|
$(MAKE) clean
|
|
@CD_UP_ONE@
|
|
cd fpu @COMMAND_SEPARATOR@
|
|
$(MAKE) clean
|
|
@CD_UP_ONE@
|
|
|
|
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 dynamic @COMMAND_SEPARATOR@
|
|
$(MAKE) dist-clean
|
|
@CD_UP_ONE@
|
|
cd fpu @COMMAND_SEPARATOR@
|
|
$(MAKE) dist-clean
|
|
@CD_UP_ONE@
|
|
@RMCOMMAND@ Makefile
|
|
|
|
###########################################
|
|
# Build app on MacOS X
|
|
###########################################
|
|
APP=bochs.app
|
|
MACOSX_STUFF=build/macosx
|
|
REZ=/Developer/Tools/Rez
|
|
RINCLUDES=/System/Library/Frameworks/Carbon.framework/Libraries/RIncludes
|
|
REZ_ARGS=-append -i $RINCLUDES -d SystemSevenOrLater=1 -useDF
|
|
|
|
$(APP)/.build: bochs
|
|
rm -f $(APP)/.build
|
|
$(MKDIR) -p $(APP)
|
|
$(MKDIR) -p $(APP)/Contents
|
|
$(CP) -f $(MACOSX_STUFF)/Info.plist $(APP)/Contents
|
|
$(CP) -f $(MACOSX_STUFF)/pbdevelopment.plist $(APP)/Contents
|
|
echo -n "APPL????" > $(APP)/Contents/PkgInfo
|
|
$(MKDIR) -p $(APP)/Contents/MacOS
|
|
$(CP) bochs $(APP)/Contents/MacOS
|
|
$(MKDIR) -p $(APP)/Contents/Resources
|
|
$(REZ) $(REZ_ARGS) $(MACOSX_STUFF)/bochs.r -o $(APP)/Contents/Resources/bochs.rsrc
|
|
ls -ld $(APP)
|
|
touch $(APP)/.build
|