Transitioning VisIt to CMake

Slides:



Advertisements
Similar presentations
MapuSoft Technologies Presentation OS Abstractor, OS Changer, OS PAL and MapuSoft are registered trademarks of MapuSoft Technologies Inc. All other trademarks.
Advertisements

1 Slides presented by Hank Childs at the VACET/SDM workshop at the SDM Center All-Hands Meeting. November 26, 2007 Snoqualmie, Wa Work performed under.
Data Model driven applications using CASE Data Models as the nucleus of software development in a Computer Aided Software Engineering environment.
CIM2564 Introduction to Development Frameworks 1 Overview of a Development Framework Topic 1.
70-293: MCSE Guide to Planning a Microsoft Windows Server 2003 Network, Enhanced Chapter 5: Planning, Configuring, And Troubleshooting DHCP.
Requirements Analysis 5. 1 CASE b505.ppt © Copyright De Montfort University 2000 All Rights Reserved INFO2005 Requirements Analysis CASE Computer.
Kashif Jalal CA-240 (072) Web Development Using ASP.NET CA – 240 Kashif Jalal Welcome to week – 2 of…
Windows Server WHAT IS ACTIVE DIRECTORY? FUNDAMENTALS OF THE ACTIVE DIRECTORY – Benefits of Using the Active Directory in an Enterprise Environment.
LIGO G PLIGO Laboratory1 Change Request CR Replace LIGO Document Management System Philip Lindquist, Caltech August 5, 2005.
How to install CGAL Yuanzhen Wang. What is CGAL Computational Geometry Algorithms Library “Provide easy access to efficient and reliable geometric algorithms.
Linux Operating system
Introduction to The Linaro Toolchain Embedded Processors Training Multicore Software Applications Literature Number: SPRPXXX 1.
1 Introduction to Tool chains. 2 Tool chain for the Sitara Family (but it is true for other ARM based devices as well) A tool chain is a collection of.
Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc.
Hands-On Microsoft Windows Server 2008 Chapter 1 Introduction to Windows Server 2008.
Benefits of PL/SQL. 2 home back first prev next last What Will I Learn? In this lesson, you will learn to: –List and explain the benefits of PL/SQL –List.
11 Getting Started with C# Chapter Objectives You will be able to: 1. Say in general terms how C# differs from C. 2. Create, compile, and run a.
DB Libraries: An Alternative to DBMS By Matt Stegman November 22, 2005.
COLD FUSION Deepak Sethi. What is it…. Cold fusion is a complete web application server mainly used for developing e-business applications. It allows.
Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA This work.
DTS Conversion to SSIS Conversion Best Practices Mike Davis
Module 7 Active Directory and Account Management.
NA-MIC National Alliance for Medical Image Computing Slicer Building and Deployment Steve Pieper, PhD.
CMake refactoring P. Hristov 19/03/2014. History I  Recursive makefiles (F.Carminati):  Problems in dependencies  Slow  "Recursive Makefiles.
Presentation Name / 1 Visual C++ Builds and External Dependencies NAME.
March 2004 At A Glance autoProducts is an automated flight dynamics product generation system. It provides a mission flight operations team with the capability.
Mantid Stakeholder Review Nick Draper 01/11/2007.
Windows 2000 Ronnie Park Jarod Nozawa Joe Stones Yassir Mhdhroui.
Build Tools 1. Building a program for a large project is usually managed by a build tool that controls the various steps involved. These steps may include:
Programming Logic and Design Seventh Edition Chapter 1 An Overview of Computers and Programming.
CMake: Experience in ALICE P. Hristov 19/06/12. History I Recursive makefiles (F.Carminati): – Problems in dependencies – Slow "Recursive Makefiles.
Software development tools
CMake - Cross-Platform Make R. Douglas Barbieri Made to Order Software Corporation.
SUSE Linux Enterprise Server for SAP Applications
Digital Asset Management at Michigan Tech
Overview of E-Learning Authoring Software
Introduction ITEC 420.
Introduction to Visual Basic. NET,. NET Framework and Visual Studio
VisIt Project Overview
Build and Test system for FairRoot
L25 - PlantPAx Process Application Development Lab I
Volume Licensing Readiness: Level 100
Lecture 1-Part 2: Operating-System Structures
Volume Licensing Readiness: Level 100
Web Interface for Formatter
Introduction to .NET Core
INTRODUCING Adams/CHASSIS
Outline SOAP and Web Services in relation to Distributed Objects
VisIt Libsim Update DOE Computer Graphics Forum 2012 Brad Whitlock
In-situ Visualization using VisIt
Lawrence Livermore National Laboratory
Volume Licensing Readiness: Level 100
Introduction to Operating System (OS)
Outline SOAP and Web Services in relation to Distributed Objects
Chapter 6 Introduction to Network Operating Systems
Module 1: Getting Started
Social Media And Global Computing Introduction to Visual Studio
Web Development Using ASP .NET
.NET and .NET Core Foot View of .NET Pan Wuming 2017.
Cmake Primer.
Using Visual Studio and VS Code for Embedded C/C++ Development
Microsoft Virtual Academy
SSDT and Database Project Basics
Presents: Rally To Java Conversion Suite
Bringing more value out of automation testing
MATERI PL/SQL Procedures Functions Packages Database Triggers
Convergence IT Services Pvt. Ltd
SharePoint Workflow: Taking the Manual Out of Your Process
Simplicity, Openness, Modern UI, High Performance
Programming Logic and Design Eighth Edition
Presentation transcript:

