summaryrefslogtreecommitdiff
path: root/modules/tclsci/macros/gettklib.sci
blob: bbf91a321bb846f6dc8e77f0148f0f961a1d801f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
// Copyright (C) INRIA
//
// This file must be used under the terms of the CeCILL.
// This source file is licensed as described in the file COPYING, which
// you should have received as part of this distribution.  The terms
// are also available at
// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt


function tklib=gettklib()
    tklib = [];
    tcltkver = TCL_GetVersion("numbers");
    // don't use string() but msprintf because of format() - see bug 3602
    major = msprintf("%d",tcltkver(1));
    minor = msprintf("%d",tcltkver(2));
    if getos() == "Windows" then
        tklib = "tk" + major + minor + getdynlibext();
    else
        cur_verbose = ilib_verbose();
        ilib_verbose(0);

        // In the binary version libtk8.X.so has been copied in
        // the SCI/bin directory and scilab script add SCI/bin
        // to the LD_LIBRARY_PATH (or SHLIB_PATH).
        // So, If libtk8.X.so (or .sl) exists in SCI/bin ... it's ok
        libname = "libtk" + major + "." + minor;
        if isfile("SCI/bin/"+libname+getdynlibext()) then
            tklib = libname + getdynlibext();
            ilib_verbose(cur_verbose);
            return;
        end
        cmd ="link(''"+libname+getdynlibext()+"'')";
        ierr = execstr(cmd, "errcatch");
        if (ierr == 0) then
            tklib = libname + getdynlibext();
        else
            cmd ="link(''"+libname+getdynlibext()+".0'')";
            ierr = execstr(cmd, "errcatch");
            if (ierr == 0) then
                tklib = libname + getdynlibext() + ".0";
            else
                warning(msprintf(gettext("Error %s while loading library %s"),lasterror(),libname+getdynlibext()));
            end
        end

        ilib_verbose(cur_verbose);

        clear libname;
        clear cmd;
    end
    clear tcltkver;
    clear major;
    clear minor;
endfunction