CS 715: the Design and Implementation of Gnu Compiler Generation Framework

Total Page:16

File Type:pdf, Size:1020Kb

CS 715: the Design and Implementation of Gnu Compiler Generation Framework CS 715 Gnu Compiler Collection: Outline 1/55 Outline CS 715: The Design and Implementation of Gnu Compiler Generation Framework Uday Khedker • An Overview of Compilation Introduction, compilation sequence, compilation models GCC Resource Center, • Department of Computer Science and Engineering, GCC: The Great Compiler Challenge Indian Institute of Technology, Bombay Difficulties in understanding GCC • Meeting the GCC Challenge: CS 715 The course plan January 2011 Uday Khedker GRC, IIT Bombay CS 715 Gnu Compiler Collection: Introduction to Compilation 2/55 Binding Nothing is known except the problem Overall strategy, algorithm, data structures etc. Functions, variables, their types etc. Part 1 No.of Machine instructions, registers etc. unbound Introduction to Compilation objects Addresses of functions, external data etc. Actual addresses of code and data Values of variables Conceptualisation Coding Compiling Linking Loading Execution Time Uday Khedker GRC, IIT Bombay CS 715 Gnu Compiler Collection: Introduction to Compilation 3/55 CS 715 Gnu Compiler Collection: Introduction to Compilation 4/55 Implementation Mechanisms Implementation Mechanisms as “Bridges” • “Gap” between the “levels” of program specification and execution State : Variables Source Program Source Program Program Specification Operations: Expressions, Input Data Control Flow Translator Interpreter Translation Interpretation Target Program Machine State : Memory, Machine Registers Machine Operations: Machine Instructions Uday Khedker GRC, IIT Bombay Uday Khedker GRC, IIT Bombay CS 715 Gnu Compiler Collection: Introduction to Compilation 5/55 CS 715 Gnu Compiler Collection: Introduction to Compilation 5/55 High and Low Level Abstractions High and Low Level Abstractions Condition Input C statement Input C statement False Part a = b<10?b:c; a = b<10?b:c; True Part Spim Assembly Equivalent Spim Assembly Equivalent lw $t0,4($fp) ; t0<-b # Is b smaller lw $t0,4($fp) ; t0<-b # Is b smaller slti $t0, $t0, 10 ; t0 <- t0 < 10 # than 10? slti $t0, $t0, 10 ; t0 <- t0 < 10 # than 10? not $t0,$t0 ; t0<-!t0 not $t0,$t0 ; t0<-!t0 bgtz $t0, L0: ; if t0>=0 goto L0 bgtz $t0, L0: ; if t0>=0 goto L0 lw $t0,4($fp) ; t0<-b # YES lw $t0,4($fp) ; t0<-b # YES b L1: ; gotoL1 b L1: ; gotoL1 L0: lw $t0, 8($fp) ;L0: t0 <- c # NO L0: lw $t0, 8($fp) ;L0: t0 <- c # NO L1: sw 0($fp), $t0 ;L1: a <- t0 L1: sw 0($fp), $t0 ;L1: a <- t0 Uday Khedker GRC, IIT Bombay Uday Khedker GRC, IIT Bombay CS 715 Gnu Compiler Collection: Introduction to Compilation 5/55 CS 715 Gnu Compiler Collection: Introduction to Compilation 6/55 High and Low Level Abstractions Implementation Mechanisms NOT Condition Conditional jump Fall through • Translation = Analysis + Synthesis True Part Input C statement Interpretation = Analysis + Execution a = b<10?b:c; False Part Equivalent Spim Assembly Equivalent • Translation Instructions lw $t0,4($fp) ; t0<-b # Is b smaller Instructions slti $t0, $t0, 10 ; t0 <- t0 < 10 # than 10? not $t0,$t0 ; t0<-!t0 bgtz $t0, L0: ; if t0>=0 goto L0 Actions Implied lw $t0,4($fp) ; t0<-b # YES Interpretation Instructions b L1: ; gotoL1 by Instructions L0: lw $t0, 8($fp) ;L0: t0 <- c # NO L1: sw 0($fp), $t0 ;L1: a <- t0 Uday Khedker GRC, IIT Bombay Uday Khedker GRC, IIT Bombay CS 715 Gnu Compiler Collection: Introduction to Compilation 7/55 CS 715 Gnu Compiler Collection: Introduction to Compilation 8/55 Language Implementation Models Language Processor Models Back Synthesis Compilation End C,C++ Front Optimizer Analysis End Fall through Conditional jump Virtual Java, C# Execution Interpretation Machine Uday Khedker GRC, IIT Bombay Uday Khedker GRC, IIT Bombay CS 715 Gnu Compiler Collection: Introduction to Compilation 9/55 CS 715 Gnu Compiler Collection: Introduction to Compilation 10/55 Typical Front Ends Typical Back Ends AST or Linear IR Source Parser + Symbol Table m/c Ind. Program IR Register AST Allocator Parse Tokens Tree m/c Ind. m/c Code m/c m/c Dep.Instruction Ind. Dep. Semantic Optimizer IR Generator IR OptimizerScheduler Scanner Analyzer − Compile time − Instruction Selection Peephole evaluations − Local Reg Allocation Optimizer − Eliminating − Choice of Order of Symtab Error redundant Evaluation Handler Handler computations Assembly Code Uday Khedker GRC, IIT Bombay Uday Khedker GRC, IIT Bombay CS 715 Gnu Compiler Collection: An Overview of Compilation Phases 11/55 The Structure of a Simple Compiler FrontEnd BackEnd Part 2 Instruction Assembly An Overview of Compilation Phases Parser AST Selector Insn Emitter Assembly Semantic Symtab Register Program Scanner Analyser Handler Allocator Source Program Uday Khedker GRC, IIT Bombay CS 715 Gnu Compiler Collection: An Overview of Compilation Phases 12/55 CS 715 Gnu Compiler Collection: An Overview of Compilation Phases 13/55 Translation Sequence in Our Compiler: Parsing Translation Sequence in Our Compiler: Semantic Analysis a=b<10?b:c; AsgnStmnt a=b<10?b:c; AsgnStmnt = Input Input name ; ; ?: (int) Lhs = E Lhs = E (a,int) < name E E : E name E E : E name name ? ? (bool) (b,int) (c,int) E < E name name E < E name name name num name num name num (b,int) (10,int) Parse Tree Parse Tree Abstract Syntax Tree (with attributes) Issues: • Grammar rules, terminals, non-terminals Issues: • Order of application of grammar rules • Symbol tables eg. is it (a = b<10?) followed by (b:c)? Have variables been declared? What are their types? What is their scope? • Values of terminal symbols • eg. string “10” vs. integer number 10. Type consistency of operators and operands The result of computing b<10? is bool and not int Uday Khedker GRC, IIT Bombay Uday Khedker GRC, IIT Bombay CS 715 Gnu Compiler Collection: An Overview of Compilation Phases 14/55 CS 715 Gnu Compiler Collection: An Overview of Compilation Phases 15/55 Translation Sequence in Our Compiler: IR Generation Translation Sequence in Our Compiler: Instruction Selection a=b<10?b:c; AsgnStmnt = a=b<10?b:c; AsgnStmnt = Input name Input name ; (a,int) ?: (int) ; (a,int) ?: (int) Tree List Lhs = E Tree List Lhs = E = < = < name E ? E : E name name name E ? E : E name name < (bool) (b,int) (c,int) < (bool) (b,int) (c,int) T0 T0 E E E E 10 < name name 10 < name name b name num b name num IfGoto IfGoto name num (b,int) (10,int) name num (b,int) (10,int) Not L0: Parse Tree Abstract Syntax Tree Not L0: Parse Tree Abstract Syntax Tree (with attributes) (with attributes) T0 T0 = Issues: = Instruction List Issues: T T ← 1 b • 1 b T0 b • Cover trees with as few Goto Convert to maximal trees which can be Goto T ← T < 10 0 0 machine instructions as implemented without altering control flow T0 ← ! T0 L1: L1: possible Simplifies instruction selection and scheduling, if T0 > 0 goto L0: L0: = L0: = ← register allocation etc. T1 b • Use temporaries and local T1 c T1 c goto L1: = • = registers L1: Linearise control flow by flattening nested L1: L0: T1 ← c ← a T1 control constructs a T1 L1: a T1 Uday Khedker GRC, IIT Bombay Uday Khedker GRC, IIT Bombay CS 715 Gnu Compiler Collection: An Overview of Compilation Phases 16/55 Translation Sequence in Our Compiler: Emitting Instructions a=b<10?b:c; AsgnStmnt = Input name Issues: ; (a,int) ?: (int) Tree List Lhs = E = • Offsets of variables in the < Part 3 name E ? E : E name name < stack frame (bool) (b,int) (c,int) T0 E E 10 • < name name b Actual register numbers name num IfGoto Compilation Models, nameand num assembly mnemonics (b,int) (10,int) Not L0: • Parse Tree Abstract Syntax Tree Code to construct and (with attributes) Instruction Selection, and T0 discard activation records = Instruction List Assembly Code Retargetability T1 b T0 ← b lw $t0, 4($fp) Goto T0 ← T0 < 10 slti $t0, $t0, 10 T ← ! T not $t0, $t0 L1: 0 0 if T > 0 goto L0: bgtz $t0, L0: L0: = 0 T1 ← b lw $t0, 4($fp) T1 c goto L1: b L1: = L1: L0: T1 ← c L0: lw $t0, 8($fp) ← a T1 L1: a T1 L1: sw 0($fp), $t0 Uday Khedker GRC, IIT Bombay CSGnu 715 Compiler Collection: Compilation Models, Instruction Selection, and Retargetability 17/55 CSGnu 715 Compiler Collection: Compilation Models, Instruction Selection, and Retargetability 18/55 Compilation Models Retargetability in Aho Ullman Model Aho Ullman Davidson Fraser Model Model Aho Ullman: Instruction selection Front End Front End Input Source Program Front End • over optimized IR using Instruction selection AST • over optimized IR using AST • intelligent tree tiling based AST algorithms • intelligent tree tiling based algorithms Expander Optimizer Optimizer Key idea in retargetability: Davidson Fraser: Instruction selection register transfers m/c indep. IR • Machine independent IR is expressed in the m/c indep. IR • over AST using form of trees • Optimizer • simple full tree matching based Code Machine instructions are described in the Code algorithms that generate Generator form of trees register transfers Generator • naive code which is • Trees in the IR are tiled using the instruction ◮ machine dependent, and is Recognizer Target Program trees Target Program ◮ optimized subsequently Target Program Uday Khedker GRC, IIT Bombay Uday Khedker GRC, IIT Bombay CSGnu 715 Compiler Collection: Compilation Models, Instruction Selection, and Retargetability 19/55 CSGnu 715 Compiler Collection: Compilation Models, Instruction Selection, and Retargetability 20/55 Retargetability in Davidson Fraser Model Full Tree Matching (Davidson Fraser Model) Front End Instructions are viewed as independent non-composable rules Instruction selection AST • over AST using Machine Instructions Subject Tree (IR) Modified Trees • simple full tree matching based algorithms Expander = that generate
Recommended publications
  • User's Manual
    Management Number:OUCMC-super-技術-007-06 National University Corporation Osaka University Cybermedia Center User's manual NEC First Government & Public Solutions Division Summary 1. System Overview ................................................................................................. 1 1.1. Overall System View ....................................................................................... 1 1.2. Thress types of Computiong Environments ........................................................ 2 1.2.1. General-purpose CPU environment .............................................................. 2 1.2.2. Vector computing environment ................................................................... 3 1.2.3. GPGPU computing environment .................................................................. 5 1.3. Three types of Storage Areas ........................................................................... 6 1.3.1. Features.................................................................................................. 6 1.3.2. Various Data Access Methods ..................................................................... 6 1.4. Three types of Front-end nodes ....................................................................... 7 1.4.1. Features.................................................................................................. 7 1.4.2. HPC Front-end ......................................................................................... 7 1.4.1. HPDA Front-end ......................................................................................
    [Show full text]
  • Source Code Trees in the VALLEY of THE
    PROGRAMMING GNOME Source code trees IN THE VALLEY OF THE CODETHORSTEN FISCHER So you’ve just like the one in Listing 1. Not too complex, eh? written yet another Unfortunately, creating a Makefile isn’t always the terrific GNOME best solution, as assumptions on programs program. Great! But locations, path names and others things may not be does it, like so many true in all cases, forcing the user to edit the file in other great programs, order to get it to work properly. lack something in terms of ease of installation? Even the Listing 1: A simple Makefile for a GNOME 1: CC=/usr/bin/gcc best and easiest to use programs 2: CFLAGS=`gnome-config —cflags gnome gnomeui` will cause headaches if you have to 3: LDFLAGS=`gnome-config —libs gnome gnomeui` type in lines like this, 4: OBJ=example.o one.o two.o 5: BINARIES=example With the help of gcc -c sourcee.c gnome-config —libs —cflags 6: gnome gnomeui gnomecanvaspixbuf -o sourcee.o 7: all: $(BINARIES) Automake and Autoconf, 8: you can create easily perhaps repeated for each of the files, and maybe 9: example: $(OBJ) with additional compiler flags too, only to then 10: $(CC) $(LDFLAGS) -o $@ $(OBJ) installed source code demand that everything is linked. And at the end, 11: do you then also have to copy the finished binary 12: .c.o: text trees. Read on to 13: $(CC) $(CFLAGS) -c $< manually into the destination directory? Instead, 14: find out how. wouldn’t you rather have an easy, portable and 15: clean: quick installation process? Well, you can – if you 16: rm -rf $(OBJ) $(BINARIES) know how.
    [Show full text]
  • Red Hat Enterprise Linux 6 Developer Guide
    Red Hat Enterprise Linux 6 Developer Guide An introduction to application development tools in Red Hat Enterprise Linux 6 Dave Brolley William Cohen Roland Grunberg Aldy Hernandez Karsten Hopp Jakub Jelinek Developer Guide Jeff Johnston Benjamin Kosnik Aleksander Kurtakov Chris Moller Phil Muldoon Andrew Overholt Charley Wang Kent Sebastian Red Hat Enterprise Linux 6 Developer Guide An introduction to application development tools in Red Hat Enterprise Linux 6 Edition 0 Author Dave Brolley [email protected] Author William Cohen [email protected] Author Roland Grunberg [email protected] Author Aldy Hernandez [email protected] Author Karsten Hopp [email protected] Author Jakub Jelinek [email protected] Author Jeff Johnston [email protected] Author Benjamin Kosnik [email protected] Author Aleksander Kurtakov [email protected] Author Chris Moller [email protected] Author Phil Muldoon [email protected] Author Andrew Overholt [email protected] Author Charley Wang [email protected] Author Kent Sebastian [email protected] Editor Don Domingo [email protected] Editor Jacquelynn East [email protected] Copyright © 2010 Red Hat, Inc. and others. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
    [Show full text]
  • Ethereal Developer's Guide Draft 0.0.2 (15684) for Ethereal 0.10.11
    Ethereal Developer's Guide Draft 0.0.2 (15684) for Ethereal 0.10.11 Ulf Lamping, Ethereal Developer's Guide: Draft 0.0.2 (15684) for Ethere- al 0.10.11 by Ulf Lamping Copyright © 2004-2005 Ulf Lamping Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 or any later version published by the Free Software Foundation. All logos and trademarks in this document are property of their respective owner. Table of Contents Preface .............................................................................................................................. vii 1. Foreword ............................................................................................................... vii 2. Who should read this document? ............................................................................... viii 3. Acknowledgements ................................................................................................... ix 4. About this document .................................................................................................. x 5. Where to get the latest copy of this document? ............................................................... xi 6. Providing feedback about this document ...................................................................... xii I. Ethereal Build Environment ................................................................................................14 1. Introduction .............................................................................................................15
    [Show full text]
  • The GNU Compiler Collection on Zseries
    The GNU Compiler Collection on zSeries Dr. Ulrich Weigand Linux for zSeries Development, IBM Lab Böblingen [email protected] Agenda GNU Compiler Collection History and features Architecture overview GCC on zSeries History and current status zSeries specific features and challenges Using GCC GCC optimization settings GCC inline assembly Future of GCC GCC and Linux Apache Samba mount cvs binutils gdb gcc Linux ls grep Kernel glibc DB2 GNU - essentials UDB SAP R/3 Unix - tools Applications GCC History Timeline January 1984: Start of the GNU project May 1987: Release of GCC 1.0 February 1992: Release of GCC 2.0 August 1997: EGCS project announced November 1997: Release of EGCS 1.0 April 1999: EGCS / GCC merge July 1999: Release of GCC 2.95 June 2001: Release of GCC 3.0 May/August 2002: Release of GCC 3.1/3.2 March 2003: Release of GCC 3.3 (estimated) GCC Features Supported Languages part of GCC distribution: C, C++, Objective C Fortran 77 Java Ada distributed separately: Pascal Modula-3 under development: Fortran 95 Cobol GCC Features (cont.) Supported CPU targets i386, ia64, rs6000, s390 sparc, alpha, mips, arm, pa-risc, m68k, m88k many embedded targets Supported OS bindings Unix: Linux, *BSD, AIX, Solaris, HP/UX, Tru64, Irix, SCO DOS/Windows, Darwin (MacOS X) embedded targets and others Supported modes of operation native compiler cross-compiler 'Canadian cross' builds GCC Architecture: Overview C C++ Fortran Java ... front-end front-end front-end front-end tree Optimizer rtx i386 s390 rs6000 sparc ... back-end back-end back-end
    [Show full text]
  • The GNOME Desktop Environment
    The GNOME desktop environment Miguel de Icaza ([email protected]) Instituto de Ciencias Nucleares, UNAM Elliot Lee ([email protected]) Federico Mena ([email protected]) Instituto de Ciencias Nucleares, UNAM Tom Tromey ([email protected]) April 27, 1998 Abstract We present an overview of the free GNU Network Object Model Environment (GNOME). GNOME is a suite of X11 GUI applications that provides joy to users and hackers alike. It has been designed for extensibility and automation by using CORBA and scripting languages throughout the code. GNOME is licensed under the terms of the GNU GPL and the GNU LGPL and has been developed on the Internet by a loosely-coupled team of programmers. 1 Motivation Free operating systems1 are excellent at providing server-class services, and so are often the ideal choice for a server machine. However, the lack of a consistent user interface and of consumer-targeted applications has prevented free operating systems from reaching the vast majority of users — the desktop users. As such, the benefits of free software have only been enjoyed by the technically savvy computer user community. Most users are still locked into proprietary solutions for their desktop environments. By using GNOME, free operating systems will have a complete, user-friendly desktop which will provide users with powerful and easy-to-use graphical applications. Many people have suggested that the cause for the lack of free user-oriented appli- cations is that these do not provide enough excitement to hackers, as opposed to system- level programming. Since most of the GNOME code had to be written by hackers, we kept them happy: the magic recipe here is to design GNOME around an adrenaline response by trying to use exciting models and ideas in the applications.
    [Show full text]
  • Why and How I Use Lilypond Daniel F
    Why and How I Use LilyPond Daniel F. Savarese Version 1.1 Copyright © 2018 Daniel F. Savarese1 even with an academic discount. I never got my money's Introduction worth out of it. At the time I couldn't explain exactly why, but I was never productive using it. In June of 2017, I received an email from someone using my classical guitar transcriptions inquiring about how I Years later, when I started playing piano, I upgraded to use LilyPond2 to typeset (or engrave) music. He was the latest version of Finale and suddenly found it easier dissatisfied with his existing WYSIWYG3 commercial to produce scores using the software. It had nothing to software and was looking for alternatives. He was im- do with new features in the product. After notating eight pressed with the appearance of my transcription of Lá- original piano compositions, I realized that my previous grima and wondered if I would share the source for it difficulties had to do with the idiosyncratic requirements and my other transcriptions. of guitar music that were not well-supported by the soft- ware. Nevertheless, note entry and the overall user inter- I sent the inquirer a lengthy response explaining that I'd face of Finale were tedious. I appreciated how accurate like to share the source for my transcriptions, but that it the MIDI playback could be with respect to dynamics, wouldn't be readily usable by anyone given the rather tempo changes, articulations, and so on. But I had little involved set of support files and programs I've built to need for MIDI output.
    [Show full text]
  • DMI-HIRLAM on the NEC SX-6
    DMI-HIRLAM on the NEC SX-6 Maryanne Kmit Meteorological Research Division Danish Meteorological Institute Lyngbyvej 100 DK-2100 Copenhagen Ø Denmark 11th Workshop on the Use of High Performance Computing in Meteorology 25-29 October 2004 Outline • Danish Meteorological Institute (DMI) • Applications run on NEC SX-6 cluster • The NEC SX-6 cluster and access to it • DMI-HIRLAM - geographic areas, versions, and improvements • Strategy for utilization and operation of the system DMI - the Danish Meteorological Institute DMI’s mission: • Making observations • Communicating them to the general public • Developing scientific meteorology DMI’s responsibilities: • Serving the meteorological needs of the kingdom of Denmark • Denmark, the Faroes and Greenland, including territorial waters and airspace • Predicting and monitoring weather, climate and environmental conditions, on land and at sea Applications running on the NEC SX-6 cluster Operational usage: • Long DMI-HIRLAM forecasts 4 times a day • Wave model forecasts for the North Atlantic, the Danish waters, and for the Mediterranean Sea 4 times a day • Trajectory particle model and ozone forecasts for air quality Research usage: • Global climate simulations • Regional climate simulations • Research and development of operational and climate codes Cluster interconnect GE−int Completely closed Connection to GE−ext Switch internal network institute network Switch GE GE nec1 nec2 nec3 nec4 nec5 nec6 nec7 nec8 GE GE neci1 neci2 FC 4*1Gbit/s FC links per node azusa1 asama1 FC McData FC 4*1Gbit/s FC links per azusa fiber channel switch 8*1Gbit/s FC links per asama azusa2 asama2 FC 2*1Gbit/s FC links per lun Disk#0 Disk#1 Disk#2 Disk#3 Cluster specifications • NEC SX-6 (nec[12345678]) : 64M8 (8 vector nodes with 8 CPU each) – Desc.
    [Show full text]
  • Autotools Tutorial
    Autotools Tutorial Mengke HU ECE Department Drexel University ASPITRG Group Meeting Outline 1 Introduction 2 GNU Coding standards 3 Autoconf 4 Automake 5 Libtools 6 Demonstration The Basics of Autotools 1 The purpose of autotools I It serves the needs of your users (checking platform and libraries; compiling and installing ). I It makes your project incredibly portablefor dierent system platforms. 2 Why should we use autotools: I A lot of free softwares target Linux operating system. I Autotools allow your project to build successfully on future versions or distributions with virtually no changes to the build scripts. The Basics of Autotools 1 The purpose of autotools I It serves the needs of your users (checking platform and libraries; compiling and installing ). I It makes your project incredibly portablefor dierent system platforms. 2 Why should we use autotools: I A lot of free softwares target Linux operating system. I Autotools allow your project to build successfully on future versions or distributions with virtually no changes to the build scripts. The Basics of Autotools 1 3 GNU packages for GNU build system I Autoconf Generate a conguration script for a project I Automake Simplify the process of creating consistent and functional makeles I Libtool Provides an abstraction for the portable creation of shared libraries 2 Basic steps (commends) to build and install software I tar -zxvf package_name-version.tar.gz I cd package_name-version I ./congure I make I sudo make install The Basics of Autotools 1 3 GNU packages for GNU build
    [Show full text]
  • 1 What Is Gimp? 3 2 Default Short Cuts and Dynamic Keybinding 9
    GUM The Gimp User Manual version 1.0.0 Karin Kylander & Olof S Kylander legalities Legalities The Gimp user manual may be reproduced and distributed, subject to the fol- lowing conditions: Copyright © 1997 1998 by Karin Kylander Copyright © 1998 by Olof S Kylander E-mail: [email protected] (summer 98 [email protected]) The Gimp User Manual is an open document; you may reproduce it under the terms of the Graphic Documentation Project Copying Licence (aka GDPL) as published by Frozenriver. This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANT- ABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Graphic Documentation Project Copying License for more details. GRAPHIC DOCUMENTATION PROJECT COPYING LICENSE The following copyright license applies to all works by the Graphic Docu- mentation Project. Please read the license carefully---it is similar to the GNU General Public License, but there are several conditions in it that differ from what you may be used to. The Graphic Documentation Project manuals may be reproduced and distrib- uted in whole, subject to the following conditions: The Gimp User Manual Page i Legalities All Graphic Documentation Project manuals are copyrighted by their respective authors. THEY ARE NOT IN THE PUBLIC DOMAIN. • The copyright notice above and this permission notice must be preserved complete. • All work done under the Graphic Documentation Project Copying License must be available in source code for anyone who wants to obtain it. The source code for a work means the preferred form of the work for making modifications to it.
    [Show full text]
  • Open Source License and Copyright Information for Gplv3 and Lgplv3
    Open Source License and Copyright Information for GPLv3/LGPLv3 Dell EMC PowerStore Open Source License and Copyright Information for GPLv3/LGPLv3 June 2021 Rev A02 Revisions Revisions Date Description May 2020 Initial release December 2020 Version updates for some licenses, and addition and deletion of other components June, 2021 Version updates for some licenses, and addition and deletion of other components The information in this publication is provided “as is.” Dell Inc. makes no representations or warranties of any kind with respect to the information in this publication, and specifically disclaims implied warranties of merchantability or fitness for a particular purpose. Use, copying, and distribution of any software described in this publication requires an applicable software license. Copyright © 2020-2021 Dell Inc. or its subsidiaries. All Rights Reserved. Dell Technologies, Dell, EMC, Dell EMC and other trademarks are trademarks of Dell Inc. or its subsidiaries. Other trademarks may be trademarks of their respective owners. [6/1/2021] [Open Source License and Copyright Information for GPLv3/LGPLv3] [Rev A02] 2 Dell EMC PowerStore: Open Source License and Copyright Information for GPLv3/LGPLv3 Table of contents Table of contents Revisions............................................................................................................................................................................. 2 Table of contents ...............................................................................................................................................................
    [Show full text]
  • Download Chapter 3: "Configuring Your Project with Autoconf"
    CONFIGURING YOUR PROJECT WITH AUTOCONF Come my friends, ’Tis not too late to seek a newer world. —Alfred, Lord Tennyson, “Ulysses” Because Automake and Libtool are essen- tially add-on components to the original Autoconf framework, it’s useful to spend some time focusing on using Autoconf without Automake and Libtool. This will provide a fair amount of insight into how Autoconf operates by exposing aspects of the tool that are often hidden by Automake. Before Automake came along, Autoconf was used alone. In fact, many legacy open source projects never made the transition from Autoconf to the full GNU Autotools suite. As a result, it’s not unusual to find a file called configure.in (the original Autoconf naming convention) as well as handwritten Makefile.in templates in older open source projects. In this chapter, I’ll show you how to add an Autoconf build system to an existing project. I’ll spend most of this chapter talking about the fundamental features of Autoconf, and in Chapter 4, I’ll go into much more detail about how some of the more complex Autoconf macros work and how to properly use them. Throughout this process, we’ll continue using the Jupiter project as our example. Autotools © 2010 by John Calcote Autoconf Configuration Scripts The input to the autoconf program is shell script sprinkled with macro calls. The input stream must also include the definitions of all referenced macros—both those that Autoconf provides and those that you write yourself. The macro language used in Autoconf is called M4. (The name means M, plus 4 more letters, or the word Macro.1) The m4 utility is a general-purpose macro language processor originally written by Brian Kernighan and Dennis Ritchie in 1977.
    [Show full text]