# ************************************************************* # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # # ************************************************************* # executables are *.exe for WNT. This variable is necessary since Cygwin 1.5.x # Use spawn instead of fork when building dmake on cygwin. if test "$GUI" = "WNT"; then EXEEXT=".exe" else EXEEXT="" fi export EXEEXT mkdir -p "$SOLARENV/$INPATH/bin" #make sure build.pl is executable chmod +x "$SRC_ROOT/solenv/bin/build.pl" chmod +x "$SRC_ROOT/solenv/bin/build_client.pl" chmod +x "$SRC_ROOT/solenv/bin/zipdep.pl" chmod +x "$SRC_ROOT/solenv/bin/gccinstlib.pl" # fetch or update external tarballs if [ "$DO_FETCH_TARBALLS" = "yes" ]; then "$PERL" "$SOLARENV/bin/download_external_dependencies.pl" $SRC_ROOT/external_deps.lst if [ "$?" != "0" ]; then echo "*** Error downloading external dependencies, please fix the previous problems and try again ***" exit 1 fi fi # ------------------------------------------------------------------------------ # Build dmake if test -n "$DMAKE_URL" -a ! -x "$SOLARENV/$INPATH/bin/dmake$EXEEXT"; then # Assume that the dmake archive has been downloaded by fetch_tarballs.sh # Determine the name of the downloaded file. dmake_package_name=`echo $DMAKE_URL | sed "s/^\(.*\/\)//"` tmp_build_dir="$SOLARENV/$INPATH/misc/build/" echo "making and entering $tmp_build_dir" # Clean up any residues from a previous and unsuccessful build. rm -rf "$tmp_build_dir" mkdir -p "$tmp_build_dir" cd "$tmp_build_dir" || exit dmake_full_package_name=$(find $TARFILE_LOCATION -type f -name "*-$dmake_package_name") if [ -z "$dmake_full_package_name" ]; then echo "can not find the dmake package" exit fi if test "$GUI" = "WNT"; then dmake_full_package_name=`cygpath -u "$dmake_full_package_name"` fi echo "unpacking $dmake_full_package_name" # Unpack it. case $dmake_package_name in *.tar.gz) tar -xzf "$dmake_full_package_name" dmake_directory_name=`echo $dmake_package_name | sed "s/\(\.tar.gz\)//"` ;; *.tgz) tar -xzf "$dmake_full_package_name" dmake_directory_name=`echo $dmake_package_name | sed "s/\(\.tgz\)//"` ;; *.tar.bz2) tar -xjf "$dmake_full_package_name" dmake_directory_name=`echo $dmake_package_name | sed "s/\(\.tar.bz2\)//"` ;; *.zip) unzip "$dmake_full_package_name" dmake_directory_name=`echo $dmake_package_name | sed "s/\(\.zip\)//"` ;; *) echo "can not unpack the dmake source" dmake_directory_name= exit 1 ;; esac echo "entering $dmake_directory_name" cd "$dmake_directory_name" || exit # Special case! The w32/tcsh build needs CC pointing to the MSVC++ compiler # but we need a cygwin/gcc build dmake to understand the posix paths if test "$GUI" = "WNT"; then CC="" CXX="" export CC export CXX DMAKE_CONF="--enable-spawn" else DMAKE_CONF="" fi # For unixy systems if test -f "Makefile" ; then $GNUMAKE distclean || exit fi # The config.guess for dmake is too old, overwrite it with ours: cp $SOLARSRC/config.guess . # We also need to patch dmake for Win64 patch -p0 < $SOLARSRC/solenv/src/dmake-cygwin64.patch ./configure $DMAKE_CONF || exit ## invoke the gnu make command set by configure. $GNUMAKE || exit # Deploy the dmake executable to solenv cp -f "$tmp_build_dir/$dmake_directory_name/dmake$EXEEXT" "$SOLARENV/$INPATH/bin/dmake$EXEEXT" || exit echo "" echo "dmake successfully built and copied to $SOLARENV/$INPATH/bin/dmake$EXEEXT" echo "" # Clean up. Note that this is skipped when one of the exits is executed above. rm -rf "$tmp_build_dir" elif test "$IS_SYSTEM_DMAKE" = "YES"; then echo "" echo "dmake is located in search path" echo "" elif test -n "$DMAKE_PATH" -a -x "$DMAKE_PATH" -a ! -x "$SOLARENV/$INPATH/bin/dmake$EXEEXT"; then cp -f "$DMAKE_PATH" "$SOLARENV/$INPATH/bin/dmake$EXEEXT" || exit echo "" echo "dmake copied to $SOLARENV/$INPATH/bin/dmake$EXEEXT" echo "" else if test -x "$SOLARENV/$INPATH/bin/dmake$EXEEXT"; then echo "" echo "dmake present in $SOLARENV/$INPATH/bin/dmake$EXEEXT" fi fi # Download missing extensions. "$PERL" "$SOLARENV/bin/download_missing_extensions.pl"