1
0
forked from 0ad/0ad

# further cleanup to build system

remove platform specific code, provide "external library" definitions,
automatically add static libs to main EXE project.

This was SVN commit r3955.
This commit is contained in:
janwas 2006-06-07 01:40:24 +00:00
parent 40f29a8345
commit 82dc962a56

View File

@ -37,19 +37,7 @@ source_root = "../../../source/" -- default for most projects - overridden by lo
-- test workspace. -- test workspace.
-- create a package and set the attributes that are common to all packages. function package_set_target(package_name)
function create_package_with_cflags (package_name, target_type)
-- Note: don't store in local variable. A global variable needs to
-- be set for Premake's use; it is implicitly used in e.g. matchfiles()
package = newpackage()
package.path = project.path
package.language = "c++"
package.name = package_name
package.kind = target_type
------------- target --------------
-- Note: On Windows, ".exe" is added on the end, on unices the name is used directly -- Note: On Windows, ".exe" is added on the end, on unices the name is used directly
package.config["Debug" ].target = package_name.."_dbg" package.config["Debug" ].target = package_name.."_dbg"
@ -60,9 +48,9 @@ function create_package_with_cflags (package_name, target_type)
package.config["Debug" ].objdir = obj_dir_prefix.."Debug" package.config["Debug" ].objdir = obj_dir_prefix.."Debug"
package.config["Testing"].objdir = obj_dir_prefix.."Test" package.config["Testing"].objdir = obj_dir_prefix.."Test"
package.config["Release"].objdir = obj_dir_prefix.."Release" package.config["Release"].objdir = obj_dir_prefix.."Release"
end
function package_set_build_flags()
------------- build flags --------------
package.buildflags = { "with-symbols", "no-edit-and-continue", "extra-warnings" } package.buildflags = { "with-symbols", "no-edit-and-continue", "extra-warnings" }
@ -77,10 +65,10 @@ function create_package_with_cflags (package_name, target_type)
-- various platform-specific build flags -- various platform-specific build flags
if OS == "windows" then if OS == "windows" then
table.insert(package.buildflags, "no-rtti") tinsert(package.buildflags, "no-rtti")
-- use native wchar_t type (not typedef to unsigned short) -- use native wchar_t type (not typedef to unsigned short)
table.insert(package.buildflags, { "native-wchar_t" }) tinsert(package.buildflags, "native-wchar_t")
else -- *nix else -- *nix
package.buildoptions = { package.buildoptions = {
"-Wall", "-Wall",
@ -98,12 +86,177 @@ function create_package_with_cflags (package_name, target_type)
"CONFIG_USE_MMGR" "CONFIG_USE_MMGR"
} }
end end
end
-- create a package and set the attributes that are common to all packages.
function package_create(package_name, target_type)
-- Note: don't store in local variable. A global variable needs to
-- be set for Premake's use; it is implicitly used in e.g. matchfiles()
package = newpackage()
package.path = project.path
package.language = "c++"
package.name = package_name
package.kind = target_type
package_set_target(package_name)
package_set_build_flags()
return package return package
end end
function package_add_contents(source_root, rel_source_dirs, rel_include_dirs, extern_libs, extra_params)
-- win_names
-- unix_names
-- dbg_suffix
-- no_delayload
-- add_func
extern_lib_defs = {
boost = {
},
cxxtest = {
},
dbghelp = {
win_names = { "dbghelp" },
dbg_suffix = "",
},
devil = {
},
directx = {
win_names = { "ddraw", "dsound" },
dbg_suffix = "",
},
libjpg = {
win_names = { "jpeg-6b" },
unix_names = { "jpeg" },
},
libpng = {
win_names = { "libpng13" },
unix_names = { "png" },
},
openal = {
win_names = { "openal32" },
unix_names = { "openal" },
dbg_suffix = "",
},
opengl = {
win_names = { "opengl32", "glu32", "gdi32" },
unix_names = { "GL", "GLU", "X11" },
dbg_suffix = "",
},
spidermonkey = {
win_names = { "js32" },
unix_names = { "js" },
},
vorbis = {
win_names = { "vorbisfile" },
unix_names = { "vorbisfile" },
dbg_suffix = "_d",
},
wxwindows = {
add_func = function()
tinsert(package.includepaths, libraries_dir.."wxwidgets/include/msvc")
tinsert(package.includepaths, libraries_dir.."wxwidgets/include")
tinsert(package.libpaths, libraries_dir.."wxwidgets/lib/vc_lib")
package.config["Debug" ].links = { "wxmsw26ud_gl" }
package.config["Release"].links = { "wxmsw26u_gl" }
end,
},
xerces = {
win_names = { "xerces-c_2" },
unix_names = { "xerces-c" },
no_delayload = 1,
},
zlib = {
win_names = { "zlib1" },
unix_names = { "z" },
},
sdl = {
unix_names = { "SDL" },
}
}
function add_delayload(name, suffix, def)
if def["no_delayload"] then
return
end
-- currently only supported by VC; nothing to do on other platforms.
if OS ~= "windows" then
return
end
-- no extra debug version
if suffix == "" then
tinsert(package.linkoptions, "/DELAYLOAD:"..name..".dll")
else
local dbg_cmd = "/DELAYLOAD:" .. name .. suffix .. ".dll"
local cmd = "/DELAYLOAD:" .. name .. ".dll"
tinsert(package.config["Debug" ].linkoptions, dbg_cmd)
-- 'Testing' config uses 'Debug' DLLs
tinsert(package.config["Testing"].linkoptions, dbg_cmd)
tinsert(package.config["Release"].linkoptions, cmd)
end
end
function add_extern_lib(extern_lib, def)
-- Add '<libraries root>/<libraryname>/lib' and '/include' to the includepaths and libpaths
tinsert(package.includepaths, libraries_dir .. extern_lib .. "/include")
tinsert(package.libpaths, libraries_dir .. extern_lib .. "/lib")
-- careful: make sure to only use *_names when on the correct platform.
local names = {}
if OS == "windows" then
if def.win_names then
names = def.win_names
end
else
if def.unix_names then
names = def.unix_names
end
end
local suffix = "d"
if def["dbg_suffix"] then
suffix = def["dbg_suffix"]
end
for i,name in names do
tinsert(package.config["Debug" ].links, name .. suffix)
-- 'Testing' config uses 'Debug' DLLs
tinsert(package.config["Testing"].links, name .. suffix)
tinsert(package.config["Release"].links, name)
add_delayload(name, suffix, def)
end
end
function package_add_extern_libs(extern_libs)
for i,extern_lib in extern_libs do
local def = extern_lib_defs[extern_lib]
assert(def, "external library not defined")
if def["add_func"] then
def["add_func"]()
else
add_extern_lib(extern_lib, def)
end
end
end
function package_add_contents(source_root, rel_source_dirs, rel_include_dirs, extra_params)
-- We don't want the VC project to be deeply nested (once for each -- We don't want the VC project to be deeply nested (once for each
-- folder in source_root). Therefore, remove the source_root -- folder in source_root). Therefore, remove the source_root
@ -114,33 +267,32 @@ function package_add_contents(source_root, rel_source_dirs, rel_include_dirs, ex
package.trimprefix = source_root package.trimprefix = source_root
package.files = sourcesfromdirs(source_root, rel_source_dirs) package.files = sourcesfromdirs(source_root, rel_source_dirs)
if extra_params["extrasource"] then
for i,v in extra_params["extrasource"] do
table.insert(package.files, source_root .. v)
end
end
package.includepaths = {} package.includepaths = {}
-- Put the project-specific PCH directory at the start of the -- Put the project-specific PCH directory at the start of the
-- include path, so '#include "precompiled.h"' will look in -- include path, so '#include "precompiled.h"' will look in
-- there first -- there first
if not extra_params["no_default_pch"] then if not extra_params["no_default_pch"] then
table.insert(package.includepaths, source_root .. "pch/" .. package.name) tinsert(package.includepaths, source_root .. "pch/" .. package.name)
end end
-- next is source root dir, for absolute (nonrelative) includes -- next is source root dir, for absolute (nonrelative) includes
-- (e.g. "lib/precompiled.h") -- (e.g. "lib/precompiled.h")
table.insert(package.includepaths, source_root) tinsert(package.includepaths, source_root)
for i,v in rel_include_dirs do for i,v in rel_include_dirs do
table.insert(package.includepaths, source_root .. v) tinsert(package.includepaths, source_root .. v)
end end
-- Add '<libraries root>/<libraryname>/lib' and '/include' to the includepaths and libpaths
for i,v in extern_libs do if extra_params["extra_files"] then
table.insert(package.includepaths, libraries_dir..v.."/include") for i,v in extra_params["extra_files"] do
table.insert(package.libpaths, libraries_dir..v.."/lib") tinsert(package.files, source_root .. v)
end
end
if extra_params["extra_links"] then
listconcat(package.links, extra_params["extra_links"])
end end
end end
@ -151,14 +303,21 @@ end
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- the engine is split up into several static libraries. this eases separate -- the engine is split up into several static libraries. this eases separate
-- distribution of those components, reduces dependencies a bit, and can] -- distribution of those components, reduces dependencies a bit, and can
-- also speed up builds. -- also speed up builds.
-- names of all static libs created. added to the main app project later
-- (see explanation at end of this file)
static_lib_names = {}
-- note: rel_source_dirs and rel_include_dirs are relative to global source_root. -- note: rel_source_dirs and rel_include_dirs are relative to global source_root.
function setup_static_lib_package (package_name, rel_source_dirs, extern_libs, extra_params) function setup_static_lib_package (package_name, rel_source_dirs, extern_libs, extra_params)
create_package_with_cflags(package_name, "lib")
package_add_contents(source_root, rel_source_dirs, {}, extern_libs, extra_params) package_create(package_name, "lib")
package_add_contents(source_root, rel_source_dirs, {}, extra_params)
package_add_extern_libs(extern_libs)
tinsert(static_lib_names, package_name)
if OS == "windows" then if OS == "windows" then
-- Precompiled Headers -- Precompiled Headers
@ -177,15 +336,18 @@ function setup_static_lib_package (package_name, rel_source_dirs, extern_libs, e
pch_dir = source_root.."pch/"..package_name.."/" pch_dir = source_root.."pch/"..package_name.."/"
package.pchheader = "precompiled.h" package.pchheader = "precompiled.h"
package.pchsource = "precompiled.cpp" package.pchsource = "precompiled.cpp"
table.insert(package.files, pch_dir.."precompiled.cpp") tinsert(package.files, pch_dir.."precompiled.cpp")
end end
end end
-- this is where the source tree is chopped up into static libs. -- this is where the source tree is chopped up into static libs.
-- can be changed fairly easily; just copy+paste here, then add the new -- can be changed very easily; just copy+paste a new setup_static_lib_package,
-- library to the setup_main_exe package.links . -- or remove existing ones. static libs are automagically added to
-- main_exe link step.
function setup_all_libs () function setup_all_libs ()
-- relative to global source_root. -- relative to global source_root.
local source_dirs = {} local source_dirs = {}
-- names of external libraries used (see libraries_dir comment) -- names of external libraries used (see libraries_dir comment)
@ -207,7 +369,7 @@ function setup_all_libs ()
extern_libs = { extern_libs = {
"spidermonkey", "spidermonkey",
"xerces", "xerces",
"misc", "opengl",
"zlib", "zlib",
"boost" "boost"
} }
@ -220,7 +382,7 @@ function setup_all_libs ()
"renderer" "renderer"
} }
extern_libs = { extern_libs = {
"misc", -- i.e. OpenGL. our newer version of these headers is required. "opengl",
"spidermonkey", -- for graphics/scripting "spidermonkey", -- for graphics/scripting
"boost" "boost"
} }
@ -245,7 +407,7 @@ function setup_all_libs ()
} }
extern_libs = { extern_libs = {
"boost", "boost",
"misc", -- i.e. OpenGL. our newer version of these headers is required. "opengl",
"spidermonkey" "spidermonkey"
} }
setup_static_lib_package("atlas", source_dirs, extern_libs, {}) setup_static_lib_package("atlas", source_dirs, extern_libs, {})
@ -257,7 +419,7 @@ function setup_all_libs ()
} }
extern_libs = { extern_libs = {
"spidermonkey", "spidermonkey",
"misc", -- i.e. OpenGL. our newer version of these headers is required. "opengl",
"boost" "boost"
} }
setup_static_lib_package("gui", source_dirs, extern_libs, {}) setup_static_lib_package("gui", source_dirs, extern_libs, {})
@ -272,7 +434,7 @@ function setup_all_libs ()
"lib/res/sound" "lib/res/sound"
} }
extern_libs = { extern_libs = {
"misc", -- i.e. OpenGL. our newer version of these headers is required. "opengl",
"libpng", "libpng",
"zlib", "zlib",
"openal", "openal",
@ -283,174 +445,123 @@ function setup_all_libs ()
} }
setup_static_lib_package("lowlevel", source_dirs, extern_libs, {}) setup_static_lib_package("lowlevel", source_dirs, extern_libs, {})
if OS == "windows" then if OS == "windows" then
table.insert(package.files, sourcesfromdirs(source_root, {"lib/sysdep/win"})) tinsert(package.files, sourcesfromdirs(source_root, {"lib/sysdep/win"}))
-- note: RC file must be added to main_exe package. -- note: RC file must be added to main_exe package.
else else
table.insert(package.files, sourcesfromdirs(source_root, {"lib/sysdep/unix"})) tinsert(package.files, sourcesfromdirs(source_root, {"lib/sysdep/unix"}))
-- (X11 include path isn't standard across distributions) -- (X11 include path isn't standard across distributions)
table.insert(package.includepaths, { "/usr/X11R6/include/X11" } ) tinsert(package.includepaths, "/usr/X11R6/include/X11" )
table.insert(package.includepaths, { "/usr/include/X11" } ) tinsert(package.includepaths, "/usr/include/X11" )
end end
end end
--------------------------------------------------------------------------------
-- main EXE
--------------------------------------------------------------------------------
-- Bundles static libs together with main.cpp and builds game executable. -- Bundles static libs together with main.cpp and builds game executable.
function setup_main_exe () function setup_main_exe ()
create_package_with_cflags("pyrogenesis", "winexe") package_create("pyrogenesis", "winexe")
package.files = { source_root .. "main.cpp" }
package.includepaths = { source_root }
-- For VS2005, tell the linker to use the libraries' .obj files instead of -- For VS2005, tell the linker to use the libraries' .obj files instead of
-- the .lib, to allow incremental linking. -- the .lib, to allow incremental linking.
-- (Reduces re-link time from ~20 seconds to ~2 secs) -- (Reduces re-link time from ~20 seconds to ~2 secs)
table.insert(package.buildflags, "use-library-dep-inputs") tinsert(package.buildflags, "use-library-dep-inputs")
package.links = { local extra_params = {
"engine", extra_files = { "main.cpp" },
"graphics",
"i18n",
"atlas",
"gui",
"lowlevel"
} }
package_add_contents(source_root, {}, {}, extra_params)
local extern_libs = {
"opengl",
"sdl",
"libjpg",
"libpng",
"zlib",
"spidermonkey",
"xerces",
"openal",
"vorbis",
"boost",
"dbghelp",
"cxxtest",
"directx",
}
package_add_extern_libs(extern_libs)
package.libpaths = {}
-- Platform Specifics -- Platform Specifics
if OS == "windows" then if OS == "windows" then
-- see libraries_dir comment tinsert(package.files, source_root.."lib/sysdep/win/icon.rc")
local extern_libs = {
"misc",
"libpng",
"zlib",
"openal",
"spidermonkey",
"xerces",
"vorbis",
"boost",
"libjpg",
"dbghelp",
"cxxtest",
"directx"
}
-- Add '<libraries root>/<libraryname>/lib' and '/include' to the includepaths and libpaths
for i,v in extern_libs do
table.insert(package.includepaths, libraries_dir..v.."/include")
table.insert(package.libpaths, libraries_dir..v.."/lib")
end
table.insert(package.links, { "opengl32" })
table.insert(package.files, {source_root.."lib/sysdep/win/icon.rc"})
-- from lowlevel static lib; must be added here to be linked in -- from lowlevel static lib; must be added here to be linked in
table.insert(package.files, {source_root.."lib/sysdep/win/error_dialog.rc"}) tinsert(package.files, source_root.."lib/sysdep/win/error_dialog.rc")
-- VS2005 generates its own manifest, but earlier ones need us to add it manually -- VS2005 generates its own manifest, but earlier ones need us to add it manually
if (options["target"] == "vs2002" or options["target"] == "vs2003") then if (options["target"] == "vs2002" or options["target"] == "vs2003") then
table.insert(package.files, {source_root.."lib/sysdep/win/manifest.rc"}) tinsert(package.files, source_root.."lib/sysdep/win/manifest.rc")
end end
package.linkoptions = { "/ENTRY:entry", package.linkoptions = { "/ENTRY:entry",
"/DELAYLOAD:opengl32.dll",
"/DELAYLOAD:oleaut32.dll", "/DELAYLOAD:oleaut32.dll",
"/DELAYLOAD:advapi32.dll", "/DELAYLOAD:advapi32.dll",
"/DELAYLOAD:gdi32.dll",
"/DELAYLOAD:user32.dll", "/DELAYLOAD:user32.dll",
"/DELAYLOAD:ws2_32.dll", "/DELAYLOAD:ws2_32.dll",
"/DELAYLOAD:version.dll", "/DELAYLOAD:version.dll",
"/DELAYLOAD:ddraw.dll",
"/DELAYLOAD:dsound.dll",
"/DELAYLOAD:glu32.dll",
"/DELAYLOAD:openal32.dll",
"/DELAYLOAD:dbghelp.dll",
"/DELAY:UNLOAD" -- allow manual unload of delay-loaded DLLs "/DELAY:UNLOAD" -- allow manual unload of delay-loaded DLLs
} }
package.config["Debug"].linkoptions = {
"/DELAYLOAD:js32d.dll",
"/DELAYLOAD:zlib1d.dll",
"/DELAYLOAD:libpng13d.dll",
"/DELAYLOAD:jpeg-6bd.dll",
"/DELAYLOAD:vorbisfile_d.dll",
}
-- 'Testing' uses 'Debug' DLLs
package.config["Testing"].linkoptions = package.config["Debug"].linkoptions
package.config["Release"].linkoptions = {
"/DELAYLOAD:js32.dll",
"/DELAYLOAD:zlib1.dll",
"/DELAYLOAD:libpng13.dll",
"/DELAYLOAD:jpeg-6b.dll",
"/DELAYLOAD:vorbisfile.dll",
}
-- required to use WinMain() on Windows, otherwise will default to main() -- required to use WinMain() on Windows, otherwise will default to main()
table.insert(package.buildflags, { "no-main" }) tinsert(package.buildflags, "no-main")
else -- Non-Windows, = Unix else -- Non-Windows, = Unix
-- Libraries -- Libraries
table.insert(package.links, { tinsert(package.links, {
-- OpenGL and X-Windows
"GL", "GLU", "X11",
"SDL", "png", "jpeg",
"fam", "fam",
-- Audio
"openal", "vorbisfile",
-- Utilities -- Utilities
"xerces-c", "z", "pthread", "rt", "js", "pthread", "rt",
-- Debugging -- Debugging
"bfd", "iberty" "bfd", "iberty"
}) })
-- For debug_resolve_symbol -- For debug_resolve_symbol
-- package.config["Debug"].links = { "bfd", "iberty" }
-- package.config["Testing"].links = { "bfd", "iberty" }
package.config["Debug"].linkoptions = { "-rdynamic" } package.config["Debug"].linkoptions = { "-rdynamic" }
package.config["Testing"].linkoptions = { "-rdynamic" } package.config["Testing"].linkoptions = { "-rdynamic" }
table.insert(package.libpaths, { "/usr/X11R6/lib" } ) tinsert(package.libpaths, "/usr/X11R6/lib")
end end
end end
---------------- Main Atlas package ---------------- ---------------- Main Atlas package ----------------
function setuppackage_atlas(package_name, target_type, rel_source_dirs, rel_include_dirs, extern_libs, flags) function setuppackage_atlas(package_name, target_type, rel_source_dirs, rel_include_dirs, extern_libs, flags)
local source_root = "../../../source/tools/atlas/" .. package_name .. "/" local source_root = "../../../source/tools/atlas/" .. package_name .. "/"
create_package_with_cflags(package_name, target_type) package_create(package_name, target_type)
-- Don't add the default 'sourceroot/pch/projectname' for finding PCH files -- Don't add the default 'sourceroot/pch/projectname' for finding PCH files
flags["no_default_pch"] = 1 flags["no_default_pch"] = 1
package_add_contents(source_root, rel_source_dirs, rel_include_dirs, extern_libs, flags) package_add_contents(source_root, rel_source_dirs, rel_include_dirs, flags)
package_add_extern_libs(extern_libs)
-- Platform Specifics -- Platform Specifics
if OS == "windows" then if OS == "windows" then
table.insert(package.defines, "_UNICODE") tinsert(package.defines, "_UNICODE")
-- Handle wx specially
if flags["wx"] then
table.insert(package.includepaths, libraries_dir.."wxwidgets/include/msvc")
table.insert(package.includepaths, libraries_dir.."wxwidgets/include")
table.insert(package.libpaths, libraries_dir.."wxwidgets/lib/vc_lib")
end
-- Link to required libraries -- Link to required libraries
package.links = { "winmm", "comctl32", "rpcrt4" } package.links = { "winmm", "comctl32", "rpcrt4" }
package.config["Debug"].links = { "wxmsw26ud_gl" }
package.config["Release"].links = { "wxmsw26u_gl" }
if flags["depends"] then
listconcat(package.links, flags["depends"])
end
-- required to use WinMain() on Windows, otherwise will default to main() -- required to use WinMain() on Windows, otherwise will default to main()
table.insert(package.buildflags, { "no-main" }) tinsert(package.buildflags, "no-main")
if flags["pch"] then if flags["pch"] then
package.pchheader = "stdafx.h" package.pchheader = "stdafx.h"
@ -463,33 +574,6 @@ function setuppackage_atlas(package_name, target_type, rel_source_dirs, rel_incl
end end
---------------- Atlas 'frontend' tool-launching packages ----------------
function setuppackage_atlas_frontend (package_name)
create_package_with_cflags(package_name, "winexe")
local source_root = "../../../source/tools/atlas/AtlasFrontends/"
package.files = {
source_root..package_name..".cpp",
source_root..package_name..".rc"
}
package.trimprefix = source_root
package.includepaths = { source_root..".." }
-- Platform Specifics
if OS == "windows" then
table.insert(package.defines, "_UNICODE")
table.insert(package.links, "AtlasUI")
-- required to use WinMain() on Windows, otherwise will default to main()
table.insert(package.buildflags, { "no-main" })
else -- Non-Windows, = Unix
-- TODO
end
end
---------------- Atlas packages ---------------- ---------------- Atlas packages ----------------
@ -533,10 +617,10 @@ function setuppackages_atlas()
},{ -- extern_libs },{ -- extern_libs
"boost", "boost",
"devil", "devil",
"xerces" "xerces",
"wxwidgets"
},{ -- flags },{ -- flags
pch = 1, pch = 1,
wx = 1,
depends = { "AtlasObject", "DatafileIO" }, depends = { "AtlasObject", "DatafileIO" },
extrasource = { "Misc/atlas.rc" } extrasource = { "Misc/atlas.rc" }
}) })
@ -558,11 +642,42 @@ function setuppackages_atlas()
pch = 1, pch = 1,
}) })
end
---------------- Atlas 'frontend' tool-launching packages ----------------
function setuppackage_atlas_frontend (package_name)
package_create(package_name, "winexe")
local source_root = "../../../source/tools/atlas/AtlasFrontends/"
package.files = {
source_root..package_name..".cpp",
source_root..package_name..".rc"
}
package.trimprefix = source_root
package.includepaths = { source_root..".." }
-- Platform Specifics
if OS == "windows" then
tinsert(package.defines, "_UNICODE")
tinsert(package.links, "AtlasUI")
-- required to use WinMain() on Windows, otherwise will default to main()
tinsert(package.buildflags, "no-main")
else -- Non-Windows, = Unix
-- TODO
end
end
function setup_atlas_frontends()
setuppackage_atlas_frontend("ActorEditor") setuppackage_atlas_frontend("ActorEditor")
setuppackage_atlas_frontend("ArchiveViewer") setuppackage_atlas_frontend("ArchiveViewer")
setuppackage_atlas_frontend("ColourTester") setuppackage_atlas_frontend("ColourTester")
setuppackage_atlas_frontend("FileConverter") setuppackage_atlas_frontend("FileConverter")
end end
-------------------------------- --------------------------------
@ -570,8 +685,20 @@ end
-- must come first, so that VC sets it as the default project and therefore -- must come first, so that VC sets it as the default project and therefore
-- allows running via F5 without the "where is the EXE" dialog. -- allows running via F5 without the "where is the EXE" dialog.
setup_main_exe() setup_main_exe()
-- save package global variable for later (will be overwritten by setup_all_libs)
main_exe_package = package
setup_all_libs() setup_all_libs()
-- HACK: add the static libs to the main EXE project. only now (after
-- setup_all_libs has run) are the lib names known. cannot move
-- setup_main_exe to run after setup_all_libs (see comment above).
-- we also don't want to hardcode the names - that would require more
-- work when changing the static lib breakdown.
listconcat(main_exe_package.links, static_lib_names)
if options["atlas"] then if options["atlas"] then
setuppackages_atlas() setuppackages_atlas()
setup_atlas_frontends()
end end