The R Project SVN R

Rev

Rev 47442 | Rev 47521 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 47442 Rev 47516
Line 2... Line 2...
2
#
2
#
3
# ${R_HOME}/bin/SHLIB
3
# ${R_HOME}/bin/SHLIB
4
 
4
 
5
# @configure_input@
5
# @configure_input@
6
 
6
 
7
revision='$Rev: 47442 $'
-
 
8
version=`set - ${revision}; echo ${2}`
-
 
9
version="R shared library builder r${version}
7
echo 'tools:::.SHLIB()' | R_DEFAULT_PACKAGES=NULL "${R_HOME}/bin/R" --slave --args $@
10
 
8
 
11
Copyright (C) 2000-2007 The R Core Development Team.
-
 
12
This is free software; see the GNU General Public License version 2
-
 
13
or later for copying conditions.  There is NO warranty."
-
 
14
 
-
 
15
usage="Usage: R CMD SHLIB [options] files|linker options
-
 
16
 
-
 
17
Build a shared library for dynamic loading from the specified source or
-
 
18
object files (which are automagically made from their sources) or
-
 
19
linker options.  If not given via '--output', the name for the shared
-
 
20
library is determined from the first source or object file.
-
 
21
 
-
 
22
Options:
-
 
23
  -h, --help		print short help message and exit
-
 
24
  -v, --version		print version info and exit
-
 
25
  -o, --output=LIB	use LIB as (full) name for the built library
-
 
26
  -c, --clean		remove files created during compilation
-
 
27
  --preclean		remove files created during a previous run
-
 
28
 
-
 
29
Report bugs to <r-bugs@r-project.org>."
-
 
30
 
-
 
31
SED=@SED@
-
 
32
R_HOME=`echo ${R_HOME} | ${SED} 's/ /\\\\ /g'`
-
 
33
 
-
 
34
objs=
-
 
35
shlib=
-
 
36
makefiles="-f ${R_SHARE_DIR}/make/shlib.mk"
-
 
37
shlib_libadd='@SHLIB_LIBADD@'
-
 
38
with_cxx=false
-
 
39
with_f77=false
-
 
40
with_f9x=false
-
 
41
with_objc=false
-
 
42
with_objcxx=false
-
 
43
pkg_libs=
-
 
44
clean=false
-
 
45
preclean=false
-
 
46
 
-
 
47
while test -n "${1}"; do
-
 
48
  case ${1} in
-
 
49
    -h|--help)
-
 
50
       echo "${usage}"; exit 0 ;;
-
 
51
    -v|--version)
-
 
52
       echo "${version}"; exit 0 ;;
-
 
53
    -c|--clean)
-
 
54
      clean=true ;;
-
 
55
    --preclean)
-
 
56
      preclean=true ;;
-
 
57
    -o)
-
 
58
      shlib=${2}; shift ;;
-
 
59
    --output=*)
-
 
60
      shlib=`echo "${1}" | ${SED} -e 's/[^=]*=//'` ;;
-
 
61
    *.cc|*.cpp|*.C)
-
 
62
      with_cxx=true
-
 
63
      if test -z "${shlib}"; then
-
 
64
	shlib="`echo ${1} | ${SED} 's/\.[^\.][^\.]*$/@SHLIB_EXT@/'`"
-
 
65
      fi
-
 
66
      objs="${objs} `echo ${1} | ${SED} 's/\.[^\.][^\.]*$/.o/'`"
-
 
67
      ;;
-
 
68
    *.m)
-
 
69
      with_objc=true
-
 
70
      if test -z "${shlib}"; then
-
 
71
	shlib="`echo ${1} | ${SED} 's/\.[^\.][^\.]*$/@SHLIB_EXT@/'`"
-
 
72
      fi
-
 
73
      objs="${objs} `echo ${1} | ${SED} 's/\.[^\.][^\.]*$/.o/'`"
-
 
74
      ;;
-
 
75
    *.mm|*.M)
-
 
76
      with_objcxx=true
-
 
77
      # ObjC++ implies ObjC because we need ObjC runtime
-
 
78
      with_objc=true
-
 
79
      # ObjC++ implies C++ because we use C++ linker
-
 
80
      with_cxx=true
-
 
81
      if test -z "${shlib}"; then
-
 
82
	shlib="`echo ${1} | ${SED} 's/\.[^\.][^\.]*$/@SHLIB_EXT@/'`"
-
 
83
      fi
-
 
84
      objs="${objs} `echo ${1} | ${SED} 's/\.[^\.][^\.]*$/.o/'`"
-
 
85
      ;;
-
 
86
    *.f)
-
 
87
      with_f77=true
-
 
88
      if test -z "${shlib}"; then
-
 
89
	shlib="`echo ${1} | ${SED} 's/\.[^\.][^\.]*$/@SHLIB_EXT@/'`"
