# 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_LIST_FOR_PLATFORM@ INSTALL_LIST_X11=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 UNIX2DOS=unix2dos @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 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: all download_dlx -mkdir -p $(prefix) for i in $(INSTALL_LIST); do cp $(srcdir)/$$i $(prefix); done cp misc/sb16/sb16ctrl.example $(prefix)/sb16ctrl.txt cp misc/sb16/sb16ctrl.exe $(prefix) cat $(srcdir)/build/win32/DOC-win32.htm | $(SED) -e 's/@VERSION@/$(VERSION)/g' > $(prefix)/DOC-win32.htm cp .bochsrc $(prefix)/bochsrc-sample.txt cp -r docs-html $(prefix) 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 build/win32/README.win32-binary $(prefix)/README.orig > $(prefix)/README rm -f $(prefix)/README.orig for i in README CHANGES COPYING VGABIOS-elpin-LICENSE dlxlinux/README; do mv $(prefix)/$$i $(prefix)/$$i.txt; done $(UNIX2DOS) $(prefix)/*.txt $(prefix)/*/*.txt -l 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_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