Merge branch 'branch-1.13.2' into maint
[platform/upstream/automake.git] / lib / Automake / Configure_ac.pm
1 # Copyright (C) 2003-2013 Free Software Foundation, Inc.
2
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2, or (at your option)
6 # any later version.
7
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 # GNU General Public License for more details.
12
13 # You should have received a copy of the GNU General Public License
14 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
15
16 ###############################################################
17 # The main copy of this file is in Automake's git repository. #
18 # Updates should be sent to automake-patches@gnu.org.         #
19 ###############################################################
20
21 package Automake::Configure_ac;
22
23 use 5.006;
24 use strict;
25 use Exporter;
26 use Automake::Channels;
27 use Automake::ChannelDefs;
28
29 use vars qw (@ISA @EXPORT);
30
31 @ISA = qw (Exporter);
32 @EXPORT = qw (&find_configure_ac &require_configure_ac);
33
34 =head1 NAME
35
36 Automake::Configure_ac - Locate configure.ac or configure.in.
37
38 =head1 SYNOPSIS
39
40   use Automake::Configure_ac;
41
42   # Try to locate configure.in or configure.ac in the current
43   # directory.  It may be absent.  Complain if both files exist.
44   my $file_name = find_configure_ac;
45
46   # Likewise, but bomb out if the file does not exist.
47   my $file_name = require_configure_ac;
48
49   # Likewise, but in $dir.
50   my $file_name = find_configure_ac ($dir);
51   my $file_name = require_configure_ac ($dir);
52
53 =over 4
54
55 =back
56
57 =head2 Functions
58
59 =over 4
60
61 =item C<$configure_ac = find_configure_ac ([$directory])>
62
63 Find a F<configure.ac> or F<configure.in> file in C<$directory>,
64 defaulting to the current directory.  Complain if both files are present.
65 Return the name of the file found, or the former if neither is present.
66
67 =cut
68
69 sub find_configure_ac (;@)
70 {
71   my ($directory) = @_;
72   $directory ||= '.';
73   my $configure_ac =
74     File::Spec->canonpath (File::Spec->catfile ($directory, 'configure.ac'));
75   my $configure_in =
76     File::Spec->canonpath (File::Spec->catfile ($directory, 'configure.in'));
77
78   if (-f $configure_in)
79     {
80       msg ('obsolete', "autoconf input should be named 'configure.ac'," .
81                        " not 'configure.in'");
82       if (-f $configure_ac)
83         {
84           msg ('unsupported',
85                "'$configure_ac' and '$configure_in' both present.\n"
86                . "proceeding with '$configure_ac'");
87           return $configure_ac
88         }
89       else
90         {
91           return $configure_in;
92         }
93     }
94   return $configure_ac;
95 }
96
97
98 =item C<$configure_ac = require_configure_ac ([$directory])>
99
100 Like C<find_configure_ac>, but fail if neither is present.
101
102 =cut
103
104 sub require_configure_ac (;$)
105 {
106   my $res = find_configure_ac (@_);
107   fatal "'configure.ac' is required" unless -f $res;
108   return $res
109 }
110
111 1;
112
113 ### Setup "GNU" style for perl-mode and cperl-mode.
114 ## Local Variables:
115 ## perl-indent-level: 2
116 ## perl-continued-statement-offset: 2
117 ## perl-continued-brace-offset: 0
118 ## perl-brace-offset: 0
119 ## perl-brace-imaginary-offset: 0
120 ## perl-label-offset: -2
121 ## cperl-indent-level: 2
122 ## cperl-brace-offset: 0
123 ## cperl-continued-brace-offset: 0
124 ## cperl-label-offset: -2
125 ## cperl-extra-newline-before-brace: t
126 ## cperl-merge-trailing-else: nil
127 ## cperl-continued-statement-offset: 2
128 ## End: