Subversion Repositories Kolibri OS

Rev

Rev 6625 | Rev 6627 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5132 clevermous 1
if tup.getconfig("NO_GCC") ~= "" or tup.getconfig("NO_FASM") ~= "" then return end
2
tup.include("../../../../../programs/use_gcc.lua")
6539 serge 3
CFLAGS =  "-c -O2 -fno-builtin -fno-ident -fomit-frame-pointer -DMISSING_SYSCALL_NAMES"
5132 clevermous 4
LDFLAGS = "-shared -s -T libcdll.lds --out-implib $(SDK_DIR)/lib/libc.dll.a --image-base 0"
5
-- LDFLAGS = LDFLAGS .. " --output-def libc.orig.def"
6
 
7
SDK_DIR = "../../.."
8
 
9
LIBC_TOPDIR = "."
10
LIBC_INCLUDES = "include"
11
NAME = "libc"
6540 serge 12
DEFINES = "-U__WIN32__ -U_Win32 -U_WIN32 -U__MINGW32__ -U_MSC_VER-D_IEEE_LIBM -DHAVE_RENAME -DBUILD_LIBC"
5132 clevermous 13
INCLUDES = "-Iinclude"
14
 
15
TOOLCHAIN_LIBPATH = tup.getconfig("TOOLCHAIN_LIBPATH")
16
-- if not given explicitly in config, try to guess
17
if TOOLCHAIN_LIBPATH == "" then
18
  if tup.getconfig("TUP_PLATFORM") == "win32"
19
  then TOOLCHAIN_LIBPATH="C:\\MinGW\\msys\\1.0\\home\\autobuild\\tools\\win32\\mingw32\\lib"
20
  else TOOLCHAIN_LIBPATH="/home/autobuild/tools/win32/mingw32/lib"
21
  end
