if not WINDOWS then quit('This is only windwos module!') end if LUA_VER == '5.2' then LUA_NEED = 'lua52' LUA_DIR = ENV.LUA_DIR_5_2 or ENV.LUA_DIR else LUA_NEED = 'lua' LUA_DIR = ENV.LUA_DIR end lake.define_need('unicode',function()return{ defines = {"UNICODE"; "_UNICODE"}; flags = "/UMBS /U_MBS"; } end) INSTALL_DIR = INSTALL_DIR or J(LUA_DIR,'libs','winreg') winreg = c.shared{'winreg', base = 'src'; src = {"lua_int64","lua_mtutil","lua_tstring","luawin_dllerror", "win_privileges","win_registry","win_trace","winreg","l52util" }; defines = L( {'WIN32','_WIN32','_WINDOWS'}, {"WIN32_LEAN_AND_MEAN"; "WINDLL"; "USRDLL"}, IF(DEBUG, {'_DEBUG', 'DEBUG'},'NDEBUG'), IF(MSVC, {'_CRT_SECURE_NO_WARNINGS'}), IF(MSVC, {'_WIN32_WINNT=0x0400','WINVER=0x0400', '_WIN32_IE=0x0300'}), IF(MSVC, {'CRTAPI1=_cdecl','CRTAPI2=_cdecl','_X86_=1'}), 'WINREG_EXPORTS', 'WINREG_API=__declspec(dllexport)' ); flags = IF(MSVC, IF(DEBUG, {'-Z7' , '-Od', --[['-MLd']]}, {'-O2', --[['-ML']]}), '-Os -DNDEBUG -s' ); libflags = IF(MSVC,IF(DEBUG, '-debug:full -debugtype:cv', '-DEBUG -OPT:REF -OPT:ICF')); needs = {LUA_NEED,IF(UNICODE, 'unicode')}; libs = {"advapi32", "kernel32", "user32"}; optimize = false; } target('build',{winreg}) install = target('install', { file.group{odir=J(INSTALL_DIR, 'test'); src = J('test','*.*');recurse=true; }; file.group{odir=J(INSTALL_DIR, 'doc'); src = J('doc','*.*');recurse=true; }; file.group{odir=J(INSTALL_DIR, 'examples'); src = J('examples','*.*');recurse=true; }; target(J(INSTALL_DIR, 'bin', winreg.name .. DLL_EXT), winreg, CP ); }) target('test', install, function() if TESTING then lake.chdir('test') for file in path.mask('*.lua') do print("run " .. file) end lake.chdir('<') end if not TESTING then lake.chdir(J(INSTALL_DIR,'test')) for file in path.mask('*.lua') do print("run " .. file) if not utils.execute( LUA_EXE .. ' ' .. file ) then quit("FAIL!") end end lake.chdir('<') end end) default('build')