[erlang-questions] Use of makefiles

Dave Rafkind dave.rafkind@REDACTED
Thu Feb 28 14:15:05 CET 2008


Alexander Lamb wrote:

> What are the various strategies to manage your build / run or build /  
> deploy cycles?
> 

There is an interesting add-on for SCons here:
http://pupeno.com/software/scons-erlang/


However one day I thought I'd obsolete Make with a bash script (assumes
code in esrc and binaries in ebin):


#!/bin/bash

ERLC=erlc
SOURCE_ROOT=esrc
DEST_ROOT=ebin
# collect source directories
for SOURCE_DIR in `find -L $SOURCE_ROOT -type d`; do
  SOURCE_INCLUDES="$SOURCE_INCLUDES -I $SOURCE_DIR"
done

COMPILE="$ERLC $SOURCE_INCLUDES"

mkdir -p $DEST_ROOT

for SOURCE_TARGET in `find -L $SOURCE_ROOT -name "*.erl"`; do
  DEST_TARGET=${DEST_ROOT}/${SOURCE_TARGET#*/}
  DEST_TARGET=${DEST_TARGET%.erl}.beam
  DEST_PATH=${DEST_TARGET%/*}

  mkdir -p $DEST_PATH

  CMD="$COMPILE -o $DEST_PATH $SOURCE_TARGET"

  if [[ -e $DEST_TARGET ]]
  then
    if [[ $SOURCE_TARGET -nt $DEST_TARGET ]]
    then
      #echo $DEST_TARGET is old, recompiling to $DEST_PATH
      echo "$CMD"
      if $CMD
      then
	# do nothing
	FOO=1
      else
	echo "Compilation halted due to errors."
	exit 1
      fi
    fi
  else
    #echo $DEST_TARGET does not exist, compiling to $DEST_PATH
    echo "$CMD"
    if $CMD
    then
      # do nothing
      FOO=1
    else
      echo "Compilation halted due to errors."
      exit 1
    fi
  fi
done



More information about the erlang-questions mailing list