22
end
6547 serge 23
LIBPATH = "-L$(SDK_DIR)/lib"
6623 serge 24
STATIC_SRCS = {"crt/start.S", "crt/crt2.c", "crt/exit.S"}
6536 serge 25
LIBDLL_SRCS = {"crt/dllstart.c", "crt/exit.S", "crt/pseudo-reloc.c", "crt/setjmp.S"}
6621 serge 26
LIBCDLL_SRCS = {
27
  "crt/crt2.c",
28
  "crt/pseudo-reloc.c",
6623 serge 29
  "crt/exit.S"
6621 serge 30
}
5132 clevermous 31
CORE_SRCS = {
6621 serge 32
  "argz/buf_findstr.c",
33
  "argz/envz_get.c",
34
  "crt/console.asm",
35
  "crt/thread.S",
36
  "crt/setjmp.S",
37
  "crt/cpu_features.c",
38
  "crt/tls.c",
39
  "ctype/ctype_.c",
40
  "ctype/isascii.c",
41
  "ctype/isblank.c",
42
  "ctype/isalnum.c",
43
  "ctype/isalpha.c",
44
  "ctype/iscntrl.c",
45
  "ctype/isdigit.c",
46
  "ctype/islower.c",
47
  "ctype/isupper.c",
48
  "ctype/isprint.c",
49
  "ctype/ispunct.c",
50
  "ctype/isspace.c",
51
  "ctype/iswctype.c",
52
  "ctype/iswalnum.c",
53
  "ctype/iswalpha.c",
54
  "ctype/iswblank.c",
55
  "ctype/iswcntrl.c",
56
  "ctype/iswdigit.c",
57
  "ctype/iswgraph.c",
58
  "ctype/iswlower.c",
59
  "ctype/iswprint.c",
60
  "ctype/iswpunct.c",
61
  "ctype/iswspace.c",
62
  "ctype/iswupper.c",
63
  "ctype/iswxdigit.c",
64
  "ctype/isxdigit.c",
65
  "ctype/toascii.c",
66
  "ctype/tolower.c",
67
  "ctype/toupper.c",
68
  "ctype/towctrans.c",
69
  "ctype/towlower.c",
70
  "ctype/towupper.c",
71
  "ctype/wctrans.c",
72
  "ctype/wctype.c",
5132 clevermous 73
  "errno/errno.c",
6621 serge 74
  "locale/locale.c",
75
  "locale/lctype.c",
76
  "locale/ldpart.c",
77
  "reent/closer.c",
78
  "reent/fstatr.c",
79
  "reent/getreent.c",
80
  "reent/gettimeofdayr.c",
81
  "reent/impure.c",
82
  "reent/init_reent.c",
83
  "reent/isattyr.c",
84
  "reent/linkr.c",
85
  "reent/lseekr.c",
86
  "reent/mutex.c",
87
  "reent/openr.c",
88
  "reent/readr.c",
89
  "reent/statr.c",
90
  "reent/timesr.c",
91
  "reent/unlinkr.c",
5216 serge 92
  "reent/writer.c",
6621 serge 93
  "search/qsort.c",
94
  "search/bsearch.c",
5132 clevermous 95
  "signal/signal.c",
6621 serge 96
  "sys/access.c",
97
  "sys/clock_gettime.c",
98
  "sys/close.c",
99
  "sys/conio.c",
100
  "sys/create.c",
101
  "sys/errno.c",
102
  "sys/finfo.c",
103
  "sys/fsize.c",
104
  "sys/fstat.c",
105
  "sys/gettod.c",
106
  "sys/io.c",
107
  "sys/ioread.c",
108
  "sys/iowrite.c",
109
  "sys/isatty.c",
110
  "sys/lseek.c",
111
  "sys/open.c",
112
  "sys/read.c",
113
  "sys/_rename.c",
114
  "sys/stat.c",
115
  "sys/unlink.c",
116
  "sys/write.c",
117
  "sys/io_alloc.S",
118
  "time/asctime.c",
119
  "time/asctime_r.c",
120
  "time/clock.c",
121
  "time/ctime.c",
122
  "time/ctime_r.c",
123
  "time/difftime.c",
124
  "time/gettzinfo.c",
125
  "time/gmtime.c",
126
  "time/gmtime_r.c",
127
  "time/mktime.c",
128
  "time/month_lengths.c",
129
  "time/lcltime.c",
130
  "time/lcltime_r.c",
131
  "time/strftime.c",
132
  "time/time.c",
133
  "time/tzcalc_limits.c",
134
  "time/timelocal.c",
135
  "time/tzlock.c",
136
  "time/tzset.c",
137
  "time/tzset_r.c",
138
  "time/tzvars.c"
5132 clevermous 139
}
140
STDLIB_SRCS = {
6536 serge 141
  "__atexit.c",
142
  "__call_atexit.c",
143
  "abort.c",
144
  "abs.c",
145
  "assert.c",
146
  "atexit.c",
147
  "atof.c",
148
  "atoi.c",
149
  "atol.c",
6621 serge 150
  "btowc.c",
151
  "calloc.c",
6536 serge 152
  "cxa_atexit.c",
153
  "cxa_finalize.c",
154
  "div.c",
155
  "dtoa.c",
156
  "dtoastub.c",
157
  "efgcvt.c",
158
  "ecvtbuf.c",
159
  "eprintf.c",
160
  "erand48.c",
161
  "exit.c",
162
  "gdtoa-gethex.c",
163
  "gdtoa-hexnan.c",
164
  "getenv.c",
165
  "getenv_r.c",
166
  "itoa.c",
6621 serge 167
  "ldiv.c",
6537 serge 168
  "labs.c",
6621 serge 169
  "ldtoa.c",
170
  "malloc.c",
171
  "mallocr.c",
172
  "mblen.c",
173
  "mblen_r.c",
174
  "mbrlen.c",
175
  "mbrtowc.c",
176
  "mbsinit.c",
177
  "mbsnrtowcs.c",
178
  "mbsrtowcs.c",
179
  "mbstowcs.c",
180
  "mbstowcs_r.c",
6536 serge 181
  "mbtowc.c",
182
  "mbtowc_r.c",
183
  "mlock.c",
6621 serge 184
  "mprec.c",
6536 serge 185
  "rand.c",
186
  "rand_r.c",
187
  "rand48.c",
6621 serge 188
  "random.c",
6536 serge 189
  "realloc.c",
190
  "seed48.c",
191
  "srand48.c",
192
  "strtod.c",
193
  "strtodg.c",
194
  "strtol.c",
195
  "strtold.c",
196
  "strtoll.c",
197
  "strtoll_r.c",
198
  "strtorx.c",
199
  "strtoul.c",
200
  "strtoull.c",
201
  "strtoull_r.c",
202
  "system.c",
203
  "utoa.c",
204
  "wcrtomb.c",
6621 serge 205
  "wcsnrtombs.c",
206
  "wcsrtombs.c",
207
  "wcstod.c",
208
  "wcstol.c",
209
  "wcstold.c",
210
  "wcstoll.c",
211
  "wcstoll_r.c",
212
  "wcstombs.c",
213
  "wcstombs_r.c",
214
  "wcstoul.c",
215
  "wcstoull.c",
216
  "wcstoull_r.c",
217
  "wctob.c",
218
  "wctomb.c",
6099 serge 219
  "wctomb_r.c"
5132 clevermous 220
}
221
STRING_SRCS = {
6557 serge 222
  "bcmp.c",
223
  "bcopy.c",
224
  "bzero.c",
225
  "explicit_bzero.c",
226
  "gnu_basename.c",
227
  "index.c",
228
  "memccpy.c",
229
  "memchr.c",
230
  "memcmp.c",
6536 serge 231
  "memcpy.c",
6557 serge 232
  "memmem.c",
6536 serge 233
  "memmove.c",
6557 serge 234
  "mempcpy.c",
235
  "memrchr.c",
6536 serge 236
  "memset.c",
6557 serge 237
  "rawmemchr.c",
238
  "rindex.c",
6536 serge 239
  "stpcpy.c",
240
  "stpncpy.c",
6557 serge 241
  "strcasecmp.c",
242
  "strcasestr.c",
6536 serge 243
  "strcat.c",
244
  "strchr.c",
6557 serge 245
  "strchrnul.c",
6536 serge 246
  "strcmp.c",
247
  "strcoll.c",
6557 serge 248
  "strcpy.c",
249
  "strcspn.c",
250
  "strdup.c",
251
  "strdup_r.c",
252
  "strerror.c",
253
  "strerror_r.c",
254
  "strlcat.c",
255
  "strlcpy.c",
256
  "strlen.c",
257
  "strlwr.c",
6536 serge 258
  "strncasecmp.c",
259
  "strncat.c",
260
  "strncmp.c",
261
  "strncpy.c",
262
  "strndup.c",
263
  "strndup_r.c",
264
  "strnlen.c",
6557 serge 265
  "strpbrk.c",
6536 serge 266
  "strrchr.c",
267
  "strsep.c",
6557 serge 268
  "strspn.c",
6536 serge 269
  "strstr.c",
270
  "strtok.c",
271
  "strtok_r.c",
272
  "strupr.c",
273
  "strxfrm.c",
6557 serge 274
  "swab.c",
275
  "u_strerr.c",
276
  "wcpcpy.c",
277
  "wcpncpy.c",
278
  "wcscasecmp.c",
279
  "wcscat.c",
280
  "wcschr.c",
281
  "wcscmp.c",
282
  "wcscoll.c",
283
  "wcscpy.c",
284
  "wcscspn.c",
285
  "wcsdup.c",
286
  "wcslcat.c",
287
  "wcslcpy.c",
288
  "wcslen.c",
289
  "wcsncasecmp.c",
290
  "wcsncat.c",
291
  "wcsncmp.c",
292
  "wcsncpy.c",
293
  "wcsnlen.c",
294
  "wcspbrk.c",
295
  "wcsrchr.c",
296
  "wcsspn.c",
297
  "wcsstr.c",
298
  "wcstok.c",
299
  "wcswidth.c",
300
  "wcsxfrm.c",
301
  "wcwidth.c",
302
  "wmemchr.c",
303
  "wmemcmp.c",
304
  "wmemcpy.c",
305
  "wmemmove.c",
306
  "wmemset.c"
5132 clevermous 307
}
308
 
