On Aug 24, 2009, at 12:48 PM, Tyler Roscoe wrote:
On Sun, Aug 23, 2009 at 09:03:22PM -0400, John Smith wrote:
I am using the following test case in an attempt to add a custom
command to build an assembly file. The assembly file should be
compiled with the C++ compiler driver (which in turn should invoke
the
assembler after pre-processing), and I am building up a
CMAKE_CXX_FLAGS variable from separate pieces:
I think you can just hand your .S files to add_library(). Did you try
searching the ML archives or google for how to handle assembler files
with CMake?
I have tried doing that. However, the net end result is that I get a
rule that invokes the assembler on the assembly source file. My top-
level assembly source file is a shell containing a bunch of platform-
specific conditionals, which in turn guard include directives for
platform-specific assembly source files. Thus, I want to have the C++
compiler driver compile the top-level file; the compiler driver would
first preprocess the include directives and then invoke the assembler
on the resulting translation unit.
An example of such a technique is here:
http://svn.apache.org/viewvc/stdcxx/trunk/src/atomic.s?revision=704153
set(CMAKE_CXX_FLAGS -m32)
When you do this, you clobber the pre-existing value of
CMAKE_CXX_FLAGS,
which has some defaults that are probably useful for your platform.
Are
you sure this is what you want?
Poorly chosen example, my bad. The point was to show how a variable is
constructed in my CMakeLists.txt and how it ends up being used.
[...]
add_library(test SHARED foo.cpp bar.S)
Yeah I think you're overthinking this. Look for some CMake examples
that
use assembler and go from there.
Most surely I am over-thinking it. After more local testing I think I
understand how variables are processed in the generation of commands.
I started from the command include_directories which actually builds a
*list* of tokens, each an include directory to be used in (a) makefile
rule. I noticed that using such a list as ARGS to ADD_CUSTOM_COMMAND
results in the splitting of the list in separate tokens, i.e.:
set(FOO a b c)
ADD_CUSTOM_COMMAND(...
ARGS ${FOO}
...)
ends up in a rule like:
<CMD> a b c ...
However, strings set up as:
set (FOO "a b c")
end up in the rule as:
<CMD> a\ b\ c ...
Therefore, I conclude that ARGS require lists, not strings of
concatenated, space-separated options. Am I right in this?
Thanks for the help.
-J
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake