This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Backport #28202 and #28263
[metaconfig.git] / U / installdirs / bin.U
1 ?RCS: $Id: bin.U,v 3.1 1999/07/09 18:20:13 doughera Exp doughera $
2 ?RCS:
3 ?RCS: Copyright (c) 1991-1993, Raphael Manfredi
4 ?RCS:
5 ?RCS: You may redistribute only under the terms of the Artistic Licence,
6 ?RCS: as specified in the README file that comes with the distribution.
7 ?RCS: You may reuse parts of this distribution only within the terms of
8 ?RCS: that same Artistic Licence; a copy of which may be found at the root
9 ?RCS: of the source tree for dist 3.0.
10 ?RCS:
11 ?RCS: $Log: bin.U,v $
12 ?RCS: Revision 3.1  1999/07/09 18:20:13  doughera
13 ?RCS: Updated for installprefix
14 ?RCS:
15 ?RCS: Revision 3.0.1.4  1995/09/25  09:15:32  ram
16 ?RCS: patch59: unit is now forced to the top of Configure, if possible
17 ?RCS:
18 ?RCS: Revision 3.0.1.3  1995/01/30  14:32:40  ram
19 ?RCS: patch49: can now handle installation prefix changes (from WED)
20 ?RCS:
21 ?RCS: Revision 3.0.1.2  1994/08/29  16:05:28  ram
22 ?RCS: patch32: now uses installation prefix
23 ?RCS:
24 ?RCS: Revision 3.0.1.1  1993/09/13  15:56:51  ram
25 ?RCS: patch10: made prompting more explicit (WAD)
26 ?RCS:
27 ?RCS: Revision 3.0  1993/08/18  12:05:26  ram
28 ?RCS: Baseline for dist 3.0 netwide release.
29 ?RCS:
30 ?MAKE:bin binexp installbin userelocatableinc initialinstalllocation: \
31         Myread Prefixit Getfile Setvar Setprefixvar Oldconfig \
32         test prefix prefixexp
33 ?MAKE:  -pick add $@ %<
34 ?LINT:change prefix
35 ?LINT:change prefixexp
36 ?LINT:change prefixvar
37 ?LINT:change installprefixexp
38 ?Y:TOP
39 ?D:bin=''
40 ?S:bin:
41 ?S:     This variable holds the name of the directory in which the user wants
42 ?S:     to put publicly executable images for the package in question.  It
43 ?S:     is most often a local directory such as /usr/local/bin. Programs using
44 ?S:     this variable must be prepared to deal with ~name substitution.
45 ?S:.
46 ?D:binexp=''
47 ?S:binexp:
48 ?S:     This is the same as the bin variable, but is filename expanded at
49 ?S:     configuration time, for use in your makefiles.
50 ?S:.
51 ?D:installbin=''
52 ?S:installbin:
53 ?S:     This variable is the same as binexp unless AFS is running in which case
54 ?S:     the user is explicitely prompted for it. This variable should always
55 ?S:     be used in your makefiles for maximum portability.
56 ?S:.
57 ?D:userelocatableinc=''
58 ?S:userelocatableinc:
59 ?S:     This variable is set to true to indicate that perl should relocate
60 ?S:     @INC entries at runtime based on the path to the perl binary.
61 ?S:     Any @INC paths starting ".../" are relocated relative to the directory
62 ?S:     containing the perl binary, and a logical cleanup of the path is then
63 ?S:     made around the join point (removing "dir/../" pairs)
64 ?S:.
65 ?S:initialinstalllocation:
66 ?S:     When userelocatableinc is true, this variable holds the location
67 ?S:     that make install should copy the perl binary to, with all the
68 ?S:     run-time relocatable paths calculated from this at install time.
69 ?S:     When used, it is initialised to the original value of binexp, and
70 ?S:     then binexp is set to '.../', as the other binaries are found
71 ?S:     relative to the perl binary.
72 ?S:.
73 ?C:BIN:
74 ?C:     This symbol holds the path of the bin directory where the package will
75 ?C:     be installed. Program must be prepared to deal with ~name substitution.
76 ?C:.
77 ?C:BIN_EXP:
78 ?C:     This symbol is the filename expanded version of the BIN symbol, for
79 ?C:     programs that do not want to deal with that at run-time.
80 ?C:.
81 ?C:PERL_RELOCATABLE_INC:
82 ?C:     This symbol, if defined, indicates that we'd like to relocate entries
83 ?C:     in @INC at run time based on the location of the perl binary.
84 ?C:.
85 ?H:#define BIN "$bin"   /**/
86 ?H:#define BIN_EXP "$binexp"    /**/
87 ?H:#define PERL_RELOCATABLE_INC "$userelocatableinc"            /**/
88 ?H:.
89 ?D:bin='/usr/local/bin'
90 : determine where public executables go
91 echo " "
92 set dflt bin bin
93 eval $prefixit
94 fn=d~
95 rp='Pathname where the public executables will reside?'
96 . ./getfile
97 if $test "X$ansexp" != "X$binexp"; then
98         installbin=''
99 fi
100 prefixvar=bin
101 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
102 : XXX If this is fixed, also fix the "start perl" hunk below, which relies on
103 :     this via initialinstalllocation
104 . ./setprefixvar
105
106 case "$userelocatableinc" in
107 $define|true|[yY]*)     dflt='y' ;;
108 *)                      dflt='n' ;;
109 esac
110 cat <<EOM
111
112 Would you like to build Perl so that the installation is relocatable, so that
113 library paths in @INC are determined relative to the path of the perl binary?
114 This is not advised for system Perl installs, or if you need to run setid
115 scripts or scripts under taint mode.
116
117 If this doesn't make any sense to you, just accept the default '$dflt'.
118 EOM
119 rp='Use relocatable @INC?'
120 . ./myread
121 case "$ans" in
122 y|Y)    val="$define" ;;
123 *)      val="$undef"  ;;
124 esac
125 set userelocatableinc
126 eval $setvar
127
128 initialinstalllocation="$binexp"
129 : Default prefix is now "up one level from where the binaries are"
130 case "$userelocatableinc" in
131 $define|true|[yY]*)
132     bin=".../"
133     binexp=".../"
134     prefix=".../.."
135     prefixexp=".../.."
136     installprefixexp=".../.."
137     ;;
138 esac
139