Hacked scons scripts and got it building on Ubuntu with clang.

Minor changes to support building on recent clang
Addition of some headers for non-compiling files
This commit is contained in:
ultra
2016-10-11 20:08:03 -04:00
committed by Celtic Minstrel
parent 65aed58d33
commit ffa2d0e950
14 changed files with 38 additions and 19 deletions

View File

@@ -5,11 +5,11 @@ import subprocess
platform = ARGUMENTS.get('OS', Platform())
if str(platform) not in ("darwin", "win32"):
if str(platform) not in ("darwin", "win32", "posix"):
print "Sorry, your platform is not supported."
print "Platform is:", platform
print "Specify OS=<your-platform> if you believe this is incorrect."
print "(Supported platforms are: darwin, win32)"
print "(Supported platforms are: darwin, win32, posix)"
Exit(1)
print 'Building for:', platform
@@ -42,6 +42,10 @@ else:
echo -e "\n#define GIT_REVISION \"\"\n#define GIT_TAG \"\"\n#define GIT_TAG_REVISION \"\"\n" > #TARGET
""")
if str(platform) == "posix":
env.Append(CXXFLAGS="-std=c++11")
env["CC"] = 'clang'
env["CXX"] = 'clang++'
if str(platform) == "darwin":
env.Append(CXXFLAGS="-std=c++11 -stdlib=libc++", RPATH='../Frameworks')
env["CC"] = 'clang'
@@ -146,6 +150,9 @@ elif str(platform) == "win32":
)
def build_app_package(env, source, build_dir, info):
env.Install(build_dir, source)
elif str(platform) == "posix":
def build_app_package(env, source, build_dir, info):
env.Install(build_dir, source)
env.AddMethod(build_app_package, "Package")
@@ -274,10 +281,14 @@ if str(platform) == "darwin":
OpenGL
Cocoa
"""))
else:
elif str(platform) == "win32":
env.Append(LIBS=Split("""
opengl32
"""))
elif str(platform) == "posix":
env.Append(LIBS=Split("""
GL
"""))
Export("env platform")

View File

@@ -20,7 +20,7 @@ env.Install(path.join(data_dir, "shaders"), Glob("#src/tools/mask.*"))
if str(platform) == "darwin":
scen_gfx = Glob("Blades of Exile Scenarios/*.meg")
elif str(platform) == "win32":
else:
scen_gfx = Glob("Blades of Exile Scenarios/*.BMP")
env.Install(path.join(install_dir, "Blades of Exile Scenarios"), Glob("Blades of Exile Scenarios/*.exs") + scen_gfx)

View File

