summaryrefslogtreecommitdiff
path: root/bin/run
blob: be78c38d55e6f3334b4a9b030621d7402df52bc4 (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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/bin/sh
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#

# simple wrapper script to run non-installed executables from workdir

print_usage()
{
    echo "This utility can be used to run the executables in this folder:"
    echo
    echo "  workdir/LinkTarget/Executable"
    echo
    echo "Usage:"
    echo
    echo "  ./bin/run application [parameters]|--list|--help"
    echo
    echo "Use --list (same as -list or -l) to get the list of executables"
    echo "Use --help (same as -help or -h) to get this help"
}

list_executables()
{
    echo "Listing executables inside workdir/LinkTarget/Executable folder:"
    if uname | grep -i CYGWIN >/dev/null
    then
        echo
        find workdir/LinkTarget/Executable -iname "*.bat" -printf "%P\n"
        find workdir/LinkTarget/Executable -iname "*.exe" -printf "%P\n"
    else
        find workdir/LinkTarget/Executable -executable -printf "%P\n"
    fi
}

print_executable_name()
{
    echo "Setting env variables and running workdir/LinkTarget/Executable/$1"
}

setdefaults()
{
    dir=$(realpath "$(pwd)")

    while test ! -d "${dir}/instdir/program" ; do
        if test "${dir}" = "/"; then
            echo "error: cannot find \"program\" dir from \"$(pwd)\""
            exit 1
        fi
        dir=$(realpath "${dir}/..")
    done

    exedir="${dir}"/workdir/LinkTarget/Executable
    export URE_BOOTSTRAP=file://"${dir}"/instdir/program/fundamentalrc
}

case "$1" in
    ""|"-h"|"-help"|"--help")
        print_usage; exit 1;;
    "-l"|"-list"|"--list")
        list_executables; exit 0;;
    *) print_executable_name $1;;
esac

if uname | grep -i CYGWIN >/dev/null; then

    setdefaults

    exedir=$(cygpath -m "${dir}"/workdir/LinkTarget/Executable)
    export URE_BOOTSTRAP=file:///$(cygpath -m "${dir}")/instdir/program/fundamental.ini
    export PATH="${dir}/instdir/program${PATH:+:$PATH}"
    SEARCH_PATH="${PATH}"

elif [ $(uname) = Darwin ]; then

    dir=$(pwd)

    # Get PRODUCTNAME from config_host.mk, LibreOffice or LibreOfficeDev
    eval `grep 'export PRODUCTNAME=' config_host.mk`

    if [ ! -d "${dir}/instdir/$PRODUCTNAME.app" ]; then
        echo "error: cannot find \"instdir/$PRODUCTNAME.app\" dir in \"$(pwd)\""
        exit 1
    fi

    exedir="$dir"/workdir/LinkTarget/Executable
    export URE_BOOTSTRAP=file://"${dir}"/instdir/$PRODUCTNAME.app/Contents/Resources/fundamentalrc
    export DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH:+$DYLD_LIBRARY_PATH:}"${dir}"/instdir/$PRODUCTNAME.app/Contents/Frameworks
    SEARCH_PATH="${DYLD_LIBRARY_PATH}"

elif [ $(uname) = Haiku ]; then

    setdefaults

    export LIBRARY_PATH=${LIBRARY_PATH:+$LIBRARY_PATH:}"${dir}"/instdir/program
    SEARCH_PATH="${LIBRARY_PATH}"

else

    setdefaults

    export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}"${dir}"/instdir/program
    SEARCH_PATH="${LD_LIBRARY_PATH}"

fi

# echo "setting URE_BOOTSTRAP to: ${URE_BOOTSTRAP}"
# echo "setting search path to: ${SEARCH_PATH}"
# echo "execing: ${exedir}/$1"

exec ${LO_TRACE} "${exedir}/$@"

# vi:set shiftwidth=4 expandtab: