Subversion Repositories Kolibri OS

Rev

Rev 6714 | Rev 7171 | 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"
7170 serge 24
STATIC_SRCS = {"crt/start.S", "crt/crt1.c", "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 = {
7170 serge 27
  "crt/crtdll.c",
6621 serge 28
  "crt/crt2.c",
29
  "crt/pseudo-reloc.c",
7170 serge 30
  "crt/exit.S",
31
  "pe/loader.c"
6621 serge 32
}
5132 clevermous 33
CORE_SRCS = {
6621 serge 34
  "argz/buf_findstr.c",
35
  "argz/envz_get.c",
36
  "crt/console.asm",
7170 serge 37
  "crt/gthr-kos32.c",
6621 serge 38
  "crt/thread.S",
39
  "crt/setjmp.S",
40
  "crt/cpu_features.c",
41
  "crt/tls.c",
42
  "ctype/ctype_.c",
43
  "ctype/isascii.c",
44
  "ctype/isblank.c",
45
  "ctype/isalnum.c",
46
  "ctype/isalpha.c",
47
  "ctype/iscntrl.c",
48
  "ctype/isdigit.c",
49
  "ctype/islower.c",
50
  "ctype/isupper.c",
51
  "ctype/isprint.c",
52
  "ctype/ispunct.c",
53
  "ctype/isspace.c",
54
  "ctype/iswctype.c",
55
  "ctype/iswalnum.c",
56
  "ctype/iswalpha.c",
57
  "ctype/iswblank.c",
58
  "ctype/iswcntrl.c",
59
  "ctype/iswdigit.c",
60
  "ctype/iswgraph.c",
61
  "ctype/iswlower.c",
62
  "ctype/iswprint.c",
63
  "ctype/iswpunct.c",
64
  "ctype/iswspace.c",
65
  "ctype/iswupper.c",
66
  "ctype/iswxdigit.c",
67
  "ctype/isxdigit.c",
6627 serge 68
  "ctype/jp2uc.c",
6621 serge 69
  "ctype/toascii.c",
70
  "ctype/tolower.c",
71
  "ctype/toupper.c",
72
  "ctype/towctrans.c",
73
  "ctype/towlower.c",
74
  "ctype/towupper.c",
75
  "ctype/wctrans.c",
76
  "ctype/wctype.c",
5132 clevermous 77
  "errno/errno.c",
6621 serge 78
  "locale/locale.c",
79
  "locale/lctype.c",
80
  "locale/ldpart.c",
81
  "reent/closer.c",
82
  "reent/fstatr.c",
83
  "reent/getreent.c",
84
  "reent/gettimeofdayr.c",
85
  "reent/impure.c",
86
  "reent/init_reent.c",
87
  "reent/isattyr.c",
88
  "reent/linkr.c",
89
  "reent/lseekr.c",
90
  "reent/mutex.c",
91
  "reent/openr.c",
92
  "reent/readr.c",
93
  "reent/statr.c",
94
  "reent/timesr.c",
95
  "reent/unlinkr.c",
5216 serge 96
  "reent/writer.c",
6621 serge 97
  "search/qsort.c",
98
  "search/bsearch.c",
5132 clevermous 99
  "signal/signal.c",
6621 serge 100
  "sys/access.c",
101
  "sys/clock_gettime.c",
102
  "sys/close.c",
103
  "sys/conio.c",
104
  "sys/create.c",
105
  "sys/errno.c",
106
  "sys/finfo.c",
107
  "sys/fsize.c",
108
  "sys/fstat.c",
109
  "sys/gettod.c",
110
  "sys/io.c",
111
  "sys/ioread.c",
112
  "sys/iowrite.c",
113
  "sys/isatty.c",
114
  "sys/lseek.c",
115
  "sys/open.c",
116
  "sys/read.c",
117
  "sys/_rename.c",
118
  "sys/stat.c",
119
  "sys/unlink.c",
120
  "sys/write.c",
121
  "sys/io_alloc.S",
122
  "time/asctime.c",
123
  "time/asctime_r.c",
124
  "time/clock.c",
125
  "time/ctime.c",
126
  "time/ctime_r.c",
127
  "time/difftime.c",
128
  "time/gettzinfo.c",
129
  "time/gmtime.c",
130
  "time/gmtime_r.c",
131
  "time/mktime.c",
132
  "time/month_lengths.c",
133
  "time/lcltime.c",
134
  "time/lcltime_r.c",
135
  "time/strftime.c",
136
  "time/time.c",
137
  "time/tzcalc_limits.c",
138
  "time/timelocal.c",
139
  "time/tzlock.c",
140
  "time/tzset.c",
141
  "time/tzset_r.c",
142
  "time/tzvars.c"
5132 clevermous 143
}
144
STDLIB_SRCS = {
6536 serge 145
  "__atexit.c",
146
  "__call_atexit.c",
147
  "abort.c",
148
  "abs.c",
149
  "assert.c",
150
  "atexit.c",
151
  "atof.c",
152
  "atoi.c",
153
  "atol.c",
6621 serge 154
  "btowc.c",
155
  "calloc.c",
6536 serge 156
  "cxa_atexit.c",
157
  "cxa_finalize.c",
158
  "div.c",
159
  "dtoa.c",
160
  "dtoastub.c",
161
  "efgcvt.c",
162
  "ecvtbuf.c",
163
  "eprintf.c",
164
  "erand48.c",
165
  "exit.c",
166
  "gdtoa-gethex.c",
167
  "gdtoa-hexnan.c",
168
  "getenv.c",
169
  "getenv_r.c",
170
  "itoa.c",
6621 serge 171
  "ldiv.c",
6537 serge 172
  "labs.c",
6621 serge 173
  "ldtoa.c",
174
  "malloc.c",
175
  "mallocr.c",
176
  "mblen.c",
177
  "mblen_r.c",
178
  "mbrlen.c",
179
  "mbrtowc.c",
180
  "mbsinit.c",
181
  "mbsnrtowcs.c",
182
  "mbsrtowcs.c",
183
  "mbstowcs.c",
184
  "mbstowcs_r.c",
6536 serge 185
  "mbtowc.c",
186
  "mbtowc_r.c",
187
  "mlock.c",
6621 serge 188
  "mprec.c",
6536 serge 189
  "rand.c",
190
  "rand_r.c",
191
  "rand48.c",
6621 serge 192
  "random.c",
6536 serge 193
  "realloc.c",
6714 serge 194
  "sb_charsets.c",
6536 serge 195
  "seed48.c",
196
  "srand48.c",
197
  "strtod.c",
198
  "strtodg.c",
199
  "strtol.c",
200
  "strtold.c",
201
  "strtoll.c",
202
  "strtoll_r.c",
203
  "strtorx.c",
204
  "strtoul.c",
205
  "strtoull.c",
206
  "strtoull_r.c",
207
  "system.c",
208
  "utoa.c",
209
  "wcrtomb.c",
6621 serge 210
  "wcsnrtombs.c",
211
  "wcsrtombs.c",
212
  "wcstod.c",
213
  "wcstol.c",
214
  "wcstold.c",
215
  "wcstoll.c",
216
  "wcstoll_r.c",
217
  "wcstombs.c",
218
  "wcstombs_r.c",
219
  "wcstoul.c",
220
  "wcstoull.c",
221
  "wcstoull_r.c",
222
  "wctob.c",
223
  "wctomb.c",
6099 serge 224
  "wctomb_r.c"
5132 clevermous 225
}
226
STRING_SRCS = {
6557 serge 227
  "bcmp.c",
228
  "bcopy.c",
229
  "bzero.c",
230
  "explicit_bzero.c",
231
  "gnu_basename.c",
232
  "index.c",
233
  "memccpy.c",
234
  "memchr.c",
235
  "memcmp.c",
6536 serge 236
  "memcpy.c",
6557 serge 237
  "memmem.c",
6536 serge 238
  "memmove.c",
6557 serge 239
  "mempcpy.c",
240
  "memrchr.c",
6536 serge 241
  "memset.c",
6557 serge 242
  "rawmemchr.c",
243
  "rindex.c",
6536 serge 244
  "stpcpy.c",
245
  "stpncpy.c",
6557 serge 246
  "strcasecmp.c",
247
  "strcasestr.c",
6536 serge 248
  "strcat.c",
249
  "strchr.c",
6557 serge 250
  "strchrnul.c",
6536 serge 251
  "strcmp.c",
252
  "strcoll.c",
6557 serge 253
  "strcpy.c",
254
  "strcspn.c",
255
  "strdup.c",
256
  "strdup_r.c",
257
  "strerror.c",
258
  "strerror_r.c",
259
  "strlcat.c",
260
  "strlcpy.c",
261
  "strlen.c",
262
  "strlwr.c",
6536 serge 263
  "strncasecmp.c",
264
  "strncat.c",
265
  "strncmp.c",
266
  "strncpy.c",
267
  "strndup.c",
268
  "strndup_r.c",
269
  "strnlen.c",
6557 serge 270
  "strpbrk.c",
6536 serge 271
  "strrchr.c",
272
  "strsep.c",
6557 serge 273
  "strspn.c",
6536 serge 274
  "strstr.c",
275
  "strtok.c",
276
  "strtok_r.c",
277
  "strupr.c",
278
  "strxfrm.c",
6557 serge 279
  "swab.c",
280
  "u_strerr.c",
281
  "wcpcpy.c",
282
  "wcpncpy.c",
283
  "wcscasecmp.c",
284
  "wcscat.c",
285
  "wcschr.c",
286
  "wcscmp.c",
287
  "wcscoll.c",
288
  "wcscpy.c",
289
  "wcscspn.c",
290
  "wcsdup.c",
291
  "wcslcat.c",
292
  "wcslcpy.c",
293
  "wcslen.c",
294
  "wcsncasecmp.c",
295
  "wcsncat.c",
296
  "wcsncmp.c",
297
  "wcsncpy.c",
298
  "wcsnlen.c",
299
  "wcspbrk.c",
300
  "wcsrchr.c",
301
  "wcsspn.c",
302
  "wcsstr.c",
303
  "wcstok.c",
304
  "wcswidth.c",
305
  "wcsxfrm.c",
306
  "wcwidth.c",
307
  "wmemchr.c",
308
  "wmemcmp.c",
309
  "wmemcpy.c",
310
  "wmemmove.c",
311
  "wmemset.c"
5132 clevermous 312
}
313
 
