racket/src/worksp
Eli Barzilay 268ed5df20 * Undo big endian check in configure since it was already in mzscheme;
* Make foreign use special handling for big endians depending on accessing
  a location directly or accessing an argument.

svn: r623
2005-08-21 07:03:28 +00:00
..
gc2 fixed make.ss to deal with worksp-vc07 split 2005-07-19 15:17:47 +00:00
jpeg worksp is now for vc7.1 2005-07-05 20:58:34 +00:00
libmred worksp is now for vc7.1 2005-07-05 20:58:34 +00:00
libmysterx worksp is now for vc7.1 2005-07-05 20:58:34 +00:00
libmzgc worksp is now for vc7.1 2005-07-05 20:58:34 +00:00
libmzsch worksp is now for vc7.1 2005-07-05 20:58:34 +00:00
mred 299.200 2005-07-29 06:34:31 +00:00
mrstart worksp is now for vc7.1 2005-07-05 20:58:34 +00:00
mzcom 299.200 2005-07-29 06:34:31 +00:00
mzscheme 299.200 2005-07-29 06:34:31 +00:00
mzstart worksp is now for vc7.1 2005-07-05 20:58:34 +00:00
pltgdi worksp is now for vc7.1 2005-07-05 20:58:34 +00:00
png worksp is now for vc7.1 2005-07-05 20:58:34 +00:00
starters Added src, set properties for all DOS files. 2005-05-27 21:53:51 +00:00
uniplt Added src, set properties for all DOS files. 2005-05-27 21:53:51 +00:00
wxme worksp is now for vc7.1 2005-07-05 20:58:34 +00:00
wxs worksp is now for vc7.1 2005-07-05 20:58:34 +00:00
wxutils worksp is now for vc7.1 2005-07-05 20:58:34 +00:00
wxwin worksp is now for vc7.1 2005-07-05 20:58:34 +00:00
zlib worksp is now for vc7.1 2005-07-05 20:58:34 +00:00
mzconfig.h * Undo big endian check in configure since it was already in mzscheme; 2005-08-21 07:03:28 +00:00
README merge fixes for Cygwin 2005-07-28 21:55:31 +00:00

This directory contains 

 - solution files and project files for building MzScheme and
    MrEd with Microsoft Visual Studio (which work with the .NET
    and Express 2005 versions of Visual Studio);

 - mzconfig.h which is a manual version of information that is
    gathered automatically when using the "configure" script.

If you have downloaded MzCOM, the directory also contains Visual
Studio files for MzCOM.

Visual Studio Express is available for free from Microsoft, and it is
the recommended compiler for building PLT Scheme.

MzScheme and MrEd also compile with Cygwin gcc (a free compiler from
GNU and Cygnus Solutions), but the result is a Unix-style
installation, not a Window-style installation. To compile with gcc,
follow the instructions in plt\src\README (there is a short
Windows-specific section in that file).

With an MSVC-built MzScheme, compatible extensions can be built with
other compilers. Build with Cygwin and copy the installed plt\lib\gcc
to a MSVC-based build to support Cygwin-built extensions. To support
Borland-built extensions, cd to plt\src\mzscheme\dynsrc and run
mkbordyn.bat (which requires bcc23.exe, of course).

As always, please report bugs via one of the following:
  - Help Desk's "submit bug report" link  (preferred)
  - http://bugs.plt-scheme.org/
  - bugs@plt-scheme.org                   (last resort)

-PLT
 scheme@plt-scheme.org

----------------------------------------------------------------------
Building MzScheme, MzCOM, and MrEd
----------------------------------------------------------------------

