Skip to content

Commit 8dc8020

Browse files
committed
Add some basic .asm support
1 parent 00913ef commit 8dc8020

File tree

4 files changed

+18
-3
lines changed

4 files changed

+18
-3
lines changed

toolchain/msvc-toolchain.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@
108108
<flag value="-wd4996"/>
109109
<outflag value="-Fo"/>
110110
<ext value=".obj"/>
111+
<asmExe value="ml64.exe" if="HXCPP_M64" />
112+
<asmExe value="ml.exe" unless="HXCPP_M64" />
111113
<objdir value="${MSVC_OBJ_DIR}" />
112114

113115
<rcexe name="rc.exe" />

tools/hxcpp/BuildTool.hx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -900,13 +900,15 @@ class BuildTool
900900
case "objcflag" : c.mOBJCFlags.push(substitute(el.att.value));
901901
case "rcflag" : c.mRcFlags.push( substitute((el.att.value)) );
902902
case "mmflag" : c.mMMFlags.push(substitute(el.att.value));
903+
case "asmflag" : c.mAsmFlags.push(substitute(el.att.value));
903904
case "pchflag" : c.mPCHFlags.push(substitute(el.att.value));
904905
case "objdir" : c.mObjDir = substitute((el.att.value));
905906
case "outflag" : c.mOutFlag = substitute((el.att.value));
906907
case "exe" : c.mExe = substitute((el.att.name));
907908
case "rcexe" : c.mRcExe = substitute((el.att.name));
908909
case "rcext" : c.mRcExt = substitute((el.att.value));
909910
case "ext" : c.mExt = substitute((el.att.value));
911+
case "asmExe" : c.mAsmExe = substitute((el.att.value));
910912
case "pch" : c.setPCH( substitute((el.att.value)) );
911913
case "getversion" : c.mGetCompilerVersion = substitute((el.att.value));
912914
case "section" : createCompiler(el,c);

tools/hxcpp/Compiler.hx

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,10 @@ class Compiler
3535
public var mCPPFlags:Array<String>;
3636
public var mOBJCFlags:Array<String>;
3737
public var mPCHFlags:Array<String>;
38+
public var mAsmFlags:Array<String>;
3839
public var mAddGCCIdentity:Bool;
3940
public var mExe:String;
41+
public var mAsmExe:String;
4042
public var mOutFlag:String;
4143
public var mObjDir:String;
4244
public var mRelObjDir:String;
@@ -72,12 +74,14 @@ class Compiler
7274
mOBJCFlags = [];
7375
mMMFlags = [];
7476
mPCHFlags = [];
77+
mAsmFlags = [];
7578
mAddGCCIdentity = false;
7679
mCompilerVersion = null;
7780
mRcExt = ".res";
7881
mObjDir = "obj";
7982
mOutFlag = "-o";
8083
mExe = inExe;
84+
mAsmExe = inExe;
8185
mID = inID;
8286
mExt = ".o";
8387
mPCHExt = ".pch";
@@ -172,12 +176,13 @@ class Compiler
172176
function getArgs(inFile:File)
173177
{
174178
var nvcc = inFile.isNvcc();
179+
var asm = inFile.isAsm();
175180
var isRc = mRcExe!=null && inFile.isResource();
176181
var args = nvcc ? inFile.mGroup.mCompilerFlags.concat( BuildTool.getNvccFlags() ) :
177182
inFile.mCompilerFlags.concat(inFile.mGroup.mCompilerFlags);
178183
var tagFilter = inFile.getTags().split(",");
179184
addOptimTags(tagFilter);
180-
if (!isRc)
185+
if (!isRc && !asm)
181186
for(flag in mFlags)
182187
flag.add(args,tagFilter);
183188
var ext = mExt.toLowerCase();
@@ -191,7 +196,10 @@ class Compiler
191196
addIdentity(ext,args);
192197

193198
var allowPch = false;
194-
if (nvcc)
199+
200+
if (asm)
201+
args = args.concat(mAsmFlags);
202+
else if (nvcc)
195203
args = args.concat(mNvccFlags);
196204
else if (isRc)
197205
args = args.concat(mRcFlags);
@@ -297,7 +305,8 @@ class Compiler
297305
var obj_name = getObjName(inFile);
298306
var args = getArgs(inFile);
299307
var nvcc = inFile.isNvcc();
300-
var exe = nvcc ? BuildTool.getNvcc() : mExe;
308+
var asm = inFile.isAsm();
309+
var exe = asm ? mAsmExe : nvcc ? BuildTool.getNvcc() : mExe;
301310
var isRc = mRcExe!=null && inFile.isResource();
302311
if (isRc)
303312
exe = mRcExe;

tools/hxcpp/File.hx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ class File
4444

4545
public function isNvcc() return mGroup.mNvcc;
4646

47+
public function isAsm() return mName.endsWith(".asm");
48+
4749
public function isResource() return mName.endsWith(".rc");
4850

4951
public function keep(inDefines:Map<String,String>)

0 commit comments

Comments
 (0)