• Like
Autotools
Upcoming SlideShare
Loading in...5
×

Autotools

  • 319 views
Uploaded on

 

More in: Education , Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
319
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
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 ???