summaryrefslogblamecommitdiff
path: root/packaging/nacl/ports/openssl/build.sh
blob: 3e0d973de4b04c0cf7e4b551dc8c21088f3d0e6e (plain) (tree)










































































                                                                               
#!/bin/bash
# Copyright (c) 2012 The Native Client Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# The openssl build can fail when build with -jN.
# TODO(sbc): Remove this if/when openssl is upgraded to a version that supports
# parallel make.
OS_JOBS=1
BUILD_DIR=${SRC_DIR}
INSTALL_TARGETS="install_sw INSTALL_PREFIX=${DESTDIR}"

ConfigureStep() {
  if [ "${NACL_SHARED}" = "1" ] ; then
    local EXTRA_ARGS="shared"
  else
    local EXTRA_ARGS="no-dso"
  fi

  if [ "${NACL_LIBC}" = "newlib" ] ; then
    EXTRA_ARGS+=" -I${NACLPORTS_INCLUDE}/glibc-compat"
    # The default from MACHINE=i686 is linux-elf, which links things
    # with -ldl. However, newlib does not have -ldl. In that case,
    # make a fake machine where the build rule does not use -ldl.
    local machine="le32newlib"
  else
    local machine="i686"
  fi

  MACHINE=${machine} CC=${NACLCC} AR=${NACLAR} RANLIB=${NACLRANLIB} \
    LogExecute ./config \
    --prefix=${PREFIX} no-asm no-hw no-krb5 ${EXTRA_ARGS} -D_GNU_SOURCE

  HackStepForNewlib
}


HackStepForNewlib() {
  if [ "${NACL_SHARED}" = "1" ]; then
    git checkout apps/Makefile
    git checkout test/Makefile
    return
  fi

  # apps/Makefile links programs that require socket(), etc.
  # Stub it out until we link against nacl_io or something.
  echo "all clean install: " > apps/Makefile
  # test/Makefile is similar -- stub out, but keep the original for testing.
  git checkout test/Makefile
  mv test/Makefile test/Makefile.orig
  echo "all clean install: " > test/Makefile
}


BuildStep() {
  LogExecute make clean
  DefaultBuildStep
}


InstallStep() {
  DefaultInstallStep
  # openssl (for some reason) installs shared libraries with 555 (i.e.
  # not writable.  This causes issues when create_nmf copies the libraries
  # and then tries to overwrite them later.
  if [ "${NACL_SHARED}" = "1" ] ; then
    LogExecute chmod 644 ${DESTDIR_LIB}/libssl.so.*
    LogExecute chmod 644 ${DESTDIR_LIB}/libcrypto.so.*
  fi
}


TestStep() {
  return 0
}