Subversion Repositories Kolibri OS

Rev

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