Build: Fixed GiveFnptrsToDll not being found on Windows

Also fixed server DLL being named server.dll instead of hl.dll.
This commit is contained in:
Jonathan Poncelet 2019-10-31 08:14:36 +00:00
parent 71afe6e204
commit 1bc65c15f5
2 changed files with 22 additions and 16 deletions

View File

@ -4,21 +4,28 @@
from waflib import Utils from waflib import Utils
import os import os
def options(opt): def options(opt):
# stub # stub
return return
def configure(conf): def configure(conf):
# stub if conf.env.DEST_OS == 'win32':
return # hl.def removes MSVC function name decoration from GiveFnptrsToDll on Windows.
# Without this, the lookup for this function fails.
hlDefNode = conf.path.find_resource("./hl.def")
if hlDefNode is not None:
conf.env.append_unique('LINKFLAGS', f'/def:{hlDefNode.abspath()}')
else:
conf.fatal("Could not find hl.def")
def build(bld): def build(bld):
defines = [] defines = []
source = bld.path.parent.ant_glob([ source = bld.path.parent.ant_glob([
'pm_shared/*.c', 'pm_shared/*.c',
]) ])
source += [ source += [
'agrunt.cpp', 'airtank.cpp', 'aflock.cpp', 'animating.cpp', 'animation.cpp', 'apache.cpp', 'agrunt.cpp', 'airtank.cpp', 'aflock.cpp', 'animating.cpp', 'animation.cpp', 'apache.cpp',
'barnacle.cpp', 'barney.cpp', 'bigmomma.cpp', 'bloater.cpp', 'bmodels.cpp', 'bullsquid.cpp', 'buttons.cpp', 'barnacle.cpp', 'barney.cpp', 'bigmomma.cpp', 'bloater.cpp', 'bmodels.cpp', 'bullsquid.cpp', 'buttons.cpp',
@ -42,7 +49,7 @@ def build(bld):
'triggers.cpp', 'tripmine.cpp', 'turret.cpp', 'triggers.cpp', 'tripmine.cpp', 'turret.cpp',
'util.cpp', 'util.cpp',
'weapons.cpp', 'world.cpp', 'xen.cpp', 'zombie.cpp'] 'weapons.cpp', 'world.cpp', 'xen.cpp', 'zombie.cpp']
if bld.env.VOICEMGR: if bld.env.VOICEMGR:
source += bld.path.parent.ant_glob([ source += bld.path.parent.ant_glob([
'game_shared/voice_gamemgr.cpp', 'game_shared/voice_gamemgr.cpp',
@ -61,7 +68,7 @@ def build(bld):
bld.shlib( bld.shlib(
source = source, source = source,
target = 'server', target = bld.env.SERVER_NAME,
features = 'c cxx', features = 'c cxx',
includes = includes, includes = includes,
defines = defines, defines = defines,

19
wscript
View File

@ -33,21 +33,20 @@ def options(opt):
grp.add_option('--enable-goldsrc-support', action = 'store_true', dest = 'GOLDSRC', default = False, grp.add_option('--enable-goldsrc-support', action = 'store_true', dest = 'GOLDSRC', default = False,
help = 'enable GoldSource engine support [default: %default]') help = 'enable GoldSource engine support [default: %default]')
grp.add_option('--enable-lto', action = 'store_true', dest = 'LTO', default = False, grp.add_option('--enable-lto', action = 'store_true', dest = 'LTO', default = False,
help = 'enable Link Time Optimization [default: %default]') help = 'enable Link Time Optimization [default: %default]')
grp.add_option('--enable-poly-opt', action = 'store_true', dest = 'POLLY', default = False, grp.add_option('--enable-poly-opt', action = 'store_true', dest = 'POLLY', default = False,
help = 'enable polyhedral optimization if possible [default: %default]') help = 'enable polyhedral optimization if possible [default: %default]')
opt.recurse('cl_dll dlls')
opt.load('xcompile compiler_cxx compiler_c clang_compilation_database strip_on_install') opt.load('xcompile compiler_cxx compiler_c clang_compilation_database strip_on_install')
if sys.platform == 'win32': if sys.platform == 'win32':
opt.load('msvc msdev msvs') opt.load('msvc msdev msvs')
opt.load('reconfigure')
opt.load('reconfigure subproject')
opt.add_subproject(["cl_dll", "dlls"])
def configure(conf): def configure(conf):
# Configuration # Configuration
@ -220,10 +219,10 @@ def configure(conf):
conf.define('CLIENT_WEAPONS', '1') conf.define('CLIENT_WEAPONS', '1')
conf.recurse('cl_dll dlls') conf.add_subproject(["cl_dll", "dlls"])
def build(bld): def build(bld):
bld.recurse('cl_dll dlls') bld.add_subproject(["cl_dll", "dlls"])