[cmake-developers] Creating a Keil uVision generator

2017-01-03 Thread Paul Wilkinson
Hi all,

I am involved in a software project targeting a handful of ARM Cortex-M
microcontrollers. We develop the software using the Keil uVision v5 IDE [1]. We
are considering whether CMake could help us with some of the limitations we
encounter using uVision alone.

Does anyone have experience or insight in to creating a CMake generator for an
embedded systems IDE like uVision?

Read on for some technical details.

A uVision project's structure appears _roughly_ similar to a Microsoft Visual
Studio 12 project. uVision has a Multi-Project Workspace (.uvmpw) rather than a
VS solution (.sln), and a uVision Project (.uvprojx) instead of a VS project
(.vcxproj).

One notable difference in the XML schemas: in uVision, the source file elements
are a child of the target elements (a uVision "target" is comparable to a VS
"configuration"), in contrast to VS's approach where a configuration-specific
option is a child of the source file element and has a "Condition" attribute.

As with the Visual Studio generators, a generator for uVision projects would
ideally be a multi-configuration generator.

I expect there are many concepts in CMake that wouldn't map to a uVision option,
and vice-versa. For example the "Packs" system used by uVision might not mesh
well with what CMake understands as a library. For my limited requirements -- a
single project workspace, where the project consists of exactly one executable
and no libraries other than some third-party libraries passed to linker -- I
expect we could make do with a skeleton/template .uvprojx and the CMake
generator would fill in the gaps for the source files.

Some of the benefits I would imagine we would get from such a generator:

- more human-friendly and diff-friendly project files (CMakeLists.txt instead
  of .uvprojx)

- avoiding a combinatorial explosion of configurations by using the CMake
  language and its cache variables.

[1] http://www2.keil.com/mdk5/uvision/

Thanks,
Paul Wilkinson
http://www.cmedrobotics.com/


This e-mail message is confidential and for use by the addressee only. If you 
are not the intended recipient, you must not use, disclose, copy or forward 
this transmission. Please return the message to the sender by replying to it 
and then delete the message from your computer. Cambridge Medical Robotics 
shall not be held liable to any person resulting from the use of any 
information contained in this e-mail and shall not be liable to any person who 
acts or omits to do anything in reliance upon it. Cambridge Medical Robotics 
does not accept responsibility for changes made to this message after it was 
sent.

Company Information:
Name: Cambridge Medical Robotics Limited.
Registered Address: Unit 2, Crome Lea Business Park, Madingley Road, Cambridge, 
CB23 7PH, UK.
Registered as a Company in England: 08863657 VAT Number: GB 186 4383 74.
i...@cmedrobotics.com
-- 

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-developers


[cmake-developers] [PATCH] Help: fix mistake in cmake-buildsystem(7)

2016-02-07 Thread Paul Wilkinson
The COMPATIBLE_INTERFACE_NUMBER_MAX example now sets
INTERFACE_CONTAINER_SIZE_REQUIRED on lib1Version2 and lib1Version3 (it
previously set it on lib1Version2 twice and never on
lib1Version3. Probably a copy-paste mistake?)
---
 Help/manual/cmake-buildsystem.7.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Help/manual/cmake-buildsystem.7.rst
b/Help/manual/cmake-buildsystem.7.rst
index 4a04f31..9004bb2 100644
--- a/Help/manual/cmake-buildsystem.7.rst
+++ b/Help/manual/cmake-buildsystem.7.rst
@@ -427,7 +427,7 @@ specified will be calculated:
   )

   add_library(lib1Version3 SHARED lib1_v3.cpp)
-  set_property(TARGET lib1Version2 PROPERTY
INTERFACE_CONTAINER_SIZE_REQUIRED 1000)
+  set_property(TARGET lib1Version3 PROPERTY
INTERFACE_CONTAINER_SIZE_REQUIRED 1000)

   add_executable(exe1 exe1.cpp)
   # CONTAINER_SIZE_REQUIRED will be "200"
-- 
1.9.1
-- 

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-developers