309
STDIO_SRCS = {
6536 serge 310
  "asiprintf.c",
311
  "asniprintf.c",
312
  "asnprintf.c",
313
  "asprintf.c",
314
  "clearerr.c",
6621 serge 315
  "clearerr_u.c",
6536 serge 316
  "diprintf.c",
317
  "dprintf.c",
318
  "fclose.c",
319
  "fcloseall.c",
320
  "fdopen.c",
321
  "feof.c",
322
  "feof_u.c",
323
  "ferror.c",
324
  "ferror_u.c",
325
  "fflush.c",
326
  "fflush_u.c",
327
  "fgetc.c",
328
  "fgetc_u.c",
329
  "fgetpos.c",
330
  "fgets.c",
331
  "fgets_u.c",
6621 serge 332
  "fgetwc.c",
333
  "fgetwc_u.c",
334
  "fgetws.c",
335
  "fgetws_u.c",
6536 serge 336
  "fileno.c",
337
  "fileno_u.c",
338
  "findfp.c",
339
  "fiprintf.c",
340
  "fiscanf.c",
341
  "flags.c",
342
  "fmemopen.c",
343
  "fopen.c",
344
  "fopencookie.c",
345
  "fprintf.c",
346
  "fpurge.c",
347
  "fputc.c",
348
  "fputc_u.c",
349
  "fputs.c",
350
  "fputs_u.c",
351
  "fputwc.c",
6621 serge 352
  "fputwc_u.c",
353
  "fputws.c",
6622 serge 354
  "fputws_u.c",
6536 serge 355
  "fsetpos.c",
6621 serge 356
  "funopen.c",
6536 serge 357
  "fread.c",
358
  "fread_u.c",
359
  "freopen.c",
360
  "fscanf.c",
361
  "fseek.c",
362
  "fseeko.c",
363
  "fsetlocking.c",
364
  "ftell.c",
365
  "ftello.c",
366
  "fvwrite.c",
367
  "fwalk.c",
368
  "fwide.c",
6621 serge 369
  "fwprintf.c",
6536 serge 370
  "fwrite.c",
371
  "fwrite_u.c",
6621 serge 372
  "fwscanf.c",
6536 serge 373
  "getc.c",
374
  "getc_u.c",
375
  "getchar.c",
376
  "getchar_u.c",
377
  "getdelim.c",
378
  "getline.c",
379
  "gets.c",
6621 serge 380
  "getw.c",
381
  "getwc.c",
382
  "getwc_u.c",
383
  "getwchar.c",
384
  "getwchar_u.c",
6536 serge 385
  "iprintf.c",
386
  "iscanf.c",
387
  "makebuf.c",
388
  "mktemp.c",
389
  "open_memstream.c",
390
  "perror.c",
391
  "printf.c",
392
  "putc.c",
393
  "putc_u.c",
394
  "putchar.c",
395
  "putchar_u.c",
396
  "puts.c",
6621 serge 397
  "putw.c",
398
  "putwc.c",
399
  "putwc_u.c",
400
  "putwchar.c",
401
  "putwchar_u.c",
6536 serge 402
  "refill.c",
403
  "remove.c",
404
  "rename.c",
405
  "rewind.c",
406
  "rget.c",
407
  "scanf.c",
408
  "sccl.c",
409
  "setbuf.c",
410
  "setbuffer.c",
411
  "setlinebuf.c",
412
  "setvbuf.c",
413
  "siprintf.c",
414
  "siscanf.c",
415
  "sniprintf.c",
416
  "snprintf.c",
417
  "sprintf.c",
418
  "sscanf.c",
419
  "stdio.c",
420
  "stdio_ext.c",
6621 serge 421
  "swprintf.c",
422
  "swscanf.c",
6536 serge 423
  "tmpfile.c",
424
  "tmpnam.c",
425
  "ungetc.c",
6621 serge 426
  "ungetwc.c",
6536 serge 427
  "vasiprintf.c",
428
  "vasniprintf.c",
429
  "vasnprintf.c",
430
  "vasprintf.c",
431
  "vdiprintf.c",
432
  "vdprintf.c",
6621 serge 433
  "vfwscanf.c",
6536 serge 434
  "viprintf.c",
435
  "viscanf.c",
436
  "vprintf.c",
437
  "vscanf.c",
438
  "vsiprintf.c",
439
  "vsiscanf.c",
440
  "vsprintf.c",
441
  "vsniprintf.c",
442
  "vsnprintf.c",
443
  "vsscanf.c",
6621 serge 444
  "vswprintf.c",
445
  "vswscanf.c",
446
  "vwprintf.c",
447
  "vwscanf.c",
448
  "wbuf.c",
449
  "wprintf.c",
450
  "wscanf.c",
451
  "wsetup.c"
6537 serge 452
}
6099 serge 453
 
