Revision: 2981 Author: eliot Date: 2014-06-11 08:25:46 -0700 (Wed, 11 Jun 2014) Log Message: ----------- Fix the defines to exclude VM labels on win32. Add HowToBuild files for the flat win32 and macos32 builds and nuke theobsolete ones there-in. Add missing rc and ico files to some win32 newspeak builds. Roll the SCCS version, as I hope this is (finally!) ready for VM builds.
Modified Paths: -------------- branches/Cog/build.win32x86/newspeak.cog.spur/Makefile branches/Cog/build.win32x86/newspeak.cog.v3/Makefile branches/Cog/build.win32x86/newspeak.stack.spur/Makefile branches/Cog/build.win32x86/newspeak.stack.v3/Makefile branches/Cog/build.win32x86/squeak.cog.spur/Makefile branches/Cog/build.win32x86/squeak.cog.v3/Makefile branches/Cog/build.win32x86/squeak.stack.spur/Makefile branches/Cog/build.win32x86/squeak.stack.v3/Makefile
Added Paths: ----------- branches/Cog/build.macos32x86/HowToBuild branches/Cog/build.win32x86/HowToBuild branches/Cog/build.win32x86/newspeak.cog.spur/nsvm.def.in branches/Cog/build.win32x86/newspeak.cog.spur/nsvm.ico branches/Cog/build.win32x86/newspeak.stack.spur/nsvm.def.in branches/Cog/build.win32x86/newspeak.stack.spur/nsvm.ico
Removed Paths: ------------- branches/Cog/build.macos32x86/newspeak.cog.spur/HowToBuild branches/Cog/build.macos32x86/newspeak.cog.v3/HowToBuild branches/Cog/build.macos32x86/newspeak.stack.spur/HowToBuild branches/Cog/build.macos32x86/newspeak.stack.v3/HowToBuild branches/Cog/build.macos32x86/squeak.cog.spur/HowToBuild branches/Cog/build.macos32x86/squeak.cog.v3/HowToBuild branches/Cog/build.macos32x86/squeak.sista.spur/HowToBuild branches/Cog/build.macos32x86/squeak.sista.v3/HowToBuild branches/Cog/build.macos32x86/squeak.stack.spur/HowToBuild branches/Cog/build.macos32x86/squeak.stack.v3/HowToBuild branches/Cog/build.win32x86/newspeak.cog.v3/HowToBuild branches/Cog/build.win32x86/newspeak.stack.v3/HowToBuild branches/Cog/build.win32x86/squeak.cog.spur/HowToBuild branches/Cog/build.win32x86/squeak.cog.v3/HowToBuild branches/Cog/build.win32x86/squeak.stack.spur/HowToBuild branches/Cog/build.win32x86/squeak.stack.v3/HowToBuild
Property Changed: ---------------- branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
Added: branches/Cog/build.macos32x86/HowToBuild =================================================================== --- branches/Cog/build.macos32x86/HowToBuild (rev 0) +++ branches/Cog/build.macos32x86/HowToBuild 2014-06-11 15:25:46 UTC (rev 2981) @@ -0,0 +1,124 @@ +How To Build On Mac OS X +--------------------- + + +Contents: + - Overview + - Checking out sources to build out-of-the-box + - Building out of the box + - Building the Bochs Support Libraries + - Optimization level and gcc version (please read!) + + +Overview +-------- +The "Cog" VM comes in a bewildering variety of forms. The first distinction +is between Squeak/Croquet VMs that run Squeak, Pharo, Cuis, Croquet images +and their ilk, and between Newspeak VMs that run Newspeak. + +Another distinction is between Stack, Cog and Sista VMs. Stack VMs are those +with context-to-stack mapping that optimise message sending by keeping method +activations on a stack instead of in contexts. These are pure interpreters but +significantly faster than the standard context-based Interpreter VM. Cog VMs +add a JIT to the mix, compiling methods used more than once to maxchine code on +the fly. Sista VMs, as yet unrealised and in development, add support for +adaptive optimization that does speculative inlining at the bytecode-to-bytecode +level. These are targeted for release in 2015. + +Another distinction is between "v3" VMs and Spur VMs. "v3" is the original +object representation for Squeak as described in the back-to-the-future paper. +Spur, as described on the www.mirandabanda.org blog, is a faster object +representation which uses generation scavenging, lazy forwarding for fast +become, and a single object header format common to 32 and 64 bit versions. + +Another distinction is between normal single-threaded VMs that schedule "green" +Smalltalk processes above a single-threaded VM, and "multi-threaded" VMs that +share the VM between any number of native threads such that only one native +thread owns the VM at any one time, switching between threads on FFI calls and +callbacks or on Smalltalk process switches when Smalltalk processes are owned +by threads. This multi-threaded support is as yet experimental. + +The final distinction is between production, assert and debug VMs. Production +VMs are fully optimized, although they may include debugging symbols, and as +their name implies are for use in production. Assert and debug VMs include +many assert checks that are disabled in the production VMs. These asserts are +very helpful in debugging VM problems but significantly impact performance. +The difference between assert and debug VMs is that assert VMs are compiled +with moderate optimization, which improves the performance of the asserts, +whereas debug VMs are compiled with no optimization at all, providing maximum +debuggability with minimum performance. + +This directory tree provides build directories for some of this matrix. For +example, squeak.cog.v3 contains a build directory for Smalltalk Cog VMs using +the old object representation, newspeak.stack.spur contains a build directory +for Newspeak Stack VMs using the Spur object representation. Build as desired. + + +Checking out sources to build out-of-the-box +-------------------------------------------- +Check-out at least the relevant platform sources, vm and plugin sources, +processor sources and the relevant build directories + svn co http://www.squeakvm.org/svn/squeak/branches/Cog/platforms + svn co http://www.squeakvm.org/svn/squeak/branches/Cog/processors + svn co http://www.squeakvm.org/svn/squeak/branches/Cog/build.macos32x86 + svn co http://www.squeakvm.org/svn/squeak/branches/Cog/src etc + (see section "VM source directories" in the root README) + + +Building out of the box +----------------------- +0. As of this writing (June 2014) this Mac build system builds only on 10.6.x +(and probably 10.5.x) using the old Carbon libraries. I plan to build on +Mavericks using John McIntosh's Cocoa platform support files soon. + +1. Install the tools (xcode etc); the CoreVM.xcodeproj is set-up to build + using gcc 4.2 but you can optionally install the Intel C++ compiler 11.1 + and change the compilerSpec in CoreVM.xcodeproj/project.pbxproj to get + better performance. + +2. Either disable the building of the Bochs plugin (see each makevm file, +disabling the lines beginning "# Build the BochsIA32Plugin") or build the +Bochs support libraries (see Building the Bochs Support Libraries below). + +3. cd to the VM configuration of your choice and execute + ./mvm -A +This will build Fast.app, Debug.app and Assert.app applivations containing the +three basic VM configurations. If the configuration includes the multi-threaded +VM you can use mvm -AS to make the single-threaded VMs, mvm -AT to make the +multi-threadeds in FastMT.app et al, and mvm -A to make them all. mvm -d will +make the Debug.app VM, etc. mvm -? provides the gory details. + + +Each build directory contains three files + plugins.int + plugins.ext +On other platforms editing these and making is all one needs to do to change the +set of plugins. Alas on xcode one also has to edit the relevant xcode projects +to add and remove source files. If you're brave enough to contemplate this +you're brave enough to figure out how to do this yourself. + + +Building the Bochs Support Libraries +------------------------------------ +If you want to get the Cog VM simulator working you'll need to build the +BochsIA32Plugin and to build that you'll need to first build bochs. First +check-out the processor simulator source tree containing Bochs: + svn co http://www.squeakvm.org/svn/squeak/branches/Cog/processors +Then build libraries macbochs/{cpu/libcpu.a,disasm/libdisasm.a,fpu/libfpu.a} + $ cd ../processors/IA32/macbochs + $ ./conf.COG + $ ../bochs/makeem + + +Optimization level and gcc version +---------------------------------- +There are issues with gcc version > 4.2.1. Any of the following flags may break the build at -O2: +-ftree-pre +-fpartial-inlining +-fcaller-saves + +They're turned off in the xcode files provided. + + +Eliot Miranda +June 2014
Deleted: branches/Cog/build.macos32x86/newspeak.cog.spur/HowToBuild =================================================================== --- branches/Cog/build.macos32x86/newspeak.cog.spur/HowToBuild 2014-06-11 14:02:34 UTC (rev 2980) +++ branches/Cog/build.macos32x86/newspeak.cog.spur/HowToBuild 2014-06-11 15:25:46 UTC (rev 2981) @@ -1,127 +0,0 @@ -How To Build On Linux ---------------------- - -Contents: - - Checking out sources - - How to build the Cog Croquet VM on Unix - - Testing an external plugin has completely linked - - Compiling in 32-bit mode on a 64-bit linux - - Testing an external plugin has completely linked - - N.B. Please read: Optimization level and gcc version - - -Checking out sources -------------------------------- -To generate a VM check-out http://www.squeakvm.org/svn/squeak/branches/Cog/image -which contains -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.chan... -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.imag... -Start up VMMaker-Squeak4.1.image. In it is a workspace containing a doit that -uses something like generate:and:to:platformDir:excluding:. Doit. - - -How to build the Cog Croquet VM on Unix -------------------------------- -1. Install the tools (gcc, X11-devel, etc (e.g. libpng, libX11 & libxt source)) -2. Check out the following sources from svn (if you haven't already - if you're - reading this in unixbuild its likely you've already got the sources) - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/platforms - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/src - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/unixbuild -3. Open a shell, cd into the unixbuild/bld directory and execute - ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread - make install prefix=WhereYouWantTheVmToGo - - N.B. If you're on a 64-bit linux read 3e below!! - N.B. On Ubuntu *do not* supply "LIBS=-lpthread", i.e. use - ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" - -4. At the end of it you'll get a new VM in the path provided via -prefix - -N.B. The plugin set is defined by plugins.ext and plugins.int in the build dir. - - -3a. For an assert-enabled VM do - ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O1 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread - -3b. For a full debug VM do - ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g3 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=1" LIBS=-lpthread - -3c. For a multi-threaded VM open a shell and cd to the mtbld directory. Then - execute - ../../platforms/unix/config/configure INTERP=cointerpmt --without-npsqueak CFLAGS="-g -O2 -msse2 -DNDEBUG -DCOGMTVM=1 -DDEBUGVM=0 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1" LIBS=-lpthread - make squeakmt - make installmt prefix=WhereYouWantTheVmToGo - -N.B. As of early 2010 the linux pthreads implementation doesn't appear to -provide a way of setting priorities for the default thread scheduling policy -SCHED_OTHER (unlike e.g. Mac OS X) and doesn't appear to allow changing the -policy to one that does (e.g. SCHED_RR). So for now we use the itimer -scheme. See platforms/unix/vm/sqUnixHeartbeat.c - -3d. If you want to get the Cog VM simulator working you'll need to build the -BochsIA32Plugin/BochsIA32Plugin.xcodeproj project and to build that you'll -need to first build bochs. First check-out the processor simulator source tree -containing Bochs: - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/processors -Then build libraries linuxbochs/{cpu/libcpu.a,disasm/libdisasm.a,fpu/libfpu.a} - $ cd ROOT/processors/IA32/linuxbochs - $ ./conf.COG - $ ../bochs/makeem -and build the plugin via - $ cd ROOT/unixbuild/bld/BochsIA32Plugin - $ make - -3e. (see Compiling in 32-bit mode on a 64-bit linux below) -If you're building the VM on a 64-bit OS, you'll need a compiler which can -compile and link to 32-bit binaries. On most Linuxes the gcc-multilib package -provides the 32-bit compiler and the ia32-libs provides the 32-bit libraries. -You'll also have to add the -m32 switch to all gcc & g++ invocations. The -easiest way to do this is to add CC="gcc -m32" & CXX="g++ -m32" to the configure -script: - ../../platforms/unix/config/configure CC="gcc -m32" CXX="g++ -m32" --without-npsqueak CFLAGS="-g -O2 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread -To run a 32-bit VM on a 64-bit OS, you'll also need the 32-bit libraries -provided by the ia32-libs package. - -Compiling in 32-bit mode on a 64-bit linux -------------------------------- -Follow 3e. above. Also note that according to Paul DeBruicker the following -packages need to be installed to compile in 32-bt mode on 64-bit ubuntu. YMMV. - -build-essential -lib32asound2-dev -libgl1-mesa-dev -libglu1-mesa-dev -ia32-libs -gcc-multilib -g++multilib - -In addition phil@highoctane.be installed libc6dev-i386. - -This in itself may not be enough, but persistence will pay off. See for example -http://permalink.gmane.org/gmane.comp.lang.smalltalk.pharo.devel/75198. - - -Testing an external plugin has completely linked -------------------------------- -You may find that an external plugin compiles and links but does not load. -This is usually because it contans undefined symbols. To find undefined -symbols, remake the plugin, capturing the link step and then supply - -Wl,--warn-unresolved-symbols -Wl,--no-allow-shlib-undefined -when manually repeating the link command - - -Optimization level and gcc version ----------------------------------- -There are issues with gcc version > 4.2.1. Any of the following flags may break the build at -O2: --ftree-pre --fpartial-inlining --fcaller-saves - -So turn them off. e.g. - ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -fno-caller-saves -fno-partial-inlining -fno-tree-pre -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread - -Clang ------ -So far Clang only works at -O1. So it may also be subject to some of the same -issues as gcc. Please report back successes with clang, especially at -O2.
Deleted: branches/Cog/build.macos32x86/newspeak.cog.v3/HowToBuild =================================================================== --- branches/Cog/build.macos32x86/newspeak.cog.v3/HowToBuild 2014-06-11 14:02:34 UTC (rev 2980) +++ branches/Cog/build.macos32x86/newspeak.cog.v3/HowToBuild 2014-06-11 15:25:46 UTC (rev 2981) @@ -1,127 +0,0 @@ -How To Build On Linux ---------------------- - -Contents: - - Checking out sources - - How to build the Cog Croquet VM on Unix - - Testing an external plugin has completely linked - - Compiling in 32-bit mode on a 64-bit linux - - Testing an external plugin has completely linked - - N.B. Please read: Optimization level and gcc version - - -Checking out sources -------------------------------- -To generate a VM check-out http://www.squeakvm.org/svn/squeak/branches/Cog/image -which contains -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.chan... -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.imag... -Start up VMMaker-Squeak4.1.image. In it is a workspace containing a doit that -uses something like generate:and:to:platformDir:excluding:. Doit. - - -How to build the Cog Croquet VM on Unix -------------------------------- -1. Install the tools (gcc, X11-devel, etc (e.g. libpng, libX11 & libxt source)) -2. Check out the following sources from svn (if you haven't already - if you're - reading this in unixbuild its likely you've already got the sources) - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/platforms - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/src - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/unixbuild -3. Open a shell, cd into the unixbuild/bld directory and execute - ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread - make install prefix=WhereYouWantTheVmToGo - - N.B. If you're on a 64-bit linux read 3e below!! - N.B. On Ubuntu *do not* supply "LIBS=-lpthread", i.e. use - ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" - -4. At the end of it you'll get a new VM in the path provided via -prefix - -N.B. The plugin set is defined by plugins.ext and plugins.int in the build dir. - - -3a. For an assert-enabled VM do - ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O1 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread - -3b. For a full debug VM do - ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g3 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=1" LIBS=-lpthread - -3c. For a multi-threaded VM open a shell and cd to the mtbld directory. Then - execute - ../../platforms/unix/config/configure INTERP=cointerpmt --without-npsqueak CFLAGS="-g -O2 -msse2 -DNDEBUG -DCOGMTVM=1 -DDEBUGVM=0 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1" LIBS=-lpthread - make squeakmt - make installmt prefix=WhereYouWantTheVmToGo - -N.B. As of early 2010 the linux pthreads implementation doesn't appear to -provide a way of setting priorities for the default thread scheduling policy -SCHED_OTHER (unlike e.g. Mac OS X) and doesn't appear to allow changing the -policy to one that does (e.g. SCHED_RR). So for now we use the itimer -scheme. See platforms/unix/vm/sqUnixHeartbeat.c - -3d. If you want to get the Cog VM simulator working you'll need to build the -BochsIA32Plugin/BochsIA32Plugin.xcodeproj project and to build that you'll -need to first build bochs. First check-out the processor simulator source tree -containing Bochs: - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/processors -Then build libraries linuxbochs/{cpu/libcpu.a,disasm/libdisasm.a,fpu/libfpu.a} - $ cd ROOT/processors/IA32/linuxbochs - $ ./conf.COG - $ ../bochs/makeem -and build the plugin via - $ cd ROOT/unixbuild/bld/BochsIA32Plugin - $ make - -3e. (see Compiling in 32-bit mode on a 64-bit linux below) -If you're building the VM on a 64-bit OS, you'll need a compiler which can -compile and link to 32-bit binaries. On most Linuxes the gcc-multilib package -provides the 32-bit compiler and the ia32-libs provides the 32-bit libraries. -You'll also have to add the -m32 switch to all gcc & g++ invocations. The -easiest way to do this is to add CC="gcc -m32" & CXX="g++ -m32" to the configure -script: - ../../platforms/unix/config/configure CC="gcc -m32" CXX="g++ -m32" --without-npsqueak CFLAGS="-g -O2 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread -To run a 32-bit VM on a 64-bit OS, you'll also need the 32-bit libraries -provided by the ia32-libs package. - -Compiling in 32-bit mode on a 64-bit linux -------------------------------- -Follow 3e. above. Also note that according to Paul DeBruicker the following -packages need to be installed to compile in 32-bt mode on 64-bit ubuntu. YMMV. - -build-essential -lib32asound2-dev -libgl1-mesa-dev -libglu1-mesa-dev -ia32-libs -gcc-multilib -g++multilib - -In addition phil@highoctane.be installed libc6dev-i386. - -This in itself may not be enough, but persistence will pay off. See for example -http://permalink.gmane.org/gmane.comp.lang.smalltalk.pharo.devel/75198. - - -Testing an external plugin has completely linked -------------------------------- -You may find that an external plugin compiles and links but does not load. -This is usually because it contans undefined symbols. To find undefined -symbols, remake the plugin, capturing the link step and then supply - -Wl,--warn-unresolved-symbols -Wl,--no-allow-shlib-undefined -when manually repeating the link command - - -Optimization level and gcc version ----------------------------------- -There are issues with gcc version > 4.2.1. Any of the following flags may break the build at -O2: --ftree-pre --fpartial-inlining --fcaller-saves - -So turn them off. e.g. - ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -fno-caller-saves -fno-partial-inlining -fno-tree-pre -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread - -Clang ------ -So far Clang only works at -O1. So it may also be subject to some of the same -issues as gcc. Please report back successes with clang, especially at -O2.
Deleted: branches/Cog/build.macos32x86/newspeak.stack.spur/HowToBuild =================================================================== --- branches/Cog/build.macos32x86/newspeak.stack.spur/HowToBuild 2014-06-11 14:02:34 UTC (rev 2980) +++ branches/Cog/build.macos32x86/newspeak.stack.spur/HowToBuild 2014-06-11 15:25:46 UTC (rev 2981) @@ -1,29 +0,0 @@ -To generate a VM check-out http://www.squeakvm.org/svn/squeak/branches/Cog/image -which contains -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.chan... -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.imag... - -How to Build a Croquet Cog Stack VM on Mac OS X --------------------------------- -1. Install the tools (xcode etc); the CoreVM.xcodeproj is set-up to build - using gcc 4.2 but you can optionally install the Intel C++ compiler 11.1 - and change the compilerSpec in CoreVM.xcodeproj/project.pbxproj to get - better performance. - -2. Check out the following sources from svn (if you haven't already - if you're - reading this in macbuild its likely you've already got the sources) - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/platforms - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/src - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/macbuild - -3. Open a shell, cd into ROOT/macbuild directory and execute either - ./makevm - or - mvm -A - mvm is a convenience wrapper around makevm that will build different versions - (DeploymentSymbols, Debug, etc) and collect compiler output to log files. - -4. At the end of this process you should have a brand new Croquet.app in the - macbuild folder (or Fast.app Assert.app and Debug.app if you've used mvm). - -N.B. The plugin set is defined by plugins.ext and plugins.int in the build dir.
Deleted: branches/Cog/build.macos32x86/newspeak.stack.v3/HowToBuild =================================================================== --- branches/Cog/build.macos32x86/newspeak.stack.v3/HowToBuild 2014-06-11 14:02:34 UTC (rev 2980) +++ branches/Cog/build.macos32x86/newspeak.stack.v3/HowToBuild 2014-06-11 15:25:46 UTC (rev 2981) @@ -1,127 +0,0 @@ -How To Build On Linux ---------------------- - -Contents: - - Checking out sources - - How to build the Cog Croquet VM on Unix - - Testing an external plugin has completely linked - - Compiling in 32-bit mode on a 64-bit linux - - Testing an external plugin has completely linked - - N.B. Please read: Optimization level and gcc version - - -Checking out sources -------------------------------- -To generate a VM check-out http://www.squeakvm.org/svn/squeak/branches/Cog/image -which contains -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.chan... -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.imag... -Start up VMMaker-Squeak4.1.image. In it is a workspace containing a doit that -uses something like generate:and:to:platformDir:excluding:. Doit. - - -How to build the Cog Croquet VM on Unix -------------------------------- -1. Install the tools (gcc, X11-devel, etc (e.g. libpng, libX11 & libxt source)) -2. Check out the following sources from svn (if you haven't already - if you're - reading this in unixbuild its likely you've already got the sources) - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/platforms - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/src - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/unixbuild -3. Open a shell, cd into the unixbuild/bld directory and execute - ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread - make install prefix=WhereYouWantTheVmToGo - - N.B. If you're on a 64-bit linux read 3e below!! - N.B. On Ubuntu *do not* supply "LIBS=-lpthread", i.e. use - ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" - -4. At the end of it you'll get a new VM in the path provided via -prefix - -N.B. The plugin set is defined by plugins.ext and plugins.int in the build dir. - - -3a. For an assert-enabled VM do - ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O1 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread - -3b. For a full debug VM do - ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g3 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=1" LIBS=-lpthread - -3c. For a multi-threaded VM open a shell and cd to the mtbld directory. Then - execute - ../../platforms/unix/config/configure INTERP=cointerpmt --without-npsqueak CFLAGS="-g -O2 -msse2 -DNDEBUG -DCOGMTVM=1 -DDEBUGVM=0 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1" LIBS=-lpthread - make squeakmt - make installmt prefix=WhereYouWantTheVmToGo - -N.B. As of early 2010 the linux pthreads implementation doesn't appear to -provide a way of setting priorities for the default thread scheduling policy -SCHED_OTHER (unlike e.g. Mac OS X) and doesn't appear to allow changing the -policy to one that does (e.g. SCHED_RR). So for now we use the itimer -scheme. See platforms/unix/vm/sqUnixHeartbeat.c - -3d. If you want to get the Cog VM simulator working you'll need to build the -BochsIA32Plugin/BochsIA32Plugin.xcodeproj project and to build that you'll -need to first build bochs. First check-out the processor simulator source tree -containing Bochs: - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/processors -Then build libraries linuxbochs/{cpu/libcpu.a,disasm/libdisasm.a,fpu/libfpu.a} - $ cd ROOT/processors/IA32/linuxbochs - $ ./conf.COG - $ ../bochs/makeem -and build the plugin via - $ cd ROOT/unixbuild/bld/BochsIA32Plugin - $ make - -3e. (see Compiling in 32-bit mode on a 64-bit linux below) -If you're building the VM on a 64-bit OS, you'll need a compiler which can -compile and link to 32-bit binaries. On most Linuxes the gcc-multilib package -provides the 32-bit compiler and the ia32-libs provides the 32-bit libraries. -You'll also have to add the -m32 switch to all gcc & g++ invocations. The -easiest way to do this is to add CC="gcc -m32" & CXX="g++ -m32" to the configure -script: - ../../platforms/unix/config/configure CC="gcc -m32" CXX="g++ -m32" --without-npsqueak CFLAGS="-g -O2 -msse2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread -To run a 32-bit VM on a 64-bit OS, you'll also need the 32-bit libraries -provided by the ia32-libs package. - -Compiling in 32-bit mode on a 64-bit linux -------------------------------- -Follow 3e. above. Also note that according to Paul DeBruicker the following -packages need to be installed to compile in 32-bt mode on 64-bit ubuntu. YMMV. - -build-essential -lib32asound2-dev -libgl1-mesa-dev -libglu1-mesa-dev -ia32-libs -gcc-multilib -g++multilib - -In addition phil@highoctane.be installed libc6dev-i386. - -This in itself may not be enough, but persistence will pay off. See for example -http://permalink.gmane.org/gmane.comp.lang.smalltalk.pharo.devel/75198. - - -Testing an external plugin has completely linked -------------------------------- -You may find that an external plugin compiles and links but does not load. -This is usually because it contans undefined symbols. To find undefined -symbols, remake the plugin, capturing the link step and then supply - -Wl,--warn-unresolved-symbols -Wl,--no-allow-shlib-undefined -when manually repeating the link command - - -Optimization level and gcc version ----------------------------------- -There are issues with gcc version > 4.2.1. Any of the following flags may break the build at -O2: --ftree-pre --fpartial-inlining --fcaller-saves - -So turn them off. e.g. - ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -fno-caller-saves -fno-partial-inlining -fno-tree-pre -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread - -Clang ------ -So far Clang only works at -O1. So it may also be subject to some of the same -issues as gcc. Please report back successes with clang, especially at -O2.
Deleted: branches/Cog/build.macos32x86/squeak.cog.spur/HowToBuild =================================================================== --- branches/Cog/build.macos32x86/squeak.cog.spur/HowToBuild 2014-06-11 14:02:34 UTC (rev 2980) +++ branches/Cog/build.macos32x86/squeak.cog.spur/HowToBuild 2014-06-11 15:25:46 UTC (rev 2981) @@ -1,58 +0,0 @@ -To generate a VM check-out http://www.squeakvm.org/svn/squeak/branches/Cog/image -which contains -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.chan... -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.imag... - -How to Build the Squeak Cog VM on Mac OS X --------------------------------- -1. Install the tools (xcode etc); the CoreVM.xcodeproj is set-up to build - using gcc 4.2 but you can optionally install the Intel C++ compiler 11.1 - and change the compilerSpec in CoreVM.xcodeproj/project.pbxproj to get - better performance. - -2. Check out the following sources from svn (if you haven't already - if you're - reading this in macbuild its likely you've already got the sources) - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/platforms - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/src - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/macbuild - -3. Open a shell, cd into ROOT/macbuild directory and execute either - ./makevm - or - mvm -A - mvm is a convenience wrapper around makevm that will build different versions - (DeploymentSymbols, Debug, etc) and collect compiler output to log files. - -3a. If you want to get the Cog VM simulator working you'll need to build the -BochsIA32Plugin/BochsIA32Plugin.xcodeproj project and to build that you'll -need to first build bochs. First check-out the processor simulator source tree -containing Bochs: - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/processors -Then build the libraries macbochs/{cpu/libcpu.a,disasm/libdisasm.a,fpu/libfpu.a} - $ cd ROOT/processors/IA32/macbochs - $ ./conf.COG - $ ../bochs/makeem -Then build the plugin: - $ cd ROOT/macbuild/BochsIA32Plugin - $ xcodebuild - -4. At the end of this process you should have a brand new Croquet.app in the - macbuild folder (or Fast.app Assert.app and Debug.app if you've used mvm). - -N.B. The plugin set is defined by plugins.ext and plugins.int in the build dir. - - -Optimization level and gcc version ----------------------------------- -There are issues with gcc version > 4.2.1. Any of the following flags may break the build at -O2: --ftree-pre --fpartial-inlining --fcaller-saves - -So turn them off. e.g. - ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -fno-caller-saves -fno-partial-inlining -fno-tree-pre -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread - -Clang ------ -So far Clang only works at -O1. So it may also be subject to some of the same -issues as gcc. Please report back successes with clang, especially at -O2.
Deleted: branches/Cog/build.macos32x86/squeak.cog.v3/HowToBuild =================================================================== --- branches/Cog/build.macos32x86/squeak.cog.v3/HowToBuild 2014-06-11 14:02:34 UTC (rev 2980) +++ branches/Cog/build.macos32x86/squeak.cog.v3/HowToBuild 2014-06-11 15:25:46 UTC (rev 2981) @@ -1,58 +0,0 @@ -To generate a VM check-out http://www.squeakvm.org/svn/squeak/branches/Cog/image -which contains -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.chan... -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.imag... - -How to Build the Squeak Cog VM on Mac OS X --------------------------------- -1. Install the tools (xcode etc); the CoreVM.xcodeproj is set-up to build - using gcc 4.2 but you can optionally install the Intel C++ compiler 11.1 - and change the compilerSpec in CoreVM.xcodeproj/project.pbxproj to get - better performance. - -2. Check out the following sources from svn (if you haven't already - if you're - reading this in macbuild its likely you've already got the sources) - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/platforms - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/src - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/macbuild - -3. Open a shell, cd into ROOT/macbuild directory and execute either - ./makevm - or - mvm -A - mvm is a convenience wrapper around makevm that will build different versions - (DeploymentSymbols, Debug, etc) and collect compiler output to log files. - -3a. If you want to get the Cog VM simulator working you'll need to build the -BochsIA32Plugin/BochsIA32Plugin.xcodeproj project and to build that you'll -need to first build bochs. First check-out the processor simulator source tree -containing Bochs: - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/processors -Then build the libraries macbochs/{cpu/libcpu.a,disasm/libdisasm.a,fpu/libfpu.a} - $ cd ROOT/processors/IA32/macbochs - $ ./conf.COG - $ ../bochs/makeem -Then build the plugin: - $ cd ROOT/macbuild/BochsIA32Plugin - $ xcodebuild - -4. At the end of this process you should have a brand new Croquet.app in the - macbuild folder (or Fast.app Assert.app and Debug.app if you've used mvm). - -N.B. The plugin set is defined by plugins.ext and plugins.int in the build dir. - - -Optimization level and gcc version ----------------------------------- -There are issues with gcc version > 4.2.1. Any of the following flags may break the build at -O2: --ftree-pre --fpartial-inlining --fcaller-saves - -So turn them off. e.g. - ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -fno-caller-saves -fno-partial-inlining -fno-tree-pre -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread - -Clang ------ -So far Clang only works at -O1. So it may also be subject to some of the same -issues as gcc. Please report back successes with clang, especially at -O2.
Deleted: branches/Cog/build.macos32x86/squeak.sista.spur/HowToBuild =================================================================== --- branches/Cog/build.macos32x86/squeak.sista.spur/HowToBuild 2014-06-11 14:02:34 UTC (rev 2980) +++ branches/Cog/build.macos32x86/squeak.sista.spur/HowToBuild 2014-06-11 15:25:46 UTC (rev 2981) @@ -1,58 +0,0 @@ -To generate a VM check-out http://www.squeakvm.org/svn/squeak/branches/Cog/image -which contains -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.chan... -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.imag... - -How to Build the Squeak Cog VM on Mac OS X --------------------------------- -1. Install the tools (xcode etc); the CoreVM.xcodeproj is set-up to build - using gcc 4.2 but you can optionally install the Intel C++ compiler 11.1 - and change the compilerSpec in CoreVM.xcodeproj/project.pbxproj to get - better performance. - -2. Check out the following sources from svn (if you haven't already - if you're - reading this in macbuild its likely you've already got the sources) - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/platforms - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/src - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/macbuild - -3. Open a shell, cd into ROOT/macbuild directory and execute either - ./makevm - or - mvm -A - mvm is a convenience wrapper around makevm that will build different versions - (DeploymentSymbols, Debug, etc) and collect compiler output to log files. - -3a. If you want to get the Cog VM simulator working you'll need to build the -BochsIA32Plugin/BochsIA32Plugin.xcodeproj project and to build that you'll -need to first build bochs. First check-out the processor simulator source tree -containing Bochs: - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/processors -Then build the libraries macbochs/{cpu/libcpu.a,disasm/libdisasm.a,fpu/libfpu.a} - $ cd ROOT/processors/IA32/macbochs - $ ./conf.COG - $ ../bochs/makeem -Then build the plugin: - $ cd ROOT/macbuild/BochsIA32Plugin - $ xcodebuild - -4. At the end of this process you should have a brand new Croquet.app in the - macbuild folder (or Fast.app Assert.app and Debug.app if you've used mvm). - -N.B. The plugin set is defined by plugins.ext and plugins.int in the build dir. - - -Optimization level and gcc version ----------------------------------- -There are issues with gcc version > 4.2.1. Any of the following flags may break the build at -O2: --ftree-pre --fpartial-inlining --fcaller-saves - -So turn them off. e.g. - ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -fno-caller-saves -fno-partial-inlining -fno-tree-pre -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread - -Clang ------ -So far Clang only works at -O1. So it may also be subject to some of the same -issues as gcc. Please report back successes with clang, especially at -O2.
Deleted: branches/Cog/build.macos32x86/squeak.sista.v3/HowToBuild =================================================================== --- branches/Cog/build.macos32x86/squeak.sista.v3/HowToBuild 2014-06-11 14:02:34 UTC (rev 2980) +++ branches/Cog/build.macos32x86/squeak.sista.v3/HowToBuild 2014-06-11 15:25:46 UTC (rev 2981) @@ -1,58 +0,0 @@ -To generate a VM check-out http://www.squeakvm.org/svn/squeak/branches/Cog/image -which contains -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.chan... -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.imag... - -How to Build the Squeak Cog VM on Mac OS X --------------------------------- -1. Install the tools (xcode etc); the CoreVM.xcodeproj is set-up to build - using gcc 4.2 but you can optionally install the Intel C++ compiler 11.1 - and change the compilerSpec in CoreVM.xcodeproj/project.pbxproj to get - better performance. - -2. Check out the following sources from svn (if you haven't already - if you're - reading this in macbuild its likely you've already got the sources) - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/platforms - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/src - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/macbuild - -3. Open a shell, cd into ROOT/macbuild directory and execute either - ./makevm - or - mvm -A - mvm is a convenience wrapper around makevm that will build different versions - (DeploymentSymbols, Debug, etc) and collect compiler output to log files. - -3a. If you want to get the Cog VM simulator working you'll need to build the -BochsIA32Plugin/BochsIA32Plugin.xcodeproj project and to build that you'll -need to first build bochs. First check-out the processor simulator source tree -containing Bochs: - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/processors -Then build the libraries macbochs/{cpu/libcpu.a,disasm/libdisasm.a,fpu/libfpu.a} - $ cd ROOT/processors/IA32/macbochs - $ ./conf.COG - $ ../bochs/makeem -Then build the plugin: - $ cd ROOT/macbuild/BochsIA32Plugin - $ xcodebuild - -4. At the end of this process you should have a brand new Croquet.app in the - macbuild folder (or Fast.app Assert.app and Debug.app if you've used mvm). - -N.B. The plugin set is defined by plugins.ext and plugins.int in the build dir. - - -Optimization level and gcc version ----------------------------------- -There are issues with gcc version > 4.2.1. Any of the following flags may break the build at -O2: --ftree-pre --fpartial-inlining --fcaller-saves - -So turn them off. e.g. - ../../platforms/unix/config/configure --without-npsqueak CFLAGS="-g -O2 -msse2 -fno-caller-saves -fno-partial-inlining -fno-tree-pre -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0 -DDEBUGVM=0" LIBS=-lpthread - -Clang ------ -So far Clang only works at -O1. So it may also be subject to some of the same -issues as gcc. Please report back successes with clang, especially at -O2.
Deleted: branches/Cog/build.macos32x86/squeak.stack.spur/HowToBuild =================================================================== --- branches/Cog/build.macos32x86/squeak.stack.spur/HowToBuild 2014-06-11 14:02:34 UTC (rev 2980) +++ branches/Cog/build.macos32x86/squeak.stack.spur/HowToBuild 2014-06-11 15:25:46 UTC (rev 2981) @@ -1,29 +0,0 @@ -To generate a VM check-out http://www.squeakvm.org/svn/squeak/branches/Cog/image -which contains -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.chan... -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.imag... - -How to Build a Croquet Cog Stack VM on Mac OS X --------------------------------- -1. Install the tools (xcode etc); the CoreVM.xcodeproj is set-up to build - using gcc 4.2 but you can optionally install the Intel C++ compiler 11.1 - and change the compilerSpec in CoreVM.xcodeproj/project.pbxproj to get - better performance. - -2. Check out the following sources from svn (if you haven't already - if you're - reading this in macbuild its likely you've already got the sources) - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/platforms - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/src - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/macbuild - -3. Open a shell, cd into ROOT/macbuild directory and execute either - ./makevm - or - mvm -A - mvm is a convenience wrapper around makevm that will build different versions - (DeploymentSymbols, Debug, etc) and collect compiler output to log files. - -4. At the end of this process you should have a brand new Croquet.app in the - macbuild folder (or Fast.app Assert.app and Debug.app if you've used mvm). - -N.B. The plugin set is defined by plugins.ext and plugins.int in the build dir.
Deleted: branches/Cog/build.macos32x86/squeak.stack.v3/HowToBuild =================================================================== --- branches/Cog/build.macos32x86/squeak.stack.v3/HowToBuild 2014-06-11 14:02:34 UTC (rev 2980) +++ branches/Cog/build.macos32x86/squeak.stack.v3/HowToBuild 2014-06-11 15:25:46 UTC (rev 2981) @@ -1,29 +0,0 @@ -To generate a VM check-out http://www.squeakvm.org/svn/squeak/branches/Cog/image -which contains -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.chan... -http://www.squeakvm.org/svn/squeak/branches/Cog/image/VMMaker-Squeak4.1.imag... - -How to Build a Croquet Cog Stack VM on Mac OS X --------------------------------- -1. Install the tools (xcode etc); the CoreVM.xcodeproj is set-up to build - using gcc 4.2 but you can optionally install the Intel C++ compiler 11.1 - and change the compilerSpec in CoreVM.xcodeproj/project.pbxproj to get - better performance. - -2. Check out the following sources from svn (if you haven't already - if you're - reading this in macbuild its likely you've already got the sources) - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/platforms - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/src - svn co http://www.squeakvm.org/svn/squeak/branches/Cog/macbuild - -3. Open a shell, cd into ROOT/macbuild directory and execute either - ./makevm - or - mvm -A - mvm is a convenience wrapper around makevm that will build different versions - (DeploymentSymbols, Debug, etc) and collect compiler output to log files. - -4. At the end of this process you should have a brand new Croquet.app in the - macbuild folder (or Fast.app Assert.app and Debug.app if you've used mvm). - -N.B. The plugin set is defined by plugins.ext and plugins.int in the build dir.
Added: branches/Cog/build.win32x86/HowToBuild =================================================================== --- branches/Cog/build.win32x86/HowToBuild (rev 0) +++ branches/Cog/build.win32x86/HowToBuild 2014-06-11 15:25:46 UTC (rev 2981) @@ -0,0 +1,146 @@ +How To Build On Win32 +--------------------- + + +Contents: + - Overview + - Checking out sources to build out-of-the-box + - Building out of the box + - Building a Specific Plugin Dll + - Building the Bochs Support Libraries + - Building an MSI installer (Newspeak) + - Optimization level and gcc version (please read!) + + +Overview +-------- +The "Cog" VM comes in a bewildering variety of forms. The first distinction +is between Squeak/Croquet VMs that run Squeak, Pharo, Cuis, Croquet images +and their ilk, and between Newspeak VMs that run Newspeak. + +Another distinction is between Stack, Cog and Sista VMs. Stack VMs are those +with context-to-stack mapping that optimise message sending by keeping method +activations on a stack instead of in contexts. These are pure interpreters but +significantly faster than the standard context-based Interpreter VM. Cog VMs +add a JIT to the mix, compiling methods used more than once to maxchine code on +the fly. Sista VMs, as yet unrealised and in development, add support for +adaptive optimization that does speculative inlining at the bytecode-to-bytecode +level. These are targeted for release in 2015. + +Another distinction is between "v3" VMs and Spur VMs. "v3" is the original +object representation for Squeak as described in the back-to-the-future paper. +Spur, as described on the www.mirandabanda.org blog, is a faster object +representation which uses generation scavenging, lazy forwarding for fast +become, and a single object header format common to 32 and 64 bit versions. + +Another distinction is between normal single-threaded VMs that schedule "green" +Smalltalk processes above a single-threaded VM, and "multi-threaded" VMs that +share the VM between any number of native threads such that only one native +thread owns the VM at any one time, switching between threads on FFI calls and +callbacks or on Smalltalk process switches when Smalltalk processes are owned +by threads. This multi-threaded support is as yet experimental. + +The final distinction is between production, assert and debug VMs. Production +VMs are fully optimized, although they may include debugging symbols, and as +their name implies are for use in production. Assert and debug VMs include +many assert checks that are disabled in the production VMs. These asserts are +very helpful in debugging VM problems but significantly impact performance. +The difference between assert and debug VMs is that assert VMs are compiled +with moderate optimization, which improves the performance of the asserts, +whereas debug VMs are compiled with no optimization at all, providing maximum +debuggability with minimum performance. + +This directory tree provides build directories for some of this matrix. For +example, squeak.cog.v3 contains a build directory for Smalltalk Cog VMs using +the old object representation, newspeak.stack.spur contains a build directory +for Newspeak Stack VMs using the Spur object representation. Build as desired. + + +Checking out sources to build out-of-the-box +-------------------------------------------- +Check-out at least the relevant platform sources, vm and plugin sources, and +the relevant build directories + svn co http://www.squeakvm.org/svn/squeak/branches/Cog/platforms + svn co http://www.squeakvm.org/svn/squeak/branches/Cog/build.win32x86 + svn co http://www.squeakvm.org/svn/squeak/branches/Cog/sources + svn co http://www.squeakvm.org/svn/squeak/branches/Cog/src etc + (see section "VM source directories" in the root README) + + +Building out of the box +----------------------- +1. Install the tools: +- Install cygwin from www.cygwin.com. As of writing the VM is built using +CYGWIN_NT-5.1 mcstalkerxp 1.5.24(0.156/4/2) 2007-01-31 10:57 i686 Cygwin +Make sure you install the MinGW support, which is in the list of packages called +"mingw-binutils: Binutils for MinGW.org Win32 toolchain". +If on compiling you see the error + --export-dynamic is not supported for PE targets, did you mean --export-all-symbols? +then replace --export-dynamic with --export-all-symbols in the makefiles. + +Then cd to the build directory of your choice, e.g. + build.win32x86/squeak.cog.spur/build +Then either remove any BochsIA32Plugin line from plugins.ext or build the +Bochs support libraries (see Building the Bochs Support Libraries below). +Then execute + ./mvm +This builds debug, assert and production versions of the VM in builddbg/vm, +buildast/vm and build/vm. If the configuration includes multi-threaded builds +it will also create VMs in buildmtdbg/vm, buildmtast/vm and buildmt/vm. The +system builds two VMs in each build/vm directory, e.g. Squeak.exe and +SqueakConsole.exe. The latter is to be used with console applications that wish +to access standard i/o. + +Each build directory contains two files + plugins.int + plugins.ext +that determine the set of plugins to be taken from the supplied plugins +directory (which defaults to ../src/plugins), and which are to be linked +into the VM (plugins.int) or compiled as external dlls to be dynamically +linked at run-time (plugins.ext). Tailor these files as you wish. + +The Newspeak builds include an installer. See Building an MSI installer below. + +Finally, at the build.win32x86 level the makeall script will run all the +mvm scripts it can find. + + +Building a Specific Plugin Dll +------------------------------ +To make only a specific dll one must use the target of the plugin dll (or .lib) +to be made. e.g. + $ cd squeak.cog.spur + $ make build/vm/BochsIA32Plugin.dll + + +Building the Bochs Support Libraries +------------------------------------ +If you want to get the Cog VM simulator working you'll need to build the +BochsIA32Plugin and to build that you'll need to first build bochs. First +check-out the processor simulator source tree containing Bochs: + svn co http://www.squeakvm.org/svn/squeak/branches/Cog/processors +Then build libraries winbochs/{cpu/libcpu.a,disasm/libdisasm.a,fpu/libfpu.a} + $ cd ../processors/IA32/winbochs + $ ./conf.COG + $ ../bochs/makeem + + +Building an MSI installer (Newspeak) +------------------------------------ +The Newspeak builds include an installer subdirectory. The installer build +creates an MSI installer that provides a platform-conformat install experience +for the VM. First build the VM then cd to the installer and make, e.g.: + $ cd newspeak.cog.v3 + $ ./mvm + $ cd installer + $ make + + +Optimization level and gcc version +---------------------------------- +There are issues with gcc version > 4.2.1. Any of the following flags may break the build at -O2: +-ftree-pre +-fpartial-inlining +-fcaller-saves +
@@ Diff output truncated at 50000 characters. @@
vm-dev@lists.squeakfoundation.org