Subversion Repositories Kolibri OS

Rev

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