Compile HL SDK in Linux
Goal: Compile the unmodified HL SDK under Linux, using gcc-2.96 An ANSI C compiler.
Required: vmware, RH 9 ISO's, patched HL SDK, Linux HLDS installed. Time.
Why would anyone want to compile the plain vanillia HL SDK? It is a good place to start building the Linux toolchain for a HL Mod. The SDK was originally compiled by Valve in Linux with egcs-1.1.2, Which is Not an ANSI C compiler. It worked They sold Half-Life.


step-by-step in XP.
get vmware workstation 6 beta
http://www.vmware.com

get RH 9 iso's
http://fr.rpmfind.net/linux/redhat/9/en/iso/i386/
shrike-i386-disc1.iso
shrike-i386-disc2.iso

get patched HL SDK v2.3
http://metamod.sourceforge.net/files/sdk/
install on on windows host, then copy to VM later, using shared folder.
hl_sdk_v23_source.exe
hl_sdk_v23_source-update-p3.zip

Better to wait and get this when in the VM.
hlsdk-2.3-p3.tar.gz

NOTE: The HL SDK files at metamod.org are not
ANSI C compliant.

install vmware.
-----------------
create a new virtual machine.

Select the Appropriate Configuration
Virtual machine configuration
check Custom

Choose the Virtual Machine Hardware Compatibility
Workstation 5

Select a Guest Operating System
check Linux

Virtual machine name
Red Hat Linux 9

...

Network Type
check Use bridged networking
or NAT

Select I/O Adapter Types
SCSI Adapters check LSI Logic

when finished
click VM, settings. select cdrom, click Use ISO, browse for disc1-iso

click start this virtual machine.


Install RH 9
-----------------
at the main Red Hat screen where it shows boot:
type: text and press enter.
...
installation type
choose custom.
...
package group selection
scroll down check the box by development tools.

start the install. after a while it will prompt for disk2
click VM, settings. select cdrom, click Use ISO, browse for disc2-iso
at the end click to reboot virtual machine.

install vmware tools.
click VM, install vmware tools.
login as root
cd /tmp
mount /dev/cdrom /mnt/cdrom
tar zxvf /mnt/cdrom/VMwareTools-6.0.0-44426.tar.gz
cd vmware-tools-distrib
./vmware-tool.pl
yes to defaults.

I set window to 1024x768 (option 3)

add a user account.
type:
startx
use the RedHat Main Menu, System Settings, Users and Groups
add user
User Name: username
Password: passwd

logout from gnome desktop
exit from root

login as user
local host login: username
password: passwd

startx
RedHat Main Menu, System Tools, Terminal


Install HLDS
---------------
type:
mkdir hlds
cd hlds
wget http://storefront.steampowered.com/download/hldsupdatetool.bin
chmod +x
./hldsupdatetool.bin
type: yes
extracting steam.tar.Z...done

type:
./steam -command update
Checking bootstrapper version ...
Getting version 18 of Steam HLDS Update Tool
Downloading. . . . . . . . . . . .
Steam Linux Client updated, please retry the command

type:
./steam -command update -game valve -dir .
It runs for a while, get a cold drink.
...
HLDS installation up to date


Get the patched HL SDK
-------------------
type:
cd
wget [url]http://metamod.sourceforge.net/files/sdk/hlsdk-2.3-p3.tar.gz[/url]
tar zxvf hlsdk-2.3-p3.tar.gz
cd hlsdk-2.3-p3/multiplayer/dlls

Compile
-------------------
edit the Makefile and change CC=gcc to CC=gcc296
gmake
Lots of errors. The patched HL SDK is not ANSI-compliant.

It took me a little longer than a half and hour using this guide:
http://articles.thewavelength.net/617/


could add a new section for things like isalnum, isspace, isprint.
error:
client.cpp: In function `void Host_Say (edict_t *, int)':
client.cpp: `isprint' undeclared (first use this function)
----
fix:
add <include> "ctype.h" to three files.
sound.cpp
client.cpp
multiplayer-rules.cpp
-----

gmake builds a mp_i386.so
save the original hl_i386.so
cp ~hlds/valve/dlls/hl_i386.so ~hlds/valve/dlls/orig_hl_i386.so
cp mp_i386.so ~hlds/valve/dlls/hl_i386.so

cd ~/hlds
./hlds_run +map bounce +sv_lan 1 +ip 192.168.xxx.xxx +port 27016
It works! Can Join from lan.