xref: /trunk/main/bootstrap.1 (revision 476148e50445f36e2a7f3bbbdc200a6c2600a658)
15b501c92SAndrew Rist# *************************************************************
25b501c92SAndrew Rist#
35b501c92SAndrew Rist#  Licensed to the Apache Software Foundation (ASF) under one
45b501c92SAndrew Rist#  or more contributor license agreements.  See the NOTICE file
55b501c92SAndrew Rist#  distributed with this work for additional information
65b501c92SAndrew Rist#  regarding copyright ownership.  The ASF licenses this file
75b501c92SAndrew Rist#  to you under the Apache License, Version 2.0 (the
85b501c92SAndrew Rist#  "License"); you may not use this file except in compliance
95b501c92SAndrew Rist#  with the License.  You may obtain a copy of the License at
105b501c92SAndrew Rist#
115b501c92SAndrew Rist#    http://www.apache.org/licenses/LICENSE-2.0
125b501c92SAndrew Rist#
135b501c92SAndrew Rist#  Unless required by applicable law or agreed to in writing,
145b501c92SAndrew Rist#  software distributed under the License is distributed on an
155b501c92SAndrew Rist#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
165b501c92SAndrew Rist#  KIND, either express or implied.  See the License for the
175b501c92SAndrew Rist#  specific language governing permissions and limitations
185b501c92SAndrew Rist#  under the License.
195b501c92SAndrew Rist#
205b501c92SAndrew Rist# *************************************************************
21cdf0e10cSrcweir
22b63233d8Sdamjanif test -z "${SOLARENV}"; then
23b63233d8Sdamjan    if test -f ./source_soenv.sh; then . ./source_soenv.sh; fi
24b63233d8Sdamjanfi
25b63233d8Sdamjanif test -z "${SOLARENV}"; then
26b63233d8Sdamjan    echo "bootstrap: No environment set!"
27b63233d8Sdamjan    exit 1
28b63233d8Sdamjanfi
29b63233d8Sdamjan
30b63233d8Sdamjan# remove aliases set by *Env.Set.sh
31b63233d8Sdamjanunalias mkout
32b63233d8Sdamjanunalias deliver
33b63233d8Sdamjanunalias build
34b63233d8Sdamjanunalias build_client
35b63233d8Sdamjanunalias zipdep
36b63233d8Sdamjanunalias nmake
37b63233d8Sdamjanunalias gunzip
38b63233d8Sdamjan
39cdf0e10cSrcweir# executables are *.exe for WNT. This variable is necessary since Cygwin 1.5.x
40cdf0e10cSrcweir# Use spawn instead of fork when building dmake on cygwin.
41cdf0e10cSrcweirif test "$GUI" = "WNT"; then
42cdf0e10cSrcweir    EXEEXT=".exe"
43cdf0e10cSrcweirelse
44cdf0e10cSrcweir    EXEEXT=""
45cdf0e10cSrcweirfi
46cdf0e10cSrcweirexport EXEEXT
47cdf0e10cSrcweir
48f0b2c876SAriel Constenla-Hailemkdir -p "$SOLARENV/$INPATH/bin"
49cdf0e10cSrcweir
50cdf0e10cSrcweir#make sure build.pl is executable
51cdf0e10cSrcweir
52cdf0e10cSrcweirchmod +x "$SRC_ROOT/solenv/bin/build.pl"
53cdf0e10cSrcweirchmod +x "$SRC_ROOT/solenv/bin/build_client.pl"
54cdf0e10cSrcweirchmod +x "$SRC_ROOT/solenv/bin/zipdep.pl"
55cdf0e10cSrcweirchmod +x "$SRC_ROOT/solenv/bin/gccinstlib.pl"
56cdf0e10cSrcweir
57566a295dSdamjan# fetch or update external tarballs
58566a295dSdamjanif [ "$DO_FETCH_TARBALLS" = "yes" ]; then
59566a295dSdamjan# check perl include locations
60566a295dSdamjan    "$PERL" -e 'print "\nInclude locations: @INC\n\n"';
611ba082f0SAriel Constenla-Haile    "$PERL" "$SOLARENV/bin/download_external_dependencies.pl" $SRC_ROOT/external_deps.lst
6283e0440aSDamjan Jovanovic    if [ "$?" != "0" ]; then
6383e0440aSDamjan Jovanovic        echo "*** Error downloading external dependencies, please fix the previous problems and try again ***"
6483e0440aSDamjan Jovanovic        exit 1
6583e0440aSDamjan Jovanovic    fi
6637e6b05aSAndre Fischerfi
67fb6b49d1SJürgen Schmidt
68fb6b49d1SJürgen Schmidt# ------------------------------------------------------------------------------
69fb6b49d1SJürgen Schmidt# Build dmake
70fb6b49d1SJürgen Schmidt
71f0b2c876SAriel Constenla-Haileif test -n "$DMAKE_URL" -a  ! -x "$SOLARENV/$INPATH/bin/dmake$EXEEXT"; then
72fb6b49d1SJürgen Schmidt
73564327c4Sdamjan    # Assume that the dmake archive has been downloaded
74fb6b49d1SJürgen Schmidt    # Determine the name of the downloaded file.
75fb6b49d1SJürgen Schmidt    dmake_package_name=`echo $DMAKE_URL | sed "s/^\(.*\/\)//"`
76fb6b49d1SJürgen Schmidt
77f0b2c876SAriel Constenla-Haile    tmp_build_dir="$SOLARENV/$INPATH/misc/build/"
78fb6b49d1SJürgen Schmidt    echo "making and entering $tmp_build_dir"
79fb6b49d1SJürgen Schmidt    # Clean up any residues from a previous and unsuccessful build.
80fb6b49d1SJürgen Schmidt    rm -rf "$tmp_build_dir"
81fb6b49d1SJürgen Schmidt    mkdir -p "$tmp_build_dir"
82fb6b49d1SJürgen Schmidt    cd "$tmp_build_dir" || exit
83fb6b49d1SJürgen Schmidt
84a6ff3988SAndre Fischer    dmake_full_package_name=$(find $TARFILE_LOCATION -type f -name "*-$dmake_package_name")
85a6ff3988SAndre Fischer    if [ -z "$dmake_full_package_name" ]; then
86a6ff3988SAndre Fischer        echo "can not find the dmake package"
87a6ff3988SAndre Fischer        exit
88a6ff3988SAndre Fischer    fi
89fb6b49d1SJürgen Schmidt    if test "$GUI" = "WNT"; then
90fb6b49d1SJürgen Schmidt        dmake_full_package_name=`cygpath -u "$dmake_full_package_name"`
91fb6b49d1SJürgen Schmidt    fi
92fb6b49d1SJürgen Schmidt    echo "unpacking $dmake_full_package_name"
93fb6b49d1SJürgen Schmidt
94fb6b49d1SJürgen Schmidt    # Unpack it.
95fb6b49d1SJürgen Schmidt    case $dmake_package_name in
96fb6b49d1SJürgen Schmidt        *.tar.gz)
97fb6b49d1SJürgen Schmidt            tar -xzf "$dmake_full_package_name"
98fb6b49d1SJürgen Schmidt            dmake_directory_name=`echo $dmake_package_name | sed "s/\(\.tar.gz\)//"`
99fb6b49d1SJürgen Schmidt            ;;
100fb6b49d1SJürgen Schmidt        *.tgz)
101fb6b49d1SJürgen Schmidt            tar -xzf "$dmake_full_package_name"
102fb6b49d1SJürgen Schmidt            dmake_directory_name=`echo $dmake_package_name | sed "s/\(\.tgz\)//"`
103fb6b49d1SJürgen Schmidt            ;;
104fb6b49d1SJürgen Schmidt        *.tar.bz2)
105fb6b49d1SJürgen Schmidt            tar -xjf "$dmake_full_package_name"
106fb6b49d1SJürgen Schmidt            dmake_directory_name=`echo $dmake_package_name | sed "s/\(\.tar.bz2\)//"`
107fb6b49d1SJürgen Schmidt            ;;
108fb6b49d1SJürgen Schmidt        *.zip)
109fb6b49d1SJürgen Schmidt            unzip "$dmake_full_package_name"
110fb6b49d1SJürgen Schmidt            dmake_directory_name=`echo $dmake_package_name | sed "s/\(\.zip\)//"`
111fb6b49d1SJürgen Schmidt            ;;
112fb6b49d1SJürgen Schmidt        *)
113fb6b49d1SJürgen Schmidt            echo "can not unpack the dmake source"
114fb6b49d1SJürgen Schmidt            dmake_directory_name=
115fb6b49d1SJürgen Schmidt            exit 1
116fb6b49d1SJürgen Schmidt            ;;
117fb6b49d1SJürgen Schmidt    esac
118fb6b49d1SJürgen Schmidt
119fb6b49d1SJürgen Schmidt    echo "entering $dmake_directory_name"
120fb6b49d1SJürgen Schmidt    cd "$dmake_directory_name" || exit
121fb6b49d1SJürgen Schmidt
122fb6b49d1SJürgen Schmidt    # Special case! The w32/tcsh build needs CC pointing to the MSVC++ compiler
123fb6b49d1SJürgen Schmidt    # but we need a cygwin/gcc build dmake to understand the posix paths
124fb6b49d1SJürgen Schmidt    if test "$GUI" = "WNT"; then
125fb6b49d1SJürgen Schmidt        CC=""
126fb6b49d1SJürgen Schmidt        CXX=""
127fb6b49d1SJürgen Schmidt        export CC
128fb6b49d1SJürgen Schmidt        export CXX
129fb6b49d1SJürgen Schmidt        DMAKE_CONF="--enable-spawn"
130fb6b49d1SJürgen Schmidt    else
131fb6b49d1SJürgen Schmidt        DMAKE_CONF=""
132fb6b49d1SJürgen Schmidt    fi
133fb6b49d1SJürgen Schmidt
134fb6b49d1SJürgen Schmidt    # For unixy systems
135fb6b49d1SJürgen Schmidt    if test -f "Makefile" ; then
136fb6b49d1SJürgen Schmidt        $GNUMAKE distclean || exit
137fb6b49d1SJürgen Schmidt    fi
138fb6b49d1SJürgen Schmidt
139*fc846c7aSMatthias Seidel    # config.guess and config.sub for dmake are too old, overwrite with ours:
140d7246584SDamjan Jovanovic    cp $SOLARSRC/config.guess .
141*fc846c7aSMatthias Seidel    cp $SOLARSRC/config.sub .
142d7246584SDamjan Jovanovic
143fb6b49d1SJürgen Schmidt    ./configure $DMAKE_CONF || exit
144fb6b49d1SJürgen Schmidt
145fb6b49d1SJürgen Schmidt    ## invoke the gnu make command set by configure.
146fb6b49d1SJürgen Schmidt    $GNUMAKE || exit
147fb6b49d1SJürgen Schmidt
148fb6b49d1SJürgen Schmidt
149fb6b49d1SJürgen Schmidt    # Deploy the dmake executable to solenv
150f0b2c876SAriel Constenla-Haile    cp -f "$tmp_build_dir/$dmake_directory_name/dmake$EXEEXT" "$SOLARENV/$INPATH/bin/dmake$EXEEXT" || exit
151fb6b49d1SJürgen Schmidt    echo ""
152f0b2c876SAriel Constenla-Haile    echo "dmake successfully built and copied to $SOLARENV/$INPATH/bin/dmake$EXEEXT"
153fb6b49d1SJürgen Schmidt    echo ""
154fb6b49d1SJürgen Schmidt
155fb6b49d1SJürgen Schmidt    # Clean up. Note that this is skipped when one of the exits is executed above.
156fb6b49d1SJürgen Schmidt    rm -rf "$tmp_build_dir"
157fb6b49d1SJürgen Schmidt
158aee29faaSAriel Constenla-Haileelif test "$IS_SYSTEM_DMAKE" = "YES"; then
159aee29faaSAriel Constenla-Haile
160aee29faaSAriel Constenla-Haile    echo ""
161aee29faaSAriel Constenla-Haile    echo "dmake is located in search path"
162aee29faaSAriel Constenla-Haile    echo ""
163aee29faaSAriel Constenla-Haile
164f0b2c876SAriel Constenla-Haileelif test -n "$DMAKE_PATH" -a -x "$DMAKE_PATH" -a  ! -x "$SOLARENV/$INPATH/bin/dmake$EXEEXT"; then
165aee29faaSAriel Constenla-Haile
166f0b2c876SAriel Constenla-Haile    cp -f "$DMAKE_PATH" "$SOLARENV/$INPATH/bin/dmake$EXEEXT" || exit
167aee29faaSAriel Constenla-Haile
168aee29faaSAriel Constenla-Haile    echo ""
169f0b2c876SAriel Constenla-Haile    echo "dmake copied to $SOLARENV/$INPATH/bin/dmake$EXEEXT"
170aee29faaSAriel Constenla-Haile    echo ""
171aee29faaSAriel Constenla-Haile
172fb6b49d1SJürgen Schmidtelse
173fb6b49d1SJürgen Schmidt
174f0b2c876SAriel Constenla-Haile    if test -x "$SOLARENV/$INPATH/bin/dmake$EXEEXT"; then
175fb6b49d1SJürgen Schmidt        echo ""
176f0b2c876SAriel Constenla-Haile        echo "dmake present in $SOLARENV/$INPATH/bin/dmake$EXEEXT"
177fb6b49d1SJürgen Schmidt    fi
178fb6b49d1SJürgen Schmidt
179fb6b49d1SJürgen Schmidtfi
180c6dedb65SAndre Fischer
181c6dedb65SAndre Fischer# Download missing extensions.
1821ba082f0SAriel Constenla-Haile"$PERL" "$SOLARENV/bin/download_missing_extensions.pl"
183