#!/bin/sh
#-----------------------------

. build/functions
. build/version

#-----------------------

ACC_MAJOR=0
ACC_MINOR=1
ACC_PATCH=0

# Settings
#---------------------------
DEBUG=0
FOX17=0


# Default Compiler Settings
# Use environment variables to override
#--------------------------
CXX=${CXX:-g++}
LINK=${LINK:-g++}
CPPFLAGS=${CPPFLAGS:-}
LIBS=${LIBS:-}
LIBPREFIX=${LIBPREFIX:-lib}
LIBEXT=${LIBEXT:-.so}
LIB=${LIB:-lib}
OUTPUTOBJ=${OUTPUTOBJ:--o }
OUTPUTBIN=${OUTPUTBIN:--o }
OBJEXT=${OBJEXT:-.o}

# Overriding Compiler Flags
# Either override GEN_CFLAGS, OPT_CFLAGS and DEBUG_CFLAGS individually
# or set CFLAGS which overrides all them
#-------------------------------------------------------
GEN_CFLAGS=${GEN_CFLAGS:--Wall -Wextra -Wformat=2 -pipe }
OPT_CFLAGS=${OPT_CFLAGS:--O3 -march=native -fstack-protector }
DEBUG_CFLAGS=${DEBUG_CFLAGS:--g -fstack-protector-all}

# Overriding Linker Flags
# Either override GEN_LDFLAGS, OPT_LDFLAGS and DEBUG_LDFLAGS individually
# or set LDFLAGS which overrides all them
#-------------------------------------------------------
GEN_LDFLAGS=${GEN_LDFLAGS:-}
OPT_LDFLAGS=${OPT_LDFLAGS:-}
DEBUG_LDFLAGS=${DEBUG_LDFLAGS:-}

# Parse Command Line Arguments
#-----------------------------
for arg in $@; do
  case $arg in
    --enable-debug*)
      DEBUG=1
      ;;
    --prefix=*)
      PREFIX=${arg#*=}
      ;;
    --fox-prefix=*)
      FOX_PREFIX=${arg#*=}
      pkgconfig_add_path $FOX_PREFIX
      ;;
    --taglib-prefix=*)
      TAGLIB_PREFIX=${arg#*=}
      pkgconfig_add_path $TAGLIB_PREFIX
      ;;
    --mandir=*)
      MANDIR=${arg#*=}
      ;;
    --help|-h)
      echo "Options:"
      echo "   --enable-debug                  Compile with debug information"
      echo "   -h,--help                       Show Help"
      echo " "
      echo "   --fox-prefix=<p>                FOX prefix path"
      echo " "
      echo "Install Directories: "
      echo "   --prefix=<p>                	   Install Prefix (/usr)"
      echo " "
      exit 0
      ;;
  esac
done

#Setup Destination Directories
PREFIX=${PREFIX:-/usr}
BINDIR="${PREFIX}/bin"
MANDIR=${MANDIR:-$PREFIX/share/man}


# Debug / Release Mode
#----------------------
if [ $DEBUG -eq 1 ] ; then
  CFLAGS=${CFLAGS:-$GEN_CFLAGS $DEBUG_CFLAGS}
  LDFLAGS=${LDFLAGS:-$GEN_LDFLAGS $DEBUG_LDFLAGS}
  DEFINES="$DEFINES -DDEBUG"
else
  CFLAGS=${CFLAGS:-$GEN_CFLAGS $OPT_CFLAGS}
  LDFLAGS=${LDFLAGS:-$GEN_LDFLAGS $OPT_LDFLAGS}
  DEFINES="$DEFINES -DNDEBUG"
fi

# So plugins can find header files
CPPFLAGS="-Iinclude -Isrc $CPPFLAGS"

# Needed for ffmpeg

###############################################################################

# Init Config File
#------------------------------
echo "/* Generated by configure utility */"     > src/acconfig.h
echo "#define APPLICATION_MAJOR $MAJOR"         >> src/acconfig.h
echo "#define APPLICATION_MINOR $MINOR"         >> src/acconfig.h
echo "#define APPLICATION_LEVEL $LEVEL"         >> src/acconfig.h
echo "#define APPLICATION_BETA $BETA_APP"       >> src/acconfig.h
echo "#define BUILD_DATE __DATE__"              >> src/acconfig.h
echo "#define BUILD_TIME __TIME__"              >> src/acconfig.h

# Find Libraries
#------------------------
add_required_package "fox17 >= 1.7.48" "fox"
check_reswrap
check_foxversion
add_required_package "taglib >= 1.9" "taglib"


PKG_LDFLAGS=$(pkg-config --libs-only-L $PACKAGES)
PKG_LIBS=$(pkg-config --libs-only-l --libs-only-other $PACKAGES)
PKG_CFLAGS=$(pkg-config --cflags-only-other $PACKAGES)
PKG_CPPFLAGS=$(pkg-config --cflags-only-I $PACKAGES)
if [ -n "$PKG_LDFLAGS"  ] ; then LIBS="$LIBS $PKG_LDFLAGS"; fi
if [ -n "$PKG_LIBS"     ] ; then LIBS="$LIBS $PKG_LIBS"; fi
if [ -n "$PKG_CFLAGS"   ] ; then CFLAGS="$GEN_CFLAGS $PKG_CFLAGS"; fi
if [ -n "$PKG_CPPFLAGS" ] ; then CPPFLAGS="$CPPFLAGS $PKG_CPPFLAGS"; fi


###############################################################################

# Write config file
#--------------------------------------
echo "#Generated by configure utility"                     > config.make
echo "CXX=$CXX"                                           >> config.make
echo "LINK=$LINK"                                         >> config.make
echo "CFLAGS=$CFLAGS"                                     >> config.make
echo "CPPFLAGS=$DEFINES $CPPFLAGS"                        >> config.make
echo "LDFLAGS=$LDFLAGS"                                   >> config.make
echo "LIBS=$LIBS"                                         >> config.make
echo "OUTPUTOBJ=$OUTPUTOBJ"                               >> config.make
echo "OUTPUTBIN=$OUTPUTBIN"                               >> config.make
echo "OBJEXT=$OBJEXT"                                     >> config.make
echo "PREFIX=$PREFIX"                                     >> config.make
echo "MANDIR=$MANDIR"                                     >> config.make

# Print Summary
#------------------------
echo "Install Path:"
echo "  Prefix => $PREFIX"
echo "  Binaries => $BINDIR"
echo "  Man => $MANDIR"

# Success
#--------------------------------------
echo "Done."
echo "Please run \"make\" and \"make install\" to compile and install audioconvert."
exit 0

