MantisBT - CMake
View Issue Details
0011926CMakeCMakepublic2011-03-03 20:092011-06-17 18:28
hkrishna 
Alex Neundorf 
normalfeaturealways
closedfixed 
AllAllAll
CMake 2.8.4 
CMake 2.8.5CMake 2.8.5 
0011926: use_mangled_mesa as a scriptable operation
Hi All,

I would like to be able to script the cmake compatibility command

specifically use_mangle_mesa(mesapath/include/GL some_other_path) and optionally any other command that may be relevant for scripting if it reasonably feasable.

For example:

%cat scriptfile
cmake_minimum_required(VERSION 2.8)
use_mangled_mesa(mesapath/include/GL some_other_path)
%cmake -P scriptfile

Ultimately it would be nice to do
echo 'cmake_minimum_required(VERSION 2.8)\nuse_mangled_mesa(mesapath/include/GL some_other_path)' | cmake -P /dev/stdin
or even
echo 'use_mangled_mesa(mesapath/include/GL some_other_path)' | cmake -P /dev/stdin

The error from both these methods:
 
CMake Error at /dev/stdin:1 (use_mangled_mesa):
  Command use_mangled_mesa() is not scriptable

is there a reason why the function use_mangled_mesa is not scriptable?

My current solution is to create a tmp directory and a CMakeLists.txt with the contents of use_mangled_mesa then execute it using cmake.

%cat CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
use_mangled_mesa(mesapath/include/GL some_other_path)
%cmake .

This operation seems overkill for what I would like to do as it generates CMakeFiles, CmakeCache.txt, and other files. Are there other alternatives that do not require running a full cmake on CMakeLists.txt in order to run a simple cmake compatibility command operation?

A simple test that I can currently perform:
echo 'cmake_minimum_required(VERSION 2.8)\nMESSAGE( "${INPUT_X}" )' | cmake -DINPUT_X=abc -P /dev/stdin
or
echo 'MESSAGE( "${INPUT_X}" )' | cmake -DINPUT_X=abc -P /dev/stdin
and I get a correct response from cmake. I would like to replace MESSAGE with use_mangled_mesa.

 
Thanks,
Hari
%cat scriptfile
cmake_minimum_required(VERSION 2.8)
use_mangled_mesa(mesapath/include/GL some_other_path)
%cmake -P scriptfile

or

%echo 'cmake_minimum_required(VERSION 2.8)\nuse_mangled_mesa(mesapath/include/GL some_other_path)' | cmake -P /dev/stdin

or
echo 'use_mangled_mesa(mesapath/include/GL some_other_path)' | cmake -P /dev/stdin

The error from both these methods:
 
CMake Error at /dev/stdin:1 (use_mangled_mesa):
  Command use_mangled_mesa() is not scriptable
Alexander Neundorf asked me to add this request to the cmake bug tracker.

Thanks!
No tags attached.
Issue History
2011-03-03 20:09hkrishnaNew Issue
2011-03-04 14:15hkrishnaNote Added: 0025670
2011-03-07 16:05Alex NeundorfAssigned To => Alex Neundorf
2011-03-07 16:05Alex NeundorfStatusnew => assigned
2011-03-10 15:48Alex NeundorfNote Added: 0025750
2011-03-10 15:48Alex NeundorfStatusassigned => closed
2011-03-10 15:48Alex NeundorfResolutionopen => fixed
2011-03-10 15:48Alex NeundorfSteps to Reproduce Updatedbug_revision_view_page.php?rev_id=245#r245
2011-06-17 18:28David ColeFixed in Version => CMake 2.8.5
2011-06-17 18:28David ColeTarget Version => CMake 2.8.5

Notes
(0025670)
hkrishna   
2011-03-04 14:15   
It seems that in some machines echo can parse newlines and on others it requires a -e option.

If the examples I gave do not work then add 'echo -e' to see if that fixes the issue.

Thanks!
(0025750)
Alex Neundorf   
2011-03-10 15:48   
Done and pushed to next. Should be in 2.8.5.

Alex