314
STDIO_SRCS = {
6536 serge 315
  "asiprintf.c",
316
  "asniprintf.c",
317
  "asnprintf.c",
318
  "asprintf.c",
319
  "clearerr.c",
6621 serge 320
  "clearerr_u.c",
6536 serge 321
  "diprintf.c",
322
  "dprintf.c",
323
  "fclose.c",
324
  "fcloseall.c",
325
  "fdopen.c",
326
  "feof.c",
327
  "feof_u.c",
328
  "ferror.c",
329
  "ferror_u.c",
330
  "fflush.c",
331
  "fflush_u.c",
332
  "fgetc.c",
333
  "fgetc_u.c",
334
  "fgetpos.c",
335
  "fgets.c",
336
  "fgets_u.c",
6621 serge 337
  "fgetwc.c",
338
  "fgetwc_u.c",
339
  "fgetws.c",
340
  "fgetws_u.c",
6536 serge 341
  "fileno.c",
342
  "fileno_u.c",
343
  "findfp.c",
344
  "fiprintf.c",
345
  "fiscanf.c",
346
  "flags.c",
347
  "fmemopen.c",
348
  "fopen.c",
349
  "fopencookie.c",
350
  "fprintf.c",
351
  "fpurge.c",
352
  "fputc.c",
353
  "fputc_u.c",
354
  "fputs.c",
355
  "fputs_u.c",
356
  "fputwc.c",
6621 serge 357
  "fputwc_u.c",
358
  "fputws.c",
6622 serge 359
  "fputws_u.c",
6536 serge 360
  "fsetpos.c",
6621 serge 361
  "funopen.c",
6536 serge 362
  "fread.c",
363
  "fread_u.c",
364
  "freopen.c",
365
  "fscanf.c",
366
  "fseek.c",
367
  "fseeko.c",
368
  "fsetlocking.c",
369
  "ftell.c",
370
  "ftello.c",
371
  "fvwrite.c",
372
  "fwalk.c",
373
  "fwide.c",
6621 serge 374
  "fwprintf.c",
6536 serge 375
  "fwrite.c",
376
  "fwrite_u.c",
6621 serge 377
  "fwscanf.c",
6536 serge 378
  "getc.c",
379
  "getc_u.c",
380
  "getchar.c",
381
  "getchar_u.c",
382
  "getdelim.c",
383
  "getline.c",
384
  "gets.c",
6621 serge 385
  "getw.c",
386
  "getwc.c",
387
  "getwc_u.c",
388
  "getwchar.c",
389
  "getwchar_u.c",
6536 serge 390
  "iprintf.c",
391
  "iscanf.c",
392
  "makebuf.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")
6628 serge 533
LIB_OBJS += tup.rule("time/strftime.c", "kos32-gcc $(CFLAGS) $(DEFINES) -DMAKE_WCSFTIME $(INCLUDES) -c %f -o %o", "time/wcsftime.o")
6536 serge 534
 
6628 serge 535
 
5132 clevermous 536
LIBDLL_OBJS = compile(LIBDLL_SRCS)
537
 
6536 serge 538
 
5132 clevermous 539
vfprintf_extra_objs = {
6536 serge 540
  {"", "stdio/vfprintf.o"},
5132 clevermous 541
  {"-DINTEGER_ONLY", "stdio/vfiprintf.o"},
542
  {"-DSTRING_ONLY", "stdio/svfprintf.o"},
543
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiprintf.o"},
544
}
545
for i,v in ipairs(vfprintf_extra_objs) do
546
  LIB_OBJS += tup.rule("stdio/vfprintf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -fshort-enums " .. v[1] .. " -c %f -o %o", v[2])
547
end
548
 
6621 serge 549
vfwprintf_extra_objs = {
550
  {"", "stdio/vfwprintf.o"},
551
  {"-DINTEGER_ONLY", "stdio/vfiwprintf.o"},
552
  {"-DSTRING_ONLY", "stdio/svfwprintf.o"},
553
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiwprintf.o"},
554
}
555
for i,v in ipairs(vfwprintf_extra_objs) do
556
  LIB_OBJS += tup.rule("stdio/vfwprintf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -fshort-enums " .. v[1] .. " -c %f -o %o", v[2])
