mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-09 12:32:33 +03:00

Fixed 'inreg' property placement for functions with reversed parameters. Made parameter reversal and inreg passing of first arg configurable in premake.lua
99 lines
2.6 KiB
Lua
99 lines
2.6 KiB
Lua
project.name = ldc
|
|
|
|
-- options
|
|
|
|
-- we always make vtables opaque, it simply kills performance...
|
|
OPAQUE_VTBLS = 1
|
|
|
|
-- use of boehm gc
|
|
USE_BOEHM_GC = 0
|
|
if OS ~= "windows" then
|
|
addoption("enable-boehm-gc", "Enable use of the Boehm GC (broken!)")
|
|
|
|
if options["enable-boehm-gc"] then
|
|
USE_BOEHM_GC = 1
|
|
end
|
|
end
|
|
|
|
-- are we on a Posix system?
|
|
POSIX = 1
|
|
if OS == "windows" then
|
|
POSIX = 0
|
|
end
|
|
|
|
|
|
-- guess the host machine description
|
|
-- also allow overriding it
|
|
|
|
addoption("target-override", "Override the default target machine");
|
|
|
|
TRIPLE = "";
|
|
if options["target-override"] then
|
|
TRIPLE = options["target-override"]
|
|
else
|
|
os.execute("sh config.guess > default-target-triple.tmp")
|
|
TRIPLE = io.open("default-target-triple.tmp"):read()
|
|
end
|
|
|
|
io.write("Default target: '"..TRIPLE.."'\n");
|
|
|
|
-- x86 ABI support
|
|
X86_REVERSE_PARAMS = 0 --disabled for now
|
|
X86_PASS_IN_EAX = 1
|
|
|
|
-- D version - don't change these !!!
|
|
DMDV1 = "1"
|
|
|
|
-- idgen
|
|
package = newpackage()
|
|
package.name = "idgen"
|
|
package.kind = "exe"
|
|
package.language = "c++"
|
|
package.files = { "dmd/idgen.c" }
|
|
package.buildoptions = { "-x c++" }
|
|
package.postbuildcommands = { "./idgen", "mv -f id.c id.h dmd" }
|
|
package.defines = { "DMDV1="..DMDV1 }
|
|
|
|
-- impcnvgen
|
|
package = newpackage()
|
|
package.name = "impcnvgen"
|
|
package.kind = "exe"
|
|
package.language = "c++"
|
|
package.files = { "dmd/impcnvgen.c" }
|
|
package.buildoptions = { "-x c++" }
|
|
package.postbuildcommands = { "./impcnvgen", "mv -f impcnvtab.c dmd" }
|
|
package.defines = { "DMDV1="..DMDV1 }
|
|
|
|
-- ldc
|
|
package = newpackage()
|
|
package.bindir = "bin"
|
|
package.name = "ldc"
|
|
package.kind = "exe"
|
|
package.language = "c++"
|
|
package.files = { matchfiles("dmd/*.c"), matchfiles("gen/*.cpp"), matchfiles("ir/*.cpp") }
|
|
package.excludes = { "dmd/idgen.c", "dmd/impcnvgen.c" }
|
|
package.buildoptions = { "-x c++", "`llvm-config --cxxflags`" }
|
|
package.linkoptions = {
|
|
-- long but it's faster than just 'all'
|
|
"`llvm-config --libs bitwriter linker ipo instrumentation backend`",
|
|
"`llvm-config --ldflags`",
|
|
}
|
|
package.defines = {
|
|
"IN_LLVM",
|
|
"_DH",
|
|
"OPAQUE_VTBLS="..OPAQUE_VTBLS,
|
|
"USE_BOEHM_GC="..USE_BOEHM_GC,
|
|
"DMDV1="..DMDV1,
|
|
"POSIX="..POSIX,
|
|
"DEFAULT_TARGET_TRIPLE=\\\""..TRIPLE.."\\\"",
|
|
"X86_REVERSE_PARAMS="..X86_REVERSE_PARAMS,
|
|
"X86_PASS_IN_EAX="..X86_PASS_IN_EAX,
|
|
}
|
|
package.config.Release.defines = { "LLVMD_NO_LOGGER" }
|
|
package.config.Debug.buildoptions = { "-g -O0" }
|
|
--package.targetprefix = "llvm"
|
|
package.includepaths = { ".", "dmd" }
|
|
--package.postbuildcommands = { "cd runtime; ./build.sh; cd .." }
|
|
if USE_BOEHM_GC == 1 then
|
|
package.links = { "gc" }
|
|
end
|