Subversion Repositories Kolibri OS

Rev

Rev 9959 | 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")
8723 dunkaist 3
SDK_DIR = "../../.."
6539 serge 4
CFLAGS =  "-c -O2 -fno-builtin -fno-ident -fomit-frame-pointer -DMISSING_SYSCALL_NAMES"
8723 dunkaist 5
LDFLAGS = "-shared -s -T libcdll.lds --out-implib " .. SDK_DIR .. "/lib/libc.dll.a --image-base 0"
5132 clevermous 6
-- LDFLAGS = LDFLAGS .. " --output-def libc.orig.def"
7
 
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
8723 dunkaist 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",
9952 turbocat 102
  "sys/chdir.c",
6621 serge 103
  "sys/errno.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",
9954 turbocat 118
  "sys/ftruncate.c",
6621 serge 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",
9959 turbocat 167
  "envlock.c",
6536 serge 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",
9989 turbocat 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
}
9989 turbocat 456
 
9954 turbocat 457
POSIX_SRCS = {
458
  "opendir.c",
459
  "closedir.c",
460
  "readdir.c",
461
  "seekdir.c",
462
  "telldir.c",
463
  "rewinddir.c"
464
}
6099 serge 465
 
9989 turbocat 466
UNIX_SRCS = {
467
  "getcwd.c",
468
  "dirname.c",
469
  "basename.c"
470
}
471
 
5132 clevermous 472
MATH_SRCS = {
473
  "e_acos.c", "e_acosh.c", "e_asin.c", "e_atan2.c", "e_atanh.c", "e_cosh.c", "e_exp.c", "e_fmod.c",
474
  "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",
475
  "e_remainder.c", "e_scalb.c", "e_sinh.c", "e_sqrt.c", "ef_acos.c", "ef_acosh.c", "ef_asin.c",
476
  "ef_atan2.c", "ef_atanh.c", "ef_cosh.c", "ef_exp.c", "ef_fmod.c", "ef_hypot.c", "ef_j0.c", "ef_j1.c",
477
  "ef_jn.c", "ef_log.c", "ef_log10.c", "ef_pow.c", "ef_rem_pio2.c", "ef_remainder.c", "ef_scalb.c",
478
  "ef_sinh.c", "ef_sqrt.c", "er_gamma.c", "er_lgamma.c", "erf_gamma.c", "erf_lgamma.c", "f_exp.c",
479
  "f_expf.c", "f_llrint.c", "f_llrintf.c", "f_llrintl.c", "f_lrint.c", "f_lrintf.c", "f_lrintl.c",
5141 serge 480
  "f_pow.c", "f_powf.c", "f_rint.c", "f_rintf.c", "f_rintl.c", "feclearexcept.c", "fetestexcept.c",
481
  "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",
482
  "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 483
  "s_fabs.c", "s_fdim.c", "s_finite.c", "s_floor.c", "s_fma.c", "s_fmax.c", "s_fmin.c", "s_fpclassify.c",
484
  "s_frexp.c", "s_ilogb.c", "s_infconst.c", "s_infinity.c", "s_isinf.c", "s_isinfd.c", "s_isnan.c",
485
  "s_isnand.c", "s_ldexp.c", "s_lib_ver.c", "s_llrint.c", "s_llround.c", "s_log1p.c", "s_log2.c",
486
  "s_logb.c", "s_lrint.c", "s_lround.c", "s_matherr.c", "s_modf.c", "s_nan.c", "s_nearbyint.c",
487
  "s_nextafter.c", "s_pow10.c", "s_remquo.c", "s_rint.c", "s_round.c", "s_scalbln.c", "s_scalbn.c",
488
  "s_signbit.c", "s_signif.c", "s_sin.c", "s_tan.c", "s_tanh.c", "s_trunc.c", "scalblnl.c", "scalbnl.c",
489
  "sf_asinh.c", "sf_atan.c", "sf_cbrt.c", "sf_ceil.c", "sf_copysign.c", "sf_cos.c", "sf_erf.c",
490
  "sf_exp10.c", "sf_expm1.c", "sf_fabs.c", "sf_fdim.c", "sf_finite.c", "sf_floor.c", "sf_fma.c",
491
  "sf_fmax.c", "sf_fmin.c", "sf_fpclassify.c", "sf_frexp.c", "sf_ilogb.c", "sf_infinity.c",
492
  "sf_isinf.c", "sf_isinff.c", "sf_isnan.c", "sf_isnanf.c", "sf_ldexp.c", "sf_llrint.c",
493
  "sf_llround.c", "sf_log1p.c", "sf_log2.c", "sf_logb.c", "sf_lrint.c", "sf_lround.c", "sf_modf.c",
494
  "sf_nan.c", "sf_nearbyint.c", "sf_nextafter.c", "sf_pow10.c", "sf_remquo.c", "sf_rint.c",
495
  "sf_round.c", "sf_scalbln.c", "sf_scalbn.c", "sf_signif.c", "sf_sin.c", "sf_tan.c", "sf_tanh.c",
496
  "sf_trunc.c", "w_acos.c", "w_acosh.c", "w_asin.c", "w_atan2.c", "w_atanh.c", "w_cosh.c", "w_drem.c",
497
  "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",
498
  "w_log.c", "w_log10.c", "w_pow.c", "w_remainder.c", "w_scalb.c", "w_sincos.c", "w_sinh.c", "w_sqrt.c",
499
  "w_tgamma.c", "wf_acos.c", "wf_acosh.c", "wf_asin.c", "wf_atan2.c", "wf_atanh.c", "wf_cosh.c",
500
  "wf_drem.c", "wf_exp.c", "wf_exp2.c", "wf_fmod.c", "wf_gamma.c", "wf_hypot.c", "wf_j0.c", "wf_j1.c",
501
  "wf_jn.c", "wf_lgamma.c", "wf_log.c", "wf_log10.c", "wf_pow.c", "wf_remainder.c", "wf_scalb.c",
502
  "wf_sincos.c", "wf_sinh.c", "wf_sqrt.c", "wf_tgamma.c", "wr_gamma.c", "wr_lgamma.c", "wrf_gamma.c",
503
  "wrf_lgamma.c",
504
  "f_atan2.S", "f_atan2f.S", "f_frexp.S", "f_frexpf.S", "f_ldexp.S", "f_ldexpf.S", "f_log.S",
505
  "f_log10.S", "f_log10f.S", "f_logf.S", "f_tan.S", "f_tanf.S"
506
}
507
 
508
function prepend(what, to)
509
  local result = {}
510
  for i,v in ipairs(to) do
511
    table.insert(result, what .. v)
512
  end
513
  return result
514
end
515
 
516
-- make shared
517
LIB_SRCS = LIBCDLL_SRCS
518
 
519
LIB_SRCS += CORE_SRCS
520
LIB_SRCS += prepend("stdio/", STDIO_SRCS)
521
LIB_SRCS += prepend("string/", STRING_SRCS)
522
LIB_SRCS += prepend("stdlib/", STDLIB_SRCS)
9954 turbocat 523
LIB_SRCS += prepend("posix/", POSIX_SRCS)
9989 turbocat 524
LIB_SRCS += prepend("unix/", UNIX_SRCS)
5132 clevermous 525
LIB_SRCS += prepend("math/", MATH_SRCS)
526
 
527
ALL_OBJS = {}
528
function compile(list)
529
  local result = {}
530
  for i,v in ipairs(list) do
531
    if ALL_OBJS[v] then
532
      -- already compiled
533
    elseif v:sub(-2) == ".c" or v:sub(-2) == ".S" then
8723 dunkaist 534
      ALL_OBJS[v] = tup.rule(v, "kos32-gcc ".. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " -o %o %f", v:sub(1, -3) .. ".o")
5132 clevermous 535
    elseif v:sub(-4) == ".asm" then
536
      ALL_OBJS[v] = tup.rule(v, "fasm %f %o", v:sub(1, -5) .. ".obj")
537
    end
