made some of compiler defines to be file specific to reduce recompilation

Improved wesnothd filename quessing a bit
This commit is contained in:
Pauli Nieminen 2008-06-22 22:41:36 +00:00
parent c68154130f
commit 3200d42e06
3 changed files with 103 additions and 50 deletions

View file

@ -234,47 +234,20 @@ if env['gui'] == 'small':
if env['lowmem']:
env.Append(CPPDEFINES = "LOW_MEM")
if env['fribidi']:
env.Append(CPPDEFINES = "HAVE_FRIBIDI")
if env['raw_sockets']:
env.Append(CPPDEFINES = "NETWORK_USE_RAW_SOCKETS")
if env['internal_data']:
env.Append(CPPDEFINES = "USE_INTERNAL_DATA")
if env['python']:
env.Append(CPPDEFINES = "HAVE_PYTHON")
if env['editor2']:
env.Append(CPPDEFINES = "USE_EDITOR2")
if have_X:
env.Append(CPPDEFINES = "_X11")
if sys.platform != "win32":
if env['prefsdir']:
env.Append(CPPDEFINES = "PREFERENCES_DIR='\"%s\"'" % env['prefsdir'] )
if env['fifodir']:
env.Append(CPPDEFINES = "FIFODIR='\"%s\"'" % env['fifodir'] )
if env['localedirname']:
env.Append(CPPDEFINES = "LOCALEDIR='\"%s\"'" % env['localedirname'] )
if not os.path.isabs(env['localedirname']):
env.Append(CPPDEFINES = "HAS_RELATIVE_LOCALEDIR")
if env['dummy_locales']:
env.Append(CPPDEFINES = "USE_DUMMYLOCALES")
if env['editor2']:
env.Append(CPPDEFINES = "USE_EDITOR2")
# Simulate autools-like behavior of prefix on various paths
installdirs = Split("bindir datadir fifodir icondir desktopdir mandir docdir python_site_packages_dir")
for d in installdirs:
env[d] = os.path.join(env["prefix"], env[d])
if env["PLATFORM"] != "win32":
env.Append(CPPDEFINES = "WESNOTH_PATH='\"%s\"'" % env['datadir'])
for d in installdirs:
env[d] = os.path.join("/", env["destdir"], env[d].lstrip("/"))

View file

