Subversion Repositories Kolibri OS

Rev

Rev 6626 | Rev 6628 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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