Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 5131 → Rev 5132

/contrib/sdk/sources/newlib/libc/Tupfile.lua
0,0 → 1,186
if tup.getconfig("NO_GCC") ~= "" or tup.getconfig("NO_FASM") ~= "" then return end
tup.include("../../../../../programs/use_gcc.lua")
CFLAGS = CFLAGS_OPTIMIZE_SPEED .. " -c -DBUILD_DLL -DMISSING_SYSCALL_NAMES"
LDFLAGS = "-shared -s -T libcdll.lds --out-implib $(SDK_DIR)/lib/libc.dll.a --image-base 0"
-- LDFLAGS = LDFLAGS .. " --output-def libc.orig.def"
 
SDK_DIR = "../../.."
 
LIBC_TOPDIR = "."
LIBC_INCLUDES = "include"
NAME = "libc"
DEFINES = "-D_IEEE_LIBM"
INCLUDES = "-Iinclude"
 
TOOLCHAIN_LIBPATH = tup.getconfig("TOOLCHAIN_LIBPATH")
-- if not given explicitly in config, try to guess
if TOOLCHAIN_LIBPATH == "" then
if tup.getconfig("TUP_PLATFORM") == "win32"
then TOOLCHAIN_LIBPATH="C:\\MinGW\\msys\\1.0\\home\\autobuild\\tools\\win32\\mingw32\\lib"
else TOOLCHAIN_LIBPATH="/home/autobuild/tools/win32/mingw32/lib"
end
end
LIBPATH = "-L$(SDK_DIR)/lib -L$(TOOLCHAIN_LIBPATH)"
STATIC_SRCS = {"crt/start.S", "crt/crt1.c", "crt/crt2.c", "crt/chkstk.S", "crt/exit.c", "pe/crtloader.c"}
LIBDLL_SRCS = {"crt/dllstart.c", "crt/chkstk.S", "crt/exit.S", "crt/pseudo-reloc.c", "crt/setjmp.S"}
LIBCDLL_SRCS = {"crt/crtdll.c", "crt/pseudo-reloc.c", "crt/chkstk.S", "crt/exit.S", "pe/loader.c"}
LIBCRT_SRCS = {"crt/start.S", "crt/chkstk.S", "crt/crt3.c", "crt/pseudo-reloc.c", "pe/crtloader.c"}
CORE_SRCS = {
"argz/buf_findstr.c", "argz/envz_get.c",
"crt/emutls.c", "crt/thread.S", "crt/tls.S", "crt/setjmp.S", "crt/cpu_features.c",
"ctype/ctype_.c", "ctype/isascii.c", "ctype/isblank.c", "ctype/isalnum.c",
"ctype/isalpha.c", "ctype/iscntrl.c", "ctype/isdigit.c", "ctype/islower.c",
"ctype/isupper.c", "ctype/isprint.c", "ctype/ispunct.c", "ctype/isspace.c",
"ctype/iswctype.c", "ctype/iswalnum.c", "ctype/iswalpha.c", "ctype/iswblank.c",
"ctype/iswcntrl.c", "ctype/iswdigit.c", "ctype/iswgraph.c", "ctype/iswlower.c",
"ctype/iswprint.c", "ctype/iswpunct.c", "ctype/iswspace.c", "ctype/iswupper.c",
"ctype/iswxdigit.c", "ctype/isxdigit.c", "ctype/toascii.c", "ctype/tolower.c",
"ctype/toupper.c", "ctype/towctrans.c", "ctype/towlower.c", "ctype/towupper.c",
"ctype/wctrans.c", "ctype/wctype.c",
"errno/errno.c",
"locale/locale.c", "locale/lctype.c", "locale/ldpart.c",
"reent/impure.c", "reent/init_reent.c", "reent/getreent.c", "reent/mutex.c",
"reent/gettimeofdayr.c", "reent/isattyr.c", "reent/openr.c", "reent/closer.c",
"reent/linkr.c", "reent/readr.c", "reent/lseekr.c", "reent/fstatr.c",
"reent/writer.c", "reent/timesr.c", "reent/unlinkr.c",
"search/qsort.c", "search/bsearch.c",
"signal/signal.c",
"sys/close.c", "sys/create.c", "sys/delete.c", "sys/errno.c", "sys/finfo.c",
"sys/fsize.c", "sys/fstat.c", "sys/gettod.c", "sys/io.c", "sys/ioread.c",
"sys/iowrite.c", "sys/isatty.c", "sys/lseek.c", "sys/open.c", "sys/read.c",
"sys/unlink.c", "sys/write.c", "sys/io_alloc.S",
"time/asctime.c", "time/asctime_r.c", "time/clock.c", "time/ctime.c",
"time/ctime_r.c", "time/difftime.c", "time/gettzinfo.c", "time/gmtime.c",
"time/gmtime_r.c", "time/mktime.c", "time/mktm_r.c", "time/lcltime.c",
"time/lcltime_r.c", "time/strftime.c", "time/time.c", "time/timelocal.c",
"time/tzlock.c", "time/tzvars.c"
}
STDLIB_SRCS = {
"__atexit.c", "__call_atexit.c", "abort.c", "abs.c", "assert.c", "atexit.c",
"atof.c", "atoi.c", "atol.c", "div.c", "dtoa.c", "dtoastub.c", "exit.c",
"gdtoa-gethex.c", "gdtoa-hexnan.c", "getenv.c", "mprec.c", "mbtowc.c",
"mbtowc_r.c", "mbrtowc.c", "mlock.c", "calloc.c", "malloc.c", "mallocr.c",
"rand.c", "rand_r.c", "rand48.c", "realloc.c", "seed48.c", "srand48.c",
"strtod.c", "strtol.c", "strtold.c", "strtoll.c", "strtoll_r.c", "strtoul.c",
"strtoull.c", "strtoull_r.c", "system.c", "wcrtomb.c", "wctomb_r.c"
}
STRING_SRCS = {
"memcpy.c", "memcmp.c", "memmove.c", "memset.c", "memchr.c", "stpcpy.c",
"stpncpy.c", "strcat.c", "strchr.c", "strcmp.c", "strcoll.c", "strcasecmp.c",
"strncasecmp.c", "strncat.c", "strncmp.c", "strncpy.c", "strndup.c",
"strndup_r.c", "strnlen.c", "strcasestr.c", "strdup.c", "strdup_r.c",
"strerror.c", "strlen.c", "strrchr.c", "strpbrk.c", "strsep.c", "strstr.c",
"strtok.c", "strtok_r.c", "strupr.c", "strcspn.c", "strspn.c", "strcpy.c",
"u_strerr.c"
}
 
STDIO_SRCS = {
"clearerr.c", "diprintf.c", "dprintf.c", "printf.c", "putchar.c", "fgetc.c",
"fgets.c", "fopen.c", "fclose.c", "fdopen.c", "fflush.c", "flags.c",
"fileno.c", "findfp.c", "fiprintf.c", "fiscanf.c", "fprintf.c", "fputc.c",
"fputs.c", "fputwc.c", "fread.c", "freopen.c", "fscanf.c", "fseek.c",
"fseeko.c", "ftell.c", "ftello.c", "fwrite.c", "fvwrite.c", "fwalk.c",
"putc.c", "puts.c", "refill.c", "rget.c", "remove.c", "setvbuf.c", "stdio.c",
"tmpfile.c", "tmpnam.c", "ungetc.c", "vasniprintf.c", "vasnprintf.c",
"vdprintf.c", "vdiprintf.c", "vscanf.c", "vsprintf.c", "vsnprintf.c",
"vsscanf.c", "makebuf.c", "wsetup.c", "wbuf.c", "sccl.c", "siprintf.c",
"sniprintf.c", "snprintf.c", "sprintf.c", "sscanf.c"
}
 
MATH_SRCS = {
"e_acos.c", "e_acosh.c", "e_asin.c", "e_atan2.c", "e_atanh.c", "e_cosh.c", "e_exp.c", "e_fmod.c",
"e_hypot.c", "e_j0.c", "e_j1.c", "e_jn.c", "e_log.c", "e_log10.c", "e_pow.c", "e_rem_pio2.c",
"e_remainder.c", "e_scalb.c", "e_sinh.c", "e_sqrt.c", "ef_acos.c", "ef_acosh.c", "ef_asin.c",
"ef_atan2.c", "ef_atanh.c", "ef_cosh.c", "ef_exp.c", "ef_fmod.c", "ef_hypot.c", "ef_j0.c", "ef_j1.c",
"ef_jn.c", "ef_log.c", "ef_log10.c", "ef_pow.c", "ef_rem_pio2.c", "ef_remainder.c", "ef_scalb.c",
"ef_sinh.c", "ef_sqrt.c", "er_gamma.c", "er_lgamma.c", "erf_gamma.c", "erf_lgamma.c", "f_exp.c",
"f_expf.c", "f_llrint.c", "f_llrintf.c", "f_llrintl.c", "f_lrint.c", "f_lrintf.c", "f_lrintl.c",
"f_pow.c", "f_powf.c", "f_rint.c", "f_rintf.c", "f_rintl.c", "k_cos.c", "k_rem_pio2.c", "k_sin.c",
"k_standard.c", "k_tan.c", "kf_cos.c", "kf_rem_pio2.c", "kf_sin.c", "kf_tan.c", "s_asinh.c",
"s_atan.c", "s_cbrt.c", "s_ceil.c", "s_copysign.c", "s_cos.c", "s_erf.c", "s_exp10.c", "s_expm1.c",
"s_fabs.c", "s_fdim.c", "s_finite.c", "s_floor.c", "s_fma.c", "s_fmax.c", "s_fmin.c", "s_fpclassify.c",
"s_frexp.c", "s_ilogb.c", "s_infconst.c", "s_infinity.c", "s_isinf.c", "s_isinfd.c", "s_isnan.c",
"s_isnand.c", "s_ldexp.c", "s_lib_ver.c", "s_llrint.c", "s_llround.c", "s_log1p.c", "s_log2.c",
"s_logb.c", "s_lrint.c", "s_lround.c", "s_matherr.c", "s_modf.c", "s_nan.c", "s_nearbyint.c",
"s_nextafter.c", "s_pow10.c", "s_remquo.c", "s_rint.c", "s_round.c", "s_scalbln.c", "s_scalbn.c",
"s_signbit.c", "s_signif.c", "s_sin.c", "s_tan.c", "s_tanh.c", "s_trunc.c", "scalblnl.c", "scalbnl.c",
"sf_asinh.c", "sf_atan.c", "sf_cbrt.c", "sf_ceil.c", "sf_copysign.c", "sf_cos.c", "sf_erf.c",
"sf_exp10.c", "sf_expm1.c", "sf_fabs.c", "sf_fdim.c", "sf_finite.c", "sf_floor.c", "sf_fma.c",
"sf_fmax.c", "sf_fmin.c", "sf_fpclassify.c", "sf_frexp.c", "sf_ilogb.c", "sf_infinity.c",
"sf_isinf.c", "sf_isinff.c", "sf_isnan.c", "sf_isnanf.c", "sf_ldexp.c", "sf_llrint.c",
"sf_llround.c", "sf_log1p.c", "sf_log2.c", "sf_logb.c", "sf_lrint.c", "sf_lround.c", "sf_modf.c",
"sf_nan.c", "sf_nearbyint.c", "sf_nextafter.c", "sf_pow10.c", "sf_remquo.c", "sf_rint.c",
"sf_round.c", "sf_scalbln.c", "sf_scalbn.c", "sf_signif.c", "sf_sin.c", "sf_tan.c", "sf_tanh.c",
"sf_trunc.c", "w_acos.c", "w_acosh.c", "w_asin.c", "w_atan2.c", "w_atanh.c", "w_cosh.c", "w_drem.c",
"w_exp.c", "w_exp2.c", "w_fmod.c", "w_gamma.c", "w_hypot.c", "w_j0.c", "w_j1.c", "w_jn.c", "w_lgamma.c",
"w_log.c", "w_log10.c", "w_pow.c", "w_remainder.c", "w_scalb.c", "w_sincos.c", "w_sinh.c", "w_sqrt.c",
"w_tgamma.c", "wf_acos.c", "wf_acosh.c", "wf_asin.c", "wf_atan2.c", "wf_atanh.c", "wf_cosh.c",
"wf_drem.c", "wf_exp.c", "wf_exp2.c", "wf_fmod.c", "wf_gamma.c", "wf_hypot.c", "wf_j0.c", "wf_j1.c",
"wf_jn.c", "wf_lgamma.c", "wf_log.c", "wf_log10.c", "wf_pow.c", "wf_remainder.c", "wf_scalb.c",
"wf_sincos.c", "wf_sinh.c", "wf_sqrt.c", "wf_tgamma.c", "wr_gamma.c", "wr_lgamma.c", "wrf_gamma.c",
"wrf_lgamma.c",
"f_atan2.S", "f_atan2f.S", "f_frexp.S", "f_frexpf.S", "f_ldexp.S", "f_ldexpf.S", "f_log.S",
"f_log10.S", "f_log10f.S", "f_logf.S", "f_tan.S", "f_tanf.S"
}
 
