#! /usr/bin/env python # encoding: utf-8 # mittorn, 2018 from waflib import Logs import os top = '.' def options(opt): opt.add_option( '--enable-bsp2', action = 'store_true', dest = 'SUPPORT_BSP2_FORMAT', default = False, help = 'build engine with BSP2 map support(recommended for Quake, breaks compability!)') def configure(conf): # check for dedicated server build if conf.options.DEDICATED: if(conf.env.DEST_OS == 'linux'): conf.check( lib='rt' ) conf.env.append_unique('DEFINES', 'SINGLE_BINARY') conf.env.append_unique('DEFINES', 'XASH_DEDICATED') else: # TODO: add way to specify SDL2 path, move to separate function try: conf.check_cfg( path='sdl2-config', args='--cflags --libs', package='', msg='Checking for SDL2', uselib_store='SDL2') except conf.errors.ConfigurationError: if(conf.options.SDL2_PATH): conf.start_msg('Configuring SDL2 by provided path') conf.env.HAVE_SDL2 = 1 conf.env.INCLUDES_SDL2 = [ os.path.abspath(os.path.join(conf.options.SDL2_PATH, 'include')), os.path.abspath(os.path.join(conf.options.SDL2_PATH, 'include/SDL2')) ] libpath = 'lib' if(conf.env.COMPILER_CC == 'msvc'): libpath = 'lib/x86' conf.env.LIBPATH_SDL2 = [os.path.abspath(os.path.join(conf.options.SDL2_PATH, libpath))] conf.env.LIB_SDL2 = ['SDL2'] conf.end_msg('yes: {0}, {1}, {2}'.format(conf.env.LIB_SDL2, conf.env.LIBPATH_SDL2, conf.env.INCLUDES_SDL2)) else: conf.fatal('SDL2 not availiable! If you want to build dedicated server, specify --dedicated') conf.env.append_unique('DEFINES', 'XASH_SDL') if(conf.options.SUPPORT_BSP2_FORMAT): conf.env.append_unique('DEFINES', 'SUPPORT_BSP2_FORMAT') if conf.env.DEST_OS == 'win32': conf.check( lib='user32' ) conf.check( lib='shell32' ) conf.check( lib='gdi32' ) conf.check( lib='advapi32' ) conf.check( lib='dbghelp' ) conf.check( lib='psapi' ) conf.env.append_unique('DEFINES', 'DBGHELP') def get_subproject_name(ctx): return os.path.basename(os.path.realpath(str(ctx.path))) def build(bld): bld.load_envs() bld.env = bld.all_envs[get_subproject_name(bld)] libs = [] source = bld.path.ant_glob([ 'common/*.c', 'common/imagelib/*.c', 'common/soundlib/*.c', 'common/soundlib/libmpg/*.c', 'server/*.c']) # basic build: dedicated only, no dependencies if bld.env.DEST_OS != 'win32': libs += [ 'DL' , 'M', 'PTHREAD' ] source += bld.path.ant_glob(['platform/posix/*.c']) else: libs += ['USER32', 'SHELL32', 'GDI32', 'ADVAPI32', 'DBGHELP', 'PSAPI'] source += bld.path.ant_glob(['platform/win32/*.c']) if bld.env.DEST_OS == 'linux': source += bld.path.ant_glob(['platform/linux/*.c']) # add client files and sdl2 library if not bld.env.DEDICATED: libs.append( 'SDL2' ) source += bld.path.ant_glob([ 'client/*.c', 'client/vgui/*.c', 'client/avi/*.c', 'platform/sdl/*.c']) else: if(bld.env.DEST_OS == 'linux'): libs.append('RT') includes = ['common', 'server', 'client', 'client/vgui', '.', '../common', '../pm_shared' ] if(bld.env.SINGLE_BINARY): bld( source = source, target = 'xash', features = 'c cprogram', includes = includes, use = libs, install_path = bld.env.BINDIR, subsystem = bld.env.MSVC_SUBSYSTEM ) else: bld.shlib( source = source, target = 'xash', features = 'c', includes = includes, use = libs, install_path = bld.env.LIBDIR, subsystem = bld.env.MSVC_SUBSYSTEM )