umka/Tupfile.lua
2022-03-12 00:20:40 +04:00

83 lines
3.3 KiB
Lua

KOLIBRIOS = tup.getconfig("KOLIBRIOS")
EXE_SUFFIX = ""
WARNINGS = " -Wall -Wextra -Wnull-dereference -Wshadow -Wformat=2 -Wswitch -Wswitch-enum -Wpedantic"
-- -Wconversion -Wsign-conversion
NOWARNINGS = " -Wno-address-of-packed-member"
CC = tup.getconfig("CC")
if string.find(CC, "gcc") then
WARNINGS = WARNINGS .. " -Wduplicated-cond -Wduplicated-branches -Wrestrict -Wlogical-op -Wjump-misses-init"
elseif string.find(CC, "clang") then
NOWARNINGS = NOWARNINGS .. " -Wno-missing-prototype-for-cc"
else
print("[!] Your compiler is not supported")
end
CFLAGS = WARNINGS .. NOWARNINGS .. " -std=c11 -g -O0 -D_FILE_OFFSET_BITS=64 -DNDEBUG -masm=intel -D_POSIX_C_SOURCE=200809L -I$(HOST) -fno-pie"
CFLAGS_32 = CFLAGS .. " -m32"
LDFLAGS = " -no-pie"
LDFLAGS_32 = LDFLAGS .. " -m32"
HOST = tup.getconfig("TUP_PLATFORM")
if HOST == "win32" then
HOST = "windows"
EXE_SUFFIX = ".exe"
elseif HOST == "linux" then
HOST = "linux"
EXE_SUFFIX = ""
else
print("[!] Platform " .. HOST .. " is not supported")
end
FASM_INCLUDE = KOLIBRIOS .. "/kernel/trunk;" .. KOLIBRIOS .. "/programs/develop/libraries/libcrash/hash"
FASM_FLAGS = " -dUEFI=1 -dextended_primary_loader=1 -dUMKA=1 -dHOST=" .. HOST .. " -m 2000000"
if HOST == "linux" then
-- FASM_INCLUDE=$(KOLIBRIOS)/kernel/trunk;$(KOLIBRIOS)/programs/develop/libraries/libcrash/hash
FASM = 'INCLUDE="$(FASM_INCLUDE)" fasm ' .. FASM_FLAGS
elseif HOST == "windows" then
-- FASM_INCLUDE=$(KOLIBRIOS)\kernel\trunk;$(KOLIBRIOS)\programs\develop\libraries\libcrash\hash
FASM = 'set INCLUDE=' .. FASM_INCLUDE .. '&&fasm ' .. FASM_FLAGS
else
print("[!] Your OS is not supported")
end
tup.rule("umka.asm", FASM .. " %f umka.o -s umka.fas", {"umka.o", "umka.fas"})
tup.rule(HOST .. "/pci.c", CC .. CFLAGS_32 .. " -c %f", "%B.o")
tup.rule(HOST .. "/thread.c", CC .. CFLAGS_32 .. " -c %f", "%B.o")
tup.rule("getopt.c", CC .. CFLAGS_32 .. " -c %f", "%B.o")
tup.rule("shell.c", CC .. CFLAGS_32 .. " -c %f", "%B.o")
tup.rule("util.c", CC .. CFLAGS_32 .. " -c %f", "%B.o")
tup.rule("vdisk.c", CC .. CFLAGS_32 .. " -c %f", "%B.o")
tup.rule("vnet.c", CC .. CFLAGS_32 .. " -c %f", "%B.o")
tup.rule("lodepng.c", CC .. CFLAGS_32 .. " -c %f", "%B.o")
tup.rule("trace.c", CC .. CFLAGS_32 .. " -c %f", "%B.o")
tup.rule("trace_lbr.c", CC .. CFLAGS_32 .. " -c %f", "%B.o")
tup.rule("umka_shell.c", CC .. CFLAGS_32 .. " -c %f", "%B.o")
tup.rule("umka_fuse.c", CC .. CFLAGS_32 .. " `pkg-config fuse3 --cflags` -c %f", "%B.o")
tup.rule("umka_os.c", CC .. CFLAGS_32 .. " -c %f", "%B.o")
tup.rule("umka_ping.c", CC .. CFLAGS_32 .. " -D_DEFAULT_SOURCE -c %f", "%B.o")
tup.rule({"umka_shell.o", "shell.o", "pci.o", "thread.o", "vnet.o", "vdisk.o",
"trace.o", "trace_lbr.o", "umka.o", "lodepng.o", "util.o",
extra_inputs = {"umka.ld"}
},
CC .. LDFLAGS_32 .. " %f -o %o -T umka.ld",
"umka_shell" .. EXE_SUFFIX)
tup.rule({"umka_fuse.o", "shell.o", "pci.o", "thread.o", "vnet.o", "vdisk.o",
"trace.o", "trace_lbr.o", "umka.o", "lodepng.o", "util.o"},
CC .. LDFLAGS_32 .. " %f -o %o `pkg-config fuse3 --libs`",
"umka_fuse" .. EXE_SUFFIX)
tup.rule({"umka_os.o", "umka_ping.o", "shell.o", "pci.o", "thread.o", "vnet.o",
"vdisk.o", "trace.o", "trace_lbr.o", "umka.o", "lodepng.o", "util.o"},
CC .. LDFLAGS_32 .. " %f -o %o",
"umka_os" .. EXE_SUFFIX)