function prepend(what, to)
local result = {}
for i,v in ipairs(to) do
table.insert(result, what .. v)
end
return result
end
 
-- make shared
LIB_SRCS = LIBCDLL_SRCS
 
LIB_SRCS += CORE_SRCS
LIB_SRCS += prepend("stdio/", STDIO_SRCS)
LIB_SRCS += prepend("string/", STRING_SRCS)
LIB_SRCS += prepend("stdlib/", STDLIB_SRCS)
LIB_SRCS += prepend("math/", MATH_SRCS)
 
ALL_OBJS = {}
function compile(list)
local result = {}
for i,v in ipairs(list) do
if ALL_OBJS[v] then
-- already compiled
elseif v:sub(-2) == ".c" or v:sub(-2) == ".S" then
ALL_OBJS[v] = tup.rule(v, "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -o %o %f", v:sub(1, -3) .. ".o")
elseif v:sub(-4) == ".asm" then
ALL_OBJS[v] = tup.rule(v, "fasm %f %o", v:sub(1, -5) .. ".obj")
end
result += ALL_OBJS[v]
end
return result
end
 
LIB_OBJS = compile(LIB_SRCS)
LIBCRT_OBJS = compile(LIBCRT_SRCS)
LIBDLL_OBJS = compile(LIBDLL_SRCS)
 
