<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On 14 September 2013 09:59, Alexander Neundorf <span dir="ltr">&lt;<a href="mailto:a.neundorf-work@gmx.net" target="_blank">a.neundorf-work@gmx.net</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class=""><div class="h5">On Friday 13 September 2013, lorddoskias wrote:<br>
&gt; Hello list,<br>
&gt;<br>
&gt; I have a couple of questions whose answers I couldn&#39;t find. So first<br>
&gt; thing&#39;s first - I have the following function which I intend to use to<br>
&gt; add a number of library targets:<br>
&gt;<br>
&gt; function(build_mps_m3_lib LIBRARY_NAME C_SOURCE ASM_SOURCE CPU_TYPE)<br>
&gt;      set_property(SOURCE ${${C_SOURCE}} PROPERTY COMPILE_FLAGS &quot;-g<br>
&gt; --cpu=${CPU_TYPE} -O0&quot;)<br>
&gt;      set_property(SOURCE ${${ASM_SOURCE}} PROPERTY COMPILE_FLAGS &quot;-g<br>
&gt; --cpu=${CPU_TYPE} --apcs=interwork&quot;)<br>
&gt;      add_library(${LIBRARY_NAME}  ${${SOURCE}} ${${ASM_SOURCE}})<br>
&gt;      set(TARGET_DIR &quot;mps-m3&quot;)<br>
&gt;      set(ASM_COMPILE_FLAGS &quot;-g --cpu=${CPU_TYPE} --apcs=interwork&quot;)<br>
&gt;      #custom armasm command line<br>
&gt;      set(CMAKE_ASM_COMPILE_OBJECT &quot;&lt;CMAKE_ASM_COMPILER&gt;<br>
&gt; ${ASM_COMPILE_FLAGS} &lt;SOURCE&gt; -o &lt;OBJECT&gt;&quot;)<br>
&gt;      #set_target_properties(${LIBRARY_NAME} PROPERTIES C_COMPILE_FLAGS<br>
&gt; &quot;-g --cpu=${CPU_TYPE} -O0&quot;)<br>
&gt; endfunction(build_mps_m3_lib)<br>
&gt;<br>
&gt;<br>
&gt; What I want to achieve is to have clear separation between the ASM<br>
&gt; compiler flags and the C compiler flags. Since I&#39;m not using the GNU<br>
&gt; (ergo GCC) toolchain I cannot simply set the properties on the resulting<br>
&gt; library target to set the COMPILE_FLAGS. Essentially what I want to<br>
&gt; achieve is being able to set arbitrary compile options for the C and ASM<br>
&gt; compiler WITHOUT both of those interfering.<br>
<br>
</div></div>In general they don&#39;t interfer.<br>
What compiler and assembler are you using ?<br>
Maybe you need a new &quot;assembler dialect&quot;. Those are quite simply to do, you<br>
can have a look e.g. at the files containing &quot;MASM&quot; in their name in Modules/.<br></blockquote><div><br></div><div>Unfortunately I do not find the statement &quot;In generla they don&#39;t interfere to be correct&quot;. Here is what I&#39;m talking about: <br>
<br></div><div>The default definitions of ASM_COMPILE_OBJECT is : ASM_COMPILE_OBJECTP: &lt;CMAKE_ASM_COMPILER&gt; &lt;DEFINES&gt; &lt;FLAGS&gt; -o &lt;OBJECT&gt; -c &lt;SOURCE&gt; <br><br></div><div>meaning it will include all defines/flags set by add_definition/set_target_properties for COMPILE_DEFINITIONS or COMPILER_FLAGS. Unfortunately if I have something like the following: <br>
add_library(tx-mps-m4 ${KERNEL_SOURCE})<br>set_target_properties(tx-mps-m4 PROPERTIES COMPILE_FLAGS &quot;-g --cpu=cortex-m4 -O0&quot;)<br><br></div><div>I get the exact same flags (-g --cpu and -O0) passed to the assmebler (armasm) in my case. And the assembler doesn&#39;t understand the -O0 and it exists. How can I avoid this situation?<br>
</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div class="im"><br>
&gt; My second questions: The way I pass the lists of sources is kind of ugly<br>
&gt; - e.g. I&#39;m, in-essence, doing double indirection the ${${blah}} thingy.<br>
&gt; What would be the correct way. I tried with ${blah-list} but this skewed<br>
&gt; the arguments order<br>
<br>
</div>To get full support for keywords etc. in your own macros/functions, have a<br>
look at CMakeParseArguments.cmake.<br>
<br>
Alex<br>
--<br>
<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Please keep messages on-topic and check the CMake FAQ at: <a href="http://www.cmake.org/Wiki/CMake_FAQ" target="_blank">http://www.cmake.org/Wiki/CMake_FAQ</a><br>
<br>
Kitware offers various services to support the CMake community. For more information on each offering, please visit:<br>
<br>
CMake Support: <a href="http://cmake.org/cmake/help/support.html" target="_blank">http://cmake.org/cmake/help/support.html</a><br>
CMake Consulting: <a href="http://cmake.org/cmake/help/consulting.html" target="_blank">http://cmake.org/cmake/help/consulting.html</a><br>
CMake Training Courses: <a href="http://cmake.org/cmake/help/training.html" target="_blank">http://cmake.org/cmake/help/training.html</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.cmake.org/mailman/listinfo/cmake" target="_blank">http://www.cmake.org/mailman/listinfo/cmake</a><br>
</blockquote></div><br></div></div>