Skip to content

Commit 84bbb0b

Browse files
author
Zach DeVito
committed
fix build issues and include path on windows
1 parent 69eac1b commit 84bbb0b

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

src/tcompiler.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ static void InitializeJIT(TerraCompilationUnit * CU) {
328328
if(CU->ee) return; //already initialized
329329
Module * topeemodule = (CU->T->options.usemcjit) ? new Module("terra",*CU->TT->ctx) : CU->M;
330330
#ifdef _WIN32
331-
std::string MCJITTriple = CU->Triple;
331+
std::string MCJITTriple = CU->TT->Triple;
332332
MCJITTriple.append("-elf"); //on windows we need to use an elf container because coff is not supported yet
333333
topeemodule->setTargetTriple(MCJITTriple);
334334
#else
@@ -787,7 +787,7 @@ struct CCallingConv {
787787
#else
788788
Type * TypeForClass(size_t size, RegisterClass clz) {
789789
assert(size <= 8);
790-
return Type::getIntNTy(*C->ctx, size * 8);
790+
return Type::getIntNTy(*CU->TT->ctx, size * 8);
791791
}
792792
bool ValidAggregateSize(size_t sz) {
793793
bool isPow2 = sz && !(sz & (sz - 1));
@@ -847,7 +847,7 @@ struct CCallingConv {
847847
//to be translated to void. So if it is unit, force the return value to be void by overriding the normal
848848
//classification decision
849849
if(Ty->IsUnitType(&returntype)) {
850-
info->returntype = Argument(C_AGGREGATE_REG,info->returntype.type,StructType::get(*C->ctx));
850+
info->returntype = Argument(C_AGGREGATE_REG,info->returntype.type,StructType::get(*CU->TT->ctx));
851851
}
852852
#endif
853853

src/terralib.lua

+7-3
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,7 @@ function terra.newtarget(tbl)
544544
Features = Features or ""
545545
end
546546
return setmetatable({ llvm_target = cdatawithdestructor(terra.inittarget(Triple,CPU,Features,FloatABIHard),terra.freetarget),
547+
Triple = Triple,
547548
cnametostruct = { general = {}, tagged = {}} --map from llvm_name -> terra type used to make c structs unique per llvm_name
548549
},terra.target)
549550
end
@@ -3645,8 +3646,12 @@ end
36453646

36463647
function terra.includecstring(code,cargs,target)
36473648
local args = terra.newlist {"-O3","-Wno-deprecated","-resource-dir",clangresourcedirectory}
3648-
args:insert("-internal-isystem")
3649-
args:insert(clangresourcedirectory.."/include")
3649+
target = target or terra.nativetarget
3650+
3651+
if (target == terra.nativetarget and ffi.os == "Linux") or (target.Triple and target.Triple:match("linux")) then
3652+
args:insert("-internal-isystem")
3653+
args:insert(clangresourcedirectory.."/include")
3654+
end
36503655

36513656
if cargs then
36523657
args:insertall(cargs)
@@ -3655,7 +3660,6 @@ function terra.includecstring(code,cargs,target)
36553660
args:insert("-I")
36563661
args:insert(p)
36573662
end
3658-
target = target or terra.nativetarget
36593663
assert(terra.istarget(target),"expected a target or nil to specify the native target")
36603664
local result = terra.registercfile(target,code,args,headerprovider)
36613665
local general,tagged,errors,macros = result.general,result.tagged,result.errors,result.macros

0 commit comments

Comments
 (0)