Subversion Repositories Kolibri OS

Rev

Rev 6628 | Rev 7170 | 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"
6714 serge 12
DEFINES = "-U__WIN32__ -U_Win32 -U_WIN32 -U__MINGW32__ -U_MSC_VER -D_MB_EXTENDED_CHARSETS_WINDOWS=1 -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",
6627 serge 65
  "ctype/jp2uc.c",
6621 serge 66
  "ctype/toascii.c",
67
  "ctype/tolower.c",
68
  "ctype/toupper.c",
69
  "ctype/towctrans.c",
70
  "ctype/towlower.c",
71
  "ctype/towupper.c",
72
  "ctype/wctrans.c",
73
  "ctype/wctype.c",
5132 clevermous 74
  "errno/errno.c",
6621 serge 75
  "locale/locale.c",
76
  "locale/lctype.c",
77
  "locale/ldpart.c",
78
  "reent/closer.c",
79
  "reent/fstatr.c",
80
  "reent/getreent.c",
81
  "reent/gettimeofdayr.c",
82
  "reent/impure.c",
83
  "reent/init_reent.c",
84
  "reent/isattyr.c",
85
  "reent/linkr.c",
86
  "reent/lseekr.c",
87
  "reent/mutex.c",
88
  "reent/openr.c",
89
  "reent/readr.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",
6714 serge 191
  "sb_charsets.c",
6536 serge 192
  "seed48.c",
193
  "srand48.c",
194
  "strtod.c",
195
  "strtodg.c",
196
  "strtol.c",
197
  "strtold.c",
198
  "strtoll.c",
199
  "strtoll_r.c",
200
  "strtorx.c",
201
  "strtoul.c",
202
  "strtoull.c",
203
  "strtoull_r.c",
204
  "system.c",
205
  "utoa.c",
206
  "wcrtomb.c",
6621 serge 207
  "wcsnrtombs.c",
208
  "wcsrtombs.c",
209
  "wcstod.c",
210
  "wcstol.c",
211
  "wcstold.c",
212
  "wcstoll.c",
213
  "wcstoll_r.c",
214
  "wcstombs.c",
215
  "wcstombs_r.c",
216
  "wcstoul.c",
217
  "wcstoull.c",
218
  "wcstoull_r.c",
219
  "wctob.c",
220
  "wctomb.c",
6099 serge 221
  "wctomb_r.c"
5132 clevermous 222
}
223
STRING_SRCS = {
6557 serge 224
  "bcmp.c",
225
  "bcopy.c",
226
  "bzero.c",
227
  "explicit_bzero.c",
228
  "gnu_basename.c",
229
  "index.c",
230
  "memccpy.c",
231
  "memchr.c",
232
  "memcmp.c",
6536 serge 233
  "memcpy.c",
6557 serge 234
  "memmem.c",
6536 serge 235
  "memmove.c",
6557 serge 236
  "mempcpy.c",
237
  "memrchr.c",
6536 serge 238
  "memset.c",
6557 serge 239
  "rawmemchr.c",
240
  "rindex.c",
6536 serge 241
  "stpcpy.c",
242
  "stpncpy.c",
6557 serge 243
  "strcasecmp.c",
244
  "strcasestr.c",
6536 serge 245
  "strcat.c",
246
  "strchr.c",
6557 serge 247
  "strchrnul.c",
6536 serge 248
  "strcmp.c",
249
  "strcoll.c",
6557 serge 250
  "strcpy.c",
251
  "strcspn.c",
252
  "strdup.c",
253
  "strdup_r.c",
254
  "strerror.c",
255
  "strerror_r.c",
256
  "strlcat.c",
257
  "strlcpy.c",
258
  "strlen.c",
259
  "strlwr.c",
6536 serge 260
  "strncasecmp.c",
261
  "strncat.c",
262
  "strncmp.c",
263
  "strncpy.c",
264
  "strndup.c",
265
  "strndup_r.c",
266
  "strnlen.c",
6557 serge 267
  "strpbrk.c",
6536 serge 268
  "strrchr.c",
269
  "strsep.c",
6557 serge 270
  "strspn.c",
6536 serge 271
  "strstr.c",
272
  "strtok.c",
273
  "strtok_r.c",
274
  "strupr.c",
275
  "strxfrm.c",
6557 serge 276
  "swab.c",
277
  "u_strerr.c",
278
  "wcpcpy.c",
279
  "wcpncpy.c",
280
  "wcscasecmp.c",
281
  "wcscat.c",
282
  "wcschr.c",
283
  "wcscmp.c",
284
  "wcscoll.c",
285
  "wcscpy.c",
286
  "wcscspn.c",
287
  "wcsdup.c",
288
  "wcslcat.c",
289
  "wcslcpy.c",
290
  "wcslen.c",
291
  "wcsncasecmp.c",
292
  "wcsncat.c",
293
  "wcsncmp.c",
294
  "wcsncpy.c",
295
  "wcsnlen.c",
296
  "wcspbrk.c",
297
  "wcsrchr.c",
298
  "wcsspn.c",
299
  "wcsstr.c",
300
  "wcstok.c",
301
  "wcswidth.c",
302
  "wcsxfrm.c",
303
  "wcwidth.c",
304
  "wmemchr.c",
305
  "wmemcmp.c",
306
  "wmemcpy.c",
307
  "wmemmove.c",
308
  "wmemset.c"
5132 clevermous 309
}
310
 
