Your SlideShare is downloading. ×
Autotools
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Autotools

329
views

Published on

Published in: Education, Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
329
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. GNU autotools and building an app Vibha Yadav
  • 2. Outline
  • 15. Why?
    • Platform Issue
    • 16. Makes the process easier
      • Configure, make, make install
  • 17. GNU Autotools
  • 22. Autogen.sh
    • (a.k.a. buildconf)
    • 23. provides automatic build system preparation
    • 24. POSIX shell script
    • 25. preparing a build system for compilation
    • 26. verifying versions,
    • 27. ensuring necessary functionality
    • 28. common build preparation issues.
  • 29. aclocal
    • combining stock installed macros + user defined macros + `acinclude.m4' -> aclocal.m4
    • 30. to define all of the macros required by `configure.in' in a single file
  • 31. autoconf
    • expands the m4 macros in `configure.in', perhaps using macro definitions from `aclocal.m4' -> generate the configure script.
  • 32. automake
    • tool for automatically generating `Makefile.in' files compliant with the GNU Coding Standards
  • 33. GNU Build Process
  • 34. Autogen.sh srcdir=`dirname $0` test -z &quot;$srcdir&quot; && srcdir=. PKG_NAME=<Package_Name> REQUIRED_AUTOCONF_VERSION=2.58 REQUIRED_AUTOMAKE_VERSION=1.10 REQUIRED_LIBTOOL_VERSION=2.2 REQUIRED_INTLTOOL_VERSION=0.35.5 (test -f $srcdir/configure.ac && test -f $srcdir/ChangeLog && test -d $srcdir/<filename>) || { echo -n &quot;**Error**: Directory &quot;`$srcdir'&quot; does not look like the&quot; echo &quot; top-level $PKG_NAME directory&quot; exit 1 } which gnome-autogen.sh || { echo &quot;You need to install gnome-common from the GNOME CVS&quot; exit 1 } USE_GNOME2_MACROS=1 . gnome-autogen.sh
  • 35. Configure.ac
    • The AC_PREREQ(version) macro can be used to ensure that a recent enough version of the autoconf program is available to process the configure.ac file
    • 36. AC_INIT(package, version, bug-report-address)
        • specifies the name and version of the software package
    • AC_SUBST exports variable into generated files
    • 37. PKG_CHECK_MODULES(prefix, list-of-modules, action-if-found, action-if-not-found) checks for programs
    • 38. AC_CHECK_LIB checks for libraries
    • 39. AC_CHECK_HEADERS checks for header files
    • 40. AC_PROG_CC checks for compiler characteristics
    • 41. AC_CHECK_FUNCS checks for library functions
    • 42. AC_CONFIG_FILES([file...])
    • 43. AC_OUTPUT
    • 44. dnl Comment … …
  • 45. Makefile.am
    • bin_PROGRAMS = foo
    • foo_SOURCES=foo.c foo.h
    • foo_CPPFLAGS = lib_CFLAGS
    • 46. foo_LIBADD = lib_LIBS
    • 47. noinst_PROGRAMS=test
    • 48. EXTRA_DIST=disclaimer.txt
  • 49. Make targets
    • dist Builds a tarball (.tar.gz) for distribution
    • 50. distcheck Builds a tarball, then tries to compile it
    • 51. clean Deletes the results of compilation (object files and executables), but may not delete some generated files that come with the distribution.
    • 52. install Creates installation directories if needed, and copies the software into them.
    • 53. uninstall Reverses the install (deletes installed files).
    • 54. distclean Reverse the effects of the configure script and the all target; that is, revert a tarball to its pristine state.
    • 55. mostlyclean Nearly the same as clean, but leaves some object files that most likely don't need to be rebuilt.
    • 56. maintainer-clean More thorough than clean; may delete some files that require special tools to rebuild, such as machine-generated source code.
    • 57. check Runs a test suite if you have one
  • 58. LibTool
    • used for creating portable compiled libraries
    • 59. GNU Libtool simplifies the developer's job by encapsulating both the platform-specific dependencies, and the user interface, in a single script. GNU Libtool is designed so that the complete functionality of each host type is available via a generic interface, but nasty quirks are hidden from the programmer.
    • 60. GNU Libtool's interface aims to be consistent. Users are not expected to read low-level documentation in order to have a source package build shared libraries. They should only have to run the package's configure script (or equivalent), and Libtool should take care of the details.
  • 61. References
    • http://developer.gnome.org/doc/GGAD/z70.html
    • 62. http://sourceware.org/autobook/autobook/autobook_75.html
    • 63. http://en.wikipedia.org/wiki/GNU_build_system
  • 64. Questions ???