Rev 6549 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6549 | Rev 9704 | ||
---|---|---|---|
1 | CFLAGS_GENERIC = "-fno-ident -fomit-frame-pointer -fno-stack-check -fno-stack-protector -mno-stack-arg-probe -fno-exceptions -fno-asynchronous-unwind-tables -ffast-math -mno-ms-bitfields -march=pentium-mmx" |
1 | CFLAGS_GENERIC = "-fno-ident -fomit-frame-pointer -fno-stack-check -fno-stack-protector -mno-stack-arg-probe -fno-exceptions -fno-asynchronous-unwind-tables -ffast-math -mno-ms-bitfields -march=pentium-mmx" |
2 | CFLAGS_OPTIMIZE_SIZE = "-Os -mpreferred-stack-boundary=2 " .. CFLAGS_GENERIC |
2 | CFLAGS_OPTIMIZE_SIZE = "-Os -mpreferred-stack-boundary=2 " .. CFLAGS_GENERIC |
3 | CFLAGS_OPTIMIZE_SPEED = "-O2 -mpush-args -mno-accumulate-outgoing-args " .. CFLAGS_GENERIC |
3 | CFLAGS_OPTIMIZE_SPEED = "-O2 -mpush-args -mno-accumulate-outgoing-args " .. CFLAGS_GENERIC |
4 | -- The following could in specific cases be marginally faster CFLAGS_OPTIMIZE_SPEED, |
4 | -- The following could in specific cases be marginally faster CFLAGS_OPTIMIZE_SPEED, |
5 | -- and in all cases gives a notable overhead in size. |
5 | -- and in all cases gives a notable overhead in size. |
6 | CFLAGS_OPTIMIZE_SPEED_INSANE = "-O2 " .. CFLAGS_GENERIC |
6 | CFLAGS_OPTIMIZE_SPEED_INSANE = "-O2 " .. CFLAGS_GENERIC |
7 | -- Default is optimizing by size. Override on per-project or per-file basis. |
7 | -- Default is optimizing by size. Override on per-project or per-file basis. |
- | 8 | ||
- | 9 | DEFINES =" -D_KOLIBRI_ -D_KOLIBRI -DKOLIBRI -D_KOS_ -D_KOS -DKOS -U_Win32 -UWIN32 -U_WIN32 -U__MINGW32__ -U__WIN32__ " |
|
8 | CFLAGS = CFLAGS_OPTIMIZE_SIZE |
10 | CFLAGS = CFLAGS_OPTIMIZE_SIZE |
9 | 11 | ||
10 | CFLAGS_c = "" -- extra flags for *.c |
12 | CFLAGS_c = "" -- extra flags for *.c |
11 | CFLAGS_cpp = " -fno-rtti" -- extra flags for *.cpp |
13 | CFLAGS_cpp = " -fno-rtti" -- extra flags for *.cpp |
12 | LDFLAGS = "-static -nostdlib -n --file-alignment=16 --section-alignment=16" |
14 | LDFLAGS = "-static -nostdlib -n --file-alignment=16 --section-alignment=16" |
13 | INCLUDES = "" |
15 | INCLUDES = "" |
14 | LIBS = "" |
16 | LIBS = "" |
15 | LIBDEPS = {} |
17 | LIBDEPS = {} |
16 | OBJS = {} |
18 | OBJS = {} |
17 | 19 | ||
18 | function compile_gcc(input, output) |
20 | function compile_gcc(input, output) |
19 | if not output then output = '%B.o' end |
21 | if not output then output = '%B.o' end |
20 | tup.append_table(OBJS, |
22 | tup.append_table(OBJS, |
21 | tup.foreach_rule(input, "kos32-gcc -c " .. CFLAGS .. "$(CFLAGS_%e) " .. INCLUDES .. " -o %o %f", output) |
23 | tup.foreach_rule(input, "kos32-gcc -c " .. CFLAGS .. DEFINES .. "$(CFLAGS_%e) " .. INCLUDES .. " -o %o %f", output) |
22 | ) |
24 | ) |
23 | end |
25 | end |
24 | 26 | ||
25 | function link_gcc(input, output) |
27 | function link_gcc(input, output) |
26 | if not output then input,output = OBJS,input end |
28 | if not output then input,output = OBJS,input end |
27 | if STARTUP then |
29 | if STARTUP then |
28 | table.insert(LIBDEPS, STARTUP) |
30 | table.insert(LIBDEPS, STARTUP) |
29 | LDFLAGS = LDFLAGS .. " " .. STARTUP |
31 | LDFLAGS = LDFLAGS .. " " .. STARTUP |
30 | end |
32 | end |
31 | if tup.getconfig("HELPERDIR") == "" and #LIBDEPS then |
33 | if tup.getconfig("HELPERDIR") == "" and #LIBDEPS then |
32 | if type(input) == "string" then input = {input} end |
34 | if type(input) == "string" then input = {input} end |
33 | if not input.extra_inputs then input.extra_inputs = {} end |
35 | if not input.extra_inputs then input.extra_inputs = {} end |
34 | tup.append_table(input.extra_inputs, LIBDEPS) |
36 | tup.append_table(input.extra_inputs, LIBDEPS) |
35 | end |
37 | end |
36 | 38 | ||
37 | if type(output) == "string" then output = {output} end |
39 | if type(output) == "string" then output = {output} end |
38 | if not output.extra_outputs then output.extra_outputs = {} end |
40 | if not output.extra_outputs then output.extra_outputs = {} end |
39 | table.insert(output.extra_outputs, output[1] .. ".map") |
41 | table.insert(output.extra_outputs, output[1] .. ".map") |
40 | 42 | ||
41 | tup.rule(input, |
43 | tup.rule(input, |
42 | "kos32-ld " .. LDFLAGS .. " -o %o %f -Map %o.map " .. LIBS .. " && kos32-objcopy %o -O binary " .. tup.getconfig("KPACK_CMD"), |
44 | "kos32-ld " .. LDFLAGS .. " -o %o %f -Map %o.map " .. LIBS .. " && kos32-objcopy %o -O binary " .. tup.getconfig("KPACK_CMD"), |
43 | output) |
45 | output) |
44 | end |
46 | end |