Subversion Repositories Kolibri OS

Rev

Rev 9952 | Rev 9959 | 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",
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",
8880 turbocat 309
  "wmemset.c",
310
  "dirname.c"
5132 clevermous 311
}
312
 
313
STDIO_SRCS = {
6536 serge 314
  "asiprintf.c",
315
  "asniprintf.c",
316
  "asnprintf.c",
317
  "asprintf.c",
318
  "clearerr.c",
6621 serge 319
  "clearerr_u.c",
6536 serge 320
  "diprintf.c",
321
  "dprintf.c",
322
  "fclose.c",
323
  "fcloseall.c",
324
  "fdopen.c",
325
  "feof.c",
326
  "feof_u.c",
327
  "ferror.c",
328
  "ferror_u.c",
329
  "fflush.c",
330
  "fflush_u.c",
331
  "fgetc.c",
332
  "fgetc_u.c",
333
  "fgetpos.c",
334
  "fgets.c",
335
  "fgets_u.c",
6621 serge 336
  "fgetwc.c",
337
  "fgetwc_u.c",
338
  "fgetws.c",
339
  "fgetws_u.c",
6536 serge 340
  "fileno.c",
341
  "fileno_u.c",
342
  "findfp.c",
343
  "fiprintf.c",
344
  "fiscanf.c",
345
  "flags.c",
346
  "fmemopen.c",
347
  "fopen.c",
348
  "fopencookie.c",
349
  "fprintf.c",
350
  "fpurge.c",
351
  "fputc.c",
352
  "fputc_u.c",
353
  "fputs.c",
354
  "fputs_u.c",
355
  "fputwc.c",
6621 serge 356
  "fputwc_u.c",
357
  "fputws.c",
6622 serge 358
  "fputws_u.c",
6536 serge 359
  "fsetpos.c",
6621 serge 360
  "funopen.c",
6536 serge 361
  "fread.c",
362
  "fread_u.c",
363
  "freopen.c",
364
  "fscanf.c",
365
  "fseek.c",
366
  "fseeko.c",
367
  "fsetlocking.c",
368
  "ftell.c",
369
  "ftello.c",
370
  "fvwrite.c",
371
  "fwalk.c",
372
  "fwide.c",
6621 serge 373
  "fwprintf.c",
6536 serge 374
  "fwrite.c",
375
  "fwrite_u.c",
6621 serge 376
  "fwscanf.c",
6536 serge 377
  "getc.c",
378
  "getc_u.c",
379
  "getchar.c",
380
  "getchar_u.c",
381
  "getdelim.c",
382
  "getline.c",
383
  "gets.c",
6621 serge 384
  "getw.c",
385
  "getwc.c",
386
  "getwc_u.c",
387
  "getwchar.c",
388
  "getwchar_u.c",
6536 serge 389
  "iprintf.c",
390
  "iscanf.c",
391
  "makebuf.c",
392
  "mktemp.c",
393
  "open_memstream.c",
394
  "perror.c",
395
  "printf.c",
396
  "putc.c",
397
  "putc_u.c",
398
  "putchar.c",
399
  "putchar_u.c",
400
  "puts.c",
6621 serge 401
  "putw.c",
402
  "putwc.c",
403
  "putwc_u.c",
404
  "putwchar.c",
405
  "putwchar_u.c",
6536 serge 406
  "refill.c",
407
  "remove.c",
408
  "rename.c",
409
  "rewind.c",
410
  "rget.c",
411
  "scanf.c",
412
  "sccl.c",
413
  "setbuf.c",
414
  "setbuffer.c",
415
  "setlinebuf.c",
416
  "setvbuf.c",
417
  "siprintf.c",
418
  "siscanf.c",
419
  "sniprintf.c",
420
  "snprintf.c",
421
  "sprintf.c",
422
  "sscanf.c",
423
  "stdio.c",
424
  "stdio_ext.c",
6621 serge 425
  "swprintf.c",
426
  "swscanf.c",
6536 serge 427
  "tmpfile.c",
428
  "tmpnam.c",
429
  "ungetc.c",
6621 serge 430
  "ungetwc.c",
6536 serge 431
  "vasiprintf.c",
432
  "vasniprintf.c",
433
  "vasnprintf.c",
434
  "vasprintf.c",
435
  "vdiprintf.c",
436
  "vdprintf.c",
6621 serge 437
  "vfwscanf.c",
6536 serge 438
  "viprintf.c",
439
  "viscanf.c",
440
  "vprintf.c",
441
  "vscanf.c",
442
  "vsiprintf.c",
443
  "vsiscanf.c",
444
  "vsprintf.c",
445
  "vsniprintf.c",
446
  "vsnprintf.c",
447
  "vsscanf.c",
6621 serge 448
  "vswprintf.c",
449
  "vswscanf.c",
450
  "vwprintf.c",
451
  "vwscanf.c",
452
  "wbuf.c",
453
  "wprintf.c",
454
  "wscanf.c",
455
  "wsetup.c"
6537 serge 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
 
5132 clevermous 466
MATH_SRCS = {
467
  "e_acos.c", "e_acosh.c", "e_asin.c", "e_atan2.c", "e_atanh.c", "e_cosh.c", "e_exp.c", "e_fmod.c",
468
  "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",
469
  "e_remainder.c", "e_scalb.c", "e_sinh.c", "e_sqrt.c", "ef_acos.c", "ef_acosh.c", "ef_asin.c",
470
  "ef_atan2.c", "ef_atanh.c", "ef_cosh.c", "ef_exp.c", "ef_fmod.c", "ef_hypot.c", "ef_j0.c", "ef_j1.c",
471
  "ef_jn.c", "ef_log.c", "ef_log10.c", "ef_pow.c", "ef_rem_pio2.c", "ef_remainder.c", "ef_scalb.c",
472
  "ef_sinh.c", "ef_sqrt.c", "er_gamma.c", "er_lgamma.c", "erf_gamma.c", "erf_lgamma.c", "f_exp.c",
473
  "f_expf.c", "f_llrint.c", "f_llrintf.c", "f_llrintl.c", "f_lrint.c", "f_lrintf.c", "f_lrintl.c",
5141 serge 474
  "f_pow.c", "f_powf.c", "f_rint.c", "f_rintf.c", "f_rintl.c", "feclearexcept.c", "fetestexcept.c",
475
  "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",
476
  "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 477
  "s_fabs.c", "s_fdim.c", "s_finite.c", "s_floor.c", "s_fma.c", "s_fmax.c", "s_fmin.c", "s_fpclassify.c",
478
  "s_frexp.c", "s_ilogb.c", "s_infconst.c", "s_infinity.c", "s_isinf.c", "s_isinfd.c", "s_isnan.c",
479
  "s_isnand.c", "s_ldexp.c", "s_lib_ver.c", "s_llrint.c", "s_llround.c", "s_log1p.c", "s_log2.c",
480
  "s_logb.c", "s_lrint.c", "s_lround.c", "s_matherr.c", "s_modf.c", "s_nan.c", "s_nearbyint.c",
481
  "s_nextafter.c", "s_pow10.c", "s_remquo.c", "s_rint.c", "s_round.c", "s_scalbln.c", "s_scalbn.c",
482
  "s_signbit.c", "s_signif.c", "s_sin.c", "s_tan.c", "s_tanh.c", "s_trunc.c", "scalblnl.c", "scalbnl.c",
483
  "sf_asinh.c", "sf_atan.c", "sf_cbrt.c", "sf_ceil.c", "sf_copysign.c", "sf_cos.c", "sf_erf.c",
484
  "sf_exp10.c", "sf_expm1.c", "sf_fabs.c", "sf_fdim.c", "sf_finite.c", "sf_floor.c", "sf_fma.c",
485
  "sf_fmax.c", "sf_fmin.c", "sf_fpclassify.c", "sf_frexp.c", "sf_ilogb.c", "sf_infinity.c",
486
  "sf_isinf.c", "sf_isinff.c", "sf_isnan.c", "sf_isnanf.c", "sf_ldexp.c", "sf_llrint.c",
487
  "sf_llround.c", "sf_log1p.c", "sf_log2.c", "sf_logb.c", "sf_lrint.c", "sf_lround.c", "sf_modf.c",
488
  "sf_nan.c", "sf_nearbyint.c", "sf_nextafter.c", "sf_pow10.c", "sf_remquo.c", "sf_rint.c",
489
  "sf_round.c", "sf_scalbln.c", "sf_scalbn.c", "sf_signif.c", "sf_sin.c", "sf_tan.c", "sf_tanh.c",
490
  "sf_trunc.c", "w_acos.c", "w_acosh.c", "w_asin.c", "w_atan2.c", "w_atanh.c", "w_cosh.c", "w_drem.c",
491
  "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",
492
  "w_log.c", "w_log10.c", "w_pow.c", "w_remainder.c", "w_scalb.c", "w_sincos.c", "w_sinh.c", "w_sqrt.c",
493
  "w_tgamma.c", "wf_acos.c", "wf_acosh.c", "wf_asin.c", "wf_atan2.c", "wf_atanh.c", "wf_cosh.c",
494
  "wf_drem.c", "wf_exp.c", "wf_exp2.c", "wf_fmod.c", "wf_gamma.c", "wf_hypot.c", "wf_j0.c", "wf_j1.c",
495
  "wf_jn.c", "wf_lgamma.c", "wf_log.c", "wf_log10.c", "wf_pow.c", "wf_remainder.c", "wf_scalb.c",
496
  "wf_sincos.c", "wf_sinh.c", "wf_sqrt.c", "wf_tgamma.c", "wr_gamma.c", "wr_lgamma.c", "wrf_gamma.c",
497
  "wrf_lgamma.c",
498
  "f_atan2.S", "f_atan2f.S", "f_frexp.S", "f_frexpf.S", "f_ldexp.S", "f_ldexpf.S", "f_log.S",
499
  "f_log10.S", "f_log10f.S", "f_logf.S", "f_tan.S", "f_tanf.S"
500
}
501
 
502
function prepend(what, to)
503
  local result = {}
504
  for i,v in ipairs(to) do
505
    table.insert(result, what .. v)
506
  end
507
  return result
508
end
509
 
510
-- make shared
511
LIB_SRCS = LIBCDLL_SRCS
512
 
513
LIB_SRCS += CORE_SRCS
514
LIB_SRCS += prepend("stdio/", STDIO_SRCS)
515
LIB_SRCS += prepend("string/", STRING_SRCS)
516
LIB_SRCS += prepend("stdlib/", STDLIB_SRCS)
9954 turbocat 517
LIB_SRCS += prepend("posix/", POSIX_SRCS)
5132 clevermous 518
LIB_SRCS += prepend("math/", MATH_SRCS)
519
 
520
ALL_OBJS = {}
521
function compile(list)
522
  local result = {}
523
  for i,v in ipairs(list) do
524
    if ALL_OBJS[v] then
525
      -- already compiled
526
    elseif v:sub(-2) == ".c" or v:sub(-2) == ".S" then
8723 dunkaist 527
      ALL_OBJS[v] = tup.rule(v, "kos32-gcc ".. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " -o %o %f", v:sub(1, -3) .. ".o")
5132 clevermous 528
    elseif v:sub(-4) == ".asm" then
529
      ALL_OBJS[v] = tup.rule(v, "fasm %f %o", v:sub(1, -5) .. ".obj")
530
    end
531
    result += ALL_OBJS[v]
532
  end
533
  return result
534
end
535
 
536
LIB_OBJS = compile(LIB_SRCS)
8723 dunkaist 537
LIB_OBJS += tup.rule("crt/crtdll.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " -fno-delete-null-pointer-checks -c %f -o %o","crt/crtdll.o")
538
LIB_OBJS += tup.rule("pe/loader.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " -fno-delete-null-pointer-checks -c %f -o %o", "pe/loader.o")
539
LIB_OBJS += tup.rule("reent/renamer.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " -D_COMPILING_NEWLIB -c %f -o %o", "reent/renamer.o")
540
LIB_OBJS += tup.rule("time/strftime.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " -DMAKE_WCSFTIME " .. INCLUDES .. " -c %f -o %o", "time/wcsftime.o")
6536 serge 541
 
6628 serge 542
 
5132 clevermous 543
LIBDLL_OBJS = compile(LIBDLL_SRCS)
544
 
6536 serge 545
 
5132 clevermous 546
vfprintf_extra_objs = {
6536 serge 547
  {"", "stdio/vfprintf.o"},
5132 clevermous 548
  {"-DINTEGER_ONLY", "stdio/vfiprintf.o"},
549
  {"-DSTRING_ONLY", "stdio/svfprintf.o"},
550
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiprintf.o"},
551
}
552
for i,v in ipairs(vfprintf_extra_objs) do
8723 dunkaist 553
  LIB_OBJS += tup.rule("stdio/vfprintf.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " -fshort-enums " .. v[1] .. " -c %f -o %o", v[2])
5132 clevermous 554
end
555
 
6621 serge 556
vfwprintf_extra_objs = {
557
  {"", "stdio/vfwprintf.o"},
558
  {"-DINTEGER_ONLY", "stdio/vfiwprintf.o"},
559
  {"-DSTRING_ONLY", "stdio/svfwprintf.o"},
560
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiwprintf.o"},
561
}
562
for i,v in ipairs(vfwprintf_extra_objs) do
8723 dunkaist 563
  LIB_OBJS += tup.rule("stdio/vfwprintf.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " -fshort-enums " .. v[1] .. " -c %f -o %o", v[2])
6621 serge 564
end
565
 
566
 
5132 clevermous 567
vfscanf_extra_objs = {
568
  {"", "stdio/vfscanf.o"},
569
  {"-DINTEGER_ONLY", "stdio/vfiscanf.o"},
570
  {"-DSTRING_ONLY", "stdio/svscanf.o"},
571
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiscanf.o"},
572
}
573
for i,v in ipairs(vfscanf_extra_objs) do
8723 dunkaist 574
  LIB_OBJS += tup.rule("stdio/vfscanf.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " " .. v[1] .. " -c %f -o %o", v[2])
5132 clevermous 575
end
576
 
6621 serge 577
vfwscanf_extra_objs = {
578
  {"-DINTEGER_ONLY", "stdio/vfiwscanf.o"},
579
  {"-DSTRING_ONLY", "stdio/svfwscanf.o"},
580
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiwscanf.o"},
581
}
6625 serge 582
for i,v in ipairs(vfwscanf_extra_objs) do
8723 dunkaist 583
  LIB_OBJS += tup.rule("stdio/vfwscanf.c", "kos32-gcc " .. CFLAGS .. " " .. DEFINES .. " " .. INCLUDES .. " " .. v[1] .. " -c %f -o %o", v[2])
6621 serge 584
end
585
 
586
 
587
 
5132 clevermous 588
tup.rule(LIB_OBJS, "kos32-ld " .. LDFLAGS .. " " .. LIBPATH .. " -o %o %f -lgcc --version-script libc.ver " .. tup.getconfig("KPACK_CMD"),
589
  {SDK_DIR .. "/bin/libc.dll", extra_outputs = {SDK_DIR .. "/lib/libc.dll.a", SDK_DIR .. "/lib/"}})
590
tup.rule(LIBDLL_OBJS, "kos32-ar rcs %o %f", {SDK_DIR .. "/lib/libdll.a", extra_outputs = {SDK_DIR .. "/lib/"}})