5132 clevermous 454
 
455
MATH_SRCS = {
456
  "e_acos.c", "e_acosh.c", "e_asin.c", "e_atan2.c", "e_atanh.c", "e_cosh.c", "e_exp.c", "e_fmod.c",
457
  "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",
458
  "e_remainder.c", "e_scalb.c", "e_sinh.c", "e_sqrt.c", "ef_acos.c", "ef_acosh.c", "ef_asin.c",
459
  "ef_atan2.c", "ef_atanh.c", "ef_cosh.c", "ef_exp.c", "ef_fmod.c", "ef_hypot.c", "ef_j0.c", "ef_j1.c",
460
  "ef_jn.c", "ef_log.c", "ef_log10.c", "ef_pow.c", "ef_rem_pio2.c", "ef_remainder.c", "ef_scalb.c",
461
  "ef_sinh.c", "ef_sqrt.c", "er_gamma.c", "er_lgamma.c", "erf_gamma.c", "erf_lgamma.c", "f_exp.c",
462
  "f_expf.c", "f_llrint.c", "f_llrintf.c", "f_llrintl.c", "f_lrint.c", "f_lrintf.c", "f_lrintl.c",
5141 serge 463
  "f_pow.c", "f_powf.c", "f_rint.c", "f_rintf.c", "f_rintl.c", "feclearexcept.c", "fetestexcept.c",
464
  "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",
465
  "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",
5132 clevermous 466
  "s_fabs.c", "s_fdim.c", "s_finite.c", "s_floor.c", "s_fma.c", "s_fmax.c", "s_fmin.c", "s_fpclassify.c",
467
  "s_frexp.c", "s_ilogb.c", "s_infconst.c", "s_infinity.c", "s_isinf.c", "s_isinfd.c", "s_isnan.c",
468
  "s_isnand.c", "s_ldexp.c", "s_lib_ver.c", "s_llrint.c", "s_llround.c", "s_log1p.c", "s_log2.c",
469
  "s_logb.c", "s_lrint.c", "s_lround.c", "s_matherr.c", "s_modf.c", "s_nan.c", "s_nearbyint.c",
470
  "s_nextafter.c", "s_pow10.c", "s_remquo.c", "s_rint.c", "s_round.c", "s_scalbln.c", "s_scalbn.c",
471
  "s_signbit.c", "s_signif.c", "s_sin.c", "s_tan.c", "s_tanh.c", "s_trunc.c", "scalblnl.c", "scalbnl.c",
472
  "sf_asinh.c", "sf_atan.c", "sf_cbrt.c", "sf_ceil.c", "sf_copysign.c", "sf_cos.c", "sf_erf.c",
473
  "sf_exp10.c", "sf_expm1.c", "sf_fabs.c", "sf_fdim.c", "sf_finite.c", "sf_floor.c", "sf_fma.c",
474
  "sf_fmax.c", "sf_fmin.c", "sf_fpclassify.c", "sf_frexp.c", "sf_ilogb.c", "sf_infinity.c",
475
  "sf_isinf.c", "sf_isinff.c", "sf_isnan.c", "sf_isnanf.c", "sf_ldexp.c", "sf_llrint.c",
476
  "sf_llround.c", "sf_log1p.c", "sf_log2.c", "sf_logb.c", "sf_lrint.c", "sf_lround.c", "sf_modf.c",
477
  "sf_nan.c", "sf_nearbyint.c", "sf_nextafter.c", "sf_pow10.c", "sf_remquo.c", "sf_rint.c",
478
  "sf_round.c", "sf_scalbln.c", "sf_scalbn.c", "sf_signif.c", "sf_sin.c", "sf_tan.c", "sf_tanh.c",
479
  "sf_trunc.c", "w_acos.c", "w_acosh.c", "w_asin.c", "w_atan2.c", "w_atanh.c", "w_cosh.c", "w_drem.c",
480
  "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",
481
  "w_log.c", "w_log10.c", "w_pow.c", "w_remainder.c", "w_scalb.c", "w_sincos.c", "w_sinh.c", "w_sqrt.c",
482
  "w_tgamma.c", "wf_acos.c", "wf_acosh.c", "wf_asin.c", "wf_atan2.c", "wf_atanh.c", "wf_cosh.c",
483
  "wf_drem.c", "wf_exp.c", "wf_exp2.c", "wf_fmod.c", "wf_gamma.c", "wf_hypot.c", "wf_j0.c", "wf_j1.c",
484
  "wf_jn.c", "wf_lgamma.c", "wf_log.c", "wf_log10.c", "wf_pow.c", "wf_remainder.c", "wf_scalb.c",
485
  "wf_sincos.c", "wf_sinh.c", "wf_sqrt.c", "wf_tgamma.c", "wr_gamma.c", "wr_lgamma.c", "wrf_gamma.c",
486
  "wrf_lgamma.c",
487
  "f_atan2.S", "f_atan2f.S", "f_frexp.S", "f_frexpf.S", "f_ldexp.S", "f_ldexpf.S", "f_log.S",
488
  "f_log10.S", "f_log10f.S", "f_logf.S", "f_tan.S", "f_tanf.S"
489
}
490
 
