Subversion Repositories Kolibri OS

Rev

Rev 9954 | 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")
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",
103
  "sys/getcwd.c",
6621 serge 104
  "sys/errno.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",
9954 turbocat 119
  "sys/ftruncate.c",
6621 serge 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",
9959 turbocat 168
  "envlock.c",
6536 serge 169
  "itoa.c",
6621 serge 170
  "ldiv.c",
6537 serge 171
  "labs.c",
6621 serge 172
  "ldtoa.c",
173
  "malloc.c",
174
  "mallocr.c",
175
  "mblen.c",
176
  "mblen_r.c",
177
  "mbrlen.c",
178
  "mbrtowc.c",
179
  "mbsinit.c",
180
  "mbsnrtowcs.c",
181
  "mbsrtowcs.c",
182
  "mbstowcs.c",
183
  "mbstowcs_r.c",
6536 serge 184
  "mbtowc.c",
185
  "mbtowc_r.c",
186
  "mlock.c",
6621 serge 187
  "mprec.c",
6536 serge 188
  "rand.c",
189
  "rand_r.c",
190
  "rand48.c",
6621 serge 191
  "random.c",
6536 serge 192
  "realloc.c",
6714 serge 193
  "sb_charsets.c",
6536 serge 194
  "seed48.c",
195
  "srand48.c",
196
  "strtod.c",
197
  "strtodg.c",
198
  "strtol.c",
199
  "strtold.c",
200
  "strtoll.c",
201
  "strtoll_r.c",
202
  "strtorx.c",
203
  "strtoul.c",
204
  "strtoull.c",
205
  "strtoull_r.c",
206
  "system.c",
207
  "utoa.c",
208
  "wcrtomb.c",
6621 serge 209
  "wcsnrtombs.c",
210
  "wcsrtombs.c",
211
  "wcstod.c",
212
  "wcstol.c",
213
  "wcstold.c",
214
  "wcstoll.c",
215
  "wcstoll_r.c",
216
  "wcstombs.c",
217
  "wcstombs_r.c",
218
  "wcstoul.c",
219
  "wcstoull.c",
220
  "wcstoull_r.c",
221
  "wctob.c",
222
  "wctomb.c",
6099 serge 223
  "wctomb_r.c"
5132 clevermous 224
}
225
STRING_SRCS = {
6557 serge 226
  "bcmp.c",
227
  "bcopy.c",
228
  "bzero.c",
229
  "explicit_bzero.c",
230
  "gnu_basename.c",
231
  "index.c",
232
  "memccpy.c",
233
  "memchr.c",
234
  "memcmp.c",
6536 serge 235
  "memcpy.c",
6557 serge 236
  "memmem.c",
6536 serge 237
  "memmove.c",
6557 serge 238
  "mempcpy.c",
239
  "memrchr.c",
6536 serge 240
  "memset.c",
6557 serge 241
  "rawmemchr.c",
242
  "rindex.c",
6536 serge 243
  "stpcpy.c",
244
  "stpncpy.c",
6557 serge 245
  "strcasecmp.c",
246
  "strcasestr.c",
6536 serge 247
  "strcat.c",
248
  "strchr.c",
6557 serge 249
  "strchrnul.c",
6536 serge 250
  "strcmp.c",
251
  "strcoll.c",
6557 serge 252
  "strcpy.c",
253
  "strcspn.c",
254
  "strdup.c",
255
  "strdup_r.c",
256
  "strerror.c",
257
  "strerror_r.c",
258
  "strlcat.c",
259
  "strlcpy.c",
260
  "strlen.c",
261
  "strlwr.c",
6536 serge 262
  "strncasecmp.c",
263
  "strncat.c",
264
  "strncmp.c",
265
  "strncpy.c",
266
  "strndup.c",
267
  "strndup_r.c",
268
  "strnlen.c",
6557 serge 269
  "strpbrk.c",
6536 serge 270
  "strrchr.c",
271
  "strsep.c",
6557 serge 272
  "strspn.c",
6536 serge 273
  "strstr.c",
274
  "strtok.c",
275
  "strtok_r.c",
276
  "strupr.c",
277
  "strxfrm.c",
6557 serge 278
  "swab.c",
279
  "u_strerr.c",
280
  "wcpcpy.c",
281
  "wcpncpy.c",
282
  "wcscasecmp.c",
283
  "wcscat.c",
284
  "wcschr.c",
285
  "wcscmp.c",
286
  "wcscoll.c",
287
  "wcscpy.c",
288
  "wcscspn.c",
289
  "wcsdup.c",
290
  "wcslcat.c",
291
  "wcslcpy.c",
292
  "wcslen.c",
293
  "wcsncasecmp.c",
294
  "wcsncat.c",
295
  "wcsncmp.c",
296
  "wcsncpy.c",
297
  "wcsnlen.c",
298
  "wcspbrk.c",
299
  "wcsrchr.c",
300
  "wcsspn.c",
301
  "wcsstr.c",
302
  "wcstok.c",
303
  "wcswidth.c",
304
  "wcsxfrm.c",
305
  "wcwidth.c",
306
  "wmemchr.c",
307
  "wmemcmp.c",
308
  "wmemcpy.c",
309
  "wmemmove.c",
8880 turbocat 310
  "wmemset.c",
311
  "dirname.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
}
9954 turbocat 458
POSIX_SRCS = {
459
  "opendir.c",
460
  "closedir.c",
461
  "readdir.c",
462
  "seekdir.c",
463
  "telldir.c",
464
  "rewinddir.c"
465
}
6099 serge 466
 
