Subversion Repositories Kolibri OS

Rev

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