Subversion Repositories Kolibri OS

Rev

Rev 6623 | Rev 6625 | 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
  "mbstowcs.c",
389
  "mktemp.c",
390
  "open_memstream.c",
391
  "perror.c",
392
  "printf.c",
393
  "putc.c",
394
  "putc_u.c",
395
  "putchar.c",
396
  "putchar_u.c",
397
  "puts.c",
6621 serge 398
  "putw.c",
399
  "putwc.c",
400
  "putwc_u.c",
401
  "putwchar.c",
402
  "putwchar_u.c",
6536 serge 403
  "refill.c",
404
  "remove.c",
405
  "rename.c",
406
  "rewind.c",
407
  "rget.c",
408
  "scanf.c",
409
  "sccl.c",
410
  "setbuf.c",
411
  "setbuffer.c",
412
  "setlinebuf.c",
413
  "setvbuf.c",
414
  "siprintf.c",
415
  "siscanf.c",
416
  "sniprintf.c",
417
  "snprintf.c",
418
  "sprintf.c",
419
  "sscanf.c",
420
  "stdio.c",
421
  "stdio_ext.c",
6621 serge 422
  "swprintf.c",
423
  "swscanf.c",
6536 serge 424
  "tmpfile.c",
425
  "tmpnam.c",
426
  "ungetc.c",
6621 serge 427
  "ungetwc.c",
6536 serge 428
  "vasiprintf.c",
429
  "vasniprintf.c",
430
  "vasnprintf.c",
431
  "vasprintf.c",
432
  "vdiprintf.c",
433
  "vdprintf.c",
6621 serge 434
  "vfwscanf.c",
6536 serge 435
  "viprintf.c",
436
  "viscanf.c",
437
  "vprintf.c",
438
  "vscanf.c",
439
  "vsiprintf.c",
440
  "vsiscanf.c",
441
  "vsprintf.c",
442
  "vsniprintf.c",
443
  "vsnprintf.c",
444
  "vsscanf.c",
6621 serge 445
  "vswprintf.c",
446
  "vswscanf.c",
447
  "vwprintf.c",
448
  "vwscanf.c",
449
  "wbuf.c",
450
  "wprintf.c",
451
  "wscanf.c",
452
  "wsetup.c"
6537 serge 453
}
6099 serge 454
 
5132 clevermous 455
 