5132 clevermous 467
MATH_SRCS = {
468
  "e_acos.c", "e_acosh.c", "e_asin.c", "e_atan2.c", "e_atanh.c", "e_cosh.c", "e_exp.c", "e_fmod.c",
469
  "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",
470
  "e_remainder.c", "e_scalb.c", "e_sinh.c", "e_sqrt.c", "ef_acos.c", "ef_acosh.c", "ef_asin.c",
471
  "ef_atan2.c", "ef_atanh.c", "ef_cosh.c", "ef_exp.c", "ef_fmod.c", "ef_hypot.c", "ef_j0.c", "ef_j1.c",
472
  "ef_jn.c", "ef_log.c", "ef_log10.c", "ef_pow.c", "ef_rem_pio2.c", "ef_remainder.c", "ef_scalb.c",
473
  "ef_sinh.c", "ef_sqrt.c", "er_gamma.c", "er_lgamma.c", "erf_gamma.c", "erf_lgamma.c", "f_exp.c",
474
  "f_expf.c", "f_llrint.c", "f_llrintf.c", "f_llrintl.c", "f_lrint.c", "f_lrintf.c", "f_lrintl.c",
5141 serge 475
  "f_pow.c", "f_powf.c", "f_rint.c", "f_rintf.c", "f_rintl.c", "feclearexcept.c", "fetestexcept.c",
476
  "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",
477
  "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 478
  "s_fabs.c", "s_fdim.c", "s_finite.c", "s_floor.c", "s_fma.c", "s_fmax.c", "s_fmin.c", "s_fpclassify.c",
479
  "s_frexp.c", "s_ilogb.c", "s_infconst.c", "s_infinity.c", "s_isinf.c", "s_isinfd.c", "s_isnan.c",
480
  "s_isnand.c", "s_ldexp.c", "s_lib_ver.c", "s_llrint.c", "s_llround.c", "s_log1p.c", "s_log2.c",
481
  "s_logb.c", "s_lrint.c", "s_lround.c", "s_matherr.c", "s_modf.c", "s_nan.c", "s_nearbyint.c",
482
  "s_nextafter.c", "s_pow10.c", "s_remquo.c", "s_rint.c", "s_round.c", "s_scalbln.c", "s_scalbn.c",
483
  "s_signbit.c", "s_signif.c", "s_sin.c", "s_tan.c", "s_tanh.c", "s_trunc.c", "scalblnl.c", "scalbnl.c",
484
  "sf_asinh.c", "sf_atan.c", "sf_cbrt.c", "sf_ceil.c", "sf_copysign.c", "sf_cos.c", "sf_erf.c",
485
  "sf_exp10.c", "sf_expm1.c", "sf_fabs.c", "sf_fdim.c", "sf_finite.c", "sf_floor.c", "sf_fma.c",
486
  "sf_fmax.c", "sf_fmin.c", "sf_fpclassify.c", "sf_frexp.c", "sf_ilogb.c", "sf_infinity.c",
487
  "sf_isinf.c", "sf_isinff.c", "sf_isnan.c", "sf_isnanf.c", "sf_ldexp.c", "sf_llrint.c",
488
  "sf_llround.c", "sf_log1p.c", "sf_log2.c", "sf_logb.c", "sf_lrint.c", "sf_lround.c", "sf_modf.c",
489
  "sf_nan.c", "sf_nearbyint.c", "sf_nextafter.c", "sf_pow10.c", "sf_remquo.c", "sf_rint.c",
490
  "sf_round.c", "sf_scalbln.c", "sf_scalbn.c", "sf_signif.c", "sf_sin.c", "sf_tan.c", "sf_tanh.c",
491
  "sf_trunc.c", "w_acos.c", "w_acosh.c", "w_asin.c", "w_atan2.c", "w_atanh.c", "w_cosh.c", "w_drem.c",
492
  "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",
493
  "w_log.c", "w_log10.c", "w_pow.c", "w_remainder.c", "w_scalb.c", "w_sincos.c", "w_sinh.c", "w_sqrt.c",
494
  "w_tgamma.c", "wf_acos.c", "wf_acosh.c", "wf_asin.c", "wf_atan2.c", "wf_atanh.c", "wf_cosh.c",
495
  "wf_drem.c", "wf_exp.c", "wf_exp2.c", "wf_fmod.c", "wf_gamma.c", "wf_hypot.c", "wf_j0.c", "wf_j1.c",
496
  "wf_jn.c", "wf_lgamma.c", "wf_log.c", "wf_log10.c", "wf_pow.c", "wf_remainder.c", "wf_scalb.c",
497
  "wf_sincos.c", "wf_sinh.c", "wf_sqrt.c", "wf_tgamma.c", "wr_gamma.c", "wr_lgamma.c", "wrf_gamma.c",
498
  "wrf_lgamma.c",
499
  "f_atan2.S", "f_atan2f.S", "f_frexp.S", "f_frexpf.S", "f_ldexp.S", "f_ldexpf.S", "f_log.S",
500
  "f_log10.S", "f_log10f.S", "f_logf.S", "f_tan.S", "f_tanf.S"
501
}
502
 
