MantisBT - CMake
View Issue Details
0012465CMakeCMakepublic2011-09-19 04:202012-05-09 15:26
Micha Renner 
Alex Neundorf 
normalminoralways
closedduplicate 
WindowsWindows 88
CMake 2.8.5 
CMake 2.8.7CMake 2.8.7 
0012465: masm & msvc
as requested (http://www.cmake.org/pipermail/cmake/2011-August/045960.html [^])



The script...



# Copy & paste from CMake Wiki

# Works only if CMake runs in the Visual Studio DOS Window

SET(MASMFound FALSE)

# test whether it is a x86 machine and masm is available

IF("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "x86")

        ENABLE_LANGUAGE(ASM_MASM)

        IF(CMAKE_ASM_MASM_COMPILER_WORKS)

                SET(MASMFound TRUE)

        ENDIF(CMAKE_ASM_MASM_COMPILER_WORKS)

ENDIF("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "x86")

# no assembler found

IF(NOT MASMFound)

        MESSAGE(STATUS NOT)

ENDIF(NOT MASMFound)



...still generates the message:

The ASM_MASM compiler identification is unknown <----------------------!

Found assembler: C:/Program Files/Microsoft Visual Studio

10.0/VC/bin/ml.exe



A subsequent...



ADD_EXECUTABLE(cTest CTest.c cAsm2.asm)



does not invoke the MASM



No tags attached.
duplicate of 0011536closed Patrick R. Gansterer Can't use assembler files with Visual Studio 10 generator 
related to 0012524closed Alex Neundorf CMake 2.8.6 Configure Error identifying assembler with VS2010 
zip tm.zip (40,011) 2011-09-19 04:20
https://public.kitware.com/Bug/file/4056/tm.zip
? CMakeDetermineASMCompiler.cmake (8,631) 2011-10-06 12:02
https://public.kitware.com/Bug/file/4067/CMakeDetermineASMCompiler.cmake
Issue History
2011-09-19 04:20Micha RennerNew Issue
2011-09-19 04:20Micha RennerFile Added: tm.zip
2011-09-19 09:58Brad KingAssigned To => Alex Neundorf
2011-09-19 09:58Brad KingStatusnew => assigned
2011-10-05 16:23Alex NeundorfNote Added: 0027531
2011-10-06 08:43Micha RennerNote Added: 0027539
2011-10-06 12:02Alex NeundorfNote Added: 0027541
2011-10-06 12:02Alex NeundorfFile Added: CMakeDetermineASMCompiler.cmake
2011-10-06 12:04Alex NeundorfNote Edited: 0027541bug_revision_view_page.php?bugnote_id=27541#r431
2011-10-06 12:40Micha RennerNote Added: 0027542
2011-10-06 13:38Alex NeundorfNote Added: 0027543
2011-10-07 06:04Micha RennerNote Added: 0027548
2011-10-11 07:53Micha RennerNote Edited: 0027548bug_revision_view_page.php?bugnote_id=27548#r433
2011-10-11 15:59Alex NeundorfNote Added: 0027564
2011-10-12 04:13Micha RennerNote Added: 0027567
2011-10-12 15:12Alex NeundorfNote Added: 0027573
2011-10-18 11:55Brad KingRelationship addedrelated to 0012524
2011-10-18 16:47Alex NeundorfRelationship addedrelated to 0011536
2011-10-18 16:53Alex NeundorfNote Added: 0027603
2011-10-18 16:53Alex NeundorfStatusassigned => closed
2011-10-18 16:53Alex NeundorfResolutionopen => fixed
2011-12-16 17:18David ColeFixed in Version => CMake 2.8.7
2011-12-16 17:18David ColeTarget Version => CMake 2.8.7
2011-12-21 03:28Micha RennerNote Added: 0028024
2011-12-21 03:28Micha RennerStatusclosed => feedback
2011-12-21 03:28Micha RennerResolutionfixed => reopened
2011-12-21 08:29David ColeNote Added: 0028028
2011-12-21 08:29David ColeRelationship replacedduplicate of 0011536
2011-12-21 08:29David ColeStatusfeedback => resolved
2011-12-21 08:29David ColeResolutionreopened => duplicate
2012-05-09 15:26David ColeNote Added: 0029456
2012-05-09 15:26David ColeStatusresolved => closed

Notes
(0027531)
Alex Neundorf   
2011-10-05 16:23   
I need your help with that.
Does the MS assembler ml.exe have a command line argument so it just prints its name or version number and exits then ?

E.g. the GNU assembler as does this with --version:
$ as --version
GNU assembler (Linux/GNU Binutils) 2.21.51.0.6.20110118
Copyright 2011 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or later.
This program has absolutely no warranty.
This assembler was configured for a target of `i486-slackware-linux'.
$

Is there something similar for ml ?
What does e.g. "ml /?" print ?
Can you please post the output here ?

Thanks
Alex
(0027539)
Micha Renner   
2011-10-06 08:43   
Does the MS assembler ml.exe have a command line argument so it just prints its name or version number and exits then ? No

c:\work-c\tm>ml

Microsoft (R) Macro Assembler Version 10.00.30319.01

Copyright (C) Microsoft Corporation. All rights reserved.



usage: ML [ options ] filelist [ /link linkoptions]

Run "ML /help" or "ML /?" for more info

The Microsoft logo with version information cannot be redirected: ml > tm.txt. so I assume for the logo the masm does not use stdout.

c:\work-c\tm>ml /?

Microsoft (R) Macro Assembler Version 10.00.30319.01

Copyright (C) Microsoft Corporation. All rights reserved. /?



        ML [ /options ] filelist [ /link linkoptions ]



/Bl<linker> Use alternate linker /safeseh Assert all exception

/c Assemble without linking handlers are declared

/Cp Preserve case of user identifiers /Sf Generate first pass listing

/Cu Map all identifiers to upper case /Sl<width> Set line width

/Cx Preserve case in publics, externs /Sn Suppress symbol-table listing

/coff generate COFF format object file /Sp<length> Set page length

/D<name>[=text] Define text macro /Ss<string> Set subtitle

/EP Output preprocessed listing to stdout /St<string> Set title

/F <hex> Set stack size (bytes) /Sx List false conditionals

/Fe<file> Name executable /Ta<file> Assemble non-.ASM file

/Fl[file] Generate listing /w Same as /W0 /WX

/Fm[file] Generate map /WX Treat warnings as errors

/Fo<file> Name object file /W<number> Set warning level

/Fr[file] Generate limited browser info /X Ignore INCLUDE environment path

/FR[file] Generate full browser info /Zd Add line number debug info

/G<c|d|z> Use Pascal, C, or Stdcall calls /Zf Make all symbols public

/I<name> Add include path /Zi Add symbolic debug info

/link <linker options and libraries> /Zm Enable MASM 5.10 compatibility

/nologo Suppress copyright message /Zp[n] Set structure alignment

/omf generate OMF format object file /Zs Perform syntax check only

/Sa Maximize source listing

/errorReport:<option> Report internal assembler errors to Microsoft

    none - do not send report

    prompt - prompt to immediately send report

    queue - at next admin logon, prompt to send report

    send - send report automatically

For an detailed description see here:
http://msdn.microsoft.com/de-de/library/s0ksfwcf.aspx [^]

Micha
(0027541)
Alex Neundorf   
2011-10-06 12:02   
(edited on: 2011-10-06 12:04)
Can you please try with the DetectMasmCompilerId branch on cmake stage ?
http://cmake.org/gitweb?p=stage/cmake.git [^]

Otherwise, you may simply replace the CMakeDetermineASMCompiler.cmake
from your installation with the one attached here, this should work too (at least for 2.8.6, not quire sure for 2.8.5).

Alex

(0027542)
Micha Renner   
2011-10-06 12:40   
The result is:
The ASM_MASM compiler identification is MSVC

Found assembler: C:/Program Files/Microsoft Visual Studio 10.0/VC/bin/ml.exe

YES1C:/Program Files/Microsoft Visual Studio 10.0/VC/bin/ml.exe

Micha
(0027543)
Alex Neundorf   
2011-10-06 13:38   
Did you put the "YES1" there ?

Does it work for you now ?

Alex
(0027548)
Micha Renner   
2011-10-07 06:04   
(edited on: 2011-10-11 07:53)
The YES is to test CMAKE_ASM_MASM_COMPILER_WORKS and CMAKE_ASM_MASM_COMPILER.

So the first part is solved, but
    ADD_EXECUTABLE(cTest CTest.c cAsm2.asm)
still does not start the MASM.

Micha

(0027564)
Alex Neundorf   
2011-10-11 15:59   
Are you using Makefiles or VisualStudio projects ?

Alex
(0027567)
Micha Renner   
2011-10-12 04:13   
Only VisualStudio projects.

Micha
(0027573)
Alex Neundorf   
2011-10-12 15:12   
Ok.
Currently, assembler is only supported in the Makefile-based generators.
I don't have a Windows machine available, so I cannot really work on this.

You can have a look at Source/cmLocalVisualStudio7Generator.cxx, void cmLocalVisualStudio7Generator::AddHelperCommands(), and check what happens if you add a "lang.insert("ASM");" there.
Maybe it makes it work.

Alex
(0027603)
Alex Neundorf   
2011-10-18 16:53   
I'm closing this one, because 0011536 is actually the ticket for ASM support in the VisualStudio generators.
So, please check whether what I suggested, and post the reply not here but in 0011536.

Thanks
Alex
(0028024)
Micha Renner   
2011-12-21 03:28   
What does "fixed in version" mean? If it means the problem is solved, then I disagree. The MASM is still not invoked in 2.8.7rc1
(0028028)
David Cole   
2011-12-21 08:29   
Alex closed this because it's a duplicate of the existing bug 0011536.

I set the "version" fields so that this bug shows up on the roadmap and change log pages.

It's "resolved" as a duplicate, but it's not really fixed yet.

Sorry for the confusion.

Monitor the other bug to be notified as changes are made that may be relevant to your interest.
(0029456)
David Cole   
2012-05-09 15:26   
Closing resolved issues that have not been updated in more than 4 months.