456
MATH_SRCS = {
457
  "e_acos.c", "e_acosh.c", "e_asin.c", "e_atan2.c", "e_atanh.c", "e_cosh.c", "e_exp.c", "e_fmod.c",
458
  "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",
459
  "e_remainder.c", "e_scalb.c", "e_sinh.c", "e_sqrt.c", "ef_acos.c", "ef_acosh.c", "ef_asin.c",
460
  "ef_atan2.c", "ef_atanh.c", "ef_cosh.c", "ef_exp.c", "ef_fmod.c", "ef_hypot.c", "ef_j0.c", "ef_j1.c",
461
  "ef_jn.c", "ef_log.c", "ef_log10.c", "ef_pow.c", "ef_rem_pio2.c", "ef_remainder.c", "ef_scalb.c",
462
  "ef_sinh.c", "ef_sqrt.c", "er_gamma.c", "er_lgamma.c", "erf_gamma.c", "erf_lgamma.c", "f_exp.c",
463
  "f_expf.c", "f_llrint.c", "f_llrintf.c", "f_llrintl.c", "f_lrint.c", "f_lrintf.c", "f_lrintl.c",
5141 serge 464
  "f_pow.c", "f_powf.c", "f_rint.c", "f_rintf.c", "f_rintl.c", "feclearexcept.c", "fetestexcept.c",
465
  "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",
466
  "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 467
  "s_fabs.c", "s_fdim.c", "s_finite.c", "s_floor.c", "s_fma.c", "s_fmax.c", "s_fmin.c", "s_fpclassify.c",
468
  "s_frexp.c", "s_ilogb.c", "s_infconst.c", "s_infinity.c", "s_isinf.c", "s_isinfd.c", "s_isnan.c",
469
  "s_isnand.c", "s_ldexp.c", "s_lib_ver.c", "s_llrint.c", "s_llround.c", "s_log1p.c", "s_log2.c",
470
  "s_logb.c", "s_lrint.c", "s_lround.c", "s_matherr.c", "s_modf.c", "s_nan.c", "s_nearbyint.c",
471
  "s_nextafter.c", "s_pow10.c", "s_remquo.c", "s_rint.c", "s_round.c", "s_scalbln.c", "s_scalbn.c",
472
  "s_signbit.c", "s_signif.c", "s_sin.c", "s_tan.c", "s_tanh.c", "s_trunc.c", "scalblnl.c", "scalbnl.c",
473
  "sf_asinh.c", "sf_atan.c", "sf_cbrt.c", "sf_ceil.c", "sf_copysign.c", "sf_cos.c", "sf_erf.c",
474
  "sf_exp10.c", "sf_expm1.c", "sf_fabs.c", "sf_fdim.c", "sf_finite.c", "sf_floor.c", "sf_fma.c",
475
  "sf_fmax.c", "sf_fmin.c", "sf_fpclassify.c", "sf_frexp.c", "sf_ilogb.c", "sf_infinity.c",
476
  "sf_isinf.c", "sf_isinff.c", "sf_isnan.c", "sf_isnanf.c", "sf_ldexp.c", "sf_llrint.c",
477
  "sf_llround.c", "sf_log1p.c", "sf_log2.c", "sf_logb.c", "sf_lrint.c", "sf_lround.c", "sf_modf.c",
478
  "sf_nan.c", "sf_nearbyint.c", "sf_nextafter.c", "sf_pow10.c", "sf_remquo.c", "sf_rint.c",
479
  "sf_round.c", "sf_scalbln.c", "sf_scalbn.c", "sf_signif.c", "sf_sin.c", "sf_tan.c", "sf_tanh.c",
480
  "sf_trunc.c", "w_acos.c", "w_acosh.c", "w_asin.c", "w_atan2.c", "w_atanh.c", "w_cosh.c", "w_drem.c",
481
  "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",
482
  "w_log.c", "w_log10.c", "w_pow.c", "w_remainder.c", "w_scalb.c", "w_sincos.c", "w_sinh.c", "w_sqrt.c",
483
  "w_tgamma.c", "wf_acos.c", "wf_acosh.c", "wf_asin.c", "wf_atan2.c", "wf_atanh.c", "wf_cosh.c",
484
  "wf_drem.c", "wf_exp.c", "wf_exp2.c", "wf_fmod.c", "wf_gamma.c", "wf_hypot.c", "wf_j0.c", "wf_j1.c",
485
  "wf_jn.c", "wf_lgamma.c", "wf_log.c", "wf_log10.c", "wf_pow.c", "wf_remainder.c", "wf_scalb.c",
486
  "wf_sincos.c", "wf_sinh.c", "wf_sqrt.c", "wf_tgamma.c", "wr_gamma.c", "wr_lgamma.c", "wrf_gamma.c",
487
  "wrf_lgamma.c",
488
  "f_atan2.S", "f_atan2f.S", "f_frexp.S", "f_frexpf.S", "f_ldexp.S", "f_ldexpf.S", "f_log.S",
489
  "f_log10.S", "f_log10f.S", "f_logf.S", "f_tan.S", "f_tanf.S"
490
}
491
 
492
function prepend(what, to)
493
  local result = {}
494
  for i,v in ipairs(to) do
495
    table.insert(result, what .. v)
496
  end
497
  return result
498
end
499
 
500
-- make shared
501
LIB_SRCS = LIBCDLL_SRCS
502
 
503
LIB_SRCS += CORE_SRCS
504
LIB_SRCS += prepend("stdio/", STDIO_SRCS)
505
LIB_SRCS += prepend("string/", STRING_SRCS)
506
LIB_SRCS += prepend("stdlib/", STDLIB_SRCS)
507
LIB_SRCS += prepend("math/", MATH_SRCS)
508
 
509
ALL_OBJS = {}
510
function compile(list)
511
  local result = {}
512
  for i,v in ipairs(list) do
