Subversion Repositories Kolibri OS

Rev

Rev 6627 | Rev 6714 | 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"
6540 serge 12
DEFINES = "-U__WIN32__ -U_Win32 -U_WIN32 -U__MINGW32__ -U_MSC_VER-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"
6623 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",
6623 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",
35
  "crt/thread.S",
36
  "crt/setjmp.S",
37
  "crt/cpu_features.c",
38
  "crt/tls.c",
39
  "ctype/ctype_.c",
40
  "ctype/isascii.c",
41
  "ctype/isblank.c",
42
  "ctype/isalnum.c",
43
  "ctype/isalpha.c",
44
  "ctype/iscntrl.c",
45
  "ctype/isdigit.c",
46
  "ctype/islower.c",
47
  "ctype/isupper.c",
48
  "ctype/isprint.c",
49
  "ctype/ispunct.c",
50
  "ctype/isspace.c",
51
  "ctype/iswctype.c",
52
  "ctype/iswalnum.c",
53
  "ctype/iswalpha.c",
54
  "ctype/iswblank.c",
55
  "ctype/iswcntrl.c",
56
  "ctype/iswdigit.c",
57
  "ctype/iswgraph.c",
58
  "ctype/iswlower.c",
59
  "ctype/iswprint.c",
60
  "ctype/iswpunct.c",
61
  "ctype/iswspace.c",
62
  "ctype/iswupper.c",
63
  "ctype/iswxdigit.c",
64
  "ctype/isxdigit.c",
6627 serge 65
  "ctype/jp2uc.c",
6621 serge 66
  "ctype/toascii.c",
67
  "ctype/tolower.c",
68
  "ctype/toupper.c",
69
  "ctype/towctrans.c",
70
  "ctype/towlower.c",
71
  "ctype/towupper.c",
72
  "ctype/wctrans.c",
73
  "ctype/wctype.c",
5132 clevermous 74
  "errno/errno.c",
6621 serge 75
  "locale/locale.c",
76
  "locale/lctype.c",
77
  "locale/ldpart.c",
78
  "reent/closer.c",
79
  "reent/fstatr.c",
80
  "reent/getreent.c",
81
  "reent/gettimeofdayr.c",
82
  "reent/impure.c",
83
  "reent/init_reent.c",
84
  "reent/isattyr.c",
85
  "reent/linkr.c",
86
  "reent/lseekr.c",
87
  "reent/mutex.c",
88
  "reent/openr.c",
89
  "reent/readr.c",
90
  "reent/statr.c",
91
  "reent/timesr.c",
92
  "reent/unlinkr.c",
5216 serge 93
  "reent/writer.c",
6621 serge 94
  "search/qsort.c",
95
  "search/bsearch.c",
5132 clevermous 96
  "signal/signal.c",
6621 serge 97
  "sys/access.c",
98
  "sys/clock_gettime.c",
99
  "sys/close.c",
100
  "sys/conio.c",
101
  "sys/create.c",
102
  "sys/errno.c",
103
  "sys/finfo.c",
104
  "sys/fsize.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",
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",
167
  "itoa.c",
6621 serge 168
  "ldiv.c",
6537 serge 169
  "labs.c",
6621 serge 170
  "ldtoa.c",
171
  "malloc.c",
172
  "mallocr.c",
173
  "mblen.c",
174
  "mblen_r.c",
175
  "mbrlen.c",
176
  "mbrtowc.c",
177
  "mbsinit.c",
178
  "mbsnrtowcs.c",
179
  "mbsrtowcs.c",
180
  "mbstowcs.c",
181
  "mbstowcs_r.c",
6536 serge 182
  "mbtowc.c",
183
  "mbtowc_r.c",
184
  "mlock.c",
6621 serge 185
  "mprec.c",
6536 serge 186
  "rand.c",
187
  "rand_r.c",
188
  "rand48.c",
6621 serge 189
  "random.c",
6536 serge 190
  "realloc.c",
191
  "seed48.c",
192
  "srand48.c",
193
  "strtod.c",
194
  "strtodg.c",
195
  "strtol.c",
196
  "strtold.c",
197
  "strtoll.c",
198
  "strtoll_r.c",
199
  "strtorx.c",
200
  "strtoul.c",
201
  "strtoull.c",
202
  "strtoull_r.c",
203
  "system.c",
204
  "utoa.c",
205
  "wcrtomb.c",
6621 serge 206
  "wcsnrtombs.c",
207
  "wcsrtombs.c",
208
  "wcstod.c",
209
  "wcstol.c",
210
  "wcstold.c",
211
  "wcstoll.c",
212
  "wcstoll_r.c",
213
  "wcstombs.c",
214
  "wcstombs_r.c",
215
  "wcstoul.c",
216
  "wcstoull.c",
217
  "wcstoull_r.c",
218
  "wctob.c",
219
  "wctomb.c",
6099 serge 220
  "wctomb_r.c"
5132 clevermous 221
}
222
STRING_SRCS = {
6557 serge 223
  "bcmp.c",
224
  "bcopy.c",
225
  "bzero.c",
226
  "explicit_bzero.c",
227
  "gnu_basename.c",
228
  "index.c",
229
  "memccpy.c",
230
  "memchr.c",
231
  "memcmp.c",
6536 serge 232
  "memcpy.c",
6557 serge 233
  "memmem.c",
6536 serge 234
  "memmove.c",
6557 serge 235
  "mempcpy.c",
236
  "memrchr.c",
6536 serge 237
  "memset.c",
6557 serge 238
  "rawmemchr.c",
239
  "rindex.c",
6536 serge 240
  "stpcpy.c",
241
  "stpncpy.c",
6557 serge 242
  "strcasecmp.c",
243
  "strcasestr.c",
6536 serge 244
  "strcat.c",
245
  "strchr.c",
6557 serge 246
  "strchrnul.c",
6536 serge 247
  "strcmp.c",
248
  "strcoll.c",
6557 serge 249
  "strcpy.c",
250
  "strcspn.c",
251
  "strdup.c",
252
  "strdup_r.c",
253
  "strerror.c",
254
  "strerror_r.c",
255
  "strlcat.c",
256
  "strlcpy.c",
257
  "strlen.c",
258
  "strlwr.c",
6536 serge 259
  "strncasecmp.c",
260
  "strncat.c",
261
  "strncmp.c",
262
  "strncpy.c",
263
  "strndup.c",
264
  "strndup_r.c",
265
  "strnlen.c",
6557 serge 266
  "strpbrk.c",
6536 serge 267
  "strrchr.c",
268
  "strsep.c",
6557 serge 269
  "strspn.c",
6536 serge 270
  "strstr.c",
271
  "strtok.c",
272
  "strtok_r.c",
273
  "strupr.c",
274
  "strxfrm.c",
6557 serge 275
  "swab.c",
276
  "u_strerr.c",
277
  "wcpcpy.c",
278
  "wcpncpy.c",
279
  "wcscasecmp.c",
280
  "wcscat.c",
281
  "wcschr.c",
282
  "wcscmp.c",
283
  "wcscoll.c",
284
  "wcscpy.c",
285
  "wcscspn.c",
286
  "wcsdup.c",
287
  "wcslcat.c",
288
  "wcslcpy.c",
289
  "wcslen.c",
290
  "wcsncasecmp.c",
291
  "wcsncat.c",
292
  "wcsncmp.c",
293
  "wcsncpy.c",
294
  "wcsnlen.c",
295
  "wcspbrk.c",
296
  "wcsrchr.c",
297
  "wcsspn.c",
298
  "wcsstr.c",
299
  "wcstok.c",
300
  "wcswidth.c",
301
  "wcsxfrm.c",
302
  "wcwidth.c",
303
  "wmemchr.c",
304
  "wmemcmp.c",
305
  "wmemcpy.c",
306
  "wmemmove.c",
307
  "wmemset.c"
5132 clevermous 308
}
309
 
310
STDIO_SRCS = {
6536 serge 311
  "asiprintf.c",
312
  "asniprintf.c",
313
  "asnprintf.c",
314
  "asprintf.c",
315
  "clearerr.c",
6621 serge 316
  "clearerr_u.c",
6536 serge 317
  "diprintf.c",
318
  "dprintf.c",
319
  "fclose.c",
320
  "fcloseall.c",
321
  "fdopen.c",
322
  "feof.c",
323
  "feof_u.c",
324
  "ferror.c",
325
  "ferror_u.c",
326
  "fflush.c",
327
  "fflush_u.c",
328
  "fgetc.c",
329
  "fgetc_u.c",
330
  "fgetpos.c",
331
  "fgets.c",
332
  "fgets_u.c",
6621 serge 333
  "fgetwc.c",
334
  "fgetwc_u.c",
335
  "fgetws.c",
336
  "fgetws_u.c",
6536 serge 337
  "fileno.c",
338
  "fileno_u.c",
339
  "findfp.c",
340
  "fiprintf.c",
341
  "fiscanf.c",
342
  "flags.c",
343
  "fmemopen.c",
344
  "fopen.c",
345
  "fopencookie.c",
346
  "fprintf.c",
347
  "fpurge.c",
348
  "fputc.c",
349
  "fputc_u.c",
350
  "fputs.c",
351
  "fputs_u.c",
352
  "fputwc.c",
6621 serge 353
  "fputwc_u.c",
354
  "fputws.c",
6622 serge 355
  "fputws_u.c",
6536 serge 356
  "fsetpos.c",
6621 serge 357
  "funopen.c",
6536 serge 358
  "fread.c",
359
  "fread_u.c",
360
  "freopen.c",
361
  "fscanf.c",
362
  "fseek.c",
363
  "fseeko.c",
364
  "fsetlocking.c",
365
  "ftell.c",
366
  "ftello.c",
367
  "fvwrite.c",
368
  "fwalk.c",
369
  "fwide.c",
6621 serge 370
  "fwprintf.c",
6536 serge 371
  "fwrite.c",
372
  "fwrite_u.c",
6621 serge 373
  "fwscanf.c",
6536 serge 374
  "getc.c",
375
  "getc_u.c",
376
  "getchar.c",
377
  "getchar_u.c",
378
  "getdelim.c",
379
  "getline.c",
380
  "gets.c",
6621 serge 381
  "getw.c",
382
  "getwc.c",
383
  "getwc_u.c",
384
  "getwchar.c",
385
  "getwchar_u.c",
6536 serge 386
  "iprintf.c",
387
  "iscanf.c",
388
  "makebuf.c",
389
  "mktemp.c",
390
  "open_memstream.c",
391
  "perror.c",
392
  "printf.c",
393
  "putc.c",
394
  "putc_u.c",
395
  "putchar.c",
396
  "putchar_u.c",
397
  "puts.c",
6621 serge 398
  "putw.c",
399
  "putwc.c",
400
  "putwc_u.c",
401
  "putwchar.c",
402
  "putwchar_u.c",
6536 serge 403
  "refill.c",
404
  "remove.c",
405
  "rename.c",
406
  "rewind.c",
407
  "rget.c",
408
  "scanf.c",
409
  "sccl.c",
410
  "setbuf.c",
411
  "setbuffer.c",
412
  "setlinebuf.c",
413
  "setvbuf.c",
414
  "siprintf.c",
415
  "siscanf.c",
416
  "sniprintf.c",
417
  "snprintf.c",
418
  "sprintf.c",
419
  "sscanf.c",
420
  "stdio.c",
421
  "stdio_ext.c",
6621 serge 422
  "swprintf.c",
423
  "swscanf.c",
6536 serge 424
  "tmpfile.c",
425
  "tmpnam.c",
426
  "ungetc.c",
6621 serge 427
  "ungetwc.c",
6536 serge 428
  "vasiprintf.c",
429
  "vasniprintf.c",
430
  "vasnprintf.c",
431
  "vasprintf.c",
432
  "vdiprintf.c",
433
  "vdprintf.c",
6621 serge 434
  "vfwscanf.c",
6536 serge 435
  "viprintf.c",
436
  "viscanf.c",
437
  "vprintf.c",
438
  "vscanf.c",
439
  "vsiprintf.c",
440
  "vsiscanf.c",
441
  "vsprintf.c",
442
  "vsniprintf.c",
443
  "vsnprintf.c",
444
  "vsscanf.c",
6621 serge 445
  "vswprintf.c",
446
  "vswscanf.c",
447
  "vwprintf.c",
448
  "vwscanf.c",
449
  "wbuf.c",
450
  "wprintf.c",
451
  "wscanf.c",
452
  "wsetup.c"
6537 serge 453
}
6099 serge 454
 
