Giter VIP home page Giter VIP logo

aiekick / acrobatomaticbuildsystem Goto Github PK

View Code? Open in Web Editor NEW

This project forked from seeduvax/acrobatomaticbuildsystem

0.0 1.0 0.0 3.71 MB

Gmake based project management and build system. Main features: compile, build, package, manage dependencies, all automated.

License: Other

Makefile 50.67% XSLT 2.95% C++ 6.89% Shell 4.01% Java 0.88% Python 7.99% TeX 0.06% Ada 0.13% HTML 0.66% Crystal 22.48% NASL 0.04% Verilog 2.56% VHDL 0.31% C 0.37%

acrobatomaticbuildsystem's Introduction

Acrobatomatic Build System

logo

What

Acrobatic Build System (ABS) is a generic build and packaging system for software. It supports many language and many targets. To be compatible, a project shall match the file and directory organization ABS expects. ABS is mainly made of a set of makefiles (GNU make to be used to run those makefiles). It is completed by some common commands available from any (near) posix like system (including cygwin and mingw) to handle some advance features such as downloading dependencies, running tests, packaging and publishing builds. Among the features are:

  • multi language support: C/C++, java, python.
  • generation of source code skeletons from templates: C++ class, unit test class
  • target architecture handling (including cross compilation)
  • dependencies management
  • binaries identification and traceability
  • auto installable package generation.
  • configuration management helpers and automation for continuous integration.

Why

During my years of coding I used many tools to manage and build projects, from the basic script or makefile to more featured more or less automatic product like autoconf/automake, cmake or maven/ant but never felt comfortable with any:

  • makefile generators (autoconf/automake / cmake) were to difficult to use for the new comer and I met many troubles from version incompatibility.
  • more featured tools like maven are language dependant and often require xml files that involve huge overhead for the everyday edition of project configuration.
  • many of those tools are not commonly available and by default installed. Working in constrained places were internet access is not directly available, being able to install new package becomes a major issue.

One day I realized the GNU implementation of make provides many macro and text function that enable automatic targets definitions from the source tree content: look at subst, wildcard and ifeq that let you really code a complete build automation. So why use something more, just use gmake at its full power. By the time I had hacked collected many macros in a file to be reused by more and more projects. By the time, almost all the build rules were provided by a few generic makefile leaving in it almost nothing else than few variable and identifier. After some further standardization of my projects' layout, sometime inspired by other (in particular maven), ABS was there.

Getting started

To create an new project to be managed with ABS, perform the following steps:

  • create a new empty directory for your project and enter this directory.
  • copy the file core/bootstrap.mk from the abs source tree as Makefile.
  • create and edit a file named app.cfg including at least the following content:
APPNAME:=appname
V_ABS:=3.0
ABS_REPO:=http://www.eduvax.net/dist

  • create a new module for your project with make newmod modulename
  • start coding and build your new module... See ABS documentation (html, pdf), introduction slides and the sampleprj directory from the abs source tree for more information and example of use. You may also check my other projects (available at github) for more concrete and complete use case.

Licensing

Acrobatomatic Build System is released under a BSD license. See LICENSE file included in the source file tree for the exact license definition. This licensing policy does not involve any constraint nor restriction on projects using ABS as is or with modifications.

acrobatomaticbuildsystem's People

Contributors

flohgh avatar fred322 avatar seeduvax avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.