@@ -35,7 +35,7 @@ elif str(platform) == "win32":
"""))
game_sources.append(env.RES('#build/obj/BladesOfExile.res', '#rsrc/menus/BladesOfExile.rc'))
boe = env.Program("#build/bin/Blades of Exile", common_sources + party_classes + game_sources)
boe = env.Program("#build/bin/Blades of Exile", game_sources + common_sources + party_classes)
if str(platform) == "darwin":
boe_info = {
@@ -44,7 +44,7 @@ if str(platform) == "darwin":
'creator': 'blx!',
'icons': 'BoE boegraphics boeresources boesave boesounds',
}
elif str(platform) == "win32":
else:
boe_info = {}
env.Package(boe, install_dir, boe_info)

View File

@@ -12,6 +12,8 @@
#include <set>
#include <sstream>
#include <iostream>
#include <algorithm>
#include <utility>
#include "universe.hpp"
#include "oldstructs.hpp"
@@ -422,8 +424,12 @@ void cPlayer::sort_items() {
if(item_priority[items[i + 1].variety] <
item_priority[items[i].variety]) {
no_swaps = false;
std::swap(items[i + 1], items[i]);
std::swap(equip[i + 1], equip[i]);
std::swap(items[i + 1], items[i]);
// we can't use std::swap here, the fact VS accepted it was due to a bug https://connect.microsoft.com/VisualStudio/feedback/details/775818/vc11-non-const-lvalue-reference-incorrectly-binds-to-rvalue
// std::swap(equip[i + 1], equip[i]);
bool tempEquip = equip[i+1];
equip[i+1] = equip[i];
equip[i] = tempEquip;
if(weap_poisoned.slot == i + 1)
weap_poisoned.slot--;
else if(weap_poisoned.slot == i)

View File

@@ -3,4 +3,4 @@ Import("env")
dlog_util = env.StaticLibrary("#build/lib/dlogutil", Glob("*.cpp") + Glob("xml-parser/*.cpp"))
Return("dlog_util")
Return("dlog_util")

View File

@@ -12,6 +12,7 @@
#include "button.hpp"
#include "pict.hpp"
#include "stack.hpp"
#include <climits>
cScrollPane::cScrollPane(cDialog& parent) : cContainer(CTRL_PANE, parent), scroll(parent) {
recalcRect();

View File

@@ -12,6 +12,7 @@
#include "message.hpp"
#include "pict.hpp"
#include "scrollbar.hpp"
#include <climits>
bool cStack::hasChild(std::string id) {
return controls.find(id) != controls.end();

View File

@@ -21,7 +21,7 @@ elif str(platform) == "win32":
"""))
pced_sources.append(env.RES('#rsrc/menus/CharEditor.rc'))
pced = env.Program("#build/bin/BoE Character Editor", common_sources + party_classes + pced_sources)
pced = env.Program("#build/bin/BoE Character Editor", pced_sources + common_sources + party_classes)
if str(platform) == "darwin":
pced_info = {
@@ -30,7 +30,7 @@ if str(platform) == "darwin":
'creator': 'blxe',
'icons': 'BoECharEd',
}
elif str(platform) == "win32":
else:
pced_info = {}
env.Package(pced, install_dir, pced_info)

View File

@@ -23,7 +23,7 @@ elif str(platform) == "win32":
"""))
scened_sources.extend(env.RES('#rsrc/menus/ScenEditor.rc'))
scened = env.Program("#build/bin/BoE Scenario Editor", common_sources + scened_sources)
scened = env.Program("#build/bin/BoE Scenario Editor", scened_sources + common_sources)
if str(platform) == "darwin":
scened_info = {
@@ -32,7 +32,7 @@ if str(platform) == "darwin":
'creator': 'BlEd',
'icons': 'boescenario BoEScenEd',
}
elif str(platform) == "win32":
else:
scened_info = {}
env.Package(scened, install_dir, scened_info)

View File

@@ -23,4 +23,4 @@ elif str(platform) == "win32":
tools_obj = env.StaticLibrary("#build/lib/tools", tools)
Return("tools_obj")
Return("tools_obj")

View File

@@ -15,7 +15,7 @@
#ifdef _WIN32
#include <windows.h>
#endif
#include <GL/GL.h>
#include <GL/gl.h>
#endif
#include <iostream>

View File

@@ -12,6 +12,7 @@
#include <cctype>
#include <iterator>
#include <numeric>
#include <cstring>
using namespace std;

View File

@@ -36,10 +36,8 @@ void erase_if(ContainerT& items, const PredicateT& predicate) {
};
// Case-insensitive string comparison seems to be semi-standard, but with different names.
#if defined(__APPLE__)
#define strnicmp strncasecmp
#elif defined(_MSC_VER)
#if defined(_MSC_VER)
#define strnicmp _strnicmp
#else
#error Missing strnicmp / strncasecmp
#define strnicmp strncasecmp
#endif

View File

@@ -10,6 +10,7 @@
#include <algorithm>
#include <cstdio>
#include <ctime>
#include <cstring>
#ifdef _MSC_VER
// For some bizarre reason, Visual Studio doesn't declare snprintf in <cstdio>