-
 
90
      fi
-
 
91
      objs="${objs} `echo ${1} | ${SED} 's/\.[^\.][^\.]*$/.o/'`"
-
 
92
      ;;
-
 
93
    *.f90|*.f95)
-
 
94
      with_f9x=true
-
 
95
      if test -z "${shlib}"; then
-
 
96
	shlib="`echo ${1} | ${SED} 's/\.[^\.][^\.]*$/@SHLIB_EXT@/'`"
-
 
97
      fi
-
 
98
      objs="${objs} `echo ${1} | ${SED} 's/\.[^\.][^\.]*$/.o/'`"
-
 
99
      ;;
-
 
100
    *.[co])
-
 
101
      if test -z "${shlib}"; then
-
 
102
	shlib="`echo ${1} | ${SED} 's/\.[^\.][^\.]*$/@SHLIB_EXT@/'`"
-
 
103
      fi
-
 
104
      objs="${objs} `echo ${1} | ${SED} 's/\.[^\.][^\.]*$/.o/'`"
-
 
105
      ;;
-
 
106
    *)
-
 
107
      pkg_libs="${pkg_libs} ${1}"
-
 
108
    ;;
-
 
109
  esac
-
 
110
  shift
-
 
111
done
-
 
112
 
-
 
113
if test -r "${HOME}/.R/Makevars-${R_PLATFORM}"; then
-
 
114
  makefiles="${makefiles} -f \"${HOME}/.R/Makevars-${R_PLATFORM}\""
-
 
115
elif test -r "${HOME}/.R/Makevars"; then
-
 
116
  makefiles="${makefiles} -f \"${HOME}/.R/Makevars\""
-
 
117
fi
-
 
118
 
-
 
119
makeobjs="OBJECTS=\"${objs}\""
-
 
120
if test -r Makevars; then
-
 
121
  makefiles="-f Makevars ${makefiles}"
-
 
122
  # use of OBJS was replaced by OBJECTS in Aug 2001
-
 
123
  #if grep '^ *OBJS *=' Makevars >/dev/null; then
-
 
124
  #  makeobjs="OBJECTS='\$(OBJS)'"
-
 
125
  #fi
-
 
126
  if grep '^ *OBJECTS *=' Makevars >/dev/null; then
-
 
127
    makeobjs=
-
 
128
  fi
-
 
129
fi
-
 
130
 
-
 
131
makeargs="SHLIB=\"${shlib}\""
-
 
132
if ${with_f9x}; then
-
 
133
    makeargs="SHLIB_LDFLAGS='\$(SHLIB_FCLDFLAGS)' ${makeargs}"
-
 
134
    makeargs="SHLIB_LD='\$(SHLIB_FCLD)' ${makeargs}"
-
 
135
else
-
 
136
  if ${with_cxx}; then
-
 
137
    makeargs="SHLIB_LDFLAGS='\$(SHLIB_CXXLDFLAGS)' ${makeargs}"
-
 
138
    makeargs="SHLIB_LD='\$(SHLIB_CXXLD)' ${makeargs}"
-
 
139
  fi
-
 
140
  if ${with_f77}; then
-
 
141
    if ${with_objc}; then
-
 
142
      shlib_libadd="\$(OBJC_LIBS) ${shlib_libadd}"
-
 
143
    fi
-
 
144
    if test -z "${shlib_libadd}"; then
-
 
145
      makeargs="${makeargs} SHLIB_LIBADD='\$(FLIBS)'"
-
 
146
    else
-
 
147
      makeargs="${makeargs} SHLIB_LIBADD='\$(FLIBS) ${shlib_libadd}'"
-
 
148
    fi
-
 
149
  else
-
 
150
    if ${with_objc}; then
-
 
151
      makeargs="${makeargs} SHLIB_LIBADD='\$(OBJC_LIBS)'"
-
 
152
    fi
-
 
153
  fi
-
 
154
fi
-
 
155
if test -n "${pkg_libs}"; then
-
 
156
  makeargs="${makeargs} PKG_LIBS='${pkg_libs}'"
-
 
157
fi
-
 
158
 
-
 
159
if ${preclean}; then
-
 
160
   eval ${MAKE} ${makefiles} ${makeargs} ${makeobjs} shlib-clean
-
 
161
fi
-
 
162
eval ${MAKE} ${makefiles} ${makeargs} ${makeobjs}
-
 
163
exitstatus=$?
-
 
164
if ${clean}; then
-
 
165
   eval ${MAKE} ${makefiles} ${makeargs} ${makeobjs} shlib-clean
-
 
166
fi
-
 
167
exit ${exitstatus}
-
 
168
 
-
 
169
### Local Variables: ***
-
 
170
### mode: sh ***
-
 
171
### sh-indentation: 2 ***
-
 
172
### End: ***
-