491
function prepend(what, to)
492
  local result = {}
493
  for i,v in ipairs(to) do
494
    table.insert(result, what .. v)
495
  end
496
  return result
497
end
498
 
499
-- make shared
500
LIB_SRCS = LIBCDLL_SRCS
501
 
502
LIB_SRCS += CORE_SRCS
503
LIB_SRCS += prepend("stdio/", STDIO_SRCS)
504
LIB_SRCS += prepend("string/", STRING_SRCS)
505
LIB_SRCS += prepend("stdlib/", STDLIB_SRCS)
506
LIB_SRCS += prepend("math/", MATH_SRCS)
507
 
508
ALL_OBJS = {}
509
function compile(list)
510
  local result = {}
511
  for i,v in ipairs(list) do
512
    if ALL_OBJS[v] then
513
      -- already compiled
514
    elseif v:sub(-2) == ".c" or v:sub(-2) == ".S" then
515
      ALL_OBJS[v] = tup.rule(v, "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -o %o %f", v:sub(1, -3) .. ".o")
516
    elseif v:sub(-4) == ".asm" then
517
      ALL_OBJS[v] = tup.rule(v, "fasm %f %o", v:sub(1, -5) .. ".obj")
518
    end
519
    result += ALL_OBJS[v]
520
  end
