Subversion Repositories Kolibri OS

Rev

Rev 6549 | 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