557
end
558
 
559
 
5132 clevermous 560
vfscanf_extra_objs = {
561
  {"", "stdio/vfscanf.o"},
562
  {"-DINTEGER_ONLY", "stdio/vfiscanf.o"},
563
  {"-DSTRING_ONLY", "stdio/svscanf.o"},
564
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiscanf.o"},
565
}
566
for i,v in ipairs(vfscanf_extra_objs) do
6536 serge 567
  LIB_OBJS += tup.rule("stdio/vfscanf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) " .. v[1] .. " -c %f -o %o", v[2])
5132 clevermous 568
end
569
 
6621 serge 570
vfwscanf_extra_objs = {
571
  {"-DINTEGER_ONLY", "stdio/vfiwscanf.o"},
572
  {"-DSTRING_ONLY", "stdio/svfwscanf.o"},
573
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiwscanf.o"},
574
}
6625 serge 575
for i,v in ipairs(vfwscanf_extra_objs) do
6621 serge 576
  LIB_OBJS += tup.rule("stdio/vfwscanf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) " .. v[1] .. " -c %f -o %o", v[2])
577
end
578
 
579
 
580
 
5132 clevermous 581
tup.rule(LIB_OBJS, "kos32-ld " .. LDFLAGS .. " " .. LIBPATH .. " -o %o %f -lgcc --version-script libc.ver " .. tup.getconfig("KPACK_CMD"),
582
  {SDK_DIR .. "/bin/libc.dll", extra_outputs = {SDK_DIR .. "/lib/libc.dll.a", SDK_DIR .. "/lib/"}})
583
tup.rule(LIBDLL_OBJS, "kos32-ar rcs %o %f", {SDK_DIR .. "/lib/libdll.a", extra_outputs = {SDK_DIR .. "/lib/"}})