CMake: Experience in ALICE P. Hristov 19/06/12. History I Recursive makefiles (F.Carminati): 1999-2001 – Problems in dependencies – Slow "Recursive Makefiles.

Slides:



Advertisements
Similar presentations
Software & Services Group, Developer Products Division Copyright© 2010, Intel Corporation. All rights reserved. *Other brands and names are the property.
Advertisements

Lecture 3 Getting Started with ITK!. Goals for this lecture Learn how to use Cmake Build ITK Example programs that use ITK.
CSCI 317 Mike Heroux1 Class Introduction CSCI 317 Mike Heroux.
How to install CGAL Yuanzhen Wang. What is CGAL Computational Geometry Algorithms Library “Provide easy access to efficient and reliable geometric algorithms.
An ide for teaching and learning prolog
Unix Presentation. What is an Operating System An operating system (OS) is a program that allows you to interact with the computer -- all of the software.
Oct ROOT 2002, CERN, Geneva Qt-Based Implementation of Low Level ROOT Graphical Layer By V.Fine.
NA-MIC, 2008 June Workshop, IHK Akademie Westerham Engineering Methodology Sebastien BARRE, Ph.D. - Kitware, Inc.
Doxygen: Source Code Documentation Generator John Tully.
Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc.
Introducing NativeScript [Pavel Kolev Software Telerik: a Progress company]
C O M P U T E R G R A P H I C S Jie chen Computer graphic -- OpenGL Howto.
Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA This work.
Geant4 Installation Supported platforms:  Scientific Linux with gcc 4.1.2/4.6  Mac Os X 10.7 and 10.8 with gcc 4.21  Windows7 with Visual Studio.
FairRoot Build and Test System
Cooperative FVS ! Functional Requirements for a Shared Library Version of FVS, or Calling FVS from R! Nicholas L. Crookston Rocky Mountain Research Station.
FLUKA GUI Status FLUKA Meeting CERN, 10/7/2006.
NA-MIC National Alliance for Medical Image Computing Slicer Building and Deployment Steve Pieper, PhD.
System Programming - LAB 1 Programming Environments.
AliRoot Implementation of native CMake build system A. Grigoras, P. Hristov 19/11/20141Alice - CMake.
CMake refactoring P. Hristov 19/03/2014. History I  Recursive makefiles (F.Carminati):  Problems in dependencies  Slow  "Recursive Makefiles.
Agenda Getting Started: Using Unix Unix Structure / Features Elements of the Unix Philosophy Unix Command Structure Command Line Editing Online Unix Command.
DCDaPS: Digital Content Distribution and Publishing System.
Operating System What is an Operating System? A program that acts as an intermediary between a user of a computer and the computer hardware. An operating.
CS699: Professional Seminar in CS / Professor V. Riabov Keith Armentrout Presentation #3 : Portable GUI in Ada and GtkAda 2005 March 12Keith Armentrout1.
Advanced BioPSE NCRR How to Install and Configure J. Davison de St. Germain Chief Software Engineer SCI Institute December 2003 J. Davison.
Presentation Name / 1 Visual C++ Builds and External Dependencies NAME.
CS2204: Introduction to Unix January 19 th, 2004 Class Meeting 1 * Notes adapted by Christian Allgood from previous work by other members of the CS faculty.
Page 1 CMake Trilinos? Roscoe A. Bartlett Department of Optimization & Uncertainty Estimation Esteban J. Guillen Department.
NA-MIC, 2008 June Workshop, IHK Akademie Westerham Engineering Methodology Sebastien BARRE - Kitware, Inc.
Developing GUIs With the Eclipse Visual Editor, SWT Edition David Gallardo.
BIF713 Introduction to Linux. Agenda Getting Started: Using Linux Unix and Linux - Structure / Features Elements of the Linux Philosophy Linux Command.
Ravi Mathur January 8,  What does CMake NOT do? ◦ Doesn’t compile (gcc, MSVC, llvm, make) ◦ Doesn’t manage source code (XCode, Visual Studio) ◦
OSSIM Technology Overview Mark Lucas. “Awesome” Open Source Software Image Map (OSSIM)
1/30/2003 Los Alamos National Laboratory1 A Migration Framework for Legacy Scientific Applications  Current tendency: monolithic architectures large,
Sung-Dong Kim Dept. of Computer Engineering, Hansung University Chapter 3 Programming Tools.
1 PSI/PhUSE Single Day Event – SAS Applications – June 11, 2009 SAS Drug Development from the Inside Magnus Mengelbier Director.
1 Programming and problem solving in C, Maxima, and Excel.
Software development tools
CMake - Cross-Platform Make R. Douglas Barbieri Made to Order Software Corporation.
Introduction to CMake, v. 2
Tutorial Six Linux Basics CompSci Semester Two 2016.
Version Control Systems
Build and Test system for FairRoot
Computer Systems – Hardware, Operating System, & Software
Current Generation Hypervisor Type 1 Type 2.
Doxygen.
Introduction to .NET Core
Transitioning VisIt to CMake
Pipeline Execution Environment
PVS-Studio static analyzer: advanced features
Version Control Systems
Chapter 2 Setup.
Social Media And Global Computing Introduction to Visual Studio
Chapter 6 System and Application Software
Cmake Primer.
Understanding the Visual IDE
Using Visual Studio and VS Code for Embedded C/C++ Development
GRAPHICAL USER INTERFACE
Electronics II Physics 3620 / 6620
MySQL Migration Toolkit
Software, O/S & Interfaces
Introduction to Computer Software
Copyright ©2008 by Pearson Education, Inc
Kyle Fitzpatrick Konstantin Zak 11/29/2004
Chapter 6 System and Application Software
Chapter 6 System and Application Software
Preparation for Assignment 2
Chapter 6 System and Application Software
Presentation transcript:

