From 2621513e8afc0233fb91dc2e22a20a9e8f3f97cd Mon Sep 17 00:00:00 2001
From: Patrick Godwin <patrick.godwin@ligo.org>
Date: Mon, 1 Oct 2018 14:30:10 -0700
Subject: [PATCH] add O3/optimized folder in inspiral with gcc/icc makefiles +
 gstreamer 1.14 patch

---
 .../optimized/Makefile.ligosoftware_gcc_deps  | 442 ++++++++++
 .../Makefile.ligosoftware_gcc_gstlal          | 508 +++++++++++
 .../optimized/Makefile.ligosoftware_icc_all   | 794 ++++++++++++++++++
 .../share/O3/optimized/gst1.14.patch          | 352 ++++++++
 4 files changed, 2096 insertions(+)
 create mode 100644 gstlal-inspiral/share/O3/optimized/Makefile.ligosoftware_gcc_deps
 create mode 100644 gstlal-inspiral/share/O3/optimized/Makefile.ligosoftware_gcc_gstlal
 create mode 100644 gstlal-inspiral/share/O3/optimized/Makefile.ligosoftware_icc_all
 create mode 100644 gstlal-inspiral/share/O3/optimized/gst1.14.patch

diff --git a/gstlal-inspiral/share/O3/optimized/Makefile.ligosoftware_gcc_deps b/gstlal-inspiral/share/O3/optimized/Makefile.ligosoftware_gcc_deps
new file mode 100644
index 0000000000..ba99c1ba6a
--- /dev/null
+++ b/gstlal-inspiral/share/O3/optimized/Makefile.ligosoftware_gcc_deps
@@ -0,0 +1,442 @@
+SHELL := /bin/bash # Use bash syntax
+#
+# To run: make env.sh, then source the resulting environment file and run: make
+#
+# Example command:
+# make deps_env.sh -f Makefile.ligosoftware_gcc_deps
+# source deps_env.sh
+# time make gds -f Makefile.ligosoftware_gcc_deps 1> make.out 2> make.err
+#
+# If you would like to rebuild only part of the software stack, but it starts
+# from the beginning if using the above command, then use the touch (-t) option
+# on the previous package.
+#
+# Example: Rebuild gstreamer:
+# make gsl -f Makefile.ligosoftware_gcc_deps -t
+# make gstreamer -f Makefile.ligosoftware_gcc_deps
+
+# Determine cluster
+CLUSTER:=$(shell hostname -d)
+
+# Set directories and paths
+SRC_DIR:=${PWD}/src
+TAR_DIR:=tarball
+LOGS_DIR:=logs
+PATCH_DIR:=${PWD}/patches
+INSTALL_DIR:=${DEPS_PATH}
+ifeq ($(findstring debian,$(shell cat /etc/os-release | grep ID=)),debian)
+	PYTHON_LIB_DIR:=/usr/lib/python2.7/config-x86_64-linux-gnu
+	PYTHON_DIR:=${DEPS_PATH}/lib/python2.7/site-packages
+else
+	PYTHON_LIB_DIR:=/usr/lib64
+	PYTHON_DIR:=${DEPS_PATH}/lib64/python2.7/site-packages
+endif
+
+# Set package release versions
+GDS=gds-2.18.10
+LDASTOOLSFRAMECPP=ldas-tools-framecpp-2.6.2
+LDASTOOLSAL=ldas-tools-al-2.6.0
+SWIG=swig-3.0.7
+METAIO=metaio-8.5.1
+LIBFRAME=libframe-8.30
+GSTPYTHON=gst-python-1.14.3
+GSTPLUGINSGOOD=gst-plugins-good-1.14.3
+GSTPLUGINSBASE=gst-plugins-base-1.14.3
+GSTREAMER=gstreamer-1.14.3
+GSL=gsl-2.3
+ORC=orc-0.4.26
+FFTW=fftw-3.3.8
+
+# Specify target/dependancy files
+GDS_TARGET=$(INSTALL_DIR)/lib/libwpipe.so
+LDASTOOLSFRAMECPP_TARGET=$(INSTALL_DIR)/lib/libframecpp.so
+LDASTOOLSAL_TARGET=$(INSTALL_DIR)/lib/libldastoolsal.so
+SWIG_TARGET=$(INSTALL_DIR)/bin/swig
+METAIO_TARGET=$(INSTALL_DIR)/lib/libmetaio.so
+LIBFRAME_TARGET=$(INSTALL_DIR)/lib/libFrame.so
+GSTPYTHON_TARGET=$(INSTALL_DIR)/lib/gstreamer-1.0/libgstpythonplugin.so
+GSTGOOD_TARGET=$(INSTALL_DIR)/lib/gstreamer-1.0/libgstpng.so
+GSTBASE_TARGET=$(INSTALL_DIR)/lib/libgstapp-1.0.so
+GSTREAMER_TARGET=$(INSTALL_DIR)/lib/libgstreamer-1.0.so
+GSL_2_TARGET=$(INSTALL_DIR)/lib/pkgconfig/gsl.pc.orig
+GSL_1_TARGET=$(INSTALL_DIR)/lib/libgsl.so
+ORC_TARGET=$(INSTALL_DIR)/lib/liborc-0.4.so
+FFTW_TARGET=$(INSTALL_DIR)/lib/libfftw3.so
+
+# tarballs
+GDS_TAR_TARGET=$(TAR_DIR)/$(GDS).tar.gz
+LDASTOOLSFRAMECPP_TAR_TARGET=$(TAR_DIR)/$(LDASTOOLSFRAMECPP).tar.gz
+LDASTOOLSAL_TAR_TARGET=$(TAR_DIR)/$(LDASTOOLSAL).tar.gz
+SWIG_TAR_TARGET=$(TAR_DIR)/$(SWIG).tar.gz
+METAIO_TAR_TARGET=$(TAR_DIR)/$(METAIO).tar.gz
+LIBFRAME_TAR_TARGET=$(TAR_DIR)/$(LIBFRAME).tar.gz
+GSTPYTHON_TAR_TARGET=$(TAR_DIR)/$(GSTPYTHON).tar.xz
+GSTGOOD_TAR_TARGET=$(TAR_DIR)/$(GSTPLUGINSGOOD).tar.xz
+GSTBASE_TAR_TARGET=$(TAR_DIR)/$(GSTPLUGINSBASE).tar.xz
+GSTREAMER_TAR_TARGET=$(TAR_DIR)/$(GSTREAMER).tar.xz
+GSL_TAR_TARGET=$(TAR_DIR)/$(GSL).tar.gz
+ORC_TAR_TARGET=$(TAR_DIR)/$(ORC).tar.xz
+FFTW_TAR_TARGET=$(TAR_DIR)/$(FFTW).tar.gz
+
+# Specify how many processors to run on
+#CORES:=$(shell echo `nproc --all`"-2" | bc -l)
+CORES:=8
+
+# Escape code
+esc=`echo -en "\033"`
+
+# Set colors
+RED="${esc}[0;31m"
+GREEN="${esc}[0;32m"
+YELLOW="${esc}[0;33m"
+BLUE="${esc}[0;34m"
+WHITE="${esc}[m"
+
+ICC_CIT:=/ldcg/intel/2018u3/bin/compilervars.sh
+ICC_LHO:=/ldcg/intel/2018u3/bin/compilervars.sh
+ICC_LLO:=/ldcg/intel/2018u3/bin/compilervars.sh
+ICC_UWM:=/opt/intel/2018u3/bin/compilervars.sh
+ICC_PSU:=/ligo/apps/intel/2017u4/bin/compilervars.sh
+
+all : logs/gds.txt src/kafka_2.11-2.0.0
+
+#####################
+# Environment setup #
+#####################
+
+deps_env.sh :
+	@echo 'unset GST_PLUGIN_PATH PYTHONPATH' > $@
+	@echo 'unset LD_LIBRARY_PATH LIBRARY_PATH LD_PRELOAD' >> $@
+	@echo 'DEPS_PATH=${PWD}/opt' >> $@
+	@echo 'export LDMKLFLAGS=" -L${MKLROOT}/lib/intel64 -lmkl_rt -lpthread -lm -ldl"' >> $@
+	@echo 'export GCCLDMKLFLAGS=" -L${MKLROOT}/lib/intel64 -Wl,--no-as-needed -lmkl_rt -lpthread -lm -ldl"' >> $@
+	@echo 'export GCCFLAGS="-fPIC -O3 -m64 -I$${MKLROOT}/include -I$${DEPS_PATH}/include"' >> $@
+	@echo 'export CFLAGS=$${GCCFLAGS}' >> $@
+	@if [[ ${CLUSTER} == *"ligo.caltech.edu" ]] ; then \
+		echo "source ${ICC_CIT} intel64" >> $@ ; \
+		echo 'LDFLAGS_INTEL="$${GCCLDMKLFLAGS}"' >> $@ ; \
+	elif [[ ${CLUSTER} == *"ligo-wa.caltech.edu" ]] ; then \
+		echo "source ${ICC_LHO} intel64" >> $@ ; \
+		echo 'LDFLAGS_INTEL="$${GCCLDMKLFLAGS}"' >> $@ ; \
+	elif [[ ${CLUSTER} == *"ligo-la.caltech.edu" ]] ; then \
+		echo "source ${ICC_LLO} intel64" >> $@ ; \
+		echo 'LDFLAGS_INTEL="$${GCCLDMKLFLAGS}"' >> $@ ; \
+	elif [[ ${CLUSTER} == *"nemo.uwm.edu" ]] ; then \
+		echo "source ${ICC_UWM} intel64" >> $@ ; \
+		echo 'LDFLAGS_INTEL="$${GCCLDMKLFLAGS}"' >> $@ ; \
+        elif [[ ${CLUSTER} == *"psu.edu" ]] ; then \
+		echo "source ${ICC_PSU} intel64" >> $@ ; \
+		echo 'export LIBRARY_PATH=$${LD_LIBRARY_PATH}' >> $@ ; \
+		echo 'LDFLAGS_INTEL="$${GCCLDMKLFLAGS}"' >> $@ ; \
+	fi
+	@echo 'export LD_LIBRARY_PATH=$${DEPS_PATH}/lib:$${LD_LIBRARY_PATH}' >> $@
+	@echo 'export LIBRARY_PATH=$${DEPS_PATH}/lib:$${LIBRARY_PATH}' >> $@
+	@echo 'export CC="gcc"' >> $@
+	@echo 'export CXX="g++"' >> $@
+	@echo 'export MKL_THREADING_LAYER=SEQUENTIAL' >> $@
+	@echo 'export MKL_INTERFACE_LAYER=ILP64' >> $@
+	@echo '# Force explicit linking of optimized FFTW libraries:' >> $@
+	@echo 'LDFLAGS="-lfftw3 -lfftw3f -lfftw3_threads -lfftw3f_threads $${LDFLAGS_INTEL} -L$${DEPS_PATH}/opt/lib "' >> $@
+	@echo '# These are environment variables that do get exported' >> $@
+	@echo 'PATH=$${DEPS_PATH}/bin:$${PATH}' >> $@
+	@echo 'PKG_CONFIG_PATH=$${DEPS_PATH}/lib/pkgconfig:$${DEPS_PATH}/lib64/pkgconfig:$${PKG_CONFIG_PATH}' >> $@
+	@echo 'PYTHONPATH=$${DEPS_PATH}/lib/python2.7/site-packages:$${DEPS_PATH}/lib64/python2.7/site-packages' >> $@
+	@echo 'LAL_DATA_PATH=/home/cbc/ROM_data' >> $@
+	@echo 'GST_PLUGIN_PATH=$${DEPS_PATH}/lib/gstreamer-1.0' >> $@
+	@echo 'GST_REGISTRY_1_0=$${DEPS_PATH}/registry.bin' >> $@
+	@echo 'GI_TYPELIB_PATH=$${DEPS_PATH}/lib/girepository-1.0:$${GI_TYPELIB_PATH}' >> $@
+	@echo 'KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80"' >> $@
+	@echo 'KAFKA_HEAP_OPTS="-Xms8G -Xmx8G"' >> $@
+	@echo 'export PATH PKG_CONFIG_PATH PYTHONPATH GST_PLUGIN_PATH DEPS_PATH LDFLAGS LDFLAGS_INTEL LAL_DATA_PATH GST_REGISTRY_1_0 GI_TYPELIB_PATH KAFKA_JVM_PERFORMANCE_OPTS KAFKA_HEAP_OPTS' >> $@
+
+###########
+# Install #
+###########
+
+src:
+	mkdir -p $@
+
+opt/bin:
+	mkdir -p $@/bin
+
+opt/config:
+	mkdir -p $@/config
+
+opt/libs:
+	mkdir -p $@/libs
+
+tarball:
+	mkdir -p $@
+
+# KAFKA
+tarball/kafka_2.11-2.0.0.tgz: tarball
+	wget -nc -P tarball http://mirror.reverse.net/pub/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz
+
+src/kafka_2.11-2.0.0: tarball/kafka_2.11-2.0.0.tgz src opt/bin opt/config opt/libs
+	cd src && tar -xzf ../tarball/kafka_2.11-2.0.0.tgz && cd .. && cp -r src/kafka_2.11-2.0.0/bin/* opt/bin/. && cp src/kafka_2.11-2.0.0/libs/* opt/libs/. && cp src/kafka_2.11-2.0.0/config/* opt/config/.
+
+#####################
+# Check time stamps #
+#####################
+
+check :
+	@if [ -f logs/all.txt ] ; then rm logs/all.txt ; fi ;
+	@cat logs/* | uniq > logs/all.txt
+	@if [ -f logs/gds.txt ] ; then ls logs/gds.txt >> logs/all.txt ; fi ;
+	@ls -ltrh $$(cat logs/all.txt)
+
+# gds
+gds : logs/gds.txt
+
+logs/gds.txt : $(LOGS_DIR)/ldas-tools-framecpp.txt $(GDS_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+$(GDS_TARGET) : $(LDASTOOLSFRAMECPP_TARGET)
+	@echo $(GREEN)gds$(WHITE) 1>&2
+	tar -xzf $(TAR_DIR)/$(GDS).tar.gz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(GDS) && ./configure --enable-online --prefix=$(INSTALL_DIR)
+	cd $(SRC_DIR)/$(GDS) && make && make install
+
+# ldas-tools-framecpp
+ldas-tools-framecpp : logs/ldas-tools-framecpp.txt
+
+logs/ldas-tools-framecpp.txt : $(LOGS_DIR)/ldas-tools-al.txt $(LDASTOOLSFRAMECPP_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+$(LDASTOOLSFRAMECPP_TARGET) : $(LDASTOOLSAL_TARGET)
+	@echo $(GREEN)ldas-tools-frmecpp$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(LDASTOOLSFRAMECPP).tar.gz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(LDASTOOLSFRAMECPP) && ./configure --prefix=$(INSTALL_DIR) --without-doxygen CC="gcc" CXX="g++" CFLAGS="$(GCCFLAGS)" LDFLAGS="$(GCCLDMKLFLAGS)"
+	cd $(SRC_DIR)/$(LDASTOOLSFRAMECPP) && make && make install 
+
+# ldas-tools-al
+ldas-tools-al : logs/ldas-tools-al.txt
+
+logs/ldas-tools-al.txt : $(LOGS_DIR)/swig.txt $(LDASTOOLSAL_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+$(LDASTOOLSAL_TARGET) : $(SWIG_TARGET)
+	@echo $(GREEN)ldas-tools-al$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(LDASTOOLSAL).tar.gz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(LDASTOOLSAL) && ./configure --prefix=$(INSTALL_DIR) --without-doxygen CC="gcc" CXX="g++" CFLAGS="$(GCCFLAGS)" LDFLAGS="$(GCCLDMKLFLAGS)"
+	cd $(SRC_DIR)/$(LDASTOOLSAL) && make -j$(CORES) && make install -j$(CORES)
+
+# swig
+swig : logs/swig.txt
+
+logs/swig.txt : $(LOGS_DIR)/metaio.txt $(SWIG_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+$(SWIG_TARGET) : $(METAIO_TARGET)
+	@echo $(GREEN)swig$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(SWIG).tar.gz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(SWIG) && ./configure --prefix=$(INSTALL_DIR)
+	cd $(SRC_DIR)/$(SWIG) && make -j$(CORES) && make install -j$(CORES)
+
+# metaio
+metaio : logs/metaio.txt
+
+logs/metaio.txt : $(LOGS_DIR)/libframe.txt $(METAIO_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+$(METAIO_TARGET) : $(LIBFRAME_TARGET)
+	@echo $(GREEN)metaio$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(METAIO).tar.gz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(METAIO) && ./configure --prefix=$(INSTALL_DIR) --with-matlab=no
+	cd $(SRC_DIR)/$(METAIO) && make -j$(CORES) && make install -j$(CORES)
+	# Needed with-matlab option for intel_haswell test
+
+# libframe
+libframe : logs/libframe.txt
+
+logs/libframe.txt : $(LOGS_DIR)/gstreamer.txt $(LIBFRAME_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+$(LIBFRAME_TARGET) : $(GSTPYTHON_TARGET)
+	@echo $(GREEN)libframe$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(LIBFRAME).tar.gz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(LIBFRAME) && ./configure --prefix=$(INSTALL_DIR)
+	cd $(SRC_DIR)/$(LIBFRAME) && make -j$(CORES) && make install -j$(CORES)
+
+# gstreamer (all)
+gstreamer : logs/gstreamer.txt
+
+logs/gstreamer.txt : $(LOGS_DIR)/gsl.txt $(GSTREAMER_TARGET) $(GSTBASE_TARGET) $(GSTGOOD_TARGET) $(GSTPYTHON_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+# gstreamer plugin python
+$(GSTPYTHON_TARGET) : $(GSTGOOD_TARGET)
+	@echo $(GREEN)gst-python$(WHITE) 1>&2
+	#mkdir -p $(INSTALL_DIR)/lib64/python2.7/site-packages/gi/overrides
+	tar -xf $(TAR_DIR)/$(GSTPYTHON).tar.xz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(GSTPYTHON) && ./configure --prefix=$(INSTALL_DIR) --exec-prefix=$(INSTALL_DIR) --with-libpython-dir=$(PYTHON_LIB_DIR) --with-pygi-overrides-dir=$(INSTALL_DIR)/lib/python2.7/site-packages/gi/overrides
+	cd $(SRC_DIR)/$(GSTPYTHON) && make -j$(CORES) && make install -j$(CORES)
+
+# gstreamer plugin good
+$(GSTGOOD_TARGET) : $(GSTBASE_TARGET)
+	@echo $(GREEN)gst-good$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(GSTPLUGINSGOOD).tar.xz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(GSTPLUGINSGOOD) && ./configure --disable-gst_v4l2 --prefix=$(INSTALL_DIR)
+	cd $(SRC_DIR)/$(GSTPLUGINSGOOD) && make -j$(CORES) && make install -j$(CORES)
+
+# gstreamer plugin base
+$(GSTBASE_TARGET) : $(GSTREAMER_TARGET)
+	@echo $(GREEN)gst-base$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(GSTPLUGINSBASE).tar.xz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(GSTPLUGINSBASE) && ./configure --prefix=$(INSTALL_DIR)
+	cd $(SRC_DIR)/$(GSTPLUGINSBASE) && make -j$(CORES) && make install -j$(CORES)
+
+# gstreamer
+$(GSTREAMER_TARGET) : logs/gsl.txt
+	@echo $(GREEN)gstreamer$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(GSTREAMER).tar.xz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(GSTREAMER) && ./configure --prefix=$(INSTALL_DIR)
+	cd $(SRC_DIR)/$(GSTREAMER) && make -j$(CORES) && make install -j$(CORES)
+
+# GSL
+gsl : logs/gsl.txt
+
+logs/gsl.txt : $(LOGS_DIR)/orc.txt $(GSL_1_TARGET) $(GSL_2_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+## FIXME Hack to make gsl default to atlas for blas
+$(GSL_2_TARGET) : $(GSL_1_TARGET)
+	cp $(INSTALL_DIR)/lib/pkgconfig/gsl.pc $@
+	sed 's:-lgslcblas: $(LDMKLFLAGS):' $@ > $(INSTALL_DIR)/lib/pkgconfig/gsl.pc
+
+$(GSL_1_TARGET) : $(ORC_TARGET)
+	@echo $(GREEN)gsl$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(GSL).tar.gz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(GSL) && ./configure --prefix=$(INSTALL_DIR)  GSL_CBLAS_LIB='$(LDMKLFLAGS)'
+	cd $(SRC_DIR)/$(GSL) && make -j$(CORES) && make install -j$(CORES)
+
+# ORC
+orc : logs/orc.txt
+
+logs/orc.txt : $(LOGS_DIR)/fftw.txt $(ORC_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+$(ORC_TARGET) : $(FFTW_TARGET)
+	@echo $(GREEN)orc$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(ORC).tar.xz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(ORC) && ./configure --prefix=$(INSTALL_DIR)
+	cd $(SRC_DIR)/$(ORC) && make -j$(CORES) && make install -j$(CORES)
+
+
+# fftw
+fftw : logs/fftw.txt
+
+logs/fftw.txt : $(LOGS_DIR)/patch.txt $(FFTW_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+# ./configure, make, make install run thrice to install single and double precision, and long double libs 
+$(FFTW_TARGET) : $(LOGS_DIR)/patch.txt
+	@echo $(GREEN)fftw$(WHITE) 1>&2
+	tar -xzf $(TAR_DIR)/$(FFTW).tar.gz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(FFTW) && \
+		./configure LDFLAGS="${LDFLAGS_INTEL}" --enable-shared --enable-sse --enable-sse2 --enable-avx --enable-float --enable-fma --enable-avx2 --enable-threads --prefix=$(INSTALL_DIR) && \
+		make -j$(CORES) && make install -j$(CORES) && make clean && \
+		./configure LDFLAGS="${LDFLAGS_INTEL}" --enable-shared --enable-sse2 --enable-avx --enable-fma --enable-avx2 --enable-threads --prefix=$(INSTALL_DIR) && \
+		make -j$(CORES) && make install -j$(CORES) && make clean && \
+		./configure LDFLAGS="${LDFLAGS_INTEL}" --enable-shared --enable-fma --enable-threads --enable-long-double --prefix=$(INSTALL_DIR) && \
+		make -j$(CORES) && make install -j$(CORES)
+
+#########################
+# Download the software #
+#########################
+
+# patches
+patch : logs/patch.txt
+
+logs/patch.txt : $(LOGS_DIR)/tar.txt
+	echo $^ | sed -e "s@ @\n@g" > $@
+
+#tarballs
+logs/tar.txt : $(FFTW_TAR_TARGET) $(ORC_TAR_TARGET) $(GSL_TAR_TARGET) $(GSTREAMER_TAR_TARGET) $(GSTBASE_TAR_TARGET) $(GSTGOOD_TAR_TARGET) $(GSTPYTHON_TAR_TARGET) $(LIBFRAME_TAR_TARGET) $(METAIO_TAR_TARGET) $(SWIG_TAR_TARGET) $(LDASTOOLSAL_TAR_TARGET) $(LDASTOOLSFRAMECPP_TAR_TARGET) $(GDS_TAR_TARGET)
+	echo $^ | sed -e "s@ @\n@g" > $@
+
+$(GDS_TAR_TARGET) : $(LDASTOOLSFRAMECPP_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(GDS).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+$(LDASTOOLSFRAMECPP_TAR_TARGET) : $(LDASTOOLSAL_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(LDASTOOLSFRAMECPP).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+$(LDASTOOLSAL_TAR_TARGET) : $(SWIG_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(LDASTOOLSAL).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+$(SWIG_TAR_TARGET) : $(METAIO_TAR_TARGET)
+	wget --no-check-certificate http://downloads.sourceforge.net/project/swig/swig/$(SWIG)/$(SWIG).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+$(METAIO_TAR_TARGET) : $(LIBFRAME_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(METAIO).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+$(LIBFRAME_TAR_TARGET) : $(GSTPYTHON_TAR_TARGET)
+	wget --no-check-certificate http://lappweb.in2p3.fr/virgo/FrameL/$(LIBFRAME).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+$(GSTPYTHON_TAR_TARGET) : $(GSTGOOD_TAR_TARGET)
+	wget --no-check-certificate http://gstreamer.freedesktop.org/src/gst-python/$(GSTPYTHON).tar.xz --directory-prefix=$(TAR_DIR) -nc
+
+$(GSTGOOD_TAR_TARGET) : $(GSTBASE_TAR_TARGET)
+	wget --no-check-certificate http://gstreamer.freedesktop.org/src/gst-plugins-good/$(GSTPLUGINSGOOD).tar.xz --directory-prefix=$(TAR_DIR) -nc
+
+$(GSTBASE_TAR_TARGET) : $(GSTREAMER_TAR_TARGET)
+	wget --no-check-certificate http://gstreamer.freedesktop.org/src/gst-plugins-base/$(GSTPLUGINSBASE).tar.xz --directory-prefix=$(TAR_DIR) -nc
+
+$(GSTREAMER_TAR_TARGET) : $(GSL_TAR_TARGET)
+	wget --no-check-certificate http://gstreamer.freedesktop.org/src/gstreamer/$(GSTREAMER).tar.xz --directory-prefix=$(TAR_DIR) -nc
+
+$(GSL_TAR_TARGET) : $(ORC_TAR_TARGET)
+	wget --no-check-certificate http://ftp.gnu.org/gnu/gsl/$(GSL).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+$(ORC_TAR_TARGET) : $(FFTW_TAR_TARGET)
+	wget --no-check-certificate http://gstreamer.freedesktop.org/src/orc/$(ORC).tar.xz --directory-prefix=$(TAR_DIR) -nc
+
+$(FFTW_TAR_TARGET) : $(LOGS_DIR)
+	wget --no-check-certificate http://www.fftw.org/$(FFTW).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+# git repos
+$(LOGS_DIR) :
+	mkdir -p $(SRC_DIR) $(INSTALL_DIR) $(PATCH_DIR) $(TAR_DIR) $(PYTHON_DIR)
+	mkdir -p $(LOGS_DIR)
+
+############
+# Clean up #
+############
+
+clean-all :
+	rm -rf $(SRC_DIR) $(INSTALL_DIR) $(PATCH_DIR) $(TAR_DIR) $(LOGS_DIR) $(PYTHON_DIR)
+	rm -rf opt git
+	rm -rf *.txt
+
+clean-install :
+	rm -rf opt/* logs/* src/*
+
+clean-gds :
+	rm -rf logs/gds.txt $(GDS_TARGET)
+
+clean-ldas-tools-framecpp :
+	rm -rf logs/ldas-tools-framecpp.txt $(LDASTOOLSFRAMECPP_TARGET)
+
+clean-ldas-tools-al :
+	rm -rf logs/ldas-tools-al.txt $(LDASTOOLSAL_TARGET)
+
+clean-swig :
+	rm -rf logs/swig.txt $(SWIG_TARGET)
+
+clean-metaio :
+	rm -rf logs/metaio.txt $(METAIO_TARGET)
+
+clean-libframe :
+	rm -rf logs/libframe.txt $(LIBFRAME_TARGET)
+
+clean-gstreamer :
+	rm -rf logs/gstreamer.txt $(GSTREAMER_TARGET) $(GSTBASE_TARGET) $(GSTGOOD_TARGET) $(GSTPYTHON_TARGET)
+
+clean-gsl :
+	rm -rf logs/gsl.txt $(GSL_1_TARGET) $(GSL_2_TARGET)
+
+clean-orc :
+	rm -rf logs/orc.txt $(ORC_TARGET)
+
+clean-fftw :
+	rm -rf logs/fftw.txt $(FFTW_TARGET)
diff --git a/gstlal-inspiral/share/O3/optimized/Makefile.ligosoftware_gcc_gstlal b/gstlal-inspiral/share/O3/optimized/Makefile.ligosoftware_gcc_gstlal
new file mode 100644
index 0000000000..81320752a8
--- /dev/null
+++ b/gstlal-inspiral/share/O3/optimized/Makefile.ligosoftware_gcc_gstlal
@@ -0,0 +1,508 @@
+SHELL := /bin/bash # Use bash syntax
+#
+# To run: make env.sh, then source the resulting environment file and run: make
+#
+# example command:
+# make env.sh -f Makefile.ligosoftware_gcc_gstlal
+# source env.sh
+# time make gstlal -f Makefile.ligosoftware_gcc_gstlal 1> make.out 2> make.err
+#
+# If you would like to rebuild only part of the software stack, such as lalsuite
+# or gstlal up, but it starts from the beginning if using the above command,
+# then use the touch (-t) option on the previous package.
+#
+# To rebuild gstlal:
+# make glue -f Makefile.ligosoftware_gcc_gstlal -t
+# make gstlal -f Makefile.ligosoftware_gcc_gstlal
+
+# Determine cluster
+CLUSTER:=$(shell hostname -d)
+
+# Set directories and paths
+SRC_DIR:=${PWD}/src
+TAR_DIR:=tarball
+LOGS_DIR:=logs
+PATCH_DIR:=${PWD}/patches
+INSTALL_DIR:=${LAL_PATH}
+
+GSTLAL_REPO:=${PWD}/git/gstlal
+GLUE_REPO:=${PWD}/git/glue
+LALSUITE_REPO:=${PWD}/git/lalsuite
+
+# Set the dependency directory:
+DEPS_DIR:=/path/to/deps/dir
+
+# Set to build from git (0 = tarball, 1 = git)
+GSTLAL_GIT=1
+GLUE_GIT=1
+LALSUITE_GIT=1
+
+# Define which branch from git to build. Defaults to 'master', but the user can 
+# set the variable below. The git clone and compilation should fail if this is set to
+# an unknown branch.
+#
+GSTLAL_GIT_BRANCH="master"
+GLUE_GIT_BRANCH="master"
+LALSUITE_GIT_BRANCH="master"
+
+# Set package release versions
+GSTLALINSPIRAL=gstlal-inspiral-1.4.2
+GSTLALCALIBRATION=gstlal-calibration-1.1.9
+GSTLALBURST=gstlal-burst-0.0.5
+GSTLALUGLY=gstlal-ugly-1.5.1
+GSTLAL=gstlal-1.3.0
+GLUE=lscsoft-glue-1.60.0
+LALAPPS=lalapps-6.21.0
+LALINFERENCE=lalinference-1.9.2
+LALPULSAR=lalpulsar-1.16.0
+LALINSPIRAL=lalinspiral-1.7.7
+LALBURST=lalburst-1.4.4
+LALSIMULATION=lalsimulation-1.7.3
+LALMETAIO=lalmetaio-1.3.1
+LALFRAME=lalframe-1.4.3
+LAL=lal-6.18.0
+
+# Specify target/dependency files
+GSTINSPIRAL_TARGET=$(INSTALL_DIR)/lib/libgstlalinspiral.so
+GSTLALCALIB_TARGET=$(INSTALL_DIR)/bin/gstlal_compute_strain
+GSTLALBURST_TARGET=$(INSTALL_DIR)/lib/libgstlalburst.so
+GSTLALUGLY_TARGET=$(INSTALL_DIR)/lib/gstreamer-1.0/libgstnds.so
+GSTLAL_TARGET=$(INSTALL_DIR)/lib/libgstlal.so
+GLUE_TARGET=$(INSTALL_DIR)/bin/dmtdq_seg_insert
+LALAPPS_TARGET=$(INSTALL_DIR)/bin/lalapps_psinject
+LALINFER_TARGET=$(INSTALL_DIR)/lib/liblalinference.so
+LALPULSAR_TARGET=$(INSTALL_DIR)/lib/liblalpulsar.so
+LALINSPIRAL_TARGET=$(INSTALL_DIR)/lib/liblalinspiral.so
+LALBURST_TARGET=$(INSTALL_DIR)/lib/liblalburst.so
+LALSIM_TARGET=$(INSTALL_DIR)/lib/liblalsimulation.so
+LALMETAIO_TARGET=$(INSTALL_DIR)/lib/liblalmetaio.so
+LALFRAME_TARGET=$(INSTALL_DIR)/lib/liblalframe.so
+LAL_TARGET=$(INSTALL_DIR)/lib/liblal.so
+
+# tarballs
+GSTLALINSPIRAL_TAR_TARGET=$(TAR_DIR)/$(GSTLALINSPIRAL).tar.gz
+GSTLALCALIB_TAR_TARGET=$(TAR_DIR)/$(GSTLALCALIBRATION).tar.gz
+GSTLALBURST_TAR_TARGET=$(TAR_DIR)/$(GSTLALBURST).tar.gz
+GSTLALUGLY_TAR_TARGET=$(TAR_DIR)/$(GSTLALUGLY).tar.gz
+GSTLAL_TAR_TARGET=$(TAR_DIR)/$(GSTLAL).tar.gz
+GLUE_TAR_TARGET=$(TAR_DIR)/$(GLUE).tar.gz
+LALAPPS_TAR_TARGET=$(TAR_DIR)/$(LALAPPS).tar.xz
+LALINFER_TAR_TARGET=$(TAR_DIR)/$(LALINFERENCE).tar.xz
+LALPULSAR_TAR_TARGET=$(TAR_DIR)/$(LALPULSAR).tar.xz
+LALINSPIRAL_TAR_TARGET=$(TAR_DIR)/$(LALINSPIRAL).tar.xz
+LALBURST_TAR_TARGET=$(TAR_DIR)/$(LALBURST).tar.xz
+LALSIM_TAR_TARGET=$(TAR_DIR)/$(LALSIMULATION).tar.xz
+LALMETAIO_TAR_TARGET=$(TAR_DIR)/$(LALMETAIO).tar.xz
+LALFRAME_TAR_TARGET=$(TAR_DIR)/$(LALFRAME).tar.xz
+LAL_TAR_TARGET=$(TAR_DIR)/$(LAL).tar.xz
+
+# git repos
+GSTLAL_GIT_TARGET=$(GSTLAL_REPO)/TODO.md
+GLUE_GIT_TARGET=$(GLUE_REPO)/README
+LALSUITE_GIT_TARGET=$(LALSUITE_REPO)/lal/README
+
+# Specify how many processors to run on
+#CORES:=$(shell echo `nproc --all`"-2" | bc -l)
+CORES:=8
+
+# Escape code
+esc=`echo -en "\033"`
+
+# Set colors
+RED="${esc}[0;31m"
+GREEN="${esc}[0;32m"
+YELLOW="${esc}[0;33m"
+BLUE="${esc}[0;34m"
+WHITE="${esc}[m"
+
+# icc compiler locations
+ICC_CIT:=/ldcg/intel/2018u3/bin/compilervars.sh
+ICC_LHO:=/ldcg/intel/2018u3/bin/compilervars.sh
+ICC_LLO:=/ldcg/intel/2018u3/bin/compilervars.sh
+ICC_UWM:=/opt/intel/2018u3/bin/compilervars.sh
+ICC_PSU:=/ligo/apps/intel/2017u4/bin/compilervars.sh
+
+all : $(GSTINSPIRAL_TARGET) $(LOGS_DIR)/gstlal.txt
+
+#####################
+# Environment setup #
+#####################
+
+env.sh :
+	@echo 'unset GST_PLUGIN_PATH PYTHONPATH' > $@
+	@echo 'unset LD_LIBRARY_PATH LIBRARY_PATH LD_PRELOAD' >> $@
+	@echo 'source ${DEPS_DIR}/deps_env.sh' >> $@
+	@echo 'LAL_PATH=${PWD}/opt' >> $@
+	@echo 'export CFLAGS="$${CFLAGS} -I$${LAL_PATH}/include"' >> $@
+	@echo 'export LD_LIBRARY_PATH=$${LAL_PATH}/lib:$${LD_LIBRARY_PATH}' >> $@
+	@echo 'export LIBRARY_PATH=$${LAL_PATH}/lib:$${LIBRARY_PATH}' >> $@
+	@echo '# Force explicit linking of optimized FFTW libraries:' >> $@
+	@echo 'LDFLAGS="$${LDFLAGS} -L${PWD}/opt/lib "' >> $@
+	@echo '# These are environment variables that do get exported' >> $@
+	@echo 'PATH=$${LAL_PATH}/bin:$${PATH}' >> $@
+	@echo 'PKG_CONFIG_PATH=$${LAL_PATH}/lib/pkgconfig:$${LAL_PATH}/lib64/pkgconfig:$${PKG_CONFIG_PATH}' >> $@
+	@echo 'PYTHONPATH=$${LAL_PATH}/lib/python2.7/site-packages:$${LAL_PATH}/lib64/python2.7/site-packages:$${PYTHONPATH}' >> $@
+	@echo 'LAL_DATA_PATH=/home/cbc/ROM_data' >> $@
+	@echo 'GST_PLUGIN_PATH=$${LAL_PATH}/lib/gstreamer-1.0:$${GST_PLUGIN_PATH}' >> $@
+	@echo 'GST_REGISTRY_1_0=$${LAL_PATH}/registry.bin' >> $@
+	@echo 'GI_TYPELIB_PATH=$${LAL_PATH}/lib/girepository-1.0:$${GI_TYPELIB_PATH}' >> $@
+	@echo 'KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80"' >> $@
+	@echo 'KAFKA_HEAP_OPTS="-Xms8G -Xmx8G"' >> $@
+	@echo 'export PATH PKG_CONFIG_PATH PYTHONPATH GST_PLUGIN_PATH KAFKA_PATH LAL_PATH LDFLAGS LDFLAGS_INTEL LAL_DATA_PATH GST_REGISTRY_1_0 GI_TYPELIB_PATH KAKFA_JVM_PERFORMANCE_OPTS KAFKA_HEAP_OPTS' >> $@
+
+
+#####################
+# Check time stamps #
+#####################
+
+check :
+	@if [ -f logs/all.txt ] ; then rm logs/all.txt ; fi ;
+	@cat logs/* | uniq > logs/all.txt
+	@if [ -f logs/gstlal.txt ] ; then ls logs/gstlal.txt >> logs/all.txt ; fi ;
+	@ls -ltrh $$(cat logs/all.txt)
+
+###########
+# Install #
+###########
+
+# gstlal (all)
+gstlal : logs/gstlal.txt
+
+logs/gstlal.txt : $(LOGS_DIR)/glue.txt $(GSTLAL_TARGET) $(GSTLALUGLY_TARGET) $(GSTLALBURST_TARGET) $(GSTLALCALIB_TARGET) $(GSTINSPIRAL_TARGET) $(GSTLALBURST_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+# gstlal-inspiral
+$(GSTINSPIRAL_TARGET) : $(GSTLALCALIB_TARGET)
+	@echo $(GREEN)gstlal-inspiral$(WHITE) 1>&2
+	if [ "${GSTLAL_GIT}" = "1" ]; then \
+		cd $(GSTLAL_REPO)/gstlal-inspiral && echo | ./00init.sh ; \
+		cd $(GSTLAL_REPO)/gstlal-inspiral && ./configure --prefix=$(INSTALL_DIR) ; \
+		cd $(GSTLAL_REPO)/gstlal-inspiral && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xzkf $(TAR_DIR)/$(GSTLALINSPIRAL).tar.gz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(GSTLALINSPIRAL) && ./configure --prefix=$(INSTALL_DIR) ; \
+		cd $(SRC_DIR)/$(GSTLALINSPIRAL) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# gstlal-calibration
+$(GSTLALCALIB_TARGET) : $(GSTLALBURST_TARGET)
+	@echo $(GREEN)gstlal-calibration$(WHITE) 1>&2
+	if [ "${GSTLAL_GIT}" = "1" ]; then \
+		cd $(GSTLAL_REPO)/gstlal-calibration && echo | ./00init.sh ; \
+		cd $(GSTLAL_REPO)/gstlal-calibration && ./configure --prefix=$(INSTALL_DIR) ; \
+		cd $(GSTLAL_REPO)/gstlal-calibration && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xzkf $(TAR_DIR)/$(GSTLALCALIBRATION).tar.gz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(GSTLALCALIBRATION) && ./configure --prefix=$(INSTALL_DIR) ; \
+		cd $(SRC_DIR)/$(GSTLALCALIBRATION) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# gstlal-burst
+$(GSTLALBURST_TARGET) : $(GSTLALUGLY_TARGET)
+	@echo $(GREEN)gstlal-burst$(WHITE) 1>&2
+	if [ "${GSTLAL_GIT}" = "1" ]; then \
+		cd $(GSTLAL_REPO)/gstlal-burst && echo | ./00init.sh ; \
+		cd $(GSTLAL_REPO)/gstlal-burst && ./configure --prefix=$(INSTALL_DIR) ; \
+		cd $(GSTLAL_REPO)/gstlal-burst && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xzkf $(TAR_DIR)/$(GSTLALBURST).tar.gz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(GSTLALBURST) && ./configure --prefix=$(INSTALL_DIR) ; \
+		cd $(SRC_DIR)/$(GSTLALBURST) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# gstlal-ugly
+$(GSTLALUGLY_TARGET) : $(GSTLAL_TARGET)
+	@echo $(GREEN)gstlal-ugly$(WHITE) 1>&2
+	if [ "${GSTLAL_GIT}" = "1" ]; then \
+		cd $(GSTLAL_REPO)/gstlal-ugly && echo | ./00init.sh ; \
+		cd $(GSTLAL_REPO)/gstlal-ugly && ./configure --prefix=$(INSTALL_DIR) ; \
+		cd $(GSTLAL_REPO)/gstlal-ugly && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xzkf $(TAR_DIR)/$(GSTLALUGLY).tar.gz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(GSTLALUGLY) && ./configure --prefix=$(INSTALL_DIR) ; \
+		cd $(SRC_DIR)/$(GSTLALUGLY) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# gstlal
+$(GSTLAL_TARGET) : $(GLUE_TARGET)
+	@echo $(GREEN)gstlal$(WHITE) 1>&2
+	if [ "${GSTLAL_GIT}" = "1" ]; then \
+		cd $(GSTLAL_REPO)/gstlal && echo | ./00init.sh ; \
+		cd $(GSTLAL_REPO)/gstlal && ./configure --prefix=$(INSTALL_DIR) ; \
+		cd $(GSTLAL_REPO)/gstlal && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xzkf $(TAR_DIR)/$(GSTLAL).tar.gz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(GSTLAL) && ./configure --prefix=$(INSTALL_DIR) ; \
+		cd $(SRC_DIR)/$(GSTLAL) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# glue
+glue : logs/glue.txt
+
+logs/glue.txt : $(LOGS_DIR)/lalsuite.txt $(GLUE_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+$(GLUE_TARGET) : $(LALAPPS_TARGET)
+	@echo $(GREEN)glue$(WHITE) 1>&2
+	if [ "${GLUE_GIT}" = "1" ]; then \
+		cd $(GLUE_REPO) && CFLAGS="${GCCFLAGS}" python setup.py install --prefix=$(INSTALL_DIR) ; \
+	else \
+		tar -xzf $(TAR_DIR)/$(GLUE).tar.gz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/lscsoft-$(GLUE) && CFLAGS="${GCCFLAGS}" python setup.py install --prefix=$(INSTALL_DIR) ; \
+	fi ;
+
+# lalsuite
+lalsuite : logs/lalsuite.txt
+
+logs/lalsuite.txt : $(LAL_TARGET) $(LALFRAME_TARGET) $(LALMETAIO_TARGET) $(LALSIM_TARGET) $(LALBURST_TARGET) $(LALDETCHAR_TARGET) $(LALINSPIRAL_TARGET) $(LALPULSAR_TARGET) $(LALINFER_TARGET) $(LALSTOCH_TARGET) $(LALAPPS_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+# lalapps
+# FIXME --enable-gcc-flags set to no on lalapps configure as work around to avoid warnings stopping install process
+# FIXME : Commenting out the explicit linking to gslcblas
+# Not sure what causes the warnings
+$(LALAPPS_TARGET) : $(LALINFER_TARGET)
+	@echo $(GREEN)lalapps$(WHITE) 1>&2
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		cd $(LALSUITE_REPO)/lalapps && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac ; \
+		cd $(LALSUITE_REPO)/lalapps && ./00boot ; \
+		cd $(LALSUITE_REPO)/lalapps && ./configure --enable-gcc-flags=no --enable-swig-python --prefix=$(INSTALL_DIR) ; \
+		cd $(LALSUITE_REPO)/lalapps && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xf $(TAR_DIR)/$(LALAPPS).tar.xz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(LALAPPS) && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac && autoreconf ; \
+		cd $(SRC_DIR)/$(LALAPPS) && ./configure --enable-gcc-flags=no --enable-swig-python --prefix=$(INSTALL_DIR) ; \
+		cd $(SRC_DIR)/$(LALAPPS) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# lalinference
+$(LALINFER_TARGET) : $(LALPULSAR_TARGET)
+	@echo $(GREEN)lalinference$(WHITE) 1>&2
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		cd $(LALSUITE_REPO)/lalapps && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac ; \
+		cd $(LALSUITE_REPO)/lalinference && ./00boot ; \
+		cd $(LALSUITE_REPO)/lalinference && ./configure --enable-gcc-flags=no --enable-swig-python --prefix=$(INSTALL_DIR) ; \
+		cd $(LALSUITE_REPO)/lalinference && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xf $(TAR_DIR)/$(LALINFERENCE).tar.xz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(LALINFERENCE) && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac && autoreconf ; \
+		cd $(SRC_DIR)/$(LALINFERENCE) && ./configure --enable-gcc-flags=no --enable-swig-python --prefix=$(INSTALL_DIR)  ; \
+		cd $(SRC_DIR)/$(LALINFERENCE) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# lalpulsar
+$(LALPULSAR_TARGET) : $(LALINSPIRAL_TARGET)
+	@echo $(GREEN)lalpulsar$(WHITE) 1>&2
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		cd $(LALSUITE_REPO)/lalapps && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac ; \
+		cd $(LALSUITE_REPO)/lalpulsar && ./00boot ; \
+		cd $(LALSUITE_REPO)/lalpulsar && ./configure --enable-swig-python --prefix=$(INSTALL_DIR) --enable-gcc-flags=no ; \
+		cd $(LALSUITE_REPO)/lalpulsar && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xf $(TAR_DIR)/$(LALPULSAR).tar.xz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(LALPULSAR) && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac && autoreconf ; \
+		cd $(SRC_DIR)/$(LALPULSAR) && ./configure --enable-swig-python --prefix=$(INSTALL_DIR) --enable-gcc-flags=no ; \
+		cd $(SRC_DIR)/$(LALPULSAR) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# lalinspiral
+$(LALINSPIRAL_TARGET) : $(LALBURST_TARGET)
+	@echo $(GREEN)lalinspiral$(WHITE) 1>&2
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		cd $(LALSUITE_REPO)/lalinspiral && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac ; \
+		cd $(LALSUITE_REPO)/lalinspiral && ./00boot ; \
+		cd $(LALSUITE_REPO)/lalinspiral && ./configure --enable-swig-python --prefix=$(INSTALL_DIR) --enable-gcc-flags=no ; \
+		cd $(LALSUITE_REPO)/lalinspiral && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xf $(TAR_DIR)/$(LALINSPIRAL).tar.xz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(LALINSPIRAL) && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac && autoreconf ; \
+		cd $(SRC_DIR)/$(LALINSPIRAL) && ./configure --enable-swig-python --prefix=$(INSTALL_DIR) --enable-gcc-flags=no ; \
+		cd $(SRC_DIR)/$(LALINSPIRAL) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# lalburst
+$(LALBURST_TARGET) : $(LALSIM_TARGET)
+	@echo $(GREEN)lalburst$(WHITE) 1>&2
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		cd $(LALSUITE_REPO)/lalburst && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac ; \
+		cd $(LALSUITE_REPO)/lalburst && ./00boot ; \
+		cd $(LALSUITE_REPO)/lalburst && ./configure --enable-swig-python --prefix=$(INSTALL_DIR) --enable-gcc-flags=no ; \
+		cd $(LALSUITE_REPO)/lalburst && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xf $(TAR_DIR)/$(LALBURST).tar.xz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(LALBURST) && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac && autoreconf ; \
+		cd $(SRC_DIR)/$(LALBURST) && ./configure --enable-swig-python --prefix=$(INSTALL_DIR) --enable-gcc-flags=no ; \
+		cd $(SRC_DIR)/$(LALBURST) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# lalsimulation
+$(LALSIM_TARGET) : $(LALMETAIO_TARGET)
+	@echo $(GREEN)lalsimulation$(WHITE) 1>&2
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		cd $(LALSUITE_REPO)/lalsimulation && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac ; \
+		cd $(LALSUITE_REPO)/lalsimulation && ./00boot ; \
+		cd $(LALSUITE_REPO)/lalsimulation && ./configure --disable-openmp --enable-swig-python --prefix=$(INSTALL_DIR) --enable-gcc-flags=no ; \
+		cd $(LALSUITE_REPO)/lalsimulation && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xf $(TAR_DIR)/$(LALSIMULATION).tar.xz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(LALSIMULATION) && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac && autoreconf ; \
+		cd $(SRC_DIR)/$(LALSIMULATION) && ./configure --disable-openmp --enable-swig-python --prefix=$(INSTALL_DIR) --enable-gcc-flags=no ; \
+		cd $(SRC_DIR)/$(LALSIMULATION) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# lalmetaio
+$(LALMETAIO_TARGET) : $(LALFRAME_TARGET)
+	@echo $(GREEN)lalmetaio$(WHITE) 1>&2
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		cd $(LALSUITE_REPO)/lalmetaio && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac ; \
+		cd $(LALSUITE_REPO)/lalmetaio && ./00boot ; \
+		cd $(LALSUITE_REPO)/lalmetaio && ./configure --enable-swig-python --prefix=$(INSTALL_DIR) --enable-gcc-flags=no ; \
+		cd $(LALSUITE_REPO)/lalmetaio && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xf $(TAR_DIR)/$(LALMETAIO).tar.xz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(LALMETAIO) && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac && autoreconf ; \
+		cd $(SRC_DIR)/$(LALMETAIO) && ./configure --enable-swig-python --prefix=$(INSTALL_DIR) --enable-gcc-flags=no ; \
+		cd $(SRC_DIR)/$(LALMETAIO) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# lalframe
+$(LALFRAME_TARGET) : $(LAL_TARGET)
+	@echo $(GREEN)lalframe$(WHITE) 1>&2
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		cd $(LALSUITE_REPO)/lalframe && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac ; \
+		cd $(LALSUITE_REPO)/lalframe && ./00boot ; \
+		cd $(LALSUITE_REPO)/lalframe && ./configure --enable-swig-python --prefix=$(INSTALL_DIR) --enable-gcc-flags=no ; \
+		cd $(LALSUITE_REPO)/lalframe && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xf $(TAR_DIR)/$(LALFRAME).tar.xz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(LALFRAME) && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac && autoreconf ; \
+		cd $(SRC_DIR)/$(LALFRAME) && ./configure --enable-swig-python --prefix=$(INSTALL_DIR) --enable-gcc-flags=no ; \
+		cd $(SRC_DIR)/$(LALFRAME) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# lal
+$(LAL_TARGET) : $(LOGS_DIR)/patch.txt
+	@echo $(GREEN)lal$(WHITE) 1>&2
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		cd $(LALSUITE_REPO)/lal && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac ; \
+		cd $(LALSUITE_REPO)/lal && ./00boot ; \
+		cd $(LALSUITE_REPO)/lal && ./configure --enable-swig-python --prefix=$(INSTALL_DIR) --enable-gcc-flags=no ; \
+		cd $(LALSUITE_REPO)/lal && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xf $(TAR_DIR)/$(LAL).tar.xz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(LAL) && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac && autoreconf ; \
+		cd $(SRC_DIR)/$(LAL) && ./configure --enable-swig-python --prefix=$(INSTALL_DIR) --enable-gcc-flags=no ; \
+		cd $(SRC_DIR)/$(LAL) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+
+#########################
+# Download the software #
+#########################
+
+# patches
+patch : logs/patch.txt
+
+logs/patch.txt : $(LOGS_DIR)/tar.txt $(PATCH_DIR)/gst1.14.patch
+	echo $^ | sed -e "s@ @\n@g" > $@
+
+$(PATCH_DIR)/gst1.14.patch : $(LOGS_DIR)/tar.txt
+	@echo $(GREEN)patches$(WHITE) 1>&2
+	cp $(GSTLAL_REPO)/gstlal-inspiral/share/O3/optimized/gst1.14.patch $(PATCH_DIR)
+	cd $(GSTLAL_REPO) && patch -p1 < $(PATCH_DIR)/gst1.14.patch
+
+#tarballs
+logs/tar.txt : $(LAL_TAR_TARGET) $(LALFRAME_TAR_TARGET) $(LALMETAIO_TAR_TARGET) $(LALSIM_TAR_TARGET) $(LALBURST_TAR_TARGET) $(LALINSPIRAL_TAR_TARGET) $(LALPULSAR_TAR_TARGET) $(LALINFER_TAR_TARGET) $(LALAPPS_TAR_TARGET) $(GLUE_TAR_TARGET) $(GSTLAL_TAR_TARGET) $(GSTLALUGLY_TAR_TARGET) $(GSTLALBURST_TAR_TARGET) $(GSTLALCALIB_TAR_TARGET) $(GSTLALINSPIRAL_TAR_TARGET)
+	echo $^ | sed -e "s@ @\n@g" > $@
+
+$(GSTLALINSPIRAL_TAR_TARGET) : $(GSTLALCALIB_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(GSTLALINSPIRAL).tar.gz --directory-prefix=$(TAR_DIR)  -nc
+
+$(GSTLALCALIB_TAR_TARGET) : $(GSTLALBURST_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(GSTLALCALIBRATION).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+$(GSTLALBURST_TAR_TARGET) : $(GSTLAUGLYL_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(GSTLALBURST).tar.gz --directory-prefix=$(TAR_DIR) -nc
+	
+$(GSTLALUGLY_TAR_TARGET) : $(GSTLAL_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(GSTLALUGLY).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+$(GSTLAL_TAR_TARGET) : $(GLUE_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(GSTLAL).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+$(GLUE_TAR_TARGET) : $(LALAPPS_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(GLUE).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+$(LALAPPS_TAR_TARGET) : $(LALINFER_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LALAPPS).tar.xz --directory-prefix=$(TAR_DIR) -nc
+
+$(LALINFER_TAR_TARGET) : $(LALPULSAR_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LALINFERENCE).tar.xz --directory-prefix=$(TAR_DIR) -nc
+
+$(LALPULSAR_TAR_TARGET) : $(LALINSPIRAL_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LALPULSAR).tar.xz --directory-prefix=$(TAR_DIR) -nc
+
+$(LALINSPIRAL_TAR_TARGET) : $(LALBURST_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LALINSPIRAL).tar.xz --directory-prefix=$(TAR_DIR) -nc
+
+$(LALBURST_TAR_TARGET) : $(LALSIM_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LALBURST).tar.xz --directory-prefix=$(TAR_DIR) -nc
+
+$(LALSIM_TAR_TARGET) : $(LALMETAIO_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LALSIMULATION).tar.xz --directory-prefix=$(TAR_DIR) -nc
+
+$(LALMETAIO_TAR_TARGET) : $(LALFRAME_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LALMETAIO).tar.xz --directory-prefix=$(TAR_DIR) -nc
+
+$(LALFRAME_TAR_TARGET) : $(LAL_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LALFRAME).tar.xz --directory-prefix=$(TAR_DIR) -nc
+
+$(LAL_TAR_TARGET) : $(LOGS_DIR)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LAL).tar.xz --directory-prefix=$(TAR_DIR) -nc
+
+# git repos
+$(LOGS_DIR) :
+	mkdir -p $(SRC_DIR) $(INSTALL_DIR) $(PATCH_DIR) $(TAR_DIR)
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		if [ -f $@ ] ; then \
+			echo "Lalsuite git repo exists" ; \
+		else \
+			mkdir -p $(LALSUITE_REPO) ; \
+			git clone -b $(LALSUITE_GIT_BRANCH) https://git.ligo.org/lscsoft/lalsuite.git $(LALSUITE_REPO) ; \
+		fi ; \
+	fi ;
+	if [ "${GLUE_GIT}" = "1" ]; then \
+		if [ -f $@ ] ; then \
+			echo "Glue git repo exists" ; \
+		else \
+			mkdir -p $(GLUE_REPO) ; \
+			git clone -b $(GLUE_GIT_BRANCH) https://git.ligo.org/lscsoft/glue.git $(GLUE_REPO) ; \
+		fi ; \
+	fi ;
+	if [ "${GSTLAL_GIT}" = "1" ]; then \
+		if [ -f $@ ] ; then \
+			echo "Gstlal git repo exists" ; \
+		else \
+			mkdir -p $(GSTLAL_REPO) ; \
+			git clone -b $(GSTLAL_GIT_BRANCH) https://git.ligo.org/lscsoft/gstlal.git $(GSTLAL_REPO) ; \
+		fi ; \
+	fi ;
+	mkdir -p $(LOGS_DIR)
+
+############
+# Clean up #
+############
+
+clean-all :
+	rm -rvf $(SRC_DIR) $(INSTALL_DIR) $(PATCH_DIR) $(TAR_DIR) $(LOGS_DIR)
+	rm -rvf opt git
+	rm -rf *.txt
+
+clean-install :
+	rm -rf opt/* logs/* src/*
+
+clean-gstlal :
+	rm -rf logs/gstlal.txt $(GSTLAL_TARGET) $(GSTLALUGLY_TARGET) $(GSTLALCALIB_TARGET) $(GSTLALINSPIRAL_TARGET) $(GSTLALBURST_TARGET)
+
+clean-lalsuite :
+	rm -rf logs/lalsuite.txt $(LAL_TARGET) $(LALFRAME_TARGET) $(LALMETAIO_TARGET) $(LALSIM_TARGET) $(LALBURST_TARGET) $(LALINSPIRAL_TARGET) $(LALPULSAR_TARGET) $(LALINFER_TARGET) $(LALAPPS_TARGET) $(GLUE_TARGET)
diff --git a/gstlal-inspiral/share/O3/optimized/Makefile.ligosoftware_icc_all b/gstlal-inspiral/share/O3/optimized/Makefile.ligosoftware_icc_all
new file mode 100644
index 0000000000..d55e8bc650
--- /dev/null
+++ b/gstlal-inspiral/share/O3/optimized/Makefile.ligosoftware_icc_all
@@ -0,0 +1,794 @@
+SHELL := /bin/bash # Use bash syntax
+#
+# To run: make env.sh, then source the resulting environment file and run: make
+#
+# example command:
+# make env.sh -f Makefile.ligosoftware_icc_all
+# source env.sh
+# time make gstlal -f Makefile.ligosoftware_icc_all 1> make.out 2> make.err
+#
+# If you would like to rebuild only part of the software stack, such as lalsuite
+# or gstlal up, but it starts from the beginning if using the above command,
+# then use the touch (-t) option on the previous package.
+#
+# To rebuild lalsuite:
+# make gds -f Makefile.ligosoftware_icc_all -t
+# make lalsuite -f Makefile.ligosoftware_icc_all
+#
+# To rebuild gstlal:
+# make glue -f Makefile.ligosoftware_icc_all -t
+# make gstlal -f Makefile.ligosoftware_icc_all
+
+# Determine cluster
+CLUSTER:=$(shell hostname -d)
+
+# Set directories and paths
+SRC_DIR:=${PWD}/src
+TAR_DIR:=tarball
+LOGS_DIR:=logs
+PATCH_DIR:=${PWD}/patches
+INSTALL_DIR:=${LAL_PATH}
+ifeq ($(findstring debian,$(shell cat /etc/os-release | grep ID=)),debian)
+	PYTHON_LIB_DIR:=/usr/lib/python2.7/config-x86_64-linux-gnu
+	PYTHON_DIR:=${LAL_PATH}/lib/python2.7/site-packages
+else
+	PYTHON_LIB_DIR:=/usr/lib64
+	PYTHON_DIR:=${LAL_PATH}/lib64/python2.7/site-packages
+endif
+
+GSTLAL_REPO:=${PWD}/git/gstlal
+GLUE_REPO:=${PWD}/git/glue
+LALSUITE_REPO:=${PWD}/git/lalsuite
+
+# Set to build from git (0 = tarball, 1 = git)
+GSTLAL_GIT=1
+GLUE_GIT=1
+LALSUITE_GIT=1
+
+# Define which branch from git to build. Defaults to 'master', but the user can 
+# set the variable below. The git clone and compilation should fail if this is set to
+# an unknown branch.
+#
+GSTLAL_GIT_BRANCH="master"
+GLUE_GIT_BRANCH="master"
+LALSUITE_GIT_BRANCH="master"
+
+# Set package release versions
+GSTLALINSPIRAL=gstlal-inspiral-1.4.2
+GSTLALCALIBRATION=gstlal-calibration-1.1.9
+GSTLALBURST=gstlal-burst-0.0.5
+GSTLALUGLY=gstlal-ugly-1.5.1
+GSTLAL=gstlal-1.3.0
+GLUE=lscsoft-glue-1.60.0
+LALAPPS=lalapps-6.21.0
+LALINFERENCE=lalinference-1.9.4
+LALPULSAR=lalpulsar-1.16.0
+LALINSPIRAL=lalinspiral-1.7.7
+LALBURST=lalburst-1.4.4
+LALSIMULATION=lalsimulation-1.7.3
+LALMETAIO=lalmetaio-1.3.1
+LALFRAME=lalframe-1.4.3
+LAL=lal-6.18.0
+GDS=gds-2.18.10
+LDASTOOLSFRAMECPP=ldas-tools-framecpp-2.6.2
+LDASTOOLSAL=ldas-tools-al-2.6.0
+SWIG=swig-3.0.7
+METAIO=metaio-8.5.1
+LIBFRAME=libframe-8.30
+GSTPYTHON=gst-python-1.14.3
+GSTPLUGINSGOOD=gst-plugins-good-1.14.3
+GSTPLUGINSBASE=gst-plugins-base-1.14.3
+GSTREAMER=gstreamer-1.14.3
+GSL=gsl-1.16
+ORC=orc-0.4.26
+FFTW=fftw-3.3.8
+
+# Specify target/dependency files
+GSTINSPIRAL_TARGET=$(INSTALL_DIR)/lib/libgstlalinspiral.so
+GSTLALCALIB_TARGET=$(INSTALL_DIR)/bin/gstlal_compute_strain
+GSTLALBURST_TARGET=$(INSTALL_DIR)/lib/libgstlalburst.so
+GSTLALUGLY_TARGET=$(INSTALL_DIR)/lib/gstreamer-1.0/libgstnds.so
+GSTLAL_TARGET=$(INSTALL_DIR)/lib/libgstlal.so
+GLUE_TARGET=$(INSTALL_DIR)/bin/dmtdq_seg_insert
+LALAPPS_TARGET=$(INSTALL_DIR)/bin/lalapps_psinject
+LALINFER_TARGET=$(INSTALL_DIR)/lib/liblalinference.so
+LALPULSAR_TARGET=$(INSTALL_DIR)/lib/liblalpulsar.so
+LALINSPIRAL_TARGET=$(INSTALL_DIR)/lib/liblalinspiral.so
+LALBURST_TARGET=$(INSTALL_DIR)/lib/liblalburst.so
+LALSIM_TARGET=$(INSTALL_DIR)/lib/liblalsimulation.so
+LALMETAIO_TARGET=$(INSTALL_DIR)/lib/liblalmetaio.so
+LALFRAME_TARGET=$(INSTALL_DIR)/lib/liblalframe.so
+LAL_TARGET=$(INSTALL_DIR)/lib/liblal.so
+GDS_TARGET=$(INSTALL_DIR)/lib/libwpipe.so
+LDASTOOLSFRAMECPP_TARGET=$(INSTALL_DIR)/lib/libframecpp.so
+LDASTOOLSAL_TARGET=$(INSTALL_DIR)/lib/libldastoolsal.so
+SWIG_TARGET=$(INSTALL_DIR)/bin/swig
+METAIO_TARGET=$(INSTALL_DIR)/lib/libmetaio.so
+LIBFRAME_TARGET=$(INSTALL_DIR)/lib/libFrame.so
+GSTPYTHON_TARGET=$(INSTALL_DIR)/lib/gstreamer-1.0/libgstpythonplugin.so
+GSTGOOD_TARGET=$(INSTALL_DIR)/lib/gstreamer-1.0/libgstpng.so
+GSTBASE_TARGET=$(INSTALL_DIR)/lib/libgstapp-1.0.so
+GSTREAMER_TARGET=$(INSTALL_DIR)/lib/libgstreamer-1.0.so
+GSL_2_TARGET=$(INSTALL_DIR)/lib/pkgconfig/gsl.pc.orig
+GSL_1_TARGET=$(INSTALL_DIR)/lib/libgsl.so
+ORC_TARGET=$(INSTALL_DIR)/lib/liborc-0.4.so
+FFTW_TARGET=$(INSTALL_DIR)/lib/libfftw3.so
+
+# tarballs
+GSTLALINSPIRAL_TAR_TARGET=$(TAR_DIR)/$(GSTLALINSPIRAL).tar.gz
+GSTLALCALIB_TAR_TARGET=$(TAR_DIR)/$(GSTLALCALIBRATION).tar.gz
+GSTLALBURST_TAR_TARGET=$(TAR_DIR)/$(GSTLALBURST).tar.gz
+GSTLALUGLY_TAR_TARGET=$(TAR_DIR)/$(GSTLALUGLY).tar.gz
+GSTLAL_TAR_TARGET=$(TAR_DIR)/$(GSTLAL).tar.gz
+GLUE_TAR_TARGET=$(TAR_DIR)/$(GLUE).tar.gz
+LALAPPS_TAR_TARGET=$(TAR_DIR)/$(LALAPPS).tar.xz
+LALINFER_TAR_TARGET=$(TAR_DIR)/$(LALINFERENCE).tar.xz
+LALPULSAR_TAR_TARGET=$(TAR_DIR)/$(LALPULSAR).tar.xz
+LALINSPIRAL_TAR_TARGET=$(TAR_DIR)/$(LALINSPIRAL).tar.xz
+LALBURST_TAR_TARGET=$(TAR_DIR)/$(LALBURST).tar.xz
+LALSIM_TAR_TARGET=$(TAR_DIR)/$(LALSIMULATION).tar.xz
+LALMETAIO_TAR_TARGET=$(TAR_DIR)/$(LALMETAIO).tar.xz
+LALFRAME_TAR_TARGET=$(TAR_DIR)/$(LALFRAME).tar.xz
+LAL_TAR_TARGET=$(TAR_DIR)/$(LAL).tar.xz
+GDS_TAR_TARGET=$(TAR_DIR)/$(GDS).tar.gz
+LDASTOOLSFRAMECPP_TAR_TARGET=$(TAR_DIR)/$(LDASTOOLSFRAMECPP).tar.gz
+LDASTOOLSAL_TAR_TARGET=$(TAR_DIR)/$(LDASTOOLSAL).tar.gz
+SWIG_TAR_TARGET=$(TAR_DIR)/$(SWIG).tar.gz
+METAIO_TAR_TARGET=$(TAR_DIR)/$(METAIO).tar.gz
+LIBFRAME_TAR_TARGET=$(TAR_DIR)/$(LIBFRAME).tar.gz
+GSTPYTHON_TAR_TARGET=$(TAR_DIR)/$(GSTPYTHON).tar.xz
+GSTGOOD_TAR_TARGET=$(TAR_DIR)/$(GSTPLUGINSGOOD).tar.xz
+GSTBASE_TAR_TARGET=$(TAR_DIR)/$(GSTPLUGINSBASE).tar.xz
+GSTREAMER_TAR_TARGET=$(TAR_DIR)/$(GSTREAMER).tar.xz
+GSL_TAR_TARGET=$(TAR_DIR)/$(GSL).tar.gz
+ORC_TAR_TARGET=$(TAR_DIR)/$(ORC).tar.xz
+FFTW_TAR_TARGET=$(TAR_DIR)/$(FFTW).tar.gz
+
+# git repos
+GSTLAL_GIT_TARGET=$(GSTLAL_REPO)/TODO.md
+GLUE_GIT_TARGET=$(GLUE_REPO)/README
+LALSUITE_GIT_TARGET=$(LALSUITE_REPO)/lal/README
+
+# Specify how many processors to run on
+#CORES:=$(shell echo `nproc --all`"-2" | bc -l)
+CORES:=8
+
+# Escape code
+esc=`echo -en "\033"`
+
+# Set colors
+RED="${esc}[0;31m"
+GREEN="${esc}[0;32m"
+YELLOW="${esc}[0;33m"
+BLUE="${esc}[0;34m"
+WHITE="${esc}[m"
+
+# icc compiler locations
+ICC_CIT:=/ldcg/intel/2018u3/bin/compilervars.sh
+ICC_LHO:=/ldcg/intel/2018u3/bin/compilervars.sh
+ICC_LLO:=/ldcg/intel/2018u3/bin/compilervars.sh
+ICC_UWM:=/opt/intel/2018u3/bin/compilervars.sh
+ICC_PSU:=/ligo/apps/intel/2017u4/bin/compilervars.sh
+
+all : $(GSTINSPIRAL_TARGET) $(LOGS_DIR)/gstlal.txt
+
+#####################
+# Environment setup #
+#####################
+
+env.sh :
+	@echo 'unset GST_PLUGIN_PATH PYTHONPATH' > $@
+	@echo 'unset LD_LIBRARY_PATH LIBRARY_PATH LD_PRELOAD' >> $@
+	@echo 'LAL_PATH=${PWD}/opt' >> $@
+	@echo 'export CFLAGS="-O3 -march=native -lfftw3 -lfftw3f -lfftw3_threads -lfftw3f_threads -lmkl_core -lmkl_intel_lp64 -lmkl_sequential -lm -lpthread -Wno-write-strings -lirc -limf -Wl,-rpath,${PWD}/opt/lib"' >> $@
+	@echo 'export GCCFLAGS="-fPIC -O3 -march=native"' >> $@
+	@if [[ ${CLUSTER} == *"ligo.caltech.edu" ]] ; then \
+		echo "source ${ICC_CIT} intel64" >> $@ ; \
+		echo 'LDFLAGS_INTEL="-L$${MKLROOT}/lib/intel64"' >> $@ ; \
+	elif [[ ${CLUSTER} == *"ligo-wa.caltech.edu" ]] ; then \
+		echo "source ${ICC_LHO} intel64" >> $@ ; \
+		echo 'LDFLAGS_INTEL="-L$${MKLROOT}/lib/intel64"' >> $@ ; \
+	elif [[ ${CLUSTER} == *"ligo-la.caltech.edu" ]] ; then \
+		echo "source ${ICC_LLO} intel64" >> $@ ; \
+		echo 'LDFLAGS_INTEL="-L$${MKLROOT}/lib/intel64"' >> $@ ; \
+	elif [[ ${CLUSTER} == *"nemo.uwm.edu" ]] ; then \
+		echo "source ${ICC_UWM} intel64" >> $@ ; \
+		echo 'LDFLAGS_INTEL="-L$${MKLROOT}/lib/intel64"' >> $@ ; \
+        elif [[ ${CLUSTER} == *"psu.edu" ]] ; then \
+		echo "source ${ICC_PSU} intel64" >> $@ ; \
+		echo 'export LIBRARY_PATH=$${LD_LIBRARY_PATH}' >> $@ ; \
+		echo 'LDFLAGS_INTEL="-L$${MKLROOT}/lib/intel64"' >> $@ ; \
+	fi
+	@echo 'export LD_LIBRARY_PATH=$${LAL_PATH}/lib:$${LD_LIBRARY_PATH}' >> $@
+	@echo 'export CC="icc"' >> $@
+	@echo 'export CXX="icpc"' >> $@
+	@echo '# Force explicit linking of optimized FFTW libraries:' >> $@
+	@echo 'LDFLAGS="$${LDFLAGS_INTEL} -L${PWD}/opt/lib "' >> $@
+	@echo '# These are environment variables that do get exported' >> $@
+	@echo 'PATH=$${LAL_PATH}/bin:$${PATH}' >> $@
+	@echo 'PKG_CONFIG_PATH=$${LAL_PATH}/lib/pkgconfig:$${LAL_PATH}/lib64/pkgconfig:$${PKG_CONFIG_PATH}' >> $@
+	@echo 'PYTHONPATH=$${LAL_PATH}/lib/python2.7/site-packages:$${LAL_PATH}/lib64/python2.7/site-packages' >> $@
+	@echo 'GST_PLUGIN_PATH=$${LAL_PATH}/lib/gstreamer-1.0:$${LAL_PATH}/lib64/gstreamer-1.0' >> $@
+	@echo 'GI_TYPELIB_PATH=$${LAL_PATH}/lib/girepository-1.0:$${LAL_PATH}/lib64/girepository-1.0:$${GI_TYPELIB_PATH}' >> $@
+	@echo 'GST_REGISTRY_1_0=$${LAL_PATH}/registry.bin' >> $@
+	@echo 'LAL_DATA_PATH=/home/cbc/ROM_data' >> $@
+	@echo 'KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80"' >> $@
+	@echo 'KAFKA_HEAP_OPTS="-Xms8G -Xmx8G"' >> $@
+	@echo 'export LAL_PATH LDFLAGS_INTEL LDFLAGS PATH PKG_CONFIG_PATH PYTHONPATH GST_PLUGIN_PATH GI_TYPELIB_PATH GST_REGISTRY_1_0 LAL_DATA_PATH KAFKA_JVM_PERFORMANCE_OPTS KAFKA_HEAP_OPTS' >> $@
+
+###########
+# Install #
+###########
+
+# gstlal (all)
+gstlal : logs/gstlal.txt src/kafka_2.11-2.0.0
+
+all : src/kafka_2.11-2.0.0
+
+src:
+	mkdir -p $@
+
+opt/bin:
+	mkdir -p $@/bin
+
+opt/config:
+	mkdir -p $@/config
+
+opt/libs:
+	mkdir -p $@/libs
+
+tarball:
+	mkdir -p $@
+
+# KAFKA
+tarball/kafka_2.11-2.0.0.tgz: tarball
+	wget -nc -P tarball http://mirror.reverse.net/pub/apache/kafka/2.0.0/kafka_2.11-2.0.0.tgz
+
+src/kafka_2.11-2.0.0: tarball/kafka_2.11-2.0.0.tgz src opt/bin opt/config opt/libs
+	cd src && tar -xzf ../tarball/kafka_2.11-2.0.0.tgz && cd .. && cp -r src/kafka_2.11-2.0.0/bin/* opt/bin/. && cp src/kafka_2.11-2.0.0/libs/* opt/libs/. && cp src/kafka_2.11-2.0.0/config/* opt/config/.
+
+
+#####################
+# Check time stamps #
+#####################
+
+check :
+	@if [ -f logs/all.txt ] ; then rm logs/all.txt ; fi ;
+	@cat logs/* | uniq > logs/all.txt
+	@if [ -f logs/gstlal.txt ] ; then ls logs/gstlal.txt >> logs/all.txt ; fi ;
+	@ls -ltrh $$(cat logs/all.txt)
+
+logs/gstlal.txt : $(LOGS_DIR)/glue.txt $(GSTLAL_TARGET) $(GSTLALUGLY_TARGET) $(GSTLALBURST_TARGET) $(GSTLALCALIB_TARGET) $(GSTINSPIRAL_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+# gstlal-inspiral
+$(GSTINSPIRAL_TARGET) : $(GSTLALCALIB_TARGET)
+	@echo $(GREEN)gstlal-inspiral$(WHITE) 1>&2
+	if [ "${GSTLAL_GIT}" = "1" ]; then \
+		cd $(GSTLAL_REPO)/gstlal-inspiral && echo | ./00init.sh ; \
+		cd $(GSTLAL_REPO)/gstlal-inspiral && ./configure --prefix=$(INSTALL_DIR) --without-doxygen ; \
+		cd $(GSTLAL_REPO)/gstlal-inspiral && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xzkf $(TAR_DIR)/$(GSTLALINSPIRAL).tar.gz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(GSTLALINSPIRAL) && ./configure --prefix=$(INSTALL_DIR) --without-doxygen ; \
+		cd $(SRC_DIR)/$(GSTLALINSPIRAL) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# gstlal-calibration
+$(GSTLALCALIB_TARGET) : $(GSTLALBURST_TARGET)
+	@echo $(GREEN)gstlal-calibration$(WHITE) 1>&2
+	if [ "${GSTLAL_GIT}" = "1" ]; then \
+		cd $(GSTLAL_REPO)/gstlal-calibration && echo | ./00init.sh ; \
+		cd $(GSTLAL_REPO)/gstlal-calibration && ./configure --prefix=$(INSTALL_DIR) --without-doxygen ; \
+		cd $(GSTLAL_REPO)/gstlal-calibration && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xzkf $(TAR_DIR)/$(GSTLALCALIBRATION).tar.gz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(GSTLALCALIBRATION) && ./configure --prefix=$(INSTALL_DIR) --without-doxygen ; \
+		cd $(SRC_DIR)/$(GSTLALCALIBRATION) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# gstlal-burst
+$(GSTLALBURST_TARGET) : $(GSTLALUGLY_TARGET)
+	@echo $(GREEN)gstlal-burst$(WHITE) 1>&2
+	if [ "${GSTLAL_GIT}" = "1" ]; then \
+		cd $(GSTLAL_REPO)/gstlal-burst && echo | ./00init.sh ; \
+		cd $(GSTLAL_REPO)/gstlal-burst && ./configure --prefix=$(INSTALL_DIR) --without-doxygen ; \
+		cd $(GSTLAL_REPO)/gstlal-burst && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xzkf $(TAR_DIR)/$(GSTLALBURST).tar.gz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(GSTLALBURST) && ./configure --prefix=$(INSTALL_DIR) --without-doxygen ; \
+		cd $(SRC_DIR)/$(GSTLALBURST) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# gstlal-ugly
+$(GSTLALUGLY_TARGET) : $(GSTLAL_TARGET)
+	@echo $(GREEN)gstlal-ugly$(WHITE) 1>&2
+	if [ "${GSTLAL_GIT}" = "1" ]; then \
+		cd $(GSTLAL_REPO)/gstlal-ugly && echo | ./00init.sh ; \
+		cd $(GSTLAL_REPO)/gstlal-ugly && ./configure --prefix=$(INSTALL_DIR) --without-doxygen ; \
+		cd $(GSTLAL_REPO)/gstlal-ugly && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xzkf $(TAR_DIR)/$(GSTLALUGLY).tar.gz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(GSTLALUGLY) && ./configure --prefix=$(INSTALL_DIR) --without-doxygen ; \
+		cd $(SRC_DIR)/$(GSTLALUGLY) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# gstlal
+$(GSTLAL_TARGET) : $(GLUE_TARGET)
+	@echo $(GREEN)gstlal$(WHITE) 1>&2
+	if [ "${GSTLAL_GIT}" = "1" ]; then \
+		cd $(GSTLAL_REPO)/gstlal && echo | ./00init.sh ; \
+		cd $(GSTLAL_REPO)/gstlal && ./configure --prefix=$(INSTALL_DIR) --without-doxygen ; \
+		cd $(GSTLAL_REPO)/gstlal && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xzkf $(TAR_DIR)/$(GSTLAL).tar.gz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(GSTLAL) && ./configure --prefix=$(INSTALL_DIR) --without-doxygen ; \
+		cd $(SRC_DIR)/$(GSTLAL) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# glue
+glue : logs/glue.txt
+
+logs/glue.txt : $(LOGS_DIR)/lalsuite.txt $(GLUE_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+$(GLUE_TARGET) : $(LALAPPS_TARGET)
+	@echo $(GREEN)glue$(WHITE) 1>&2
+	if [ "${GLUE_GIT}" = "1" ]; then \
+		cd $(GLUE_REPO) && python setup.py install --prefix=$(INSTALL_DIR) ; \
+	else \
+		tar -xzf $(TAR_DIR)/$(GLUE).tar.gz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/lscsoft-$(GLUE) && python setup.py install --prefix=$(INSTALL_DIR) ; \
+	fi ;
+
+# lalsuite
+lalsuite : logs/lalsuite.txt
+
+logs/lalsuite.txt : $(LOGS_DIR)/gds.txt $(LAL_TARGET) $(LALFRAME_TARGET) $(LALMETAIO_TARGET) $(LALSIM_TARGET) $(LALBURST_TARGET) $(LALINSPIRAL_TARGET) $(LALPULSAR_TARGET) $(LALINFER_TARGET) $(LALAPPS_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+# lalapps
+# FIXME --enable-gcc-flags set to no on lalapps configure as work around to avoid warnings stopping install process
+# FIXME : Commenting out the explicit linking to gslcblas
+# Not sure what causes the warnings
+$(LALAPPS_TARGET) : $(LALINFER_TARGET)
+	@echo $(GREEN)lalapps$(WHITE) 1>&2
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		cd $(LALSUITE_REPO)/lalapps && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac ; \
+		cd $(LALSUITE_REPO)/lalapps && ./00boot ; \
+		cd $(LALSUITE_REPO)/lalapps && ./configure --enable-gcc-flags=no --enable-swig-python --disable-lalxml --prefix=$(INSTALL_DIR) --without-doxygen ; \
+		cd $(LALSUITE_REPO)/lalapps && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xf $(TAR_DIR)/$(LALAPPS).tar.xz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(LALAPPS) && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac && autoreconf ; \
+		cd $(SRC_DIR)/$(LALAPPS) && ./configure --enable-gcc-flags=no --enable-swig-python --disable-lalxml --prefix=$(INSTALL_DIR) --without-doxygen ; \
+		cd $(SRC_DIR)/$(LALAPPS) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# lalinference
+$(LALINFER_TARGET) : $(LALPULSAR_TARGET)
+	@echo $(GREEN)lalinference$(WHITE) 1>&2
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		cd $(LALSUITE_REPO)/lalapps && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac ; \
+		cd $(LALSUITE_REPO)/lalinference && ./00boot ; \
+		cd $(LALSUITE_REPO)/lalinference && ./configure --enable-swig-python --disable-lalxml --without-doxygen --prefix=$(INSTALL_DIR)  CC="gcc" CXX="g++" CFLAGS="$(GCCFLAGS)" ; \
+		cd $(LALSUITE_REPO)/lalinference && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xf $(TAR_DIR)/$(LALINFERENCE).tar.xz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(LALINFERENCE) && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac && autoreconf ; \
+		cd $(SRC_DIR)/$(LALINFERENCE) && ./configure --enable-swig-python --disable-lalxml --without-doxygen --prefix=$(INSTALL_DIR)  CC="gcc" CXX="g++" CFLAGS="$(GCCFLAGS)" ; \
+		cd $(SRC_DIR)/$(LALINFERENCE) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# lalpulsar
+$(LALPULSAR_TARGET) : $(LALINSPIRAL_TARGET)
+	@echo $(GREEN)lalpulsar$(WHITE) 1>&2
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		cd $(LALSUITE_REPO)/lalapps && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac ; \
+		cd $(LALSUITE_REPO)/lalpulsar && ./00boot ; \
+		cd $(LALSUITE_REPO)/lalpulsar && ./configure --enable-swig-python --disable-lalxml --without-doxygen --prefix=$(INSTALL_DIR)  CC="gcc" CXX="g++" CFLAGS="$(GCCFLAGS)" ; \
+		cd $(LALSUITE_REPO)/lalpulsar && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xf $(TAR_DIR)/$(LALPULSAR).tar.xz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(LALPULSAR) && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac && autoreconf ; \
+		cd $(SRC_DIR)/$(LALPULSAR) && ./configure --enable-swig-python --disable-lalxml --without-doxygen --prefix=$(INSTALL_DIR)  CC="gcc" CXX="g++" CFLAGS="$(GCCFLAGS)" ; \
+		cd $(SRC_DIR)/$(LALPULSAR) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# lalinspiral
+$(LALINSPIRAL_TARGET) : $(LALBURST_TARGET)
+	@echo $(GREEN)lalinspiral$(WHITE) 1>&2
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		cd $(LALSUITE_REPO)/lalinspiral && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac ; \
+		cd $(LALSUITE_REPO)/lalinspiral && ./00boot ; \
+		cd $(LALSUITE_REPO)/lalinspiral && ./configure --enable-swig-python --without-doxygen --prefix=$(INSTALL_DIR) ; \
+		cd $(LALSUITE_REPO)/lalinspiral && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xf $(TAR_DIR)/$(LALINSPIRAL).tar.xz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(LALINSPIRAL) && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac && autoreconf ; \
+		cd $(SRC_DIR)/$(LALINSPIRAL) && ./configure --enable-swig-python --without-doxygen --prefix=$(INSTALL_DIR) ; \
+		cd $(SRC_DIR)/$(LALINSPIRAL) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# lalburst
+$(LALBURST_TARGET) : $(LALSIM_TARGET)
+	@echo $(GREEN)lalburst$(WHITE) 1>&2
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		cd $(LALSUITE_REPO)/lalburst && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac ; \
+		cd $(LALSUITE_REPO)/lalburst && ./00boot ; \
+		cd $(LALSUITE_REPO)/lalburst && ./configure --enable-swig-python --without-doxygen --prefix=$(INSTALL_DIR) ; \
+		cd $(LALSUITE_REPO)/lalburst && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xf $(TAR_DIR)/$(LALBURST).tar.xz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(LALBURST) && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac && autoreconf ; \
+		cd $(SRC_DIR)/$(LALBURST) && ./configure --enable-swig-python --without-doxygen --prefix=$(INSTALL_DIR) ; \
+		cd $(SRC_DIR)/$(LALBURST) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# lalsimulation
+$(LALSIM_TARGET) : $(LALMETAIO_TARGET)
+	@echo $(GREEN)lalsimulation$(WHITE) 1>&2
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		cd $(LALSUITE_REPO)/lalsimulation && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac ; \
+		cd $(LALSUITE_REPO)/lalsimulation && ./00boot ; \
+		cd $(LALSUITE_REPO)/lalsimulation && ./configure --disable-openmp --enable-swig-python --without-doxygen --prefix=$(INSTALL_DIR) CFLAGS="$(CFLAGS) -lmkl_def" ; \
+		cd $(LALSUITE_REPO)/lalsimulation && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xf $(TAR_DIR)/$(LALSIMULATION).tar.xz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(LALSIMULATION) && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac && autoreconf ; \
+		cd $(SRC_DIR)/$(LALSIMULATION) && ./configure --disable-openmp --enable-swig-python --without-doxygen --prefix=$(INSTALL_DIR) CFLAGS="$(CFLAGS) -lmkl_def" ; \
+		cd $(SRC_DIR)/$(LALSIMULATION) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# lalmetaio
+$(LALMETAIO_TARGET) : $(LALFRAME_TARGET)
+	@echo $(GREEN)lalmetaio$(WHITE) 1>&2
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		cd $(LALSUITE_REPO)/lalmetaio && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac ; \
+		cd $(LALSUITE_REPO)/lalmetaio && ./00boot ; \
+		cd $(LALSUITE_REPO)/lalmetaio && ./configure --enable-swig-python --without-doxygen --prefix=$(INSTALL_DIR) ; \
+		cd $(LALSUITE_REPO)/lalmetaio && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xf $(TAR_DIR)/$(LALMETAIO).tar.xz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(LALMETAIO) && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac && autoreconf ; \
+		cd $(SRC_DIR)/$(LALMETAIO) && ./configure --enable-swig-python --without-doxygen --prefix=$(INSTALL_DIR) ; \
+		cd $(SRC_DIR)/$(LALMETAIO) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# lalframe
+$(LALFRAME_TARGET) : $(LAL_TARGET)
+	@echo $(GREEN)lalframe$(WHITE) 1>&2
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		cd $(LALSUITE_REPO)/lalframe && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac ; \
+		cd $(LALSUITE_REPO)/lalframe && ./00boot ; \
+		cd $(LALSUITE_REPO)/lalframe && ./configure --enable-swig-python --without-doxygen --prefix=$(INSTALL_DIR) ; \
+		cd $(LALSUITE_REPO)/lalframe && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xf $(TAR_DIR)/$(LALFRAME).tar.xz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(LALFRAME) && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac && autoreconf ; \
+		cd $(SRC_DIR)/$(LALFRAME) && ./configure --enable-swig-python --without-doxygen --prefix=$(INSTALL_DIR) ; \
+		cd $(SRC_DIR)/$(LALFRAME) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# lal
+$(LAL_TARGET) : $(LIBFRAME_TARGET) $(METAIO_TARGET) $(SWIG_TARGET) $(LDASTOOLSAL_TARGET)  $(LDASTOOLSFRAMECPP_TARGET) $(GDS_TARGET)
+	@echo $(GREEN)lal$(WHITE) 1>&2
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		cd $(LALSUITE_REPO)/lal && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac ; \
+		cd $(LALSUITE_REPO)/lal && ./00boot ; \
+		cd $(LALSUITE_REPO)/lal && ./configure --enable-swig-python --without-doxygen --prefix=$(INSTALL_DIR) ; \
+		cd $(LALSUITE_REPO)/lal && make -j$(CORES) && make install -j$(CORES) ; \
+	else \
+		tar -xf $(TAR_DIR)/$(LAL).tar.xz -C $(SRC_DIR) ; \
+		cd $(SRC_DIR)/$(LAL) && sed -i -e 's@AC_CHECK_LIB(\[gslcblas\]@#AC_CHECK_LIB(\[gslcblas\]@g' configure.ac && autoreconf ; \
+		cd $(SRC_DIR)/$(LAL) && ./configure --enable-swig-python --without-doxygen --prefix=$(INSTALL_DIR) ; \
+		cd $(SRC_DIR)/$(LAL) && make -j$(CORES) && make install -j$(CORES) ; \
+	fi ;
+
+# gds
+gds : logs/gds.txt
+
+logs/gds.txt : $(LOGS_DIR)/ldas-tools-framecpp.txt $(GDS_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+$(GDS_TARGET) : $(LDASTOOLSFRAMECPP_TARGET)
+	@echo $(GREEN)gds$(WHITE) 1>&2
+	tar -xzf $(TAR_DIR)/$(GDS).tar.gz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(GDS) && ./configure --enable-online --prefix=$(INSTALL_DIR) CC="gcc" CXX="g++" CFLAGS="$(GCCFLAGS) -lfftw3_threads -lfftw3f_threads"
+	cd $(SRC_DIR)/$(GDS) && make && make install
+
+# ldas-tools-framecpp
+ldas-tools-framecpp : logs/ldas-tools-framecpp.txt
+
+logs/ldas-tools-framecpp.txt : $(LOGS_DIR)/ldas-tools-al.txt $(LDASTOOLSFRAMECPP_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+$(LDASTOOLSFRAMECPP_TARGET) : $(LDASTOOLSAL_TARGET)
+	@echo $(GREEN)ldas-tools-frmecpp$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(LDASTOOLSFRAMECPP).tar.gz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(LDASTOOLSFRAMECPP) && ./configure --prefix=$(INSTALL_DIR) --without-doxygen CC="gcc" CXX="g++" CFLAGS="$(GCCFLAGS)"
+	cd $(SRC_DIR)/$(LDASTOOLSFRAMECPP) && make DESTDIR=/ -j$(CORES) && make install DESTDIR=/ -j$(CORES)
+
+# ldas-tools-al
+ldas-tools-al : logs/ldas-tools-al.txt
+
+logs/ldas-tools-al.txt : $(LOGS_DIR)/swig.txt $(LDASTOOLSAL_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+$(LDASTOOLSAL_TARGET) : $(SWIG_TARGET)
+	@echo $(GREEN)ldas-tools-al$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(LDASTOOLSAL).tar.gz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(LDASTOOLSAL) && ./configure --prefix=$(INSTALL_DIR) --without-doxygen CC="gcc" CXX="g++" CFLAGS="$(GCCFLAGS)"
+	cd $(SRC_DIR)/$(LDASTOOLSAL) && make -j$(CORES) && make install -j$(CORES)
+
+# swig
+swig : logs/swig.txt
+
+logs/swig.txt : $(LOGS_DIR)/metaio.txt $(SWIG_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+$(SWIG_TARGET) : $(METAIO_TARGET)
+	@echo $(GREEN)swig$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(SWIG).tar.gz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(SWIG) && ./configure --prefix=$(INSTALL_DIR)
+	cd $(SRC_DIR)/$(SWIG) && make -j$(CORES) && make install -j$(CORES)
+
+# metaio
+metaio : logs/metaio.txt
+
+logs/metaio.txt : $(LOGS_DIR)/libframe.txt $(METAIO_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+$(METAIO_TARGET) : $(LIBFRAME_TARGET)
+	@echo $(GREEN)metaio$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(METAIO).tar.gz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(METAIO) && ./configure --prefix=$(INSTALL_DIR) --with-matlab=no
+	cd $(SRC_DIR)/$(METAIO) && make -j$(CORES) && make install -j$(CORES)
+	# Needed with-matlab option for intel_haswell test
+
+# libframe
+libframe : logs/libframe.txt
+
+logs/libframe.txt : $(LOGS_DIR)/gstreamer.txt $(LIBFRAME_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+$(LIBFRAME_TARGET) : $(GSTPYTHON_TARGET)
+	@echo $(GREEN)libframe$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(LIBFRAME).tar.gz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(LIBFRAME) && ./configure --prefix=$(INSTALL_DIR)
+	cd $(SRC_DIR)/$(LIBFRAME) && make -j$(CORES) && make install -j$(CORES)
+
+# gstreamer (all)
+gstreamer : logs/gstreamer.txt
+
+logs/gstreamer.txt : $(LOGS_DIR)/gsl.txt $(GSTREAMER_TARGET) $(GSTBASE_TARGET) $(GSTGOOD_TARGET) $(GSTPYTHON_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+# gstreamer plugin python
+$(GSTPYTHON_TARGET) : $(GSTGOOD_TARGET)
+	@echo $(GREEN)gst-python$(WHITE) 1>&2
+	mkdir -p $(INSTALL_DIR)/lib/python2.7/site-packages/gi/overrides
+	tar -xf $(TAR_DIR)/$(GSTPYTHON).tar.xz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(GSTPYTHON) && ./configure --prefix=$(INSTALL_DIR) --exec-prefix=$(INSTALL_DIR) --with-libpython-dir=$(PYTHON_LIB_DIR) --with-pygi-overrides-dir=$(INSTALL_DIR)/lib/python2.7/site-packages/gi/overrides
+	cd $(SRC_DIR)/$(GSTPYTHON) && make -j$(CORES) && make install -j$(CORES)
+
+# gstreamer plugin good
+$(GSTGOOD_TARGET) : $(GSTBASE_TARGET)
+	@echo $(GREEN)gst-good$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(GSTPLUGINSGOOD).tar.xz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(GSTPLUGINSGOOD) && ./configure --disable-gst_v4l2 --prefix=$(INSTALL_DIR)
+	cd $(SRC_DIR)/$(GSTPLUGINSGOOD) && make -j$(CORES) && make install -j$(CORES)
+
+# gstreamer plugin base
+$(GSTBASE_TARGET) : $(GSTREAMER_TARGET)
+	@echo $(GREEN)gst-base$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(GSTPLUGINSBASE).tar.xz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(GSTPLUGINSBASE) && ./configure --prefix=$(INSTALL_DIR)
+	cd $(SRC_DIR)/$(GSTPLUGINSBASE) && make -j$(CORES) && make install -j$(CORES)
+
+# gstreamer
+$(GSTREAMER_TARGET) : $(GSL_2_TARGET)
+	@echo $(GREEN)gstreamer$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(GSTREAMER).tar.xz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(GSTREAMER) && ./configure --prefix=$(INSTALL_DIR)
+	cd $(SRC_DIR)/$(GSTREAMER) && make -j$(CORES) && make install -j$(CORES)
+
+# GSL
+gsl : logs/gsl.txt
+
+logs/gsl.txt : $(LOGS_DIR)/orc.txt $(GSL_1_TARGET) $(GSL_2_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+## FIXME Hack to make gsl default to atlas for blas
+$(GSL_2_TARGET) : $(GSL_1_TARGET)
+	cp $(INSTALL_DIR)/lib/pkgconfig/gsl.pc $@
+	sed 's/-lgslcblas/ -lmkl_intel_ilp64 -lmkl_core -lmkl_sequential -lpthread -lm/' $@ > $(INSTALL_DIR)/lib/pkgconfig/gsl.pc
+
+$(GSL_1_TARGET) : $(ORC_TARGET)
+	@echo $(GREEN)gsl$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(GSL).tar.gz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(GSL) && ./configure --prefix=$(INSTALL_DIR) CFLAGS="${CFLAGS}" CC="icc" CXX="icpc" GSL_CBLAS_LIB='-lmkl_intel_ilp64 -lmkl_core -lmkl_sequential'
+	cd $(SRC_DIR)/$(GSL) && make -j$(CORES) && make install -j$(CORES)
+
+# ORC
+orc : logs/orc.txt
+
+logs/orc.txt : $(LOGS_DIR)/fftw.txt $(ORC_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+$(ORC_TARGET) : $(FFTW_TARGET)
+	@echo $(GREEN)orc$(WHITE) 1>&2
+	tar -xf $(TAR_DIR)/$(ORC).tar.xz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(ORC) && ./configure --prefix=$(INSTALL_DIR)
+	cd $(SRC_DIR)/$(ORC) && make -j$(CORES) && make install -j$(CORES)
+
+# fftw
+fftw : logs/fftw.txt
+
+logs/fftw.txt : $(LOGS_DIR)/patch.txt $(FFTW_TARGET)
+	@echo $^ | sed -e "s@ @\n@g" > $@
+
+# ./configure, make, make install run thrice to install single and double precision, and long double libs 
+$(FFTW_TARGET) : $(LOGS_DIR)/patch.txt
+	@echo $(GREEN)fftw$(WHITE) 1>&2
+	tar -xzf $(TAR_DIR)/$(FFTW).tar.gz -C $(SRC_DIR)
+	cd $(SRC_DIR)/$(FFTW) && \
+		./configure CFLAGS="-O3 -march=native -lmkl_core -lmkl_intel_lp64 -lmkl_sequential -lm -lpthread -Wno-write-strings -lirc -limf -Wl,-rpath,${PWD}/opt/lib" LDFLAGS="${LDFLAGS_INTEL}" --enable-shared --enable-sse --enable-sse2 --enable-avx --enable-float --enable-fma --enable-avx2 --enable-threads --prefix=$(INSTALL_DIR) && \
+		make -j$(CORES) && make install -j$(CORES) && make clean && \
+		./configure CFLAGS="-O3 -march=native -lmkl_core -lmkl_intel_lp64 -lmkl_sequential -lm -lpthread -Wno-write-strings -lirc -limf -Wl,-rpath,${PWD}/opt/lib" LDFLAGS="${LDFLAGS_INTEL}" --enable-shared --enable-sse2 --enable-avx --enable-avx --enable-fma --enable-avx2 --enable-threads --prefix=$(INSTALL_DIR) && \
+		make -j$(CORES) && make install -j$(CORES) && make clean && \
+		./configure CFLAGS="-O3 -march=native -lmkl_core -lmkl_intel_lp64 -lmkl_sequential -lm -lpthread -Wno-write-strings -lirc -limf -Wl,-rpath,${PWD}/opt/lib" LDFLAGS="${LDFLAGS_INTEL}" --enable-shared --enable-fma --enable-threads --enable-long-double --prefix=$(INSTALL_DIR) && \
+		make -j$(CORES) && make install -j$(CORES)
+
+#########################
+# Download the software #
+#########################
+
+# patches
+patch : logs/patch.txt
+
+logs/patch.txt : $(LOGS_DIR)/tar.txt $(PATCH_DIR)/gst1.14.patch
+	echo $^ | sed -e "s@ @\n@g" > $@
+
+$(PATCH_DIR)/gst1.14.patch : $(LOGS_DIR)/tar.txt
+	@echo $(GREEN)patches$(WHITE) 1>&2
+	cp $(GSTLAL_REPO)/gstlal-inspiral/share/O3/optimized/gst1.14.patch $(PATCH_DIR)
+	cd $(GSTLAL_REPO) && patch -p1 < $(PATCH_DIR)/gst1.14.patch
+
+#tarballs
+logs/tar.txt : $(FFTW_TAR_TARGET) $(ORC_TAR_TARGET) $(GSL_TAR_TARGET) $(GSTREAMER_TAR_TARGET) $(GSTBASE_TAR_TARGET) $(GSTGOOD_TAR_TARGET) $(GSTPYTHON_TAR_TARGET) $(LIBFRAME_TAR_TARGET) $(METAIO_TAR_TARGET) $(SWIG_TAR_TARGET) $(LDASTOOLSAL_TAR_TARGET) $(LDASTOOLSFRAMECPP_TAR_TARGET) $(GDS_TAR_TARGET)
+	echo $^ | sed -e "s@ @\n@g" > $@
+
+$(GDS_TAR_TARGET) : $(LDASTOOLSFRAMECPP_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(GDS).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+$(LDASTOOLSFRAMECPP_TAR_TARGET) : $(LDASTOOLSAL_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(LDASTOOLSFRAMECPP).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+$(LDASTOOLSAL_TAR_TARGET) : $(SWIG_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(LDASTOOLSAL).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+$(SWIG_TAR_TARGET) : $(METAIO_TAR_TARGET)
+	wget --no-check-certificate http://downloads.sourceforge.net/project/swig/swig/$(SWIG)/$(SWIG).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+$(METAIO_TAR_TARGET) : $(LIBFRAME_TAR_TARGET)
+	wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(METAIO).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+$(LIBFRAME_TAR_TARGET) : $(GSTPYTHON_TAR_TARGET)
+	wget --no-check-certificate http://lappweb.in2p3.fr/virgo/FrameL/$(LIBFRAME).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+$(GSTPYTHON_TAR_TARGET) : $(GSTGOOD_TAR_TARGET)
+	wget --no-check-certificate http://gstreamer.freedesktop.org/src/gst-python/$(GSTPYTHON).tar.xz --directory-prefix=$(TAR_DIR) -nc
+
+$(GSTGOOD_TAR_TARGET) : $(GSTBASE_TAR_TARGET)
+	wget --no-check-certificate http://gstreamer.freedesktop.org/src/gst-plugins-good/$(GSTPLUGINSGOOD).tar.xz --directory-prefix=$(TAR_DIR) -nc
+
+$(GSTBASE_TAR_TARGET) : $(GSTREAMER_TAR_TARGET)
+	wget --no-check-certificate http://gstreamer.freedesktop.org/src/gst-plugins-base/$(GSTPLUGINSBASE).tar.xz --directory-prefix=$(TAR_DIR) -nc
+
+$(GSTREAMER_TAR_TARGET) : $(GSL_TAR_TARGET)
+	wget --no-check-certificate http://gstreamer.freedesktop.org/src/gstreamer/$(GSTREAMER).tar.xz --directory-prefix=$(TAR_DIR) -nc
+
+$(GSL_TAR_TARGET) : $(ORC_TAR_TARGET)
+	wget --no-check-certificate http://ftp.gnu.org/gnu/gsl/$(GSL).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+$(ORC_TAR_TARGET) : $(FFTW_TAR_TARGET)
+	wget --no-check-certificate http://gstreamer.freedesktop.org/src/orc/$(ORC).tar.xz --directory-prefix=$(TAR_DIR) -nc
+
+$(FFTW_TAR_TARGET) : $(LOGS_DIR)
+	wget --no-check-certificate http://www.fftw.org/$(FFTW).tar.gz --directory-prefix=$(TAR_DIR) -nc
+
+# git repos
+$(LOGS_DIR) :
+	mkdir -p $(SRC_DIR) $(INSTALL_DIR) $(PATCH_DIR) $(TAR_DIR) $(PYTHON_DIR)
+	if [ "${LALSUITE_GIT}" = "1" ]; then \
+		if [ -f $@ ] ; then \
+			echo "Lalsuite git repo exists" ; \
+		else \
+			mkdir -p $(LALSUITE_REPO) ; \
+			git clone -b $(LALSUITE_GIT_BRANCH) https://git.ligo.org/lscsoft/lalsuite.git $(LALSUITE_REPO) ; \
+		fi ; \
+	else \
+		wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LAL).tar.xz --directory-prefix=$(TAR_DIR) -nc ; \
+		wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LALFRAME).tar.xz --directory-prefix=$(TAR_DIR) -nc ; \
+		wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LALMETAIO).tar.xz --directory-prefix=$(TAR_DIR) -nc ; \
+		wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LALSIMULATION).tar.xz --directory-prefix=$(TAR_DIR) -nc ; \
+		wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LALBURST).tar.xz --directory-prefix=$(TAR_DIR) -nc ; \
+		wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LALINSPIRAL).tar.xz --directory-prefix=$(TAR_DIR) -nc ; \
+		wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LALPULSAR).tar.xz --directory-prefix=$(TAR_DIR) -nc ; \
+		wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LALINFERENCE).tar.xz --directory-prefix=$(TAR_DIR) -nc ; \
+		wget --no-check-certificate http://software.ligo.org/lscsoft/source/lalsuite/$(LALAPPS).tar.xz --directory-prefix=$(TAR_DIR) -nc ; \
+	fi ;
+	if [ "${GLUE_GIT}" = "1" ]; then \
+		if [ -f $@ ] ; then \
+			echo "Glue git repo exists" ; \
+		else \
+			mkdir -p $(GLUE_REPO) ; \
+			git clone -b $(GLUE_GIT_BRANCH) https://git.ligo.org/lscsoft/glue.git $(GLUE_REPO) ; \
+		fi ; \
+	else \
+		wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(GLUE).tar.gz --directory-prefix=$(TAR_DIR) -nc ; \
+	fi ;
+	if [ "${GSTLAL_GIT}" = "1" ]; then \
+		if [ -f $@ ] ; then \
+			echo "Gstlal git repo exists" ; \
+		else \
+			mkdir -p $(GSTLAL_REPO) ; \
+			git clone -b $(GSTLAL_GIT_BRANCH) https://git.ligo.org/lscsoft/gstlal.git $(GSTLAL_REPO) ; \
+		fi ; \
+	else \
+		wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(GSTLAL).tar.gz --directory-prefix=$(TAR_DIR) -nc ; \
+		wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(GSTLALUGLY).tar.gz --directory-prefix=$(TAR_DIR) -nc ; \
+		wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(GSTLALBURST).tar.gz --directory-prefix=$(TAR_DIR) -nc ; \
+		wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(GSTLALCALIBRATION).tar.gz --directory-prefix=$(TAR_DIR) -nc ; \
+		wget --no-check-certificate http://software.ligo.org/lscsoft/source/$(GSTLALINSPIRAL).tar.gz --directory-prefix=$(TAR_DIR)  -nc ; \
+	fi ;
+	mkdir -p $(LOGS_DIR)
+
+############
+# Clean up #
+############
+
+clean-all :
+	rm -rvf $(SRC_DIR) $(INSTALL_DIR) $(PATCH_DIR) $(TAR_DIR) $(LOGS_DIR)
+	rm -rvf opt git
+	rm -rf *.txt
+
+clean-install :
+	rm -rf opt/* logs/* src/*
+
+clean-gstlal :
+	rm -rf logs/gstlal.txt $(GSTLAL_TARGET) $(GSTLALUGLY_TARGET) $(GSTLALBURST_TARGET) $(GSTLALCALIB_TARGET) $(GSTLALINSPIRAL_TARGET)
+
+clean-lalsuite :
+	rm -rf logs/lalsuite.txt $(LAL_TARGET) $(LALFRAME_TARGET) $(LALMETAIO_TARGET) $(LALSIM_TARGET) $(LALBURST_TARGET) $(LALINSPIRAL_TARGET) $(LALPULSAR_TARGET) $(LALINFER_TARGET) $(LALAPPS_TARGET) $(GLUE_TARGET)
+
+clean-gds :
+	rm -rf logs/gds.txt $(GDS_TARGET)
+
+clean-ldas-tools-framecpp :
+	rm -rf logs/ldas-tools-framecpp.txt $(LDASTOOLSFRAMECPP_TARGET)
+
+clean-ldas-tools-al :
+	rm -rf logs/ldas-tools-al.txt $(LDASTOOLSAL_TARGET)
+
+clean-swig :
+	rm -rf logs/swig.txt $(SWIG_TARGET)
+
+clean-metaio :
+	rm -rf logs/metaio.txt $(METAIO_TARGET)
+
+clean-libframe :
+	rm -rf logs/libframe.txt $(LIBFRAME_TARGET)
+
+clean-gstreamer :
+	rm -rf logs/gstreamer.txt $(GSTREAMER_TARGET) $(GSTBASE_TARGET) $(GSTGOOD_TARGET) $(GSTPYTHON_TARGET)
+
+clean-gsl :
+	rm -rf logs/gsl.txt $(GSL_1_TARGET) $(GSL_2_TARGET)
+
+clean-orc :
+	rm -rf logs/orc.txt $(ORC_TARGET)
+
+clean-fftw :
+	rm -rf logs/fftw.txt $(FFTW_TARGET)
diff --git a/gstlal-inspiral/share/O3/optimized/gst1.14.patch b/gstlal-inspiral/share/O3/optimized/gst1.14.patch
new file mode 100644
index 0000000000..0bc41d3e71
--- /dev/null
+++ b/gstlal-inspiral/share/O3/optimized/gst1.14.patch
@@ -0,0 +1,352 @@
+diff --git a/gstlal/gst/gst/Makefile.am b/gstlal/gst/gst/Makefile.am
+index c3b3344a5..ce4494d28 100644
+--- a/gstlal/gst/gst/Makefile.am
++++ b/gstlal/gst/gst/Makefile.am
+@@ -1,6 +1,6 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_builddir)/lib
+ 
+-plugin_LTLIBRARIES = libgstlal_adder.la libgstpythonplugin.la
++plugin_LTLIBRARIES = libgstlal_adder.la
+ 
+ libgstlal_adder_la_SOURCES = \
+ 	gstadder.h gstadder.c \
+@@ -8,7 +8,3 @@ libgstlal_adder_la_SOURCES = \
+ libgstlal_adder_la_CFLAGS = $(AM_CFLAGS) $(ORC_CFLAGS) $(gstreamer_CFLAGS) $(gstreamer_audio_CFLAGS) -DGST_PACKAGE_NAME=\"gstlal\" -DGST_PACKAGE_ORIGIN=\"\"
+ libgstlal_adder_la_LIBADD = $(top_builddir)/lib/gstlal/libgstlal.la $(top_builddir)/lib/gstlal/libgstlaltypes.la
+ libgstlal_adder_la_LDFLAGS = $(AM_LDFLAGS) $(ORC_LIBS) $(gstreamer_LIBS) $(gstreamer_audio_LIBS) $(GSTLAL_PLUGIN_LDFLAGS)
+-
+-libgstpythonplugin_la_SOURCES = gstpythonplugin.c
+-libgstpythonplugin_la_CFLAGS = $(AM_CPPFLAGS) $(PYTHON_CPPFLAGS) $(PYGOBJECT_CFLAGS) $(gstreamer_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) -DPYTHON_VERSION="\"$(PYTHON_VERSION)\"" -DPY_LIB_LOC="\"$(PYTHON_LIB_LOC)\"" -DPY_ABI_FLAGS="\"$(PYTHON_ABI_FLAGS)\"" -DPY_LIB_SUFFIX="\"$(PYTHON_LIB_SUFFIX)\"" -DGST_API_VERSION="\"$(GSTREAMER_RELEASE)\"" -DPLUGINDIR="\"$(plugindir)\""
+-libgstpythonplugin_la_LDFLAGS = $(AM_LDFLAGS) $(PYTHON_LIBS) $(gstreamer_LIBS) $(GSTLAL_PLUGIN_LDFLAGS) $(PYGOBJECT_LIBS)
+diff --git a/gstlal/gst/gst/gstpythonplugin.c b/gstlal/gst/gst/gstpythonplugin.c
+deleted file mode 100644
+index f3b713db4..000000000
+--- a/gstlal/gst/gst/gstpythonplugin.c
++++ /dev/null
+@@ -1,326 +0,0 @@
+-/* gst-python
+- * Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
+- *               2005 Benjamin Otte <otte@gnome.org>
+- *
+- * This library is free software; you can redistribute it and/or
+- * modify it under the terms of the GNU Library General Public
+- * License as published by the Free Software Foundation; either
+- * version 2 of the License, or (at your option) any later version.
+- *
+- * This library is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+- * Library General Public License for more details.
+- *
+- * You should have received a copy of the GNU Library General Public
+- * License along with this library; if not, write to the
+- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+- * Boston, MA 02111-1307, USA.
+- */
+-
+-#ifdef HAVE_CONFIG_H
+-#include "config.h"
+-#endif
+-
+-/* include this first, before NO_IMPORT_PYGOBJECT is defined */
+-#include <pygobject.h>
+-#include <gst/gst.h>
+-#include <gmodule.h>
+-#include <Python.h>
+-
+-void *_PyGstElement_Type;
+-
+-GST_DEBUG_CATEGORY_STATIC (pyplugindebug);
+-#define GST_CAT_DEFAULT pyplugindebug
+-
+-#define GST_ORIGIN "http://gstreamer.freedesktop.org"
+-
+-static PyObject *element;
+-
+-static gboolean
+-gst_python_plugin_load_file (GstPlugin * plugin, const char *name)
+-{
+-  PyObject *main_module, *main_locals;
+-  PyObject *elementfactory;
+-  PyObject *module;
+-  const gchar *facname;
+-  guint rank;
+-  PyObject *class;
+-
+-  GST_DEBUG ("loading plugin %s", name);
+-
+-  main_module = PyImport_AddModule ("__main__");
+-  if (main_module == NULL) {
+-    GST_WARNING ("Could not get __main__, ignoring plugin %s", name);
+-    PyErr_Print ();
+-    PyErr_Clear ();
+-    return FALSE;
+-  }
+-
+-  main_locals = PyModule_GetDict (main_module);
+-  module =
+-      PyImport_ImportModuleEx ((char *) name, main_locals, main_locals, NULL);
+-  if (!module) {
+-    GST_DEBUG ("Could not load module, ignoring plugin %s", name);
+-    PyErr_Print ();
+-    PyErr_Clear ();
+-    return FALSE;
+-  }
+-
+-  /* Get __gstelementfactory__ from file */
+-  elementfactory = PyObject_GetAttrString (module, "__gstelementfactory__");
+-  if (!elementfactory) {
+-    GST_DEBUG ("python file doesn't contain __gstelementfactory__");
+-    PyErr_Clear ();
+-    return FALSE;
+-  }
+-
+-  /* parse tuple : name, rank, gst.ElementClass */
+-  if (!PyArg_ParseTuple (elementfactory, "sIO", &facname, &rank, &class)) {
+-    GST_WARNING ("__gstelementfactory__ isn't correctly formatted");
+-    PyErr_Print ();
+-    PyErr_Clear ();
+-    Py_DECREF (elementfactory);
+-    return FALSE;
+-  }
+-
+-  if (!PyObject_IsSubclass (class, (PyObject *) & PyGObject_Type)) {
+-    GST_WARNING ("the class provided isn't a subclass of GObject.Object");
+-    PyErr_Print ();
+-    PyErr_Clear ();
+-    Py_DECREF (elementfactory);
+-    Py_DECREF (class);
+-    return FALSE;
+-  }
+-
+-  if (!g_type_is_a (pyg_type_from_object (class), GST_TYPE_ELEMENT)) {
+-    GST_WARNING ("the class provided isn't a subclass of Gst.Element");
+-    PyErr_Print ();
+-    PyErr_Clear ();
+-    Py_DECREF (elementfactory);
+-    Py_DECREF (class);
+-    return FALSE;
+-  }
+-
+-  GST_INFO ("Valid plugin");
+-  Py_DECREF (elementfactory);
+-
+-  return gst_element_register (plugin, facname, rank,
+-      pyg_type_from_object (class));
+-}
+-
+-static gboolean
+-gst_python_load_directory (GstPlugin * plugin, gchar * path)
+-{
+-  GDir *dir;
+-  const gchar *file;
+-  GError *error = NULL;
+-  gboolean ret = TRUE;
+-
+-  dir = g_dir_open (path, 0, &error);
+-  if (!dir) {
+-    /*retval should probably be depending on error, but since we ignore it... */
+-    GST_DEBUG ("Couldn't open Python plugin dir: %s", error->message);
+-    g_error_free (error);
+-    return FALSE;
+-  }
+-  while ((file = g_dir_read_name (dir))) {
+-    /* FIXME : go down in subdirectories */
+-    if (g_str_has_suffix (file, ".py")) {
+-      gsize len = strlen (file) - 3;
+-      gchar *name = g_strndup (file, len);
+-      ret &= gst_python_plugin_load_file (plugin, name);
+-      g_free (name);
+-    }
+-  }
+-  return TRUE;
+-}
+-
+-static gboolean
+-gst_python_plugin_load (GstPlugin * plugin)
+-{
+-  PyObject *sys_path;
+-  const gchar *plugin_path;
+-  gboolean ret = TRUE;
+-
+-  sys_path = PySys_GetObject ("path");
+-
+-  /* Mimic the order in which the registry is checked in core */
+-
+-  /* 1. check env_variable GST_PLUGIN_PATH */
+-  plugin_path = g_getenv ("GST_PLUGIN_PATH");
+-  if (plugin_path) {
+-    char **list;
+-    int i;
+-
+-    GST_DEBUG ("GST_PLUGIN_PATH set to %s", plugin_path);
+-    list = g_strsplit (plugin_path, G_SEARCHPATH_SEPARATOR_S, 0);
+-    for (i = 0; list[i]; i++) {
+-      gchar *sysdir = g_build_filename (list[i], "python", NULL);
+-      PyList_Insert (sys_path, 0, PyUnicode_FromString (sysdir));
+-      gst_python_load_directory (plugin, sysdir);
+-      g_free (sysdir);
+-    }
+-
+-    g_strfreev (list);
+-  }
+-
+-  /* 2. Check for GST_PLUGIN_SYSTEM_PATH */
+-  plugin_path = g_getenv ("GST_PLUGIN_SYSTEM_PATH");
+-  if (plugin_path == NULL) {
+-    char *home_plugins;
+-
+-    /* 2.a. Scan user and system-wide plugin directory */
+-    GST_DEBUG ("GST_PLUGIN_SYSTEM_PATH not set");
+-
+-    /* plugins in the user's home directory take precedence over
+-     * system-installed ones */
+-    home_plugins = g_build_filename (g_get_home_dir (),
+-        ".gstreamer-" GST_API_VERSION, "plugins", "python", NULL);
+-    PyList_Insert (sys_path, 0, PyUnicode_FromString (home_plugins));
+-    gst_python_load_directory (plugin, home_plugins);
+-    g_free (home_plugins);
+-
+-    /* add the main (installed) library path */
+-    PyList_Insert (sys_path, 0, PyUnicode_FromString (PLUGINDIR "/python"));
+-    gst_python_load_directory (plugin, PLUGINDIR "/python");
+-  } else {
+-    gchar **list;
+-    gint i;
+-
+-    /* 2.b. Scan GST_PLUGIN_SYSTEM_PATH */
+-    GST_DEBUG ("GST_PLUGIN_SYSTEM_PATH set to %s", plugin_path);
+-    list = g_strsplit (plugin_path, G_SEARCHPATH_SEPARATOR_S, 0);
+-    for (i = 0; list[i]; i++) {
+-      gchar *sysdir;
+-
+-      sysdir = g_build_filename (list[i], "python", NULL);
+-
+-      PyList_Insert (sys_path, 0, PyUnicode_FromString (sysdir));
+-      gst_python_load_directory (plugin, sysdir);
+-      g_free (sysdir);
+-    }
+-    g_strfreev (list);
+-  }
+-
+-
+-  return ret;
+-}
+-
+-static gboolean
+-plugin_init (GstPlugin * plugin)
+-{
+-  PyGILState_STATE state;
+-  PyObject *gi, *require_version, *args, *gst, *dict, *pyplugin;
+-  gboolean we_initialized = FALSE;
+-  GModule *libpython;
+-  gpointer has_python = NULL;
+-  PyObject *seq, *list;
+-  int i, len;
+-
+-  GST_DEBUG_CATEGORY_INIT (pyplugindebug, "pyplugin", 0,
+-      "Python plugin loader");
+-
+-  gst_plugin_add_dependency_simple (plugin,
+-      "HOME/.gstreamer-" GST_API_VERSION
+-      "/plugins/python:GST_PLUGIN_SYSTEM_PATH/python:GST_PLUGIN_PATH/python",
+-      PLUGINDIR "/python:HOME/.gstreamer-" GST_API_VERSION "/plugins/python:"
+-      "GST_PLUGIN_SYSTEM_PATH/python:GST_PLUGIN_PATH/python", NULL,
+-      GST_PLUGIN_DEPENDENCY_FLAG_NONE);
+-
+-  GST_LOG ("Checking to see if libpython is already loaded");
+-  if (g_module_symbol (g_module_open (NULL, G_MODULE_BIND_LOCAL),
+-          "_Py_NoneStruct", &has_python) && has_python) {
+-    GST_LOG ("libpython is already loaded");
+-  } else {
+-    GST_LOG ("loading libpython");
+-    libpython =
+-        g_module_open (PY_LIB_LOC "/libpython" PYTHON_VERSION PY_ABI_FLAGS
+-        "." PY_LIB_SUFFIX, 0);
+-    if (!libpython) {
+-      g_critical ("Couldn't g_module_open libpython. Reason: %s",
+-          g_module_error ());
+-      return FALSE;
+-    }
+-  }
+-
+-  if (!Py_IsInitialized ()) {
+-    GST_LOG ("python wasn't initialized");
+-    /* set the correct plugin for registering stuff */
+-    Py_Initialize ();
+-    we_initialized = TRUE;
+-  } else {
+-    GST_LOG ("python was already initialized");
+-    state = PyGILState_Ensure ();
+-  }
+-
+-  GST_LOG ("initializing pygobject");
+-  if (!pygobject_init (3, 0, 0)) {
+-    g_critical ("pygobject initialization failed");
+-    return FALSE;
+-  }
+-
+-  gi = PyImport_ImportModule ("gi");
+-  if (!gi) {
+-    g_critical ("can't find gi");
+-    return FALSE;
+-  }
+-
+-
+-  require_version = PyObject_GetAttrString (gi, (char *) "require_version");
+-  args = PyTuple_Pack (2, PyUnicode_FromString ("Gst"),
+-      PyUnicode_FromString ("1.0"));
+-  PyObject_CallObject (require_version, args);
+-  Py_DECREF (require_version);
+-  Py_DECREF (args);
+-  Py_DECREF (gi);
+-
+-  gst = PyImport_ImportModule ("gi.repository.Gst");
+-  if (!gst) {
+-    g_critical ("can't find gi.repository.Gst");
+-    return FALSE;
+-  }
+-
+-  if (we_initialized) {
+-    PyObject *tmp;
+-
+-    dict = PyModule_GetDict (gst);
+-    if (!dict) {
+-      g_critical ("gi.repository.Gst is no dict");
+-      return FALSE;
+-    }
+-
+-    tmp =
+-        PyObject_GetAttr (PyMapping_GetItemString (dict,
+-            "_introspection_module"), PyUnicode_FromString ("__dict__"));
+-
+-    _PyGstElement_Type = PyMapping_GetItemString (tmp, "Element");
+-
+-    if (!_PyGstElement_Type) {
+-      g_critical ("Could not get Gst.Element");
+-      return FALSE;
+-    }
+-
+-    pyplugin = pygobject_new (G_OBJECT (plugin));
+-    if (!pyplugin || PyModule_AddObject (gst, "__plugin__", pyplugin) != 0) {
+-      g_critical ("Couldn't set __plugin__ attribute");
+-      if (pyplugin)
+-        Py_DECREF (pyplugin);
+-      return FALSE;
+-    }
+-  }
+-
+-  gst_python_plugin_load (plugin);
+-
+-  if (we_initialized) {
+-    /* We need to release the GIL since we're going back to C land */
+-    PyEval_SaveThread ();
+-  } else
+-    PyGILState_Release (state);
+-  return TRUE;
+-}
+-
+-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+-    GST_VERSION_MINOR, python,
+-    "loader for plugins written in python",
+-    plugin_init, VERSION, "LGPL", PACKAGE_NAME, GST_ORIGIN)
-- 
GitLab