538
    result += ALL_OBJS[v]
539
  end
540
  return result
541
end
542
 
543
LIB_OBJS = compile(LIB_SRCS)
8723 dunkaist 544
LIB_OBJS += tup.rule("crt/crtdll.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " -fno-delete-null-pointer-checks -c %f -o %o","crt/crtdll.o")
545
LIB_OBJS += tup.rule("pe/loader.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " -fno-delete-null-pointer-checks -c %f -o %o", "pe/loader.o")
546
LIB_OBJS += tup.rule("reent/renamer.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " -D_COMPILING_NEWLIB -c %f -o %o", "reent/renamer.o")
547
LIB_OBJS += tup.rule("time/strftime.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " -DMAKE_WCSFTIME " .. INCLUDES .. " -c %f -o %o", "time/wcsftime.o")
6536 serge 548
 
6628 serge 549
 
5132 clevermous 550
LIBDLL_OBJS = compile(LIBDLL_SRCS)
551
 
6536 serge 552
 
5132 clevermous 553
vfprintf_extra_objs = {
6536 serge 554
  {"", "stdio/vfprintf.o"},
5132 clevermous 555
  {"-DINTEGER_ONLY", "stdio/vfiprintf.o"},
556
  {"-DSTRING_ONLY", "stdio/svfprintf.o"},
557
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiprintf.o"},
558
}
559
for i,v in ipairs(vfprintf_extra_objs) do
8723 dunkaist 560
  LIB_OBJS += tup.rule("stdio/vfprintf.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " -fshort-enums " .. v[1] .. " -c %f -o %o", v[2])
5132 clevermous 561
end
562
 
6621 serge 563
vfwprintf_extra_objs = {
564
  {"", "stdio/vfwprintf.o"},
565
  {"-DINTEGER_ONLY", "stdio/vfiwprintf.o"},
566
  {"-DSTRING_ONLY", "stdio/svfwprintf.o"},
567
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiwprintf.o"},
568
}
569
for i,v in ipairs(vfwprintf_extra_objs) do
8723 dunkaist 570
  LIB_OBJS += tup.rule("stdio/vfwprintf.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " -fshort-enums " .. v[1] .. " -c %f -o %o", v[2])
6621 serge 571
end
572
 
573
 
5132 clevermous 574
vfscanf_extra_objs = {
575
  {"", "stdio/vfscanf.o"},
576
  {"-DINTEGER_ONLY", "stdio/vfiscanf.o"},
577
  {"-DSTRING_ONLY", "stdio/svscanf.o"},
578
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiscanf.o"},
579
}
580
for i,v in ipairs(vfscanf_extra_objs) do
8723 dunkaist 581
  LIB_OBJS += tup.rule("stdio/vfscanf.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " " .. v[1] .. " -c %f -o %o", v[2])
5132 clevermous 582
end
583
 
6621 serge 584
vfwscanf_extra_objs = {
585
  {"-DINTEGER_ONLY", "stdio/vfiwscanf.o"},
586
  {"-DSTRING_ONLY", "stdio/svfwscanf.o"},
587
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiwscanf.o"},
588
}
6625 serge 589
for i,v in ipairs(vfwscanf_extra_objs) do
8723 dunkaist 590
  LIB_OBJS += tup.rule("stdio/vfwscanf.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " " .. v[1] .. " -c %f -o %o", v[2])
6621 serge 591
end
592
 
593
 
594
 
5132 clevermous 595
tup.rule(LIB_OBJS, "kos32-ld " .. LDFLAGS .. " " .. LIBPATH .. " -o %o %f -lgcc --version-script libc.ver " .. tup.getconfig("KPACK_CMD"),
596
  {SDK_DIR .. "/bin/libc.dll", extra_outputs = {SDK_DIR .. "/lib/libc.dll.a", SDK_DIR .. "/lib/"}})
597
tup.rule(LIBDLL_OBJS, "kos32-ar rcs %o %f", {SDK_DIR .. "/lib/libdll.a", extra_outputs = {SDK_DIR .. "/lib/"}})