1import sys 2 3Import('env') 4Import('version') 5Import('revision') 6Import('debug') 7Import('sdl_cflags') 8Import('sdl_libs') 9Import('lib_dir') 10Import('smpeg_lib') 11 12venv = env.Clone() 13env = env.Clone() 14env.Append(CPPPATH=['#/engine', '#/engine/src']) 15bt_env = env.Clone() 16 17env.MergeFlags(sdl_cflags, sdl_libs) 18bt_env.MergeFlags(sdl_cflags, sdl_libs) 19 20venv.Append(CPPDEFINES=['VERSION="\\"' + version + '\\""']) 21venv.Append(CPPDEFINES=['REVISION=%d' % revision]) 22 23venv.Append(CPPDEFINES=['BTANKSAPI=DLLEXPORT']); 24env.Append(CPPDEFINES=['BTANKSAPI=DLLEXPORT']); 25 26vobj = venv.SharedObject('src/version.cpp') 27bt_sources = [ 28#networking 29 'net/message.cpp', 'net/server.cpp', 'net/client.cpp', 'net/connection.cpp', 'net/monitor.cpp', 'net/scanner.cpp', 30#menu 31 'menu/checkbox.cpp', 'menu/shop.cpp', 'menu/image_view.cpp', 'menu/shop_item.cpp', 'menu/popup_menu.cpp', 32 'menu/start_server_menu.cpp', 'menu/join_server_menu.cpp', 'menu/campaign_menu.cpp', 'menu/chat.cpp', 33 'menu/menu.cpp', 'menu/box.cpp', 'menu/upper_box.cpp', 'menu/container.cpp', 'menu/menu_item.cpp', 34 'menu/map_picker.cpp', 'menu/scroll_list.cpp', 'menu/control.cpp', 'menu/map_details.cpp', 'menu/player_picker.cpp', 35 'menu/chooser.cpp', 'menu/label.cpp', 'menu/button.cpp', 'menu/menu_config.cpp', 'menu/map_desc.cpp', 36 'menu/prompt.cpp', 'menu/text_control.cpp', 'menu/host_list.cpp', 'menu/options_menu.cpp', 'menu/control_picker.cpp', 37 'menu/slider.cpp', 'menu/redefine_keys.cpp', 'menu/tooltip.cpp', 'menu/player_name_control.cpp', 38 'menu/host_item.cpp', 'menu/number_control.cpp', 'menu/video_control.cpp', 'menu/network_status.cpp', 39 'menu/join_team.cpp', 'menu/mode_panel.cpp', 'menu/grid.cpp', 'menu/notepad.cpp', 'menu/video_control_disabled.cpp', 40 'menu/simple_gamepad_setup.cpp', 'menu/medals.cpp', 'menu/image.cpp', 'menu/main_menu.cpp', 'menu/profiles_menu.cpp', 41 'menu/new_profile_dialog.cpp', 42#end of menu 43 44 'src/finder.cpp', 'src/zbox.cpp', 'src/campaign.cpp', 'src/netstats.cpp', 45 46 'src/alarm.cpp', 'src/base_object.cpp', 'src/notifying_xml_parser.cpp', 'src/xml_parser.cpp', 47 'src/special_zone.cpp', 'src/game_monitor.cpp', 48 'src/player_manager.cpp', 'src/variants.cpp', 49 50 'ai/base.cpp', 'ai/buratino.cpp', 'ai/herd.cpp', 'ai/traits.cpp', 'ai/waypoints.cpp', 'ai/rush.cpp', 'ai/old_school.cpp', 'ai/trooper.cpp', 'ai/targets.cpp', 51 52 'src/player_state.cpp', 'controls/control_method.cpp', 'controls/simple_joy_bindings.cpp', 53 'controls/joyplayer.cpp', 'controls/keyplayer.cpp', 'controls/mouse_control.cpp', 54 55 'src/object.cpp', 'src/animation_model.cpp', 'src/rotating_object.cpp', 56 'src/resource_manager.cpp', 'src/world.cpp', 57 58 'tmx/generator_object.cpp', 'tmx/tileset.cpp', 'tmx/generator.cpp', 'tmx/tileset_list.cpp', 59 'tmx/map.cpp', 'tmx/layer.cpp', 60 61 'src/var.cpp', 'src/config.cpp', 'src/registrar.cpp', 'src/profiler.cpp', 62 63 'src/player_slot.cpp', 'src/hud.cpp', 'src/console.cpp', 64 'src/i18n.cpp', 'src/game.cpp', 'src/window.cpp', 'src/logo.cpp', 65 'src/credits.cpp', 'src/cheater.cpp', 66 'src/vehicle_traits.cpp', 'src/nickname.cpp', 67 'src/rt_config.cpp', 'src/team.cpp', 68 69 'sound/mixer.cpp', 'sound/ogg_ex.cpp', 'sound/ogg_stream.cpp', 70 71 vobj 72 ] 73 74vorbis = 'vorbisfile' 75if debug and sys.platform == "win32": 76 vorbis = 'vorbisfile_d' 77 78bt_libs = ['mrt', 'sdlx', smpeg_lib, 'SDL', vorbis, 'clunk'] 79 80if sys.platform != 'win32': 81 got_lua = False 82 for lua in ['lua-5.1', 'lua5.0', 'lua']: 83 try: 84 env.ParseConfig("pkg-config --cflags --libs %s 2>/dev/null" %lua); 85 got_lua = True 86 env.Append(CPPDEFINES=['ENABLE_LUA']) 87 bt_libs.append(lua) 88 break 89 except: 90 continue 91 if not got_lua: 92 raise Exception("Cannot find lua-5.1/lua5.0 or lua pkg-config information") 93 94env.Append(CPPDEFINES=['ENABLE_LUA']) 95bt_sources.append('luaxx/state.cpp') 96bt_sources.append('luaxx/lua_hooks.cpp') 97 98if sys.platform == "win32": 99 bt_libs.append('lua') 100 bt_libs.append('Ws2_32') 101 bt_libs.append('user32') 102 #bt_libs.append('gdi32') 103# bt_libs.append('opengl32') 104#else: 105# bt_libs.append('GL') 106 107if sys.platform != 'win32': 108 env.Append(LINKFLAGS=['-Wl,-rpath,'+ lib_dir]) 109 env.Append(LINKFLAGS=['-Wl,-rpath-link,build/' + env['mode'] + '/mrt']) 110 env.Append(LINKFLAGS=['-Wl,-rpath-link,build/' + env['mode'] + '/sdlx']) 111 env.Append(LINKFLAGS=['-Wl,-rpath-link,build/' + env['mode'] + '/clunk']) 112 113 114bt = env.SharedLibrary('btanks_engine', bt_sources, LIBS=bt_libs) 115 116if sys.platform != 'win32' and len(env['prefix']) > 0: 117 Import('install_targets') 118 Import('lib_dir') 119 install_targets.append(Install(lib_dir, bt)) 120else: 121 Install('#', bt[0]) 122 123bt_main_sources = ['src/main.cpp'] 124bt_main_libs = ['mrt', 'btanks_engine', 'SDL', 'sdlx'] 125 126if sys.platform == "win32": 127 bt_rc = env.RES('src/bt.rc') 128 bt_main_sources.append(bt_rc) 129 bt_main_libs.append('user32') 130 bt_main_libs.append('sdlx_main') 131 132if sys.platform != 'win32': 133 bt_env.Append(LINKFLAGS=['-Wl,-rpath,'+ lib_dir]) 134 bt_env.Append(LINKFLAGS=['-Wl,-rpath-link,build/' + env['mode'] + '/mrt']) 135 bt_env.Append(LINKFLAGS=['-Wl,-rpath-link,build/' + env['mode'] + '/sdlx']) 136 bt_env.Append(LINKFLAGS=['-Wl,-rpath-link,build/' + env['mode'] + '/clunk']) 137 138bt_main = bt_env.Program('btanks', bt_main_sources, LIBS=bt_main_libs, RPATH=[lib_dir]) 139 140if sys.platform == 'win32': 141 bt_env.AddPostAction(bt_main, 'mt.exe -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;2') 142 143if sys.platform != 'win32' and len(bt_env['prefix']) > 0: 144 Import('install_targets'); 145 install_targets.append(Install(bt_env['prefix'] + '/bin', bt_main)) 146else: 147 Install('#', bt_main) 148