added deterministic test method
[strongtalk-kjk.git] / README.txt
blob179ebfcbe76398a9d95846e0921a5493b6af8c74
1 Caveats\r
2 -------\r
3 The Strongtalk project only started up again recently after having been inactive since 1996, and all VM development stopped at that point.   It is now starting up again, since Strongtalk is still by far the fastest Smalltalk implementation in existence, and is fully open-source unlike any other fast Smalltalk implementations, so there is much of value here.\r
4 \r
5 While the C++ parts of the system now build under VisualStudio 2005 (and the Express version), the assembler files still require Borland Turbo Assembler.  To enable compilation without purchasing the assembler, we have included the .obj files in COFF format from the assembler, for convenience (in bin/asm_objs.\r
6 \r
7 Requirements\r
8 ------------\r
9 In order to run the Strongtalk VM, the following is required:\r
11 1) Intel Pentium PC, 90MHz, at least 32MB of RAM.\r
13 2) Windows NT 4.0 or Windows 95 or higher.\r
15 In order to build the Strongtalk VM from scratch, additionally the following\r
16 software is required:\r
18 3) MS VisualStudio 2005 or VisualStudio 2005 Express\r
20 2) Assembler .obj files are included in the packaged source release, but if \r
21    you wish to reassemble them,\r
22    you will need Borland Turbo Assembler version 4.0. \r
23    We don't know if things work properly with a newer version.\r
24    An installed version of the assembler should be placed in\r
25    the tools\tasm directory - extra installation may only be required\r
26    if there's a problem with the current setup.\r
28 Build instructions\r
29 ------------------\r
31 We will call the root strongtalk directory $STRTLK.\r
33 1) Build the 'makedeps' utility:  In Explorer, navigate \r
34    to $STRTLK\tools\makedeps. Open the VisualStudio project file for \r
35    makedeps, makedeps.vcproj.  "Run Build/Build Solution" from the menu.  This\r
36    should build $STRTLK\tools\makedeps.exe\r
38 2) Use makedeps to build include file dependencies: From a command line, \r
39    cd into the $STRTLK\bin directory.  Run 'nmake -f Makefile.win32 lists'.\r
41 3) From Windows Explorer, start the VisualStudio project for Strongtalk by \r
42    opening $(STRTLK)\bin\strongtalk.vcproj.\r
44 4) In the VisualStudio IDE, choose Build -> Batch Build.\r
45    Select the project configurations you want to build from the choices of\r
46    Debug, Fast, and Product (ignore Release, that is spurious right now)\r
47    and press Rebuild All.\r
49 5) Remove intermediate files if desired from the command file in $STRTLK\bin:\r
50    nmake -f Makefile.win32 clean\r
52 The executables end up in the $STRTLK directory.  Intermediate build files (object files etc) end up in subdirectories of $STRTLK\bin.\r
54 There are three configurations in the project - debug, fast and product.\r
55 Each has its own subdirectory under bin, and its own executable: \r
56 strongtalk_debug.exe, strongtalk_fast.exe and strongtalk.exe, respectively.\r
57 The differences between them are: \r
59 - The debug configuration turns off C++ optimizations, turns on debugging \r
60   options, and also turns on extensive assertions in the code, so it runs \r
61   slowly.\r
63 - The fast configuration is like the debug configuration except that it turns \r
64   off assertions and turns on more C++ optimizations, so it runs quite fast \r
65   yet is still debuggable.  This is a good one to use if you want to get real\r
66   work done in it but still want to be able to debug crashes when they happen.\r
68 - The product configuration turns off all the debugging options, links with\r
69   the non-debug runtime libraries, and turns on more extensive C++ \r
70   optimizations.  This is the version that should be used for benchmarking.\r
72 Note: the code is formatted for a tab-width of 8, so the default of 4 must be changed when\r
73 using Visual Studio.   Go to Tools/Options/Text Editor/All Languages/Tabs.\r
76 Execute instructions\r
77 --------------------\r
79 1) In the $STRLK directory, just run the VM executable you wish to use;\r
80   for the product version that would be:\r
82         strongtalk\r
84   Files needed in that directory for running an application are: \r
85   \r
86      strongtalk.bst - the image file\r
88      .strongtalkrc - the VM configuration options file\r
90   If you wish to use the development environment, you will also need:\r
92      source - folder containing the source code for the Strongtalk libraries\r
97 Special situations\r
98 __________________\r
100 If you do have access to TASM, you should be able to get by by using the object\r
101 files that are generated from the assembly code. If you are using  MS VC++ 4.0,\r
102 you should probably be able do place the object files found in strongtalk\bin\asm_objs\OMF\r
103 in the build subdirectories (debug, fast, product) and doing an incremental build. \r
105 If you don't have an old version of MS VC++, you will either have to wait until\r
106 we provide a version of the code that builds under a newer C++ compiler, or try\r
107 and convert the code yourself. \r
109 Issues: if you get the C++ code to compile, you\r
110 will find that VisualStudio 2005 will not link with the object files produced by TASM, which are in OMF format.  \r
111 You can substitute these with the COFF versions\r
112 found in strongtalk\bin\asm_objs\COFF and repeat the link phase. This should work\r
113 (it worked for us). \r
115 If you want to build on a non-windows machine, we're all for it, but you have non-trivial work to do.\r
117 Problems we have encountered\r
118 ----------------------------\r
119 Occasionally, despite strict adherence to the build instructions, we have run into problems on some machines, \r
120 probably due to pre-existing installations of later versions of tools, environment variable differences, etc.\r
121 - Link errors (LNK1104): It appears that on some machines, some libraries (e.g. kernel32.lib) cannot be found. \r
122 By setting the full path (e.g., "C:\Program Files\MSDEV\LIB\kernel32.lib") we were able to circumvent this problem.\r
123 You can do this in MSDEV by choosing Build>Settings and choosing the Link tab, and ensuring that every library that is missing is\r
124 listed explicitly with its full path name in the Object files list. All 3 projects should have the same list of libraries:\r
125 "c:\Program Files\msdev\lib\kernel32.lib" "c:\Program Files\msdev\lib\user32.lib" "c:\Program Files\msdev\lib\gdi32.lib" "c:\Program Files\msdev\lib\winspool.lib" "c:\Program Files\msdev\lib\comdlg32.lib" "c:\Program Files\msdev\lib\advapi32.lib" "c:\Program Files\msdev\lib\shell32.lib" "c:\Program Files\msdev\lib\ole32.lib" "c:\Program Files\msdev\lib\oleaut32.lib" "c:\Program Files\msdev\lib\uuid.lib" "c:\Program Files\msdev\lib\LIBCD.lib" "c:\Program Files\msdev\lib\oldnames.lib" \r
127 You can paste this in the Object files field of the Links tab under Buikd>Settings in MSDEV.\r