513
    if ALL_OBJS[v] then
514
      -- already compiled
515
    elseif v:sub(-2) == ".c" or v:sub(-2) == ".S" then
516
      ALL_OBJS[v] = tup.rule(v, "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -o %o %f", v:sub(1, -3) .. ".o")
517
    elseif v:sub(-4) == ".asm" then
518
      ALL_OBJS[v] = tup.rule(v, "fasm %f %o", v:sub(1, -5) .. ".obj")
519
    end
520
    result += ALL_OBJS[v]
521
  end
522
  return result
523
end
524
 
525
LIB_OBJS = compile(LIB_SRCS)
6537 serge 526
LIB_OBJS += tup.rule("crt/crtdll.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -fno-delete-null-pointer-checks -c %f -o %o","crt/crtdll.o")
527
LIB_OBJS += tup.rule("pe/loader.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -fno-delete-null-pointer-checks -c %f -o %o", "pe/loader.o")
528
LIB_OBJS += tup.rule("reent/renamer.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -D_COMPILING_NEWLIB -c %f -o %o", "reent/renamer.o")
6536 serge 529
 
5132 clevermous 530
LIBDLL_OBJS = compile(LIBDLL_SRCS)
531
 
6536 serge 532
 
5132 clevermous 533
vfprintf_extra_objs = {
6536 serge 534
  {"", "stdio/vfprintf.o"},
5132 clevermous 535
  {"-DINTEGER_ONLY", "stdio/vfiprintf.o"},
536
  {"-DSTRING_ONLY", "stdio/svfprintf.o"},
537
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiprintf.o"},
538
}
539
for i,v in ipairs(vfprintf_extra_objs) do
540
  LIB_OBJS += tup.rule("stdio/vfprintf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -fshort-enums " .. v[1] .. " -c %f -o %o", v[2])
541
end
542
 
6621 serge 543
vfwprintf_extra_objs = {
544
  {"", "stdio/vfwprintf.o"},
545
  {"-DINTEGER_ONLY", "stdio/vfiwprintf.o"},
546
  {"-DSTRING_ONLY", "stdio/svfwprintf.o"},
547
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiwprintf.o"},
548
}
549
for i,v in ipairs(vfwprintf_extra_objs) do
550
  LIB_OBJS += tup.rule("stdio/vfwprintf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -fshort-enums " .. v[1] .. " -c %f -o %o", v[2])
551
end
552
 
553
 
5132 clevermous 554
vfscanf_extra_objs = {
555
  {"", "stdio/vfscanf.o"},
556
  {"-DINTEGER_ONLY", "stdio/vfiscanf.o"},
557
  {"-DSTRING_ONLY", "stdio/svscanf.o"},
558
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiscanf.o"},
559
}
560
for i,v in ipairs(vfscanf_extra_objs) do
6536 serge 561
  LIB_OBJS += tup.rule("stdio/vfscanf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) " .. v[1] .. " -c %f -o %o", v[2])
5132 clevermous 562
end
563
 
6621 serge 564
vfwscanf_extra_objs = {
565
  {"-DINTEGER_ONLY", "stdio/vfiwscanf.o"},
566
  {"-DSTRING_ONLY", "stdio/svfwscanf.o"},
567
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiwscanf.o"},
568
}
569
for i,v in ipairs(vfscanf_extra_objs) do
570
  LIB_OBJS += tup.rule("stdio/vfwscanf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) " .. v[1] .. " -c %f -o %o", v[2])
571
end
572
 
573
 
574
 
5132 clevermous 575
tup.rule(LIB_OBJS, "kos32-ld " .. LDFLAGS .. " " .. LIBPATH .. " -o %o %f -lgcc --version-script libc.ver " .. tup.getconfig("KPACK_CMD"),
576
  {SDK_DIR .. "/bin/libc.dll", extra_outputs = {SDK_DIR .. "/lib/libc.dll.a", SDK_DIR .. "/lib/"}})
577
tup.rule(LIBDLL_OBJS, "kos32-ar rcs %o %f", {SDK_DIR .. "/lib/libdll.a", extra_outputs = {SDK_DIR .. "/lib/"}})