The source code for MzScheme, MzCOM, and MrEd is split into several
projects that are grouped into a few solutions. To make the `X'
solution with Visual Studio, open the file plt\src\worksp\X\X.sln.
[When you open a solution, the selected configuration will most likely
be "Debug". Consider changing to "Release" before you build to enable
optimization.]

To build MzScheme, make the MzScheme solution in
   plt\src\worksp\mzscheme - makes plt\mzscheme.exe

To build MzCOM, make the MzCOM solution in
   plt\src\worksp\mzcom - makes plt\collects\mzcom\mzcom.exe

To build MrEd, make the MrEd solution:
   plt\src\worksp\mred - makes plt\mred.exe

The make processes for MzScheme and MzCOM automatically build
   libmzgc - makes plt\libmzgcxxxxxxx.dll and
             plt\src\worksp\libmzgc\Release\libmzgcxxxxxxx.lib
   mzsrc - makes plt\libmzschxxxxxxx.dll and
                 plt\src\worksp\mzsrc\Release\mzsrcxxxxxxx.lib

The make process for MrEd automatically builds
   libmzgc - as above
   libmzsch - as above
   libmred - makes plt\libmredxxxxxxx.dll and
                   plt\src\worksp\libmred\Release\libmredxxxxxxx.lib
   pltdgi - makes plt\pltgdi_xxxxxxx.dll
   wxutils - makes plt\src\worksp\wxutils\Release\wxutils.lib
   wxwin - makes plt\src\worksp\wxwin\Release\wxwin.lib
   wxs  - makes plt\src\worksp\wxs\Release\wxs.lib
   wxme  - makes plt\src\worksp\wxme\Release\wxme.lib
   jpeg  - makes plt\src\worksp\jpeg\Release\jpeg.lib
   png  - makes plt\src\worksp\jpeg\Release\png.lib
   zlib  - makes plt\src\worksp\jpeg\Release\zlib.lib

In addition, building MzScheme executes
   plt\src\mzscheme\dynsrc\mkmzdyn.bat
which copies .exp, .obj, and .lib files into plt\lib\, and also copies
uniplt_xxxxxxx.dll to plt\.  The DLL is used only under Windows
95/98/Me for Unicode.

The pltgdi_xxxxxxx.dll is used for smoothed (i.e., anti-aliased)
drawing, but only when gdiplus.dll is available. If pltgdi_xxxxxxx.dll
or gdiplus.dll is not found by MrEd at run-time, smooth drawing is
disabled.

To complete a build, run the versioning script described in the next
section.

----------------------------------------------------------------------
Versioning
----------------------------------------------------------------------

The obnoxious "xxxxxxx" in the DLL names is a placeholder for a
version number. Embedding a version number in a DLL name appears to
be the simplest and surest way to avoid version confusion.

For local testing, you can use the "xxxxxxx" libraries directly. For
any binaries that will be distributed, however, the placeholder should
be replaced with a specific version.

To replace the "xxxxxxx" with a specific version, run

  mzscheme -mvqL winvers.ss setup

in a shell. The "winvers.ss" program will have to make a temporary
copy of mzscheme.exe, libmzschxxxxxxx.dll, and libmzgcxxxxxxx.dll (in
the temporary directory), and it will re-launch MzScheme a couple of
times. The resulting conversions are
  plt\mzscheme.exe -> plt\mzscheme.exe (updated)
  plt\mred.exe -> plt\mred.exe         (updated)
  plt\mzcom.exe -> plt\mzcom.exe       (updated)
  plt\libmzgcxxxxxxx.dll -> plt\libmzgc<version>.dll
  plt\libmzschxxxxxxx.dll -> plt\libmzsch<version>.dll
  plt\libmredxxxxxxx.dll -> plt\libmred<version>.dll
  plt\src\worksp\libmzsch\Release\libmzschxxxxxxx.lib
                          -> plt\lib\win32\msvc\libmzsch<version>.lib
  plt\src\worksp\libmzgc\Release\libmzgcxxxxxxx.lib
                          -> plt\lib\win32\msvc\libmzgc<version>.lib
  plt\pltgdi_xxxxxxx.dll -> plt\pltgdi_<version>.dll
  plt\uniplt_xxxxxxx.dll -> plt\uniplt_<version>.dll

----------------------------------------------------------------------
Extra stuff for MzScheme and MrEd
----------------------------------------------------------------------

If you're building from scratch, you'll also want the starter
programs used by the launcher collection to make drscheme.exe
and mzc.exe:

   mzstart - makes plt\collects\launcher\mzstart.exe
   mrstart - makes plt\collects\launcher\mrstart.exe

Then, set up all the other executables (besides mred.exe
and mzscheme.exe) by running

   mzscheme.exe -mvqM- setup

(This makes the .zo files, too. To skip compiling .zos, 
add -n to the end of the above command.)

----------------------------------------------------------------------
Embedding MzScheme
----------------------------------------------------------------------

The MzScheme DLLs can be used within an embedding application.

The libraries

    plt\src\worksp\libmzsch\Release\libmzschxxxxxxx.lib
    plt\src\worksp\libmzgc\Release\libmzgcxxxxxxx.lib

which are created by the mzsrc and gc projects, provide linking
information for using the libmzschxxxxxxx.dll and libmzgcxxxxxxx.dll
DLLs. The versioning script adjusts the names and puts them in
    plt\lib\msvc\libmzsch<version>.lib
    plt\lib\msvc\libmzgc<version>.lib

See the "Inside PLT MzScheme" manual for more information about using
these libraries to embed MzScheme in an application.


If you need MzScheme to link to a DLL-based C library (instead of
statically linking to the C library within the MzScheme DLL), then:
 
 1. Compile MzScheme with the /MD flag.

 2. Define the pre-processor symbol USE_MSVC_MD_LIBRARY while
    compiling the GC with /MD.

 3. In your embedding application, call GC_pre_init() before calling
    any MzScheme and GC function.