Hi Robert,

Yes, we are adding the Keil C8051 compiler, which is very old and uses a very 
unique command line syntax compared to the others supported by CMake.  Also, 
it's Windows only but Wine works -- so we optionally add Wine on non-Windows 
platforms.  An example would be:

wine C51.exe INCDIR(/path/to/dir/1/, /path/to/dir/2/) DEBUG DEFINE(FOO_FLAG) 
OBJECT(/path/to/output.obj) /path/to/source.c

To achieve this, we use a wrapper cmake script with the following:

set(CMAKE_C_COMPILE_OBJECT
"cmake\
-DWINE=${WINE}\
-DCOMPILER=<CMAKE_C_COMPILER>\
-DSOURCE=<SOURCE>\
-DINCLUDES=\"<INCLUDES>\"\
-DFLAGS=\"<DEFINES> <FLAGS>\"\
-DOBJECT=<OBJECT>\
-P \"${CMAKE_CURRENT_LIST_DIR}/C8051Compile.cmake\""
)

It was important that <INCLUDES> be separate, as its form is significantly 
different than most compilers.  Prior to cmake 3.4, it would be very difficult 
to handle this, since <FLAGS> would append the includes as a list of 
directories, and there is no CMAKE_INCLUDE_FLAG suffix variable (need a closing 
bracket for INCDIR).

> On Jun 30, 2016, at 2:23 PM, Robert Maynard <robert.mayn...@kitware.com> 
> wrote:
> 
> Hi,
> 
> Can you explain what the goal of your compilation wrappers are? Are
> you trying to add a new compiler?
> 
> 
> 
> On Wed, Jun 29, 2016 at 1:41 PM, Sam Cristall <crist...@eleveneng.com> wrote:
>> Looks like this was just a change in CMake 3.4.  Updated to latest, and 
>> everything is working.
>>> On Jun 28, 2016, at 5:19 PM, Sam Cristall <crist...@eleveneng.com> wrote:
>>> 
>>> I'm trying to implement a cross compilation wrapper and hit a snag with 
>>> CMAKE_C_COMPILE_OBJECT.  I've found that on OSX / Linux (Makefile 
>>> Generator), <INCLUDES> and <FLAGS> work as expected, however on Windows 
>>> (MinGW Makefile Generator), <FLAGS> has both the flags and includes, 
>>> whereas <INCLUDES> is undefined.  Is this expected?
>>> 
>> --
>> 
>> Powered by www.kitware.com
>> 
>> Please keep messages on-topic and check the CMake FAQ at: 
>> http://www.cmake.org/Wiki/CMake_FAQ
>> 
>> Kitware offers various services to support the CMake community. For more 
>> information on each offering, please visit:
>> 
>> CMake Support: http://cmake.org/cmake/help/support.html
>> CMake Consulting: http://cmake.org/cmake/help/consulting.html
>> CMake Training Courses: http://cmake.org/cmake/help/training.html
>> 
>> Visit other Kitware open-source projects at 
>> http://www.kitware.com/opensource/opensource.html
>> 
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/cmake

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

Reply via email to