5132 clevermous 455
 
456
MATH_SRCS = {
457
  "e_acos.c", "e_acosh.c", "e_asin.c", "e_atan2.c", "e_atanh.c", "e_cosh.c", "e_exp.c", "e_fmod.c",
458
  "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",
459
  "e_remainder.c", "e_scalb.c", "e_sinh.c", "e_sqrt.c", "ef_acos.c", "ef_acosh.c", "ef_asin.c",
460
  "ef_atan2.c", "ef_atanh.c", "ef_cosh.c", "ef_exp.c", "ef_fmod.c", "ef_hypot.c", "ef_j0.c", "ef_j1.c",
461
  "ef_jn.c", "ef_log.c", "ef_log10.c", "ef_pow.c", "ef_rem_pio2.c", "ef_remainder.c", "ef_scalb.c",
462
  "ef_sinh.c", "ef_sqrt.c", "er_gamma.c", "er_lgamma.c", "erf_gamma.c", "erf_lgamma.c", "f_exp.c",
463
  "f_expf.c", "f_llrint.c", "f_llrintf.c", "f_llrintl.c", "f_lrint.c", "f_lrintf.c", "f_lrintl.c",
5141 serge 464
  "f_pow.c", "f_powf.c", "f_rint.c", "f_rintf.c", "f_rintl.c", "feclearexcept.c", "fetestexcept.c",
465
  "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",
466
  "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 467
  "s_fabs.c", "s_fdim.c", "s_finite.c", "s_floor.c", "s_fma.c", "s_fmax.c", "s_fmin.c", "s_fpclassify.c",
468
  "s_frexp.c", "s_ilogb.c", "s_infconst.c", "s_infinity.c", "s_isinf.c", "s_isinfd.c", "s_isnan.c",
469
  "s_isnand.c", "s_ldexp.c", "s_lib_ver.c", "s_llrint.c", "s_llround.c", "s_log1p.c", "s_log2.c",
470
  "s_logb.c", "s_lrint.c", "s_lround.c", "s_matherr.c", "s_modf.c", "s_nan.c", "s_nearbyint.c",
471
  "s_nextafter.c", "s_pow10.c", "s_remquo.c", "s_rint.c", "s_round.c", "s_scalbln.c", "s_scalbn.c",
472
  "s_signbit.c", "s_signif.c", "s_sin.c", "s_tan.c", "s_tanh.c", "s_trunc.c", "scalblnl.c", "scalbnl.c",
473
  "sf_asinh.c", "sf_atan.c", "sf_cbrt.c", "sf_ceil.c", "sf_copysign.c", "sf_cos.c", "sf_erf.c",
474
  "sf_exp10.c", "sf_expm1.c", "sf_fabs.c", "sf_fdim.c", "sf_finite.c", "sf_floor.c", "sf_fma.c",
475
  "sf_fmax.c", "sf_fmin.c", "sf_fpclassify.c", "sf_frexp.c", "sf_ilogb.c", "sf_infinity.c",
476
  "sf_isinf.c", "sf_isinff.c", "sf_isnan.c", "sf_isnanf.c", "sf_ldexp.c", "sf_llrint.c",
477
  "sf_llround.c", "sf_log1p.c", "sf_log2.c", "sf_logb.c", "sf_lrint.c", "sf_lround.c", "sf_modf.c",
478
  "sf_nan.c", "sf_nearbyint.c", "sf_nextafter.c", "sf_pow10.c", "sf_remquo.c", "sf_rint.c",
479
  "sf_round.c", "sf_scalbln.c", "sf_scalbn.c", "sf_signif.c", "sf_sin.c", "sf_tan.c", "sf_tanh.c",
480
  "sf_trunc.c", "w_acos.c", "w_acosh.c", "w_asin.c", "w_atan2.c", "w_atanh.c", "w_cosh.c", "w_drem.c",
481
  "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",
482
  "w_log.c", "w_log10.c", "w_pow.c", "w_remainder.c", "w_scalb.c", "w_sincos.c", "w_sinh.c", "w_sqrt.c",
483
  "w_tgamma.c", "wf_acos.c", "wf_acosh.c", "wf_asin.c", "wf_atan2.c", "wf_atanh.c", "wf_cosh.c",
484
  "wf_drem.c", "wf_exp.c", "wf_exp2.c", "wf_fmod.c", "wf_gamma.c", "wf_hypot.c", "wf_j0.c", "wf_j1.c",
485
  "wf_jn.c", "wf_lgamma.c", "wf_log.c", "wf_log10.c", "wf_pow.c", "wf_remainder.c", "wf_scalb.c",
486
  "wf_sincos.c", "wf_sinh.c", "wf_sqrt.c", "wf_tgamma.c", "wr_gamma.c", "wr_lgamma.c", "wrf_gamma.c",
487
  "wrf_lgamma.c",
488
  "f_atan2.S", "f_atan2f.S", "f_frexp.S", "f_frexpf.S", "f_ldexp.S", "f_ldexpf.S", "f_log.S",
489
  "f_log10.S", "f_log10f.S", "f_logf.S", "f_tan.S", "f_tanf.S"
490
}
491
 
492
function prepend(what, to)
493
  local result = {}
494
  for i,v in ipairs(to) do
495
    table.insert(result, what .. v)
496
  end
497
  return result
498
end
499
 
500
-- make shared
501
LIB_SRCS = LIBCDLL_SRCS
502
 
503
LIB_SRCS += CORE_SRCS
504
LIB_SRCS += prepend("stdio/", STDIO_SRCS)
505
LIB_SRCS += prepend("string/", STRING_SRCS)
506
LIB_SRCS += prepend("stdlib/", STDLIB_SRCS)
507
LIB_SRCS += prepend("math/", MATH_SRCS)
508
 
509
ALL_OBJS = {}
510
function compile(list)
511
  local result = {}
512
  for i,v in ipairs(list) do
513
    if ALL_OBJS[v] then
514
      -- already compiled
515
    elseif v:sub(-2) == ".c" or v:sub(-2) == ".S" then
516
      ALL_OBJS[v] = tup.rule(v, "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -o %o %f", v:sub(1, -3) .. ".o")
517
    elseif v:sub(-4) == ".asm" then
518
      ALL_OBJS[v] = tup.rule(v, "fasm %f %o", v:sub(1, -5) .. ".obj")
519
    end
520
    result += ALL_OBJS[v]
521
  end
522
  return result
523
end
524
 
525
LIB_OBJS = compile(LIB_SRCS)
6537 serge 526
LIB_OBJS += tup.rule("crt/crtdll.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -fno-delete-null-pointer-checks -c %f -o %o","crt/crtdll.o")
527
LIB_OBJS += tup.rule("pe/loader.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -fno-delete-null-pointer-checks -c %f -o %o", "pe/loader.o")
528
LIB_OBJS += tup.rule("reent/renamer.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -D_COMPILING_NEWLIB -c %f -o %o", "reent/renamer.o")
6628 serge 529
LIB_OBJS += tup.rule("time/strftime.c", "kos32-gcc $(CFLAGS) $(DEFINES) -DMAKE_WCSFTIME $(INCLUDES) -c %f -o %o", "time/wcsftime.o")
6536 serge 530
 
6628 serge 531
 
5132 clevermous 532
LIBDLL_OBJS = compile(LIBDLL_SRCS)
533
 
6536 serge 534
 
5132 clevermous 535
vfprintf_extra_objs = {
6536 serge 536
  {"", "stdio/vfprintf.o"},
5132 clevermous 537
  {"-DINTEGER_ONLY", "stdio/vfiprintf.o"},
538
  {"-DSTRING_ONLY", "stdio/svfprintf.o"},
539
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiprintf.o"},
540
}
541
for i,v in ipairs(vfprintf_extra_objs) do
542
  LIB_OBJS += tup.rule("stdio/vfprintf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -fshort-enums " .. v[1] .. " -c %f -o %o", v[2])
543
end
544
 
6621 serge 545
vfwprintf_extra_objs = {
546
  {"", "stdio/vfwprintf.o"},
547
  {"-DINTEGER_ONLY", "stdio/vfiwprintf.o"},
548
  {"-DSTRING_ONLY", "stdio/svfwprintf.o"},
549
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiwprintf.o"},
550
}
551
for i,v in ipairs(vfwprintf_extra_objs) do
552
  LIB_OBJS += tup.rule("stdio/vfwprintf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) -fshort-enums " .. v[1] .. " -c %f -o %o", v[2])
553
end
554
 
555
 
5132 clevermous 556
vfscanf_extra_objs = {
557
  {"", "stdio/vfscanf.o"},
558
  {"-DINTEGER_ONLY", "stdio/vfiscanf.o"},
559
  {"-DSTRING_ONLY", "stdio/svscanf.o"},
560
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiscanf.o"},
561
}
562
for i,v in ipairs(vfscanf_extra_objs) do
6536 serge 563
  LIB_OBJS += tup.rule("stdio/vfscanf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) " .. v[1] .. " -c %f -o %o", v[2])
5132 clevermous 564
end
565
 
6621 serge 566
vfwscanf_extra_objs = {
567
  {"-DINTEGER_ONLY", "stdio/vfiwscanf.o"},
568
  {"-DSTRING_ONLY", "stdio/svfwscanf.o"},
569
  {"-DINTEGER_ONLY -DSTRING_ONLY", "stdio/svfiwscanf.o"},
570
}
6625 serge 571
for i,v in ipairs(vfwscanf_extra_objs) do
6621 serge 572
  LIB_OBJS += tup.rule("stdio/vfwscanf.c", "kos32-gcc $(CFLAGS) $(DEFINES) $(INCLUDES) " .. v[1] .. " -c %f -o %o", v[2])
573
end
574
 
575
 
576
 
5132 clevermous 577
tup.rule(LIB_OBJS, "kos32-ld " .. LDFLAGS .. " " .. LIBPATH .. " -o %o %f -lgcc --version-script libc.ver " .. tup.getconfig("KPACK_CMD"),
578
  {SDK_DIR .. "/bin/libc.dll", extra_outputs = {SDK_DIR .. "/lib/libc.dll.a", SDK_DIR .. "/lib/"}})
579
tup.rule(LIBDLL_OBJS, "kos32-ar rcs %o %f", {SDK_DIR .. "/lib/libdll.a", extra_outputs = {SDK_DIR .. "/lib/"}})