94262180e6408aea00844f162a4cb3d4640f23aa
[scilab.git] / scilab / modules / dynamic_link / src / scripts / scicompile.sh
1 #!/bin/sh
2
3 #
4 # scicompile.sh --
5 #   Consider the Makefile.orig as a template and create the Makefile
6 #   so that the current project compiles.
7 #   Process two template lines of the Makefile.orig :
8 #   - "libsciexternal_la_SOURCES = foo.c foo2.f foo3.cxx foo4.cpp foo5.f90" is 
9 #      processed so that it reflects the file names given as arguments #2 to the end
10 #   - "am_libsciexternal_la_OBJECTS = foo.lo foo2.lo foo3.lo foo4.lo foo5.lo" is 
11 #      processed so that it reflects the list of object files
12 #   - "sciexternal" is replaced with the real name of the library, given as argument #1
13 # Arguments
14 #   $1 : the name of the library, e.g. mylib
15 #   $2,$3, etc... : the names of the source files to compile, e.g. file1.c file2.c
16 #
17 ORIGINALLIBNAME=libsciexternal
18
19 if test ! -s Makefile.orig; then 
20         echo "The compiler detection has been performed. Please launch compilerDetection.sh before."
21         exit -1
22 fi
23
24 # Check number of parameters
25 if test $# -lt 2; then
26         echo "Syntax : $0 libname sources"
27         exit -2
28 fi
29
30 # retrieve parameters
31 LIB=$1
32 shift
33 SOURCES_TEMP=$*
34
35 # Check if files really exist and removes include files
36 for file in $SOURCES_TEMP; do
37         CFILE=`echo $file|sed -e 's|\.o$|\.c|g'`
38         FFILE=`echo $file|sed -e 's|\.o$|\.f|g'`
39         if [ ! -s $file -a -s $CFILE -a -s $FFILE ]; then 
40                 echo "Error: Cannot find $file"
41                 exit -3
42         fi
43         # It is an include file, do not build it!
44         if [ ! `echo $file|grep -i -E "(\.h$|\.hh$|\.hxx$|\.H$)"` ]; then
45                 SOURCES="$SOURCES $file"
46         fi
47 done
48
49 # Replace fake filenames to the one we want 
50 sed -e "s|libsciexternal_la_SOURCES = foo.c foo2.f foo3.cxx foo4.cpp foo5.f90|lib"$LIB"_la_SOURCES = $SOURCES|g" Makefile.orig > Makefile
51
52 ##┬áReplace sources by .lo file (manage also when it is at the end of the line
53 SOURCES=`echo $SOURCES|sed -e 's|\.c |\.lo |g' -e 's|\.c$|\.lo|g'`
54 SOURCES=`echo $SOURCES|sed -e 's|\.f |\.lo |g' -e 's|\.f$|\.lo|g'`
55 SOURCES=`echo $SOURCES|sed -e 's|\.cxx |\.lo |g' -e 's|\.cxx$|\.lo|g'`
56 SOURCES=`echo $SOURCES|sed -e 's|\.f90 |\.lo |g' -e 's|\.f90$|\.lo|g'`
57 SOURCES=`echo $SOURCES|sed -e 's|\.cpp |\.lo |g' -e 's|\.cpp$|\.lo|g'`
58
59 # Makefile.swap is used because there is no inline option with sed under Solaris 
60
61 ### Changes objects in the source code
62 sed -e "s|am_libsciexternal_la_OBJECTS = foo.lo foo2.lo foo3.lo foo4.lo foo5.lo|am_lib"$LIB"_la_OBJECTS = $SOURCES|g" Makefile > Makefile.swap
63 mv  Makefile.swap Makefile
64
65 ### Changes objects in the source code
66 sed -e "s|libsciexternal|lib"$LIB"|g" Makefile > Makefile.swap
67 mv  Makefile.swap Makefile
68
69 ###´┐ŻRemove the dependencies computed by the system
70 # No longer used because of  --disable-dependency-tracking when calling 
71 # ./configure (comment left here : we never know)
72 #sed -e "s|^include\(.*\)Plo||" Makefile > Makefile.swap
73 #mv  Makefile.swap Makefile
74
75