521
  return result
522
end
523
 
524
LIB_OBJS = compile(LIB_SRCS)
6537 serge 525
LIB_OBJS += tup.rule("crt/crtdll.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -fno-delete-null-pointer-checks -c %f -o %o","crt/crtdll.o")
526
LIB_OBJS += tup.rule("pe/loader.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -fno-delete-null-pointer-checks -c %f -o %o", "pe/loader.o")
527
LIB_OBJS += tup.rule("reent/renamer.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -D_COMPILING_NEWLIB -c %f -o %o", "reent/renamer.o")
6536 serge 528
 
5132 clevermous 529
LIBDLL_OBJS = compile(LIBDLL_SRCS)
530
 
6536 serge 531
 
5132 clevermous 532
vfprintf_extra_objs = {
6536 serge 533
  {"", "stdio/vfprintf.o"},
5132 clevermous 534
  {"-DINTEGER_ONLY", "stdio/vfiprintf.o"},
535
  {"-DSTRING_ONLY", "stdio/svfprintf.o"},
536
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiprintf.o"},
537
}
538
for i,v in ipairs(vfprintf_extra_objs) do
539
  LIB_OBJS += tup.rule("stdio/vfprintf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -fshort-enums " .. v[1] .. " -c %f -o %o", v[2])
540
end
541
 
