View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0014210CMakeCMakepublic2013-06-09 14:472013-06-11 16:01
Reporterszx 
Assigned ToAlex Neundorf 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSWindows 8OS Version
Product Version 
Target VersionFixed in Version 
Summary0014210: CMAKE_ASM_NASM_COMPILER is set to "nasm;yasm" instead of a full path
DescriptionI have only yasm installed (no nasm) but CMake sets the CMAKE_ASM_NASM_COMPILER variable to "nasm;yasm" whereas in earlier versions (2.8.9?) it was set to the full path to the nasm/yasm compiler.
Steps To ReproduceTest project:

project(test)
cmake_minimum_required(VERSION 2.8.11)
enable_language(ASM_NASM)
TagsNo tags attached.
Attached Files? file icon CMakeDetermineASM_NASMCompiler.cmake [^] (1,011 bytes) 2013-06-10 18:28
? file icon CMakeDetermineASMCompiler.cmake [^] (7,415 bytes) 2013-06-10 18:28

 Relationships

  Notes
(0033259)
Alex Neundorf (developer)
2013-06-09 15:42

Does that happen on a fresh buildtree, or do you already have something in the cache (CMakeCache.txt) ?
(0033260)
szx (reporter)
2013-06-09 18:00

Yes, it's a fresh build.
(0033261)
Alex Neundorf (developer)
2013-06-09 18:17

Which generator are you using ?
(0033262)
szx (reporter)
2013-06-10 04:24
edited on: 2013-06-10 04:27

I tried MinGW Makefiles and Visual Studio 10/11, none of them worked. Here's the output from the MinGW one:

The C compiler identification is GNU 4.8.0
The CXX compiler identification is GNU 4.8.0
Check for working C compiler: C:/mingw32/bin/gcc.exe
Check for working C compiler: C:/mingw32/bin/gcc.exe -- works
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Check for working CXX compiler: C:/mingw32/bin/g++.exe
Check for working CXX compiler: C:/mingw32/bin/g++.exe -- works
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
The ASM_NASM compiler identification is unknown
Found assembler: nasm;yasm
CMake Error: your ASM_NASM compiler: "nasm;yasm" was not found. Please set CMAKE_ASM_NASM_COMPILER to a valid compiler path or name.
Configuring incomplete, errors occurred!

Interestingly, VS10 generator printed a weird error during configuration:

The C compiler identification is MSVC 16.0.30319.1
The CXX compiler identification is MSVC 16.0.30319.1
Check for working C compiler using: Visual Studio 10
Check for working C compiler using: Visual Studio 10 -- works
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Check for working CXX compiler using: Visual Studio 10
Check for working CXX compiler using: Visual Studio 10 -- works
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
CMake Error at C:/Program Files/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineASMCompiler.cmake:21 (if):
  if given arguments:

    "nasm" "yasm" "MATCHES" ".+"

  Unknown arguments specified
Call Stack (most recent call first):
  C:/Program Files/CMake 2.8/share/cmake-2.8/Modules/CMakeDetermineASM_NASMCompiler.cmake:26 (include)
  CMakeLists.txt:3 (enable_language)


CMake Error: Could not find cmake module file:C:/Users/szx/Desktop/test/build/CMakeFiles/2.8.11.1/CMakeASM_NASMCompiler.cmake
Configuring incomplete, errors occurred!

^ Looks like the if() condition was passed the same string "nasm;yasm" and interpreted it as a list.

(0033266)
szx (reporter)
2013-06-10 11:00

Forgive my stupidness, it turns out I forgot to add yasm to the system PATH!

Though I must admit the contents of the CMAKE_ASM_NASM_COMPILER variable are somewhat misleading. Shouldn't it be set to an empty string on error?
(0033267)
Alex Neundorf (developer)
2013-06-10 17:22

No, it's ok.
The detect compiler function was changed in 2.8.10 and the assembler support was not modified accordingly.
It seems instead of the _INIT variable the _LIST variable should be set.
I'll post a patch later today.
(0033268)
Alex Neundorf (developer)
2013-06-10 18:30

Can you please put the two attached files in your cmake installation and see whether this makes it work better for you, both in the case that you have yasm in the PATH and that you don't have if it in the PATH ?

Thanks
Alex
(0033271)
szx (reporter)
2013-06-11 13:05

Now with the new files when yasm is not found CMAKE_ASM_NASM_COMPILER is set to CMAKE_ASM_NASM_COMPILER-NOTFOUND and I see "Didn't find assembler". When found it's set to the full path.
(0033272)
Alex Neundorf (developer)
2013-06-11 16:01

Merged into next, so it should be in the next release.

 Issue History
Date Modified Username Field Change
2013-06-09 14:47 szx New Issue
2013-06-09 15:04 Alex Neundorf Assigned To => Alex Neundorf
2013-06-09 15:04 Alex Neundorf Status new => assigned
2013-06-09 15:42 Alex Neundorf Note Added: 0033259
2013-06-09 18:00 szx Note Added: 0033260
2013-06-09 18:17 Alex Neundorf Note Added: 0033261
2013-06-10 04:24 szx Note Added: 0033262
2013-06-10 04:26 szx Note Added: 0033263
2013-06-10 04:27 szx Note Deleted: 0033263
2013-06-10 04:27 szx Note Edited: 0033262
2013-06-10 11:00 szx Note Added: 0033266
2013-06-10 17:22 Alex Neundorf Note Added: 0033267
2013-06-10 18:28 Alex Neundorf File Added: CMakeDetermineASM_NASMCompiler.cmake
2013-06-10 18:28 Alex Neundorf File Added: CMakeDetermineASMCompiler.cmake
2013-06-10 18:30 Alex Neundorf Note Added: 0033268
2013-06-11 13:05 szx Note Added: 0033271
2013-06-11 16:01 Alex Neundorf Note Added: 0033272
2013-06-11 16:01 Alex Neundorf Status assigned => closed
2013-06-11 16:01 Alex Neundorf Resolution open => fixed


Copyright © 2000 - 2018 MantisBT Team