Transitioning VisIt to CMake Brad Whitlock ASQ Division Lawrence Livermore National Laboratory VisIt is a visualization and data analysis tool with a complex build system that transforms over 1 million lines of C++ source code into many executables and hundreds of plug-in shared libraries. Historically, VisIt has relied on two distinct build systems to support different platforms. In early 2010, both build systems were replaced with a single build system based on CMake. The resulting build system has proven superior and has eliminated a long-standing maintenance burden. Introduction: Methods: VisIt has a very complex build system that needs to be simplified to boost developer productivity. We chose to write a new build system that replaces both old ones using CMake (cross-platform make) from Kitware, Inc. Viewer Metadata server Core libraries CLI Plug-ins GUI Compute server VisIt comprises: 5 main executables 45+ core libraries 20+ plot plug-ins 45+ operator plug-ins 100+ database plug-ins Each plug-in consists of 3-6 shared libraries Incremental replacement of autoconf build system Detect 3rd party libraries such as VTK, Qt, Python Add targets for core VisIt libraries Add targets for most important executables Add targets for plug-ins Add advanced features After creating a basic build system with just the main targets, we started developing on all platforms to avoid problems with portability. Desired build system properties CMake Portable to Windows, MacOS X, UNIX/ Linux Scriptable Well supported, widely adopted, free Generate build system for favorite environment (make, Visual Studio, Xcode) Flexible Low barrier to entry Two build systems: autoconf for UNIX&Mac builds, Microsoft Visual Studio for Windows builds Each build system represents hundreds of build targets Responsibility for Windows build was on 1 person, which was not very fair and took an estimated 2 months/year to maintain Results: Discussion: Conversion to a CMake build system took around 2 developer months of effort to achieve all features on all platforms. This also includes enhancements never before present in the old systems: make install, automatic packaging, symbol visibility, static builds. Our CMake build system works on all platforms and a single source of build-logic informs the entire build process so maintenance going forward will be minimized. Developers on different platforms can use their preferred development environment instead of a 1 size fits all approach. Switching to CMake had other benefits: Out of source build Better build dependencies Support for parallel make over all directories Choosing CMake was the right choice for VisIt since we were able to: Consolidate all build-logic Address portability Target multiple build environments Simplify the installation and packaging process Getting started with CMake does not take much time and projects can increase in complexity as needed. Complexity can be managed by using built-in functions and by reusing macros that set up build targets. We have used CMake to replace 2 build systems, ensuring we have a single up-to-date build system at all times. This reduces errors and frees developers to work on actual source code. This work performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344. LLNL-POST-468557