6621 serge 542
vfwprintf_extra_objs = {
543
  {"", "stdio/vfwprintf.o"},
544
  {"-DINTEGER_ONLY", "stdio/vfiwprintf.o"},
545
  {"-DSTRING_ONLY", "stdio/svfwprintf.o"},
546
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiwprintf.o"},
547
}
548
for i,v in ipairs(vfwprintf_extra_objs) do
549
  LIB_OBJS += tup.rule("stdio/vfwprintf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -fshort-enums " .. v[1] .. " -c %f -o %o", v[2])
550
end
551
 
552
 
5132 clevermous 553
vfscanf_extra_objs = {
554
  {"", "stdio/vfscanf.o"},
555
  {"-DINTEGER_ONLY", "stdio/vfiscanf.o"},
556
  {"-DSTRING_ONLY", "stdio/svscanf.o"},
557
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiscanf.o"},
558
}
559
for i,v in ipairs(vfscanf_extra_objs) do
6536 serge 560
  LIB_OBJS += tup.rule("stdio/vfscanf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) " .. v[1] .. " -c %f -o %o", v[2])
5132 clevermous 561
end
562
 
6621 serge 563
vfwscanf_extra_objs = {
564
  {"-DINTEGER_ONLY", "stdio/vfiwscanf.o"},
565
  {"-DSTRING_ONLY", "stdio/svfwscanf.o"},
566
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiwscanf.o"},
567
}
6625 serge 568
for i,v in ipairs(vfwscanf_extra_objs) do
6621 serge 569
  LIB_OBJS += tup.rule("stdio/vfwscanf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) " .. v[1] .. " -c %f -o %o", v[2])
570
end
571
 
572
 
573
 
5132 clevermous 574
tup.rule(LIB_OBJS, "kos32-ld " .. LDFLAGS .. " " .. LIBPATH .. " -o %o %f -lgcc --version-script libc.ver " .. tup.getconfig("KPACK_CMD"),
575
  {SDK_DIR .. "/bin/libc.dll", extra_outputs = {SDK_DIR .. "/lib/libc.dll.a", SDK_DIR .. "/lib/"}})
576
tup.rule(LIBDLL_OBJS, "kos32-ar rcs %o %f", {SDK_DIR .. "/lib/libdll.a", extra_outputs = {SDK_DIR .. "/lib/"}})