311
STDIO_SRCS = {
6536 serge 312
  "asiprintf.c",
313
  "asniprintf.c",
314
  "asnprintf.c",
315
  "asprintf.c",
316
  "clearerr.c",
6621 serge 317
  "clearerr_u.c",
6536 serge 318
  "diprintf.c",
319
  "dprintf.c",
320
  "fclose.c",
321
  "fcloseall.c",
322
  "fdopen.c",
323
  "feof.c",
324
  "feof_u.c",
325
  "ferror.c",
326
  "ferror_u.c",
327
  "fflush.c",
328
  "fflush_u.c",
329
  "fgetc.c",
330
  "fgetc_u.c",
331
  "fgetpos.c",
332
  "fgets.c",
333
  "fgets_u.c",
6621 serge 334
  "fgetwc.c",
335
  "fgetwc_u.c",
336
  "fgetws.c",
337
  "fgetws_u.c",
6536 serge 338
  "fileno.c",
339
  "fileno_u.c",
340
  "findfp.c",
341
  "fiprintf.c",
342
  "fiscanf.c",
343
  "flags.c",
344
  "fmemopen.c",
345
  "fopen.c",
346
  "fopencookie.c",
347
  "fprintf.c",
348
  "fpurge.c",
349
  "fputc.c",
350
  "fputc_u.c",
351
  "fputs.c",
352
  "fputs_u.c",
353
  "fputwc.c",
6621 serge 354
  "fputwc_u.c",
355
  "fputws.c",
6622 serge 356
  "fputws_u.c",
6536 serge 357
  "fsetpos.c",
6621 serge 358
  "funopen.c",
6536 serge 359
  "fread.c",
360
  "fread_u.c",
361
  "freopen.c",
362
  "fscanf.c",
363
  "fseek.c",
364
  "fseeko.c",
365
  "fsetlocking.c",
366
  "ftell.c",
367
  "ftello.c",
368
  "fvwrite.c",
369
  "fwalk.c",
370
  "fwide.c",
6621 serge 371
  "fwprintf.c",
6536 serge 372
  "fwrite.c",
373
  "fwrite_u.c",
6621 serge 374
  "fwscanf.c",
6536 serge 375
  "getc.c",
376
  "getc_u.c",
377
  "getchar.c",
378
  "getchar_u.c",
379
  "getdelim.c",
380
  "getline.c",
381
  "gets.c",
6621 serge 382
  "getw.c",
383
  "getwc.c",
384
  "getwc_u.c",
385
  "getwchar.c",
386
  "getwchar_u.c",
6536 serge 387
  "iprintf.c",
388
  "iscanf.c",
389
  "makebuf.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")
6628 serge 530
LIB_OBJS += tup.rule("time/strftime.c", "kos32-gcc $(CFLAGS) $(DEFINES) -DMAKE_WCSFTIME $(INCLUDES) -c %f -o %o", "time/wcsftime.o")
6536 serge 531
 
6628 serge 532
 
5132 clevermous 533
LIBDLL_OBJS = compile(LIBDLL_SRCS)
534
 
6536 serge 535
 
5132 clevermous 536
vfprintf_extra_objs = {
6536 serge 537
  {"", "stdio/vfprintf.o"},
5132 clevermous 538
  {"-DINTEGER_ONLY", "stdio/vfiprintf.o"},
539
  {"-DSTRING_ONLY", "stdio/svfprintf.o"},
540
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiprintf.o"},
541
}
542
for i,v in ipairs(vfprintf_extra_objs) do
543
  LIB_OBJS += tup.rule("stdio/vfprintf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -fshort-enums " .. v[1] .. " -c %f -o %o", v[2])
544
end
545
 
6621 serge 546
vfwprintf_extra_objs = {
547
  {"", "stdio/vfwprintf.o"},
548
  {"-DINTEGER_ONLY", "stdio/vfiwprintf.o"},
549
  {"-DSTRING_ONLY", "stdio/svfwprintf.o"},
550
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiwprintf.o"},
551
}
552
for i,v in ipairs(vfwprintf_extra_objs) do
553
  LIB_OBJS += tup.rule("stdio/vfwprintf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -fshort-enums " .. v[1] .. " -c %f -o %o", v[2])
554
end
555
 
556
 
5132 clevermous 557
vfscanf_extra_objs = {
558
  {"", "stdio/vfscanf.o"},
559
  {"-DINTEGER_ONLY", "stdio/vfiscanf.o"},
560
  {"-DSTRING_ONLY", "stdio/svscanf.o"},
561
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiscanf.o"},
562
}
563
for i,v in ipairs(vfscanf_extra_objs) do
6536 serge 564
  LIB_OBJS += tup.rule("stdio/vfscanf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) " .. v[1] .. " -c %f -o %o", v[2])
5132 clevermous 565
end
566
 
6621 serge 567
vfwscanf_extra_objs = {
568
  {"-DINTEGER_ONLY", "stdio/vfiwscanf.o"},
569
  {"-DSTRING_ONLY", "stdio/svfwscanf.o"},
570
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiwscanf.o"},
571
}
6625 serge 572
for i,v in ipairs(vfwscanf_extra_objs) do
6621 serge 573
  LIB_OBJS += tup.rule("stdio/vfwscanf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) " .. v[1] .. " -c %f -o %o", v[2])
574
end
575
 
576
 
577
 
5132 clevermous 578
tup.rule(LIB_OBJS, "kos32-ld " .. LDFLAGS .. " " .. LIBPATH .. " -o %o %f -lgcc --version-script libc.ver " .. tup.getconfig("KPACK_CMD"),
579
  {SDK_DIR .. "/bin/libc.dll", extra_outputs = {SDK_DIR .. "/lib/libc.dll.a", SDK_DIR .. "/lib/"}})
580
tup.rule(LIBDLL_OBJS, "kos32-ar rcs %o %f", {SDK_DIR .. "/lib/libdll.a", extra_outputs = {SDK_DIR .. "/lib/"}})