503
function prepend(what, to)
504
  local result = {}
505
  for i,v in ipairs(to) do
506
    table.insert(result, what .. v)
507
  end
508
  return result
509
end
510
 
511
-- make shared
512
LIB_SRCS = LIBCDLL_SRCS
513
 
514
LIB_SRCS += CORE_SRCS
515
LIB_SRCS += prepend("stdio/", STDIO_SRCS)
516
LIB_SRCS += prepend("string/", STRING_SRCS)
517
LIB_SRCS += prepend("stdlib/", STDLIB_SRCS)
9954 turbocat 518
LIB_SRCS += prepend("posix/", POSIX_SRCS)
5132 clevermous 519
LIB_SRCS += prepend("math/", MATH_SRCS)
520
 
521
ALL_OBJS = {}
522
function compile(list)
523
  local result = {}
524
  for i,v in ipairs(list) do
525
    if ALL_OBJS[v] then
526
      -- already compiled
527
    elseif v:sub(-2) == ".c" or v:sub(-2) == ".S" then
8723 dunkaist 528
      ALL_OBJS[v] = tup.rule(v, "kos32-gcc ".. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " -o %o %f", v:sub(1, -3) .. ".o")
5132 clevermous 529
    elseif v:sub(-4) == ".asm" then
530
      ALL_OBJS[v] = tup.rule(v, "fasm %f %o", v:sub(1, -5) .. ".obj")
531
    end
532
    result += ALL_OBJS[v]
533
  end
534
  return result
535
end
536
 
537
LIB_OBJS = compile(LIB_SRCS)
8723 dunkaist 538
LIB_OBJS += tup.rule("crt/crtdll.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " -fno-delete-null-pointer-checks -c %f -o %o","crt/crtdll.o")
539
LIB_OBJS += tup.rule("pe/loader.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " -fno-delete-null-pointer-checks -c %f -o %o", "pe/loader.o")
540
LIB_OBJS += tup.rule("reent/renamer.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " -D_COMPILING_NEWLIB -c %f -o %o", "reent/renamer.o")
541
LIB_OBJS += tup.rule("time/strftime.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " -DMAKE_WCSFTIME " .. INCLUDES .. " -c %f -o %o", "time/wcsftime.o")
6536 serge 542
 
6628 serge 543
 
5132 clevermous 544
LIBDLL_OBJS = compile(LIBDLL_SRCS)
545
 
6536 serge 546
 
5132 clevermous 547
vfprintf_extra_objs = {
6536 serge 548
  {"", "stdio/vfprintf.o"},
5132 clevermous 549
  {"-DINTEGER_ONLY", "stdio/vfiprintf.o"},
550
  {"-DSTRING_ONLY", "stdio/svfprintf.o"},
551
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiprintf.o"},
552
}
553
for i,v in ipairs(vfprintf_extra_objs) do
8723 dunkaist 554
  LIB_OBJS += tup.rule("stdio/vfprintf.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " -fshort-enums " .. v[1] .. " -c %f -o %o", v[2])
5132 clevermous 555
end
556
 
6621 serge 557
vfwprintf_extra_objs = {
558
  {"", "stdio/vfwprintf.o"},
559
  {"-DINTEGER_ONLY", "stdio/vfiwprintf.o"},
560
  {"-DSTRING_ONLY", "stdio/svfwprintf.o"},
561
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiwprintf.o"},
562
}
563
for i,v in ipairs(vfwprintf_extra_objs) do
8723 dunkaist 564
  LIB_OBJS += tup.rule("stdio/vfwprintf.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " -fshort-enums " .. v[1] .. " -c %f -o %o", v[2])
6621 serge 565
end
566
 
567
 
5132 clevermous 568
vfscanf_extra_objs = {
569
  {"", "stdio/vfscanf.o"},
570
  {"-DINTEGER_ONLY", "stdio/vfiscanf.o"},
571
  {"-DSTRING_ONLY", "stdio/svscanf.o"},
572
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiscanf.o"},
573
}
574
for i,v in ipairs(vfscanf_extra_objs) do
8723 dunkaist 575
  LIB_OBJS += tup.rule("stdio/vfscanf.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " " .. v[1] .. " -c %f -o %o", v[2])
5132 clevermous 576
end
577
 
6621 serge 578
vfwscanf_extra_objs = {
579
  {"-DINTEGER_ONLY", "stdio/vfiwscanf.o"},
580
  {"-DSTRING_ONLY", "stdio/svfwscanf.o"},
581
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiwscanf.o"},
582
}
6625 serge 583
for i,v in ipairs(vfwscanf_extra_objs) do
8723 dunkaist 584
  LIB_OBJS += tup.rule("stdio/vfwscanf.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " " .. v[1] .. " -c %f -o %o", v[2])
6621 serge 585
end
586
 
587
 
588
 
5132 clevermous 589
tup.rule(LIB_OBJS, "kos32-ld " .. LDFLAGS .. " " .. LIBPATH .. " -o %o %f -lgcc --version-script libc.ver " .. tup.getconfig("KPACK_CMD"),
590
  {SDK_DIR .. "/bin/libc.dll", extra_outputs = {SDK_DIR .. "/lib/libc.dll.a", SDK_DIR .. "/lib/"}})
591
tup.rule(LIBDLL_OBJS, "kos32-ar rcs %o %f", {SDK_DIR .. "/lib/libdll.a", extra_outputs = {SDK_DIR .. "/lib/"}})