CMake: Experience in ALICE P. Hristov 19/06/12

History I Recursive makefiles (F.Carminati): – Problems in dependencies – Slow "Recursive Makefiles Considered Harmful" => flat makefiles similar to what Root team developed (B.Polishchuk, J.E.Revsbeck et al.): "Recursive Makefiles Considered Harmful" – Problem in dependencies if one removes files from the project CMake: considered for the first time after ALICE- FAIR Computing Meeting 04/2008

FAIR-Alice WorkshopF.Uhlig 3 CMake - What is it? Open sorce project (BSD style license) Family of tools to build, test and package software Meta build tool generates input for native tools –UNIX Makefile –Xcode –Visual Studio 6,7,8,9 IDE files –KDevelop –Eclipse Who is using it? –KDE, Scribus, SecondLife, ITK,VTK, FairRoot ;-) Who is behind CMake –Kitware, Los Alamos National Labs, Sandia National Labs, National Library of Medcine, NAMIC

FAIR-Alice WorkshopF.Uhlig 4 CMake Features Support complex custom commands –Generate code during build process which is then compiled (e.g. rootcint) –RuleChecker –Doxygen Optional component support (turn on/off features) Shared library and DLL support (version support) Single and simple input format for all platforms Automatic dependency generation (C, C++, Fortran) –Full dependencies: build a target in one directory, and everything this target depends on will be up to date Parallel builds (if supported by the native tool e.g. gmake -j4) Out of Source builds Linux, Mac OS X, SunOS, HPUX, IRIX, Windows, etc. Simple marco language Only depends on compiler and native build tool

FAIR-Alice WorkshopF.Uhlig 5 CMake Features (cont.) Color and progress output for make Automatic rerun of cmake if any cmake input file changes Graphviz output for visualization of dependency trees Works with parallel make and on build farms make help shows all possible targets in the directory make foo.o build only foo.o and everything foo.o depends on CMake has a GUI layer for easy editing of input variables CMake has a command line interface Cross compiling support (CMake 2.6)

History II CMake: first implementation in 2009, converted “flat makefiles” (F.Carminati, F.Uhlig) – complex processing macros, reusing lists from the “flat makefiles” – missing targets CMake: second implementation in 2010 (J.Jose) – simplification – additional targets – first implementation of CTest/CDash

History III CMake: production version (A.Goel, S.Tangudu) – all targets – reimplementation of CTest/Cdash (ongoing) – more simplifications, improved macros Performance (2011): similar to the flatmake files – Ubuntu (make –j4): CMake – 20m29s, Flat – 25m10s – Mac (make –j3): CMake – 37m22s, Flat – 34m26s – Ubuntu (touch AliESDtrack.h and make –j4): CMake – 10m46s, Flat – 7m52s, failed – Mac (touch AliESDtrack.h and make –j4): CMake – 6m36s, Flat – 4m58s, failed

Experience with CMake We should not “convert” the existing makefiles to CMake, but write directly in CMake The coexistence of makefiles and CMake make the transition more difficult Very helpful CMake mailing list We still have to profit from the possibility to generate “native projects” – some problems, for example support for Fortran in Xcode More examples/tutorials would be helpful, for example on CPack Some features of the string processing are not intuitive, for example the backslashes in the strings returned from external configuration macros CMake solved our main problem: correct treatment of dependencies when files are added to or removed from the project – Possibility to use “make –j…”