vfprintf_extra_objs = {
{"-DFLOATING_POINT", "stdio/vfprintf.o"},
{"-DINTEGER_ONLY", "stdio/vfiprintf.o"},
{"-DSTRING_ONLY", "stdio/svfprintf.o"},
{"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiprintf.o"},
}
for i,v in ipairs(vfprintf_extra_objs) do
LIB_OBJS += tup.rule("stdio/vfprintf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -fshort-enums " .. v[1] .. " -c %f -o %o", v[2])
end
 
vfscanf_extra_objs = {
{"", "stdio/vfscanf.o"},
{"-DINTEGER_ONLY", "stdio/vfiscanf.o"},
{"-DSTRING_ONLY", "stdio/svscanf.o"},
{"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiscanf.o"},
}
for i,v in ipairs(vfscanf_extra_objs) do
LIB_OBJS += tup.rule("stdio/vfscanf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -fshort-enums " .. v[1] .. " -c %f -o %o", v[2])
end
 
tup.rule(LIB_OBJS, "kos32-ld " .. LDFLAGS .. " " .. LIBPATH .. " -o %o %f -lgcc --version-script libc.ver " .. tup.getconfig("KPACK_CMD"),
{SDK_DIR .. "/bin/libc.dll", extra_outputs = {SDK_DIR .. "/lib/libc.dll.a", SDK_DIR .. "/lib/<libc.dll.a>"}})
tup.rule(LIBCRT_OBJS, "kos32-ar rcs %o %f", {SDK_DIR .. "/lib/libapp.a", extra_outputs = {SDK_DIR .. "/lib/<libapp.a>"}})
tup.rule(LIBDLL_OBJS, "kos32-ar rcs %o %f", {SDK_DIR .. "/lib/libdll.a", extra_outputs = {SDK_DIR .. "/lib/<libdll.a>"}})
/contrib/sdk/sources/newlib/libc/include/kos32sys.h
99,7 → 99,7
"c"((y << 16) | ((h-1) & 0xFFFF)),
"d"((style << 24) | (workcolor & 0xFFFFFF)),
"D"(name),
"S"(0));
"S"(0) : "memory");
};
 
#define POS_SCREEN 0
275,7 → 275,8
"int $0x40"
::"a"(4),"d"(text),
"b"((x << 16) | y),
"S"(len),"c"(color));
"S"(len),"c"(color)
:"memory");
}
 
static inline void yield(void)
/data/Tupfile.lua
97,11 → 97,18
 
--[[
Files to be included in kolibri.iso and distribution kit outside of kolibri.img.
 
The first subitem of every item is name relative to the root of ISO or distribution kit,
the second is name of local file.
 
If the first subitem ends in /, the last component of local file name is appended.
The last component of the second subitem may contain '*'; if so, it will be expanded
according to usual rules, but without matching directories.
 
Tup does not allow a direct dependency on a file that is generated in a directory
other than where Tupfile.lua is and its children. Most files are generated
in the directory with Tupfile.lua; for other files, the item should contain
a named subitem "group=path/<groupname>" and the file should be put in <groupname>.
--]]
extra_files = {
{"/", build_type .. "/distr_data/autorun.inf"},
137,7 → 144,7
{"kolibrios/lib/avformat-55.dll", "common/lib/avformat-55.dll"},
{"kolibrios/lib/avutil-52.dll", "common/lib/avutil-52.dll"},
{"kolibrios/lib/freetype.dll", "common/lib/freetype.dll"},
{"kolibrios/lib/libc.dll", "common/lib/libc.dll"},
{"kolibrios/lib/libc.dll", "../contrib/sdk/bin/libc.dll", group = "../contrib/sdk/lib/<libc.dll.a>"},
{"kolibrios/lib/pixlib.dll", "common/lib/pixlib.dll"},
{"kolibrios/lib/swresample-0.dll", "common/lib/swresample-0.dll"},
{"kolibrios/lib/swscale-2.dll", "common/lib/swscale-2.dll"},
477,13 → 484,13
then
local g = tup.glob(v[2])
for j,x in ipairs(g) do
table.insert(result, {v[1], x})
table.insert(result, {v[1], x, group=v.group})
end
else
if v.cp1251_from then
tup.definerule{inputs = {v.cp1251_from}, command = 'iconv -f cp866 -t cp1251 "%f" > "%o"', outputs = {v[2]}}
end
table.insert(result, {v[1], v[2]})
table.insert(result, {v[1], v[2], group=v.group})
end
end
return result
517,7 → 524,7
 
-- tup does not want to see hidden files as dependencies
if not string.match(local_file, "/%.") then
table.insert(input_deps, local_file)
table.insert(input_deps, v.group or local_file)
end
end
 
570,7 → 577,7
iso_files_list = ""
for i,v in ipairs(iso_extra_files) do
iso_files_list = iso_files_list .. ' "' .. v[1] .. '=' .. v[2] .. '"'
table.insert(input_deps, v[2])
table.insert(input_deps, v.group or v[2])
end
 
-- generate tup rule for kolibri.iso
589,8 → 596,9
cp = 'cp "%f" "%o"'
tup.definerule{inputs = {"kolibri.img"}, command = cp, outputs = {"distribution_kit/kolibri.img"}}
for i,v in ipairs(distr_extra_files) do
cmd = cp:gsub("%%f", v[2]) -- input can be a group, we can't rely on tup's expansion of %f in this case
if string.sub(v[1], -1) == "/"
then tup.definerule{inputs = {v[2]}, command = cp, outputs = {"distribution_kit/" .. v[1] .. tup.file(v[2])}}
else tup.definerule{inputs = {v[2]}, command = cp, outputs = {"distribution_kit/" .. v[1]}}
then tup.definerule{inputs = {v.group or v[2]}, command = cmd, outputs = {"distribution_kit/" .. v[1] .. tup.file(v[2])}}
else tup.definerule{inputs = {v.group or v[2]}, command = cmd, outputs = {"distribution_kit/" .. v[1]}}
end
end
/data/common/lib/libc.dll
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/programs/develop/libraries/newlib_example/Tupfile.lua
0,0 → 1,6
if tup.getconfig("NO_GCC") ~= "" or tup.getconfig("NO_FASM") ~= "" then return end
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR")
tup.include(HELPERDIR .. "/use_gcc.lua")
tup.include(HELPERDIR .. "/use_newlib.lua")
compile_gcc{"main.c"}
link_gcc("binclock")
/programs/develop/libraries/newlib_example/main.c
0,0 → 1,87
#include <kos32sys.h>
 
#define B_SZ 10
 
static char * Title="BinClock";
 
static void draw_small_box(int x,int y,int is_on)
{
draw_bar(x,y,B_SZ,B_SZ,is_on ? 0xFF0000 : 0x103000);
}
 
static void draw_box_group(int x,int y,int num)
{
int i,j;
char buf[2];
buf[0]=(num&(1+2+4+8))+'0';
buf[1]='\0';
for(i=0;i<4;i++)
{
j=(B_SZ+2)*i;
draw_small_box(x,y+((B_SZ+2)*i),num & (1<<(3-i)) ? 1 : 0);
}
draw_bar(x,y+((B_SZ+2)*4),B_SZ,B_SZ,0x800000);
draw_text_sys(buf,x+2,y+((B_SZ+2)*4)+3,1,0xFFFFFF);
}
 
static void draw_bcd_num(int x,int y,int num)
{
int v1,v2;
v1=(num>>4)&(1+2+4+8);
v2=num & (1+2+4+8);
draw_box_group(x,y,v1);
draw_box_group(x+B_SZ+2,y,v2);
}
 
static void draw_hms(int x,int y)
{
unsigned t;
int h,m,s;
__asm__ __volatile__("int $0x40" : "=a"(t) : "a"(3));
s=(t & 0x00FF0000)>>16;
m=(t & 0x0000FF00)>>8;
h=(t & 0x000000FF);
draw_bcd_num(x,y,h);
x+=((B_SZ+2)<<1)+2;
draw_bcd_num(x,y,m);
x+=((B_SZ+2)<<1)+2;
draw_bcd_num(x,y,s);
}
 
static void draw_h(void)
{
draw_hms(22,28);
}
 
static void paint(void)
{
BeginDraw();
DrawWindow(100,100,40+((B_SZ+2)*6)+4,30+((B_SZ+2)*4)+16,Title,0x80,0x13);
draw_bar(20,26,((B_SZ+2)*6)+4+2,4+((B_SZ+1)*4)+2,0);
draw_h();
EndDraw();
}
 
int main(void)
{
int i;
paint();
for(;;)
{
i=wait_for_event(20);
draw_h();
switch(i)
{
case 1:
paint();
continue;
case 2:
get_key();
continue;
case 3:
if(get_os_button()==1) return 0;
continue;
}
}
}
/programs/use_gcc.lua
1,4 → 1,12
CFLAGS = "-Os -fno-ident -fomit-frame-pointer -fno-stack-check -fno-stack-protector -mno-stack-arg-probe -mpreferred-stack-boundary=2 -fno-exceptions -fno-asynchronous-unwind-tables -ffast-math -mno-ms-bitfields -march=pentium-mmx"
CFLAGS_GENERIC = "-fno-ident -fomit-frame-pointer -fno-stack-check -fno-stack-protector -mno-stack-arg-probe -fno-exceptions -fno-asynchronous-unwind-tables -ffast-math -mno-ms-bitfields -march=pentium-mmx"
CFLAGS_OPTIMIZE_SIZE = "-Os -mpreferred-stack-boundary=2 " .. CFLAGS_GENERIC
CFLAGS_OPTIMIZE_SPEED = "-O2 -mpush-args -mno-accumulate-outgoing-args " .. CFLAGS_GENERIC
-- The following could in specific cases be marginally faster CFLAGS_OPTIMIZE_SPEED,
-- and in all cases gives a notable overhead in size.
CFLAGS_OPTIMIZE_SPEED_INSANE = "-O2 " .. CFLAGS_GENERIC
-- Default is optimizing by size. Override on per-project or per-file basis.
CFLAGS = CFLAGS_OPTIMIZE_SIZE
 
CFLAGS_c = "" -- extra flags for *.c
CFLAGS_cpp = " -fno-rtti" -- extra flags for *.cpp
LDFLAGS = "-nostdlib -n --file-alignment=16 --section-alignment=16"
/programs/use_newlib.lua
0,0 → 1,16
NEWLIB_BASE = tup.getcwd() .. "/../contrib/sdk/sources/newlib"
NEWLIB_LIB = tup.getcwd() .. "/../contrib/sdk/lib"
 
TOOLCHAIN_LIBPATH = tup.getconfig("TOOLCHAIN_LIBPATH")
-- if not given explicitly in config, try to guess
if TOOLCHAIN_LIBPATH == "" then
if tup.getconfig("TUP_PLATFORM") == "win32"
then TOOLCHAIN_LIBPATH="C:\\MinGW\\msys\\1.0\\home\\autobuild\\tools\\win32\\mingw32\\lib"
else TOOLCHAIN_LIBPATH="/home/autobuild/tools/win32/mingw32/lib"
end
end
 
INCLUDES = INCLUDES .. " -I" .. NEWLIB_BASE .. "/libc/include"
LDFLAGS = LDFLAGS .. " -T$(NEWLIB_BASE)/app.lds -L$(NEWLIB_LIB) -L$(TOOLCHAIN_LIBPATH) --image-base 0"
tup.append_table(LIBDEPS, {NEWLIB_LIB .. "/<libapp.a>", NEWLIB_LIB .. "/<libc.dll.a>"})
LIBS = LIBS .. "-lgcc -lapp -lc.dll"
/tup.config.template
19,6 → 19,13
# CONFIG_NO_GCC=full
# CONFIG_NO_MSVC=full
# CONFIG_NO_CMM=full
### Path to gcc toolchain library with -lgcc.
### Normally, you should not modify it,
### since the toolchain assumes the fixed path anyway.
### default Windows variant
# CONFIG_TOOLCHAIN_LIBPATH=C:\MinGW\msys\1.0\home\autobuild\tools\win32\mingw32\lib
### default Linux variant
# CONFIG_TOOLCHAIN_LIBPATH=/home/autobuild/tools/win32/mingw32/lib
 
### Optional postprocessing of binaries, where applicable.
### By default, no postprocessing is used.