Giter Club home page Giter Club logo

hello-ac's Introduction

Helloac (Hello, Autoconf) example project

Simple project with library using old libtool automake and autoconf.

Basic concepts

To understand autoconf properly one need to know that there are actually two source distributions:

  1. Maintainer source
  2. End user source

Maintainer is one who develops this project and is commiting new version to repository. Maintainer needs to have installed additionally libtool, autoconf and automake to be capable to regenerate target script files (for example configure script) from templates (for example configure.in).

End user is one who just wants to build binary in his Unix environment from source. End user need just to have installed C compiler and make tool.

Setup

Tested under:

  • scratchbox environment for ARM in following configuration:

    sb-conf show warpcomm
       Compiler: arm-linux-cs2010q1-202
       Devkits: autotools-legacy mtd python-legacy qemu svn git
       CPU-transparency: /scratchbox/devkits/qemu/bin/qemu-arm-sb
    
    
  • Debian 6.0.6/i386 - intentionally - to have good chance that it will work also under above scratchbox (which was confirmed)

  • Debian 9.8/amd64 - to verify backward compatibility. NOTE: Please ignore warning:

    autoconf input should be named 'configure.ac', not 'configure.in'
    

    This is our drawback because of full backward compatibility with old Linux versions.

Both end user and maintainer need to install basic development tools:

sudo apt-get install build-essential

Maintainer needs to additionally install:

sudo apt-get install libtool autoconf automake 

Here are necessary steps to build from repository - like maintainer.

To prepare all build scripts from this source code issue:

libtoolize
aclocal
automake -a
autoconf

Or just run:

./maintainer-setup.sh

Building sample project

For end-user: download and extract helloac-1.0.tar.gz for example using:

mkdir ~/projects
cd ~/projects
wget https://github.com/hpaluch-pil/hello-ac/archive/helloac-1.0.tar.gz
tar xzf helloac-1.0.tar.gz
cd hello-ac-helloac-1.0
# and continue below:

These steps are used for both end user and maintainer:

Example:

./configure --prefix=/opt/helloac-1.0
make
sudo make install

Create end-user source distribution

Issue this command to create source distribution archive:

make dist

And distribute created helloac-1.0.tar.gz archive. The end user than just isse ./configure and make command without need to install libtool, autoconf or automake.

Re-bootstrap

If you (as maintainer) modify any of configure.in, Makefile.am you should run this command sequence to refresh generated files:

automake; aclocal; autoconf

Maintainer clean

To clean all files that are not needed in git repository you can use this command:

./maintainer-clean.sh

WARNING!

It will work only if there is Makefile (that is the ./configure script was already run before)

Libtool versioning

WARNING!

Libtool uses its own versioning system in form current:revision:age instead of common linker major:minor:patch.

Please see for more information:

Resources

hello-ac's People

Contributors

hpaluch-pil 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.