 -----
 Developing GSport
 -----
 David Schmidt (david__schmidt at users dot souceforge dot net)
 -----

Developing GSport

 Information, mostly concerning building, about various platforms:

* General Build Instructions

 You need to build with a <<<make>>> utility.
There's a default Makefile, which should work for nearly any environment.
The Makefile includes a file called <<<vars>>> which defines the platform-
dependent variables.  You need to make <<<vars>>> point to (or be) the appropriate
file for your machine.

* Win32

 There is a different port of KEGS by Chea Chee Keong (akilgard) called
KEGS32.  It was originally available from {{{http://web.archive.org/web/20071107082448/http://www.geocities.com/akilgard/kegs32/}http://www.geocities.com/akilgard/kegs32}},
but geocities has since closed.
The Win32 code in GSport is leveraged from KEGS32.

 GSport can be compiled with {{{http://www.mingw.org/}Mingw}}
and {{{http://www.cygwin.com/}Cygwin}} as well as via standard Microsoft compiler suites.

 In order to compile with the standard Microsoft compiler suites, download and 
install {{{https://www.visualstudio.com/downloads/download-visual-studio-vs}Microsoft Visual Studio Community 2015 from Microsoft's website}}.
The build process requires Perl, such as {{{http://www.activestate.com/activeperl}ActiveState ActivePerl}}.
Within Visual Studio, open the "gsport.sln" solution file.  Set the "gsport" project as the "StartUp Project",
and choose "Build Solution" from the "Build" menu.

 In order to compile with Cygwin:

------------------
cd into the src/ directory
rm vars
ln -s vars_win32 vars
make
------------------

 You need to have a ROM file (named
ROM, ROM.01, or ROM.03) in the same directory as the resulting executable.

 To quit, either click the close box, or force quit the application.
You can also middle-click (if you have a 3-button mouse) or
Shift-F6 to get the debugger in the terminal window, and then type "q".

* Mac OS X

 Use the <<<vars_mac>>> file:

-------------------------------------
cd into the src/ directory
rm vars; ln -s vars_mac vars
make
-------------------------------------

 After the <<<make>>> has finished, it will create the application <<<GSport>>>.

* X86 Linux

 Use the <<<vars_x86linux>>> file:

-------------------------------------
cd into the src/ directory
rm vars; ln -s vars_x86linux vars
make
-------------------------------------

 The resulting executable is called <<<gsportx>>>.

 The build scripts assume perl is in your path. If it is somewhere else,
you need to edit the "PERL = perl" line in the vars file and make it point
to the correct place.

 For audio, GSport needs access to <<</dev/dsp>>>.  If the permissions do not allow
GSport to access <<</dev/dsp>>>, it can fail with a cryptic error message.  As root,
just do: <<<chmod 666 /dev/dsp>>> .

 If you do not have the <<</dev/dsp>>> device, GSport will not start unless you
tell it to disable audio with the following command-line argument:
<<<./gsportx -audio 0>>>

* PowerPC Linux

 Use the <<<vars_linuxppc>>> file:

-------------
cd into the src/ directory
rm vars; ln -s vars_linuxppc vars
make
---------

 The build scripts assume perl is in your path. If it is somewhere else,
you need to edit the "PERL = perl" line in the vars file and make it point
to the correct place.

 Audio is currently disabled by default, but you can try turning it on
by runnning the command: <<<gsportx -audio 1>>>.  It sounds horrible, but sounds do
come out.

* Raspberry Pi

 At first, you may want to update/upgrade your base OS:

  * <<<sudo apt-get update>>>

  * <<<sudo apt-get upgrade>>>

  []

 Then, add a line with the value <<<snd-pcm-oss>>> to the <<</etc/modules>>> file and reboot to enable sound.
 Change the permissions to the resulting device <<</dev/pcm>>> (after rebooting): <<<sudo chmod 666 /dev/pcm>>>

 Depending on the version of your OS, the following packages may need to be installed:

  * xfonts-base:  <<<sudo apt-get install xfonts-base>>>

  * libX11-dev:  <<<sudo apt-get install libX11-dev>>>

  * libxext-dev:  <<<sudo apt-get install libxext-dev>>>

  * libpcap-dev:  <<<sudo apt-get install libpcap-dev>>>

  []


 Use the <<<vars_pi>>> file for compilation:

-------------
cd into the src/ directory
rm vars; ln -s vars_pi vars
make
---------

 The resulting executable is called <<<gsportx>>>.

* Solaris SPARC

 Use the <<<vars_solaris>>> file:

-------------------------------------
cd into the src/ directory
rm vars; ln -s vars_solaris vars
make
-------------------------------------

 The build scripts assume perl is in your path. If it is somewhere else,
you need to edit the "PERL = perl" line in the vars file and make it point
to the correct place.

 Audio is currently disabled by default, but you can try turning it on
by runnning the command: <<<gsportx -audio 1>>>

* Solaris x86

 Use the <<<vars_x86solaris>>> file:

-------------------------------------
cd into the src/ directory
rm vars; ln -s vars_x86solaris vars
make
-------------------------------------

 The build scripts assume perl is in your path. If it is somewhere else,
you need to edit the "PERL = perl" line in the vars file and make it point
to the correct place.

 Audio is currently disabled by default, but you can try turning it on
by runnning the command: <<<gsportx -audio 1>>>

* Other platforms - "C"

 If you are porting to an X-windows and Unix-based machine, it should be
easy.  Start with <<<vars_x86linux>>> if you are a little-endian machine, or
<<<vars_linuxppc>>> if you are big endian.  Don't define <<<-DGSPORT_LITTLE_ENDIAN>>>
unless your processor is little-endian (Alpha, x86, Mac Intel).  Mac PPC, Sun, MIPS,
HP, Motorola, and IBM Power are big-endian.

* Under Development - Autotools Integration

 With the autotools branch, the following sequence will
execute the build from the main directory:

----------------
autoreconf
automake --add-missing
autoheader
autoconf
sh configure
make
----------------

* Extended {Capabilities} by Platform

 All platforms have a common core of capabilities:
 
 * Base IIgs emulation
 
 * Ensoniq sound emulation
 
 * Virtual serial ports mapped to real hardware or IP-emulated ports
 
 * Text and graphical printers 

 []
 
 The table below notes where the various builds differ in the support they have in the 
 code base now for various extended capabilities.  
 Turning the "No" boxes into "Yes" are all opportunities for contributions!

*-----:------:------:------+
|| <<Platform>> || <<Ethernet>> || <<Drag/Drop Disks>> || <<Clipboard Paste>>
*-----:------:------:------+
 Linux     |  No  | No  | No  |
*-----:------:------:------+
 Macintosh |  No  | No  | Yes |
*-----:------:------:------+
 Windows   |  Yes | Yes | Yes |
*-----:------:------:------+

[]

* Building Graphical Printer Support 

 Until graphical parallel printer support is generally integrated into all builds, the following work needs to be done:

 * Install Simple DirectMedia Layer ({{{http://www.libsdl.org/}SDL}}) and Freetype in your build environment - you'll need to link to their libraries 

 * Add the <<<-DHAVE_SDL>>> option to your <<<CCOPTS>>> and add the same (perhaps to a new) <<<CPPOPTS>>> in your <<<vars>>> file

 * Add something like <<<-I/usr/include/freetype2>>> and <<<-I/usr/include/SDL>>> options to your <<<CCOPTS>>> and add the same (perhaps for a new) <<<CPPOPTS>>> in your <<<vars>>> file to point to the SDL and Freetype include files

 * Include SDL and Freetype libraries to <<<EXTRA_LIBS>>> in your <<<vars>>> file (i.e. <<<EXTRA_LIBS = -lSDL -lfreetype>>>)

 * Include the Win32 common dialog library to <<<EXTRA_LIBS>>> as part of your final linkage if you're on Windows (i.e. <<<EXTRA_LIBS = -lSDL -lfreetype -lcomdlg32>>>)

 * After building, you'll need the file <<<parallel.rom>>> in the same directory that <<<config.txt>>> is found

 * You'll probably want a monospaced TrueType font file easily accessible to add as part of the GSport configuration

 * Run through the emulated printer {{{./printer.html}configuration}} steps

 []