Buildsys/Gmake

Total Page:16

File Type:pdf, Size:1020Kb

Buildsys/Gmake buildsys/gmake Daniel Adler January 23, 2013 1 Introduction The GNU Make-based build system of dyncall was one of the first build systems that we have developed side-by-side with the dyncall release. This document gives details on the configuration and build process. Note The number of supported build tools for dyncall has grown. In partic- ular the plain Makefile.embedded make files work across GNU,BSD and SUN make tools (see README.Embedded) and the CMake-based (see README.CMake) are recommented because of simplicty and portability. 2 Usage 2.1 Configuring the project Before building a project, one has to configure the project. ./configure .\configure.bat The configure script creates a top-level ConfigVars that specifies a list of CONIFG * variables. Here's a sample ConfigVars file: CONFIG_OS=windows CONFIG_ARCH=x86 CONFIG_TOOL=gcc BUILD_ASM=as INSTALL_DIR=/usr/local 2.2 Building the project Type gmake or make1 on the shell. 1some platforms use a different Make tool which is accessible as make from the command- line. Platforms that need to use gmake are: Solaris and many BSD platforms. 1 2.3 Phony targets The following targets refer to top-level tasks and should be usable from within the command via make <TARGETNAME>. Target Description "default" Default rule, depends on build "dirs" Traverse sub-directories "build" Build project, depends on dirs "install" Install project, depends on build and dirs "clean" Clean project, depends on dirs 2.4 Creating new build task Create a task folder with sources that include the file GNUmakefile. Specify the variable TOP that gives the relative path to the top-level project directory which contains the buildsys folder (in which buildsys/gmake lives in). Your project settings are embedded between two includes, namely the prolog and the epilog files. # Sample GNUmakefile for buildsys/gmake TOP = ../.. include $(TOP)/buildsys/gmake/prolog.gmake # ... project directory settings goes here ... include $(TOP)/buildsys/gmake/epilog.gmake 2 3 Configuration variables 3.1 BUILD OS Specifies the target operating system or embedded run-time platform: Value Description "android" Google Android "beos" Haiku "cygwin" Cygwin on Microsoft Windows "darwin" Apple Mac OS X/iOS "dragonfly" DragonFly BSD "freebsd" FreeBSD or GNU/kFreeBSD "iphoneos" iPhone OS "linux" Linux "macosx" Mac OS X "minix" Minix "msys" MinGW on Microsoft Windows "nds" Nintendo DS "netbsd" NetBSD "openbsd" OpenBSD "psp" Playstation Portable Homebrew SDK "sunos" SunOS "windows" Microsoft Windows 3.2 BUILD ARCH Specifies the processor architecture: Value Description "arm" ARM "arm32" ARM 32-bit "arm32 arm" ARM 32-bit ARM ISA "arm32 thumb" ARM 32-bit Thumb ISA "ia64" Itanium "mips32" MIPS 32-bit "mips32el" MIPS 32-bit (Little-Endian) "mips64el" MIPS 64-bit (Little-Endian) "ppc32" PowerPC 32-bit "ppc64" PowerPC 64-bit "sparc" SPARC 32-bit "sparc64" SPARC 64-bit "universal" Mac OS X Universal Binaries "x86" X86 32-bit "x64" X86 64-bit 3.3 BUILD TOOL Specifies the build tool chain: 3 Value Description "androidndk" Android NDK "llvm gcc" LLVM with GCC Front-end "gcc" GNU Compiler Collection "pcc" Portable C Compiler "msvc" Microsoft Visual C++ (windows) "pspsdk" Playstation Portable Homebrew SDK 3.4 BUILD ASM Specifies the assembler tool: Value Description "as" GNU Assembler "nasm" NASM Assembler (x86/x64) "ml" Micrsoft Macro Assembler (x86/x64) 3.5 Others Variable name Description BUILD CONFIG Build configuration ("release", "debug") INSTALL PREFIX Installation prefix directory 4 Predefined variables Variable name Description GMAKE TOP Relative path to folder buildsys/gmake BUILD DIR Build directory (e.g. "out-<os>-<arch>-<tool>-<config>") OS-specific APP SUFFIX Application suffix LIB SUFFIX Static library suffix DLL SUFFIX Dynamic linked library suffix Tool-specific LIB PREFIX Static library prefix OBJ SUFFIX Object file suffix All suffixes should include the "." (dot) . 4 5 Project variables Variable name Description TOP Relative path to top directory DIRS Sub-project directory names UNITS List of units to link for target targets TARGET APP Build application name TARGET LIB Build static library name TARGET DLL Build dynamic library name TARGET PDF Build PDF manual (sources in latex) build related ASFLAGS Assembler flags CPPFLAGS C Preprocessor flags CFLAGS C Compiler flags CXXFLAGS C++ Compiler flags LINK Application linker: "c", "c++" or empty (default linker) LINK PATHS List of library paths LINK LIBS List of library names CXX EXCEPTIONS If set to "1", use C++ Exceptions CXX RTTI If set to "1", use C++ Run-time Type Information installation related INSTALL APP If set to "1", install executable to bin install-directory INSTALL LIB If set to "1", install library to lib install-directory INSTALL HEADERS List of header files to copy to include install-directory 5 6 Inclusion order 1. prolog.gmake • Set GMAKE TOP variable • Define "default" rule • Include ConfigVars • Define build value variables (BUILD * * variables) • Define BUILD DIR variable and a mkdir rule. 2. epilog.gmake • Include os/$(BUILD OS).gmake • If BUILD ASM nasm is defined then include tool/nasm.gmake • Include tool/latex.gmake • Include targets.gmake The os-specific gmake files will typically include tool/$(BUILD TOOL).gmake file. The tool-specific gmake file will typically include configuration specific files driven by the BUILD CONFIG define. Other more-specific platforms such as psp and nds might preclude and append additional information depending on platform and tool quirks. 7 OS notes windows gcc and msvc tool-chain support psp gcc only 6.
Recommended publications
  • Free Software an Introduction
    Free Software an Introduction By Steve Riddett using Scribus 1.3.3.12 and Ubuntu 8.10 Contents Famous Free Software...................................................... 2 The Difference.................................................................. 3 Stallman and Torvalds.......................................................4 The Meaning of Distro......................................................5 Linux and the Holy Grail.................................................. 6 Frequently Asked Questions............................................. 7 Where to find out more.....................................................8 2 Free Software - an Introduction Famous Free Software Firefox is a web browser similar to Microsoft's Internet Explorer but made the Free software way. The project started in 2003 from the source code of the Netscape browser which had been released when Netscape went bust. In April 2009, Firefox recorded 29% use worldwide (34% in Europe). Firefox is standards compliant and has a system of add-ons which allow innovative new features to be added by the community. OpenOffice.org is an office suite similar to Microsoft Office. It started life as Star Office. Sun Microsystems realised it was cheaper to buy out Star Office than to pay Microsoft for licence fees for MS Office. Sun then released the source code for Star Office under the name OpenOffice.org. OpenOffice.org is mostly compatible with MS Office file formats, which allows users to open .docs and .xls files in Open Office. Microsoft is working on a plug-in for MS Office that allows it to open .odf files. ODF (Open Document Format) is Open Office's default file format. Once this plug-in is complete there will 100% compatiblity between the two office suites. VLC is the VideoLAN Client. It was originally designed to allow you to watch video over the network.
    [Show full text]
  • Frogpond 37.1 • Winter 2014 (Pdf)
    F ROGPOND T HE JOURNAL OF THE HAIKU SOCIETY OF AMERICA V OLUME 37:1 W INTER 2014 About HSA & Frogpond Subscription / HSA Membership: For adults in the USA, $35; in Canada/Mexico, $37; for seniors and students in North America, $30; for everyone elsewhere, $47. Pay by check on a USA bank or by International Postal Money Order. All subscriptions/memberships are annual, expiring on December 31, and include three issues of Frogpond as well as three newsletters, the members’ anthology, and voting rights. All correspondence regarding new and renewed memberships, changes of address, and requests for information should be directed to the HSA secretary (see the list of RI¿FHUVS). Make checks and money orders payable to Haiku Society of America, Inc. Single Copies of Back Issues: For USA & Canada, $14; for elsewhere, $15 by surface and $20 by airmail. Older issues might cost more, depending on how many are OHIW3OHDVHLQTXLUH¿UVW0DNHFKHFNVSD\DEOHWR+DLNX6RFLHW\RI America, Inc. Send single copy and back issue orders to the Frogpond editor (see p. 3). Contributor Copyright and Acknowledgments: All prior copyrights are retained by contributors. Full rights revert to contributors upon publication in Frogpond. Neither the Haiku 6RFLHW\RI$PHULFDLWVRI¿FHUVQRUWKHHGLWRUDVVXPHUHVSRQVLELOLW\ IRUYLHZVRIFRQWULEXWRUV LQFOXGLQJLWVRZQRI¿FHUV ZKRVHZRUNLV printed in Frogpond, research errors, infringement of copyrights, or failure to make proper acknowledgments. Frogpond Listing and Copyright Information: ISSN 8755-156X Listed in the MLA International Bibliography, Humanities Interna- tional Complete, Poets and Writers. © 2014 by the Haiku Society of America, Inc. Francine Banwarth, Editor Michele Root-Bernstein, Associate Editor Cover Design and Photos: Christopher Patchel.
    [Show full text]
  • Software Process Versus Design Quality: Tug of War? > Architecture Haiku > Designing Resource-Aware Cloud Applications
    > Software Process versus Design Quality: Tug of War? > Architecture Haiku > Designing Resource-Aware Cloud Applications AUGUST 2015 www.computer.org IEEE COMPUTER SOCIETY http://computer.org • +1 714 821 8380 STAFF Editor Manager, Editorial Services Content Development Lee Garber Richard Park Senior Manager, Editorial Services Contributing Editors Robin Baldwin Christine Anthony, Brian Brannon, Carrie Clark Walsh, Brian Kirk, Chris Nelson, Meghan O’Dell, Dennis Taylor, Bonnie Wylie Director, Products and Services Evan Butterfield Production & Design Carmen Flores-Garvey, Monette Velasco, Jennie Zhu-Mai, Senior Advertising Coordinator Mark Bartosik Debbie Sims Circulation: ComputingEdge is published monthly by the IEEE Computer Society. IEEE Headquarters, Three Park Avenue, 17th Floor, New York, NY 10016-5997; IEEE Computer Society Publications Office, 10662 Los Vaqueros Circle, Los Alamitos, CA 90720; voice +1 714 821 8380; fax +1 714 821 4010; IEEE Computer Society Headquarters, 2001 L Street NW, Suite 700, Washington, DC 20036. Postmaster: Send undelivered copies and address changes to IEEE Membership Processing Dept., 445 Hoes Lane, Piscataway, NJ 08855. Application to Mail at Periodicals Postage Prices is pending at New York, New York, and at additional mailing offices. Canadian GST #125634188. Canada Post Corporation (Canadian distribution) publications mail agreement number 40013885. Return undeliverable Canadian addresses to PO Box 122, Niagara Falls, ON L2E 6S8 Canada. Printed in USA. Editorial: Unless otherwise stated, bylined articles, as well as product and service descriptions, reflect the author’s or firm’s opinion. Inclusion in ComputingEdge does not necessarily constitute endorsement by the IEEE or the Computer Society. All submissions are subject to editing for style, clarity, and space.
    [Show full text]
  • Programming UEFI for Dummies Or What I Have Learned While Tweaking Freepascal to Output UEFI Binaries
    Programming UEFI for dummies Or What I have learned while tweaking FreePascal to output UEFI binaries UEFI ● Unified Extensible Firmware Interface ● Specification that define an abstract common interface over firmware ● For short : BIOS replacement What I will discuss ? ● Quick overview of existing UEFI toolchains ● Structure of UEFI executable files ● Structure of UEFI APIs ● Overview of features exposed by UEFI APIs ● Protocols ● Bonus feature... ● What’s next ? Disclaimer notice ● While very important, this presentation will not discuss any security issues of UEFI ● I assume SecureBoot is disabled to use what is presented here Existing toolchains ● Mainly two stacks – TianoCore EDK II – GNU-EFI ● From what I read – Tedious setup process (more than one package) – GNU-EFI is supposed simpler to use (not simple ;-) – Do not require a full cross compiler Binary structure of UEFI application ● Portable Executable binaries (PE32 or PE32+ for x86* and ARM CPUs) ● With a special subsystem code to recognize an UEFI application from a Windows binary – Applications ● EFI_APP (11) : bootloader, baremetal applications... – drivers ● EFI_BOOT (12) : filesystem... ● EFI_RUN (13) : available to OS at runtime UEFI application entry point ● EFI_MAIN( imageHandle: EFI_HANDLE; systemTable : PEFI_SYSTEM_TABLE): EFI_STATUS; ● Same calling convention as the corresponding Windows target ● CPU already in protected mode with flat memory model – On 64 bits, already in long mode – But only one CPU core initialized Overview of EFI_SYSTEM_TABLE ● Access to Input/output/error
    [Show full text]
  • Programming with Haiku
    Programming with Haiku Lesson 5 Written by DarkWyrm All material © 2010 DarkWyrm Let's take some time to put together all of the different bits of code that we've been learning about. Since the first lesson, we have examined the following topics: • Templates • Namespaces • Iterators • The C++ string class • The STL Associative containers: map, set, multimap, and multiset • The STL Sequential containers: vector, deque, and list • The STL Container Adapters: queue and priority_queue • C++ input and output streams, a.k.a cout and friends • Exceptions There is enough material here that a book could be written to get a good, strong understanding of effective use of the Standard Template Library and the Standard C++ Library. Expert use is not our goal for this context, but having a good working knowledge of these topics will help make our code better when writing applications for Haiku. Project: Reading Paladin Projects For those unfamiliar, Paladin is one of the Integrated Development Environments available for Haiku. It was designed to have an interface similar to BeIDE, which was the main IDE for BeOS back in the day. One feature that sets it apart from other IDEs for Haiku is that its unique project file format is a text file with a specific format. This makes it possible to easily migrate to and away from it. The format itself is relatively simple. Each file is a list of key/value entry pairs with one entry per line. This makes it possible to read and interpret the project file progressively. It also increases forward compatibility because new keys can be ignored by older versions of the program.
    [Show full text]
  • Haiku, a Desktop You Can Still Learn From
    Haiku, a desktop you can still learn from No, you didn't steal all our ideas yet ;-) François Revol [email protected] Haiku? ● Free Software Operating System ● Inspired by BeOS ● We use our own kernel & graphics server – Pros: We control the whole stack – Cons: Much harder porting Linux & X11 stuff ● C++ API The Haiku desktop inspiration ● Inherited from BeOS ● Goes waaay back! ● Oh look! A Dock! – Later changed to DeskBar Haiku genealogy ● Poke levenez.com � MacOS 2001 DevEd, MaxEd… BeOS DR1… PR1 … R4 R5.1 ZETA NewOS kernel Unix OpenBeOS Haiku R1? “This looks like 1990 stuff to me” ● Ok, no fancy bubblegum whizzbang ● But that’s faster � ● There’s more to it… Modern features in Haiku \o/ ● Some stuff BeOS didn’t have… ● Layout support ● L10n / I18n Multithreaded app design ● App has several messaging Looper threads – Main thread: BApplication – One thread per BWindow ● app_server – 1 drawing thread per window ● Pros: Responsiveness ● Cons: Correct app design is harder Replicants ● Apps can provide BViews to others ● Host not limited to Tracker – BeHappy doc browser X-ray navigation ● Saves lot of window opening/closing ● Also for Copy/Move Scripting API ● Handlers report supported suites – Not unrelated to Intents on Android � ● Provides GUI controls introspection Node monitoring ● Like inotify but 20y ago ● Yeah, well, Linux didn’t invent it � ● Kernel sends BMessage archives to looper (Extended) Attributes ● Typed ● Xattrs exist in *nix – XDG std but no common API ● Indexable – Each fs has its own – By the fs (no – Nobody cares updatedb…)
    [Show full text]
  • Programming the Be Operating System
    Table of Contents Preface ................................................................................................................... vii 1. BeOS Programming Overview ............................................................. 1 Features of the BeOS ....................................................................................... 1 Structure of the BeOS ...................................................................................... 5 Software Kits and Their Classes ...................................................................... 7 BeOS Programming Fundamentals ............................................................... 13 BeOS Programming Environment ................................................................. 28 2. BeIDE Projects .......................................................................................... 31 Development Environment File Organization .............................................. 31 Examining an Existing BeIDE Project ........................................................... 34 Setting up a New BeIDE Project ................................................................... 47 HelloWorld Source Code ............................................................................... 65 3. BeOS API Overview ................................................................................ 75 Overview of the BeOS Software Kits ............................................................ 75 Software Kit Class Descriptions ....................................................................
    [Show full text]
  • Quarantine Poetry
    Quarantine Poetry A Gift of Joy and Laughter From Mead School’s Poetry Workshop To You March - June 2020 Syllabic Poems Syllabic poems are poems measured by the number of syllables. Haikus are syllabic poems, for instance. HAIKU - Haiku poems are early Japanese poetry that originated with the introduction of writing in Chinese characters, most likely in the fifth century, A.D. In the Japanese tradition, the poems were often sung and had a pattern of dance gestures. Topics common to haiku poetry include: nature, ceremonies, friends and acquaintances, beauty, love, and death. A haiku poem consists of 17 syllables written in three lines with a 5-7-5 syllable pattern. Variations include the: SENRYU - same as haiku but the topics are about politics, social satire, or irony. TANKA - 31 syllables in a five line pattern of 5-7-5-7-7 syllables. CINQUAIN - 22 syllables in a five line pattern of 2-4-6-8-2 syllables. Jade Moore Senryu: What now? Fire alarm rings In case of fire. But what If it is on fire? Haiku: I love spring I stand with the flowers Then my allergies greet us I really hate spring. Austin Shapiro A little birdy Feed me! Starts flying around the house Just give me food! Cat sees little bird I’ve been nothing but good Kitty jumps into the sky Hey human up there, I’m talking! Birdy goes bye bye, munch munch Meow meow! Smack, smack, smack, pillow! A small little frog I hit and hit and beat you with fluff Sitting right next to a dog Feathers everywhere In the creepy fog The bedroom becomes covered The floor is turned to whiteness Rain, rain,
    [Show full text]
  • Technology Websites
    Technology Websites 1. Animoto - Animoto is a video slideshow creator which allows users to upload images and use provided free songs. https://animoto.com/ 2. Anthologize - Anthologize is a plugin that turns WordPress into a platform for publishing electronic texts. http://anthologize.org/ 3. Bubblr – Create comic strips using photos found on flickr http://www.pimpampum.net/en/content/bubblr 4. BuddyPress - BuddyPress in a WordPress add-on that creates social networking features for use on your WP site. https://buddypress.org/ 5. Chatroll – Embed a chatroom into HTML or Canvas http://chatroll.com/ 6. ClassTools: Create free games, quizzes, activities and diagrams in seconds! Host them on your own blog, website or intranet! No signup, no passwords, no charge! http://www.classtools.net/ 7. ClippingMagic – ClippingMagic is a web-based way to crop parts of images with minimal time and effort (very impressive technology). https://clippingmagic.com/ 8. Coggle – Coggle helps sharing complex information by creating mind maps. www.coggle.it 9. Comic Life - Comic Life is a graphic illustrator / comic creating program. http://www.comiclife.com/ 10. Compfight - Compfight is a flikr search engine that locates Creative Commons licensed photos. http://compfight.com/ 11. Evernote - Evernote is a storage/bookmarking website that combines skitch, shoebox, and other software programs. https://evernote.com/ 12. Gigapan – very high resolution images enable online scrolling and zooming to approximate a digital field trip to many international and cultural locations. http://gigapan.com/ 13. Doodle – Scheduling and calendaring functions both in the cloud and integrated with outlook or google calendars http://doodle.com/ 14.
    [Show full text]
  • Learning to Program with Haiku
    Learning to Program with Haiku Lesson 1 Written by DarkWyrm All material © 2010 DarkWyrm Programming involves communicating your ideas to the computer. The only problem is that computers are stupid. They will do exactly what you tell them and NOT what you mean unless what you mean is, in fact, what you have told them. If you don't completely understand that – believe me – you will soon enough. The problem with communicating with the computer is that it doesn't speak any human language. All it knows is what to do when given a particular numerical instruction. For people to do this is very tough, so we write in one language accessible to people and the computer turns it into something it can understand. The translation can be done right when the program is run, called an interpreted language, or beforehand as is done in compiled languages. C and C++ are compiled languages, so when writing C++ programs, you write the human language (source code) and the compiler turns it into computer instructions (machine code). In C++, all computer instructions are grouped together into blocks called functions. Here is an example: void myFunction(void) { } Functions may or may not require data to do their job, and they may or may not give back a result when they are done. This one, called myFunction, requires no data and returns none. It also does nothing, but that's OK. Here's the format for defining a function: <outdata> <functionname>(indata) { <instructions to do the function> } The input data is always inside a pair of parentheses and all of the function's instructions will go inside the pair of curly braces.
    [Show full text]
  • Schedulers University of New Mexico
    Schedulers University of New Mexico https://commons.wikimedia.org/wiki/ File:Simplified_Structure_of_the_Linux_Kern el.svg 2 University of New Mexico O(1) scheduler (older) Two arrays, switching between them is just changing a pointer Uses heuristics to try to know which processes are interactive Average sleep time https://en.wikipedia.org/wiki/O(1)_scheduler 3 University of New Mexico CFS scheduler (currently in Linux) Completely Fair Scheduler Red-black tree of execution to the nanosecond niffies Like weighted fair queuing for packet networks An ideal processor would share equally maximum execution time = time the process has been waiting to run / total number of processes https://en.wikipedia.org/wiki/Completely_Fair_Scheduler 4 University of New Mexico BFS (now MuQQS) Brain “Hug” Scheduler Specifically for desktops Weighted round-robin where the weights are based on some very complex formulae (see Wikipedia for details) No priority modification for sleep behavior Time slice = 6ms (human perception of jitter ≈ 7ms) Performs slightly better than CFS for <16 cores https://en.wikipedia.org/wiki/Brain_Fuck_Scheduler https://lwn.net/Articles/720227/ 5 University of New Mexico Windows NT through 10 ● Multilevel Feedback Queue (MLFQ) 6 University of New Mexico Mac OS X ● XNU is a mix of FreeBSD and Mach – Network, files, processes, POSIX interface, etc. come from FreeBSD – CPU scheduling, memory management, specialized IPC, etc. comes from Mach ● Round-robin and MLFQ schedulers 7 University of New Mexico IOS (i.e., iPhone)
    [Show full text]
  • Minutes of the General Assembly on 13Th December, 2018 (PDF, English)
    Minutes of the General Assembly on 13th December, 2018 Minute taker: Colin Finck ReactOS Deutschland e.V. The General Assembly of the Association “ReactOS Am Bach 11 Deutschland e.V.” took place in the internet (SSL 33378 Rheda-Wiedenbrück, Germany secured IRC server) on 13th December, 2018 at 20:00 [email protected] (local German time). Attendant members • Matthias Kupfer (President of the Association) • Daniel Reimer (Vice President of the Association) • Colin Finck (Treasurer) • Mark Jansen • Amine Khaldi • Thomas Faber • Pierre Schweitzer (from 20:34) Summary of the decisions • Members of the Association plan to represent ReactOS on several events in 2019: ◦ March: Chemnitzer Linux-Tage in Chemnitz, Germany ◦ July: RMLL in Strasbourg, France ◦ December: Open Source Summit in Paris, France • The Association will organize another one-week ReactOS Hackfest in 2019, most likely again around August. Based on the input from Association and project members, there will not be a second official ReactOS Hackfest in the same year. However, the Association may sponsor independently locally organized Hackfests. • The Board has been discharged of its responsibilities. • §7.1 and §7.2 of the Articles of Association have been changed to extend the Board to four persons, adding a second Vice President. • Matthias Kupfer, Daniel Reimer, Pierre Schweitzer, and Colin Finck have been elected as Board members, each with 7 “Yes” votes, 0 “No” votes, and no abstentions. They will serve as President (Matthias Kupfer), Vice President (Daniel Reimer), Vice President (Pierre Schweitzer), and Treasurer (Colin Finck). • All members of the Association agreed to generally enable the compensation of Board members for their work, within the limits given by law and the Articles of Association.
    [Show full text]