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 <[email protected]>
> 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 <[email protected]> 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 <[email protected]> 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