Subversion Repositories Kolibri OS

Rev

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