Commit | Line | Data |
a0d0e21e |
1 | # This script acts as a simple interface for building extensions. |
2 | # It primarily used by the perl Makefile: |
3 | # |
4 | # d_dummy $(dynamic_ext): miniperl preplibrary FORCE |
5 | # ext/util/make_ext dynamic $@ |
6 | # |
7 | # It may be deleted in a later release of perl so try to |
8 | # avoid using it for other purposes. |
9 | |
10 | linktype=$1 |
11 | extspec=$2 |
12 | |
13 | case $CONFIG in |
14 | '') |
15 | if test -f config.sh; then TOP=.; |
16 | elif test -f ../config.sh; then TOP=..; |
17 | elif test -f ../../config.sh; then TOP=../..; |
18 | elif test -f ../../../config.sh; then TOP=../../..; |
19 | elif test -f ../../../../config.sh; then TOP=../../../..; |
20 | else |
21 | echo "Can't find config.sh generated by Configure"; exit 1 |
22 | fi |
23 | . $TOP/config.sh |
24 | ;; |
25 | esac |
26 | |
27 | if test "X$extspec" = X; then |
28 | echo "make_ext: no extension specified" |
29 | exit 1; |
30 | fi |
31 | |
32 | # convert old style Name.a into ext/Name/Name.a format |
33 | case "$extspec" in |
34 | ext/*) ;; |
35 | *) extspec=`echo "$extspec" | sed -e 's:\(.*\)\.\(.*\):ext/\1/\1.\2:'` |
36 | esac |
37 | |
38 | # get extension directory path, module name and depth |
39 | pname=`echo "$extspec" | sed -e 's:^ext/::' -e 's:/[^/]*$::'` |
40 | mname=`echo "$pname" | sed -e 's!/!::!'` |
41 | depth=`echo "$pname" | sed -e 's![^/][^/]*!..!g'` |
42 | |
43 | if test ! -d "ext/$pname"; then |
44 | echo " Skipping $extspec (directory does not exist)" |
45 | exit 0 # not an error ? |
46 | fi |
47 | |
48 | # check link type and do any preliminaries |
49 | case "$linktype" in |
50 | static) makeargs='CCCDLFLAGS=' ;; |
51 | dynamic) makeargs='' ;; |
52 | *) echo "make_ext: unknown link type '$linktype'"; exit 1;; |
53 | '') echo "make_ext: no link type specified (eg static or dynamic)"; exit 1;; |
54 | esac |
55 | |
56 | echo "" |
57 | echo " Making $mname ($linktype)" |
58 | |
59 | cd ext/$pname |
60 | |
61 | if test ! -f Makefile ; then |
62 | test -f Makefile.PL && ../$depth/miniperl -I../$depth/lib Makefile.PL |
63 | fi |
64 | if test ! -f Makefile ; then |
65 | test -f Makefile.SH && sh Makefile.SH |
66 | fi |
67 | |
68 | make=${altmake-make} |
69 | |
70 | $make config |
71 | |
72 | $make $linktype $makeargs |
73 | |
74 | exit $? |