working on more installation functionality

git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/ZeroRadiant@240 8a3a26a2-13c4-0310-b231-cf6edde360e5
This commit is contained in:
TTimo 2008-04-05 21:38:49 +00:00
parent c5e7176fc3
commit 555ea60407
4 changed files with 107 additions and 4 deletions

View file

@ -13,7 +13,7 @@ import utils
class Config:
# not used atm, but useful to keep a list in mind
# may use them eventually for the 'all' and other aliases expansions?
target_choices = utils.Enum( 'radiant', 'q3map2' )
target_choices = utils.Enum( 'radiant', 'q3map2', 'setup' )
config_choices = utils.Enum( 'debug', 'release' )
# aliases
@ -29,6 +29,11 @@ class Config:
self.cc = 'gcc'
self.cxx = 'g++'
self.install_directory = 'install'
# platforms for which to assemble a setup
self.setup_platforms = [ 'local', 'x86', 'x64', 'win32' ]
# paks to assemble in the setup
self.setup_packs = [ 'Q3Pack', 'UrTPack' ]
def __repr__( self ):
return 'config: target=%s config=%s' % ( self.target_selected, self.config_selected )
@ -48,12 +53,20 @@ class Config:
def _processInstallDir( self, ops ):
self.install_directory = os.path.normpath( os.path.expanduser( ops[0] ) )
def _processSetupPlatforms( self, ops ):
self.setup_platforms = ops
def _processSetupPacks( self, ops ):
self.setup_packs = ops
def setupParser( self, operators ):
operators['target'] = self._processTarget
operators['config'] = self._processConfig
operators['cc'] = self._processCC
operators['cxx'] = self._processCXX
operators['install_directory'] = self._processInstallDir
operators['setup_platforms'] = self._processSetupPlatforms
operators['setup_packs'] = self._processSetupPacks
def emit_radiant( self ):
settings = self
@ -167,6 +180,13 @@ class Config:
else:
self.emit_q3map2()
try:
self.target_selected.index( 'setup' )
except:
pass
else:
self.Setup()
def SetupEnvironment( self, env, config, useGtk = False, useGtkGL = False, useJPEG = False, useZ = False, usePNG = False ):
env['CC'] = self.cc
env['CXX'] = self.cxx
@ -227,9 +247,30 @@ class Config:
else:
env.Append( CFLAGS = [ '-O3', '-Winline', '-ffast-math', '-fno-unsafe-math-optimizations', '-fno-strict-aliasing' ] )
env.Append( CXXFLAGS = [ '-O3', '-Winline', '-ffast-math', '-fno-unsafe-math-optimizations','-fno-strict-aliasing' ] )
#env.Append( CFLAGS = [ '-march=pentium3' ] )
# env.Append( LINKFLAGS = [ '-m32' ] )
def CheckoutOrUpdate( self, svnurl, path ):
if ( os.path.exists( path ) ):
# NOTE: check the svnurl matches?
cmd = 'svn update "%s"' % path
print cmd
else:
cmd = 'svn checkout %s "%s"' % ( svnurl, path )
ret = os.system( cmd )
if ( ret != 0 ):
raise 'checkout or update failed'
def FetchGamePaks( self, path ):
for pak in self.setup_packs:
if ( pak == 'Q3Pack' or pak == 'UrTPack' ):
svnurl = 'https://zerowing.idsoftware.com/svn/radiant.gamepacks/%s/trunk' % pak
self.CheckoutOrUpdate( svnurl, os.path.join( path, 'installs', pak ) )
def Setup( self ):
for platform in self.setup_platforms:
if ( platform == 'local' ):
# special case, fetch external paks under the local install directory
self.FetchGamePaks( self.install_directory )
# parse the config statement line to produce/update an existing config list
# the configs expose a list of keywords and accepted values, which the engine parses out

View file

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<!-- synapse XML configuration -->
<synapseconfig>
<client name="core">
<api name="image">
tga jpg
</api>
<api name="VFS">
pk3
</api>
<api name="shaders">
quake3
</api>
<api name="map">
mapq3
</api>
<api name="eclass">
def
</api>
<api name="surfdialog">
quake3
</api>
</client>
<client name="image">
<api name="VFS">
pk3
</api>
</client>
<client name="shaders">
<!-- NOTE: this is a SYN_PROVIDE -->
<api name="shaders">
quake3
</api>
<api name="VFS">
pk3
</api>
</client>
<client name="map">
<api name="shaders">
quake3
</api>
</client>
<client name="xmap">
<api name="shaders">
quake3
</api>
</client>
<client name="model">
<api name="shaders">
quake3
</api>
<api name="VFS">
pk3
</api>
</client>
</synapseconfig>

View file

@ -3244,10 +3244,10 @@ void CGameInstall::Run() {
}
fprintf( fg, "<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"yes\"?>\n<game\n" );
fprintf( fg, " name=\"%s\"\n", m_strName.GetBuffer() );
fprintf( fg, " gametools=\"%sgames/%s\"\n", g_strAppPath.GetBuffer(), m_strName.GetBuffer() );
fprintf( fg, " enginepath=\"%s\"\n", m_strEngine.GetBuffer() );
switch ( m_availGames[ m_nComboSelect ] ) {
case GAME_Q2: {
fprintf( fg, " gametools=\"%sgames/quake2\"\n", g_strAppPath.GetBuffer() );
fprintf( fg, " prefix=\".quake2\"\n" );
Str source = g_strAppPath.GetBuffer();
source += "installs/";
@ -3258,6 +3258,7 @@ void CGameInstall::Run() {
break;
}
case GAME_Q3: {
fprintf( fg, " gametools=\"%sgames/quake3\"\n", g_strAppPath.GetBuffer() );
fprintf( fg, " prefix=\".q3a\"\n" );
Str source = g_strAppPath.GetBuffer();
source += "installs/";
@ -3268,6 +3269,7 @@ void CGameInstall::Run() {
break;
}
case GAME_URT: {
fprintf( fg, " gametools=\"%sgames/q3ut4\"\n", g_strAppPath.GetBuffer() );
fprintf( fg, " prefix=\".q3a\"\n" );
Str source = g_strAppPath.GetBuffer();
source += "installs/";
@ -3278,6 +3280,7 @@ void CGameInstall::Run() {
break;
}
case GAME_UFOAI: {
fprintf( fg, " gametools=\"%sgames/ufoai\"\n", g_strAppPath.GetBuffer() );
fprintf( fg, " prefix=\".ufoai\"\n" );
Str source = g_strAppPath.GetBuffer();
source += "installs/";
@ -3288,6 +3291,7 @@ void CGameInstall::Run() {
break;
}
case GAME_Q2W: {
fprintf( fg, " gametools=\"%sgames/q2w\"\n", g_strAppPath.GetBuffer() );
fprintf( fg, " prefix=\".quake2world\"\n" );
Str source = g_strAppPath.GetBuffer();
source += "installs/";
@ -3298,6 +3302,7 @@ void CGameInstall::Run() {
break;
}
case GAME_WARSOW: {
fprintf( fg, " gametools=\"%sgames/warsow\"\n", g_strAppPath.GetBuffer() );
fprintf( fg, " prefix=\".warsow\"\n" );
Str source = g_strAppPath.GetBuffer();
source += "installs/";
@ -3308,6 +3313,7 @@ void CGameInstall::Run() {
break;
}
case GAME_NEXUIZ: {
fprintf( fg, " gametools=\"%sgames/nexuiz\"\n", g_strAppPath.GetBuffer() );
fprintf( fg, " prefix=\".nexuiz\"\n" );
Str source = g_strAppPath.GetBuffer();
source += "installs/";