wesnoth/utils/SConstruct

72 lines
2.2 KiB
Python

# vi: syntax=python
import glob
sources = glob.glob("src/*.cpp") +\
glob.glob("src/widgets/*.cpp") +\
glob.glob("src/serialization/*.cpp") +\
glob.glob("src/sdl_ttf/*.c")
sources.remove("src/loadscreen_empty.cpp")
def parse_automake(filename, variable):
"""Crude helper function to parse an automake file."""
sources = []
am = file(filename).read()
x = am.find(variable)
while 1:
done = False
while am[x] != '\\':
if am[x] == '\n':
done = True
break
x += 1
if done: break
x += 1
while am[x].isspace(): x += 1
name = ""
while not am[x].isspace():
name += am[x]
x += 1
sources.append("src/" + name)
return sources
# read editor sources from automake file
editor_sources = parse_automake("src/Makefile.am", "libwesnoth_core_a_SOURCES")
editor_sources += parse_automake("src/Makefile.am", "wesnoth_editor_SOURCES")
# there shouldn't be doubles, but well, let's remove them :)
editor_sources = list(set(editor_sources))
env = Environment()
# The cross compiler to use
env["CC"] = "i586-mingw32msvc-gcc"
env["CXX"] = "i586-mingw32msvc-g++"
# Dependencies: SDL, SDL_net, SDL_mixer, SDL_image, freetype, libintl, python
# This is where I put the dependency headers
env.Append(CPPPATH = ["../win-deps/include"])
# This is where I put the python headers.
env.Append(CPPPATH = ["../win-deps/include/python24"])
# This is where I put the dependency libs
env.Append(LIBPATH = ["../win-deps/lib"])
# Compilation settings
env.Append(CCFLAGS = ["-O2", "-mthreads", "-DHAVE_PYTHON"])
env.Append(LINKFLAGS = ["-s", "-mwindows", "-lmingwthrd"])
env.Append(CPPPATH = ["src", "src/widgets"])
env.Append(LIBS = ["mingw32", "SDLmain", "SDL", "SDL_net", "SDL_mixer", "SDL_image",
"intl", "wsock32", "freetype", "python24"])
# Scons stuff
env.BuildDir("../build", "src")
env.SConsignFile("sconsign")
# Windows stuff
env["PROGSUFFIX"] = ".exe"
# Compile it!
env.Program("wesnoth", ["../build/" + x[4:] for x in sources])
env.Program("wesnoth_editor", ["../build/" + x[4:] for x in editor_sources])