@ -6,6 +6,10 @@ from glob import glob
Import("*")
python_env = env.Clone()
if env['python']:
python_env.Append(CPPDEFINES = "HAVE_PYTHON")
#color_range.cpp should be removed, but game_config depends on it.
#game_config has very few things that are needed elsewhere, it should be
#removed. Requires moving path and version at least to other files.
@ -13,13 +17,10 @@ Import("*")
libwesnoth_core_sources = Split("""
color_range.cpp
config.cpp
filesystem.cpp
game_config.cpp
gettext.cpp
log.cpp
map.cpp
network.cpp
network_worker.cpp
thread.cpp
tstring.cpp
util.cpp
@ -30,6 +31,34 @@ libwesnoth_core_sources = Split("""
serialization/string_utils.cpp
serialization/tokenizer.cpp
""")
if env['raw_sockets']:
libwesnoth_core_sources.extend( env.Object("network_worker.cpp", CPPDEFINES = "NETWORK_USE_RAW_SOCKETS"))
else:
libwesnoth_core_sources.extend( env.Object("network_worker.cpp"))
game_config_env = env.Clone()
if env["PLATFORM"] != "win32":
game_config_env.Append(CPPDEFINES = "WESNOTH_PATH='\"%s\"'" % env['datadir'])
libwesnoth_core_sources.extend( game_config_env.Object("game_config.cpp"))
filesystem_env = env.Clone()
if env['localedirname']:
filesystem_env.Append(CPPDEFINES = "LOCALEDIR='\"%s\"'" % env['localedirname'] )
if not os.path.isabs(env['localedirname']):
filesystem_env.Append(CPPDEFINES = "HAS_RELATIVE_LOCALEDIR")
if env['prefsdir']:
filesystem_env.Append(CPPDEFINES = "PREFERENCES_DIR='\"%s\"'" % env['prefsdir'] )
libwesnoth_core_sources.extend( filesystem_env.Object("filesystem.cpp"))
libwesnoth_core = env.Library("wesnoth_core", libwesnoth_core_sources)
libwesnoth_sources = Split("""
@ -43,12 +72,10 @@ libwesnoth_sources = Split("""
display.cpp
events.cpp
filechooser.cpp
font.cpp
generic_event.cpp
hotkeys.cpp
image.cpp
key.cpp
language.cpp
loadscreen.cpp
map_create.cpp
map_label.cpp
@ -111,6 +138,18 @@ libwesnoth_sources = Split("""
gui/widgets/window.cpp
gui/widgets/window_builder.cpp
""")
if env['fribidi']:
libwesnoth_sources.extend( env.Object("font.cpp", CPPDEFINES = "HAVE_FRIBIDI"))
else:
libwesnoth_sources.extend( env.Object("font.cpp"))
if env['dummy_locales']:
libwesnoth_sources.extend( env.Object("language.cpp", CPPDEFINES = "USE_DUMMYLOCALES"))
else:
libwesnoth_sources.extend( env.Object("language.cpp"))
libwesnoth = env.Library("wesnoth", libwesnoth_sources)
libwesnothd_sources = Split("""
@ -141,11 +180,9 @@ wesnoth_sources = Split("""
actions.cpp
addon_checks.cpp
addon_management.cpp
ai.cpp
ai_dfool.cpp
ai_attack.cpp
ai_move.cpp
ai_python.cpp
ai_village.cpp
animated_game.cpp
attack_prediction.cpp
@ -172,7 +209,6 @@ wesnoth_sources = Split("""
multiplayer.cpp
multiplayer_ui.cpp
multiplayer_wait.cpp
multiplayer_connect.cpp
multiplayer_create.cpp
multiplayer_lobby.cpp
pathfind.cpp
@ -204,6 +240,10 @@ wesnoth_sources = Split("""
widgets/scrollpane.cpp
""")
wesnoth_sources.extend( python_env.Object("ai_python.cpp"))
wesnoth_sources.extend( python_env.Object("ai.cpp"))
wesnoth_sources.extend( python_env.Object("multiplayer_connect.cpp"))
# used with editor2 option in the wesnoth target
wesnoth_editor2_sources = Split("""
editor2/editor_main.cpp
@ -234,7 +274,9 @@ def WesnothProgram(env, target, source, can_build, **kw):
from SCons.Script.SConscript import SConsEnvironment
SConsEnvironment.WesnothProgram = WesnothProgram
env.WesnothProgram("wesnoth", ["game.cpp"] + wesnoth_sources + [libwesnoth_core, libwesnoth_sdl, libwesnoth, libcampaignd] + wesnoth_res, have_client_prereqs)
game_cpp = python_env.Object("game.cpp");
env.WesnothProgram("wesnoth", [game_cpp] + wesnoth_sources + [libwesnoth_core, libwesnoth_sdl, libwesnoth, libcampaignd] + wesnoth_res, have_client_prereqs)
wesnoth_editor_sources = Split("""
editor/editor.cpp
@ -250,9 +292,14 @@ wesnoth_editor_sources = Split("""
env.WesnothProgram("wesnoth_editor", wesnoth_editor_sources + [libwesnoth_core, libwesnoth_sdl, libwesnoth] + wesnoth_editor_res, have_client_prereqs and not env["editor2"])
campaignd_sources = Split("""
campaign_server/campaign_server.cpp
server/input_stream.cpp
""")
if env['fifodir']:
campaignd_sources.extend( env.Object("campaign_server/campaign_server.cpp", CPPDEFINES = "FIFODIR='\"%s\"'" % env['fifodir']))
else:
campaignd_sources.extend( env.Object("campaign_server/campaign_server.cpp"))
env.WesnothProgram("campaignd", campaignd_sources + [libwesnoth_core, libwesnothd, libcampaignd], have_server_prereqs)
wesnothd_sources = Split("""
@ -262,10 +309,14 @@ wesnothd_sources = Split("""
server/metrics.cpp
server/player.cpp
server/proxy.cpp
server/server.cpp
server/simple_wml.cpp
time.cpp
""")
if env['fifodir']:
wesnothd_sources.extend( env.Object("server/server.cpp", CPPDEFINES = "FIFODIR='\"%s\"'" % env['fifodir']))
else:
wesnothd_sources.extend( env.Object("server/server.cpp"))
env.WesnothProgram("wesnothd", wesnothd_sources + [libwesnoth_core, libwesnothd], have_server_prereqs)
cutter_sources = Split("""
@ -294,7 +345,7 @@ if env["svnrev"] != "" and env["svnrev"] != "exported":
lambda target, source, env: open(str(target[0]), "w").write(revision_define),
"Generating revision.hpp..."
))
env.Append(CPPDEFINES = 'HAVE_REVISION')
game_config_env.Append(CPPDEFINES = 'HAVE_REVISION')
sources = []
if "TAGS" in COMMAND_LINE_TARGETS:

View file

@ -1664,7 +1664,13 @@ void game_controller::start_wesnothd()
throw game::mp_server_error("Couldn't locate the server binary.");
}
std::string config = "data/lan_server.cfg";
std::string config = get_user_data_dir() + "/lan_server.cfg";
if (!file_exists(config))
{
// copy file if it isn't created yet
write_file(config, read_file("data/lan_server.cfg"));
}
#ifndef _WIN32
config = "\"" + game_config::wesnothd_name +"\" -c " + config + " -d -t 2 -T 5 ";
LOG_GENERAL << "Starting wesnothd: "<< config << "\n";
@ -1676,6 +1682,30 @@ void game_controller::start_wesnothd()
if (std::system(("cmd /C start \"wesnoth server\" /B \"" + game_config::wesnothd_name + "\" -c " + config + " -t 2 -T 5 ").c_str()) != 0)
#endif
{
#ifndef _WIN32
// try to locate wesnothd
std::string old_name = game_config::wesnothd_name;
std::string needle = "wesnothd";
size_t found = game_config::wesnothd_name.rfind(needle);
if (found != std::string::npos
&& found + needle.size() < game_config::wesnothd_name.size())
{
game_config::wesnothd_name = game_config::wesnothd_name.substr(0, found + needle.size());
try {
start_wesnothd();
return;
} catch(...)
{
game_config::wesnothd_name = old_name;
throw;
}
}
else
#endif
{
// We should show gui to set wesnothd_name
}
LOG_GENERAL << "Failed to run server start script\n";
throw game::mp_server_error("Starting MP server failed!");
}
@ -1685,27 +1715,26 @@ void game_controller::start_wesnothd()
bool game_controller::play_multiplayer()
{
int res;
state_ = game_state();
state_.campaign_type = "multiplayer";
state_.campaign_define = "MULTIPLAYER";
//Print Gui only if the user hasn't specified any server
if( multiplayer_server_.empty() ){
if(gui2::new_widgets) {
gui2::tmp_method_selection dlg;
dlg.show(disp().video());
dlg.show(disp().video());
if(dlg.get_retval() == gui2::tbutton::OK) {
res = dlg.get_choice();
} else {
return false;
if(dlg.get_retval() == gui2::tbutton::OK) {
res = dlg.get_choice();
} else {
return false;
}
}
} else {