diff --git a/support/assemble_synApps.sh b/support/assemble_synApps.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e1a93ac29c05cc11878f16398fa3b466cb3746f1
--- /dev/null
+++ b/support/assemble_synApps.sh
@@ -0,0 +1,350 @@
+#!/bin/bash
+shopt -s expand_aliases
+
+EPICS_BASE=/APSshare/epics/base-3.15.6
+
+SUPPORT=R6-1
+CONFIGURE=R6-1
+UTILS=R6-1
+DOCUMENTATION=R6-1
+
+ALLENBRADLEY=2.3
+ALIVE=R1-1-1
+AREA_DETECTOR=R3-7
+ASYN=R4-36
+AUTOSAVE=R5-10
+BUSY=R1-7-2
+CALC=R3-7-3
+CAMAC=R2-7-1
+CAPUTRECORDER=R1-7-2
+DAC128V=R2-9
+DELAYGEN=R1-2-1
+DXP=R6-0
+DXPSITORO=R1-2
+DEVIOCSTATS=3.1.16
+#ETHERIP=ether_ip-3-1
+#GALIL=V3-6
+IP=R2-20-1
+IPAC=2.15
+IP330=R2-9
+IPUNIDIG=R2-11
+LOVE=R3-2-7
+LUA=R2-0
+MCA=R7-8
+MEASCOMP=R2-3
+MODBUS=R3-0
+MOTOR=R7-1
+OPTICS=R2-13-3
+QUADEM=R9-2-1
+SNCSEQ=2.2.6
+SOFTGLUE=R2-8-2
+SOFTGLUEZYNQ=R2-0-2
+SSCAN=R2-11-3
+STD=R3-6
+STREAM=2.8.9
+VAC=R1-9
+VME=R2-9-2
+YOKOGAWA_DAS=R2-0-1
+XXX=R6-1
+
+
+
+shallow_repo()
+{
+	PROJECT=$1
+	MODULE_NAME=$2
+	RELEASE_NAME=$3
+	TAG=$4
+	
+	FOLDER_NAME=$MODULE_NAME-${TAG//./-}
+	
+	echo
+	echo "Grabbing $MODULE_NAME at tag: $TAG"
+	echo
+	
+	git clone -q --branch $TAG --depth 1 https://github.com/$PROJECT/$MODULE_NAME.git $FOLDER_NAME
+	
+	echo "$RELEASE_NAME=\$(SUPPORT)/$FOLDER_NAME" >> ./configure/RELEASE
+	
+	echo
+}
+
+full_repo()
+{
+	PROJECT=$1
+	MODULE_NAME=$2
+	RELEASE_NAME=$3
+	TAG=$4
+	
+	FOLDER_NAME=$MODULE_NAME-${TAG//./-}
+	
+	echo
+	echo "Grabbing $MODULE_NAME at tag: $TAG"
+	echo
+	
+	git clone -q https://github.com/$PROJECT/$MODULE_NAME.git $FOLDER_NAME
+	
+	CURR=$(pwd)
+	
+	cd $FOLDER_NAME
+	git checkout -q $TAG
+	cd "$CURR"
+	echo "$RELEASE_NAME=\$(SUPPORT)/$FOLDER_NAME" >> ./configure/RELEASE
+	
+	echo
+}
+
+
+shallow_support()
+{
+	git clone -q --branch $2 --depth 1 https://github.com/EPICS-synApps/$1.git
+}
+
+
+full_support()
+{
+	git clone -q https://github.com/EPICS-synApps/$1.git
+	cd $1
+	git checkout -q $2
+	cd ..
+}
+
+alias get_support='shallow_support'
+alias get_repo='shallow_repo'
+
+if [ "$1" == "full" ]; then
+	alias get_support='full_support'
+	alias get_repo='full_repo'
+fi
+
+
+# Assume user has nothing but this file, just in case that's true.
+mkdir synApps
+cd synApps
+
+get_support support $SUPPORT
+cd support
+
+get_support configure      $CONFIGURE
+get_support utils          $UTILS
+get_support documentation  $DOCUMENTATION
+
+SUPPORT=$(pwd)
+
+echo "SUPPORT=$SUPPORT" > configure/RELEASE
+echo '-include $(TOP)/configure/SUPPORT.$(EPICS_HOST_ARCH)' >> configure/RELEASE
+echo "EPICS_BASE=$EPICS_BASE" >> configure/RELEASE
+echo '-include $(TOP)/configure/EPICS_BASE' >> configure/RELEASE
+echo '-include $(TOP)/configure/EPICS_BASE.$(EPICS_HOST_ARCH)' >> configure/RELEASE
+echo "" >> configure/RELEASE
+echo "" >> configure/RELEASE
+
+# modules ##################################################################
+
+#                               get_repo Git Project            Git Repo       RELEASE Name   Tag
+if [[ $ALIVE ]];         then   get_repo epics-modules          alive          ALIVE          $ALIVE         ; fi
+if [[ $ASYN ]];          then   get_repo epics-modules          asyn           ASYN           $ASYN          ; fi
+if [[ $AUTOSAVE ]];      then   get_repo epics-modules          autosave       AUTOSAVE       $AUTOSAVE      ; fi
+if [[ $BUSY ]];          then   get_repo epics-modules          busy           BUSY           $BUSY          ; fi
+if [[ $CALC ]];          then   get_repo epics-modules          calc           CALC           $CALC          ; fi
+if [[ $CAMAC ]];         then   get_repo epics-modules          camac          CAMAC          $CAMAC         ; fi
+if [[ $CAPUTRECORDER ]]; then   get_repo epics-modules          caputRecorder  CAPUTRECORDER  $CAPUTRECORDER ; fi
+if [[ $DAC128V ]];       then   get_repo epics-modules          dac128V        DAC128V        $DAC128V       ; fi
+if [[ $DELAYGEN ]];      then   get_repo epics-modules          delaygen       DELAYGEN       $DELAYGEN      ; fi
+if [[ $DXP ]];           then   get_repo epics-modules          dxp            DXP            $DXP           ; fi
+if [[ $DXPSITORO ]];     then   get_repo epics-modules          dxpSITORO      DXPSITORO      $DXPSITORO     ; fi
+if [[ $DEVIOCSTATS ]];   then   get_repo epics-modules          iocStats       DEVIOCSTATS    $DEVIOCSTATS   ; fi
+if [[ $ETHERIP ]];       then   get_repo EPICSTools             ether_ip       ETHERIP        $ETHERIP       ; fi
+if [[ $GALIL ]];         then   get_repo motorapp               Galil-3-0      GALIL          $GALIL         ; fi
+if [[ $IP ]];            then   get_repo epics-modules          ip             IP             $IP            ; fi
+if [[ $IPAC ]];          then   get_repo epics-modules          ipac           IPAC           $IPAC          ; fi
+if [[ $IP330 ]];         then   get_repo epics-modules          ip330          IP330          $IP330         ; fi
+if [[ $IPUNIDIG ]];      then   get_repo epics-modules          ipUnidig       IPUNIDIG       $IPUNIDIG      ; fi
+if [[ $LOVE ]];          then   get_repo epics-modules          love           LOVE           $LOVE          ; fi
+if [[ $LUA ]];           then   get_repo epics-modules          lua            LUA            $LUA           ; fi
+if [[ $MCA ]];           then   get_repo epics-modules          mca            MCA            $MCA           ; fi
+if [[ $MEASCOMP ]];      then   get_repo epics-modules          measComp       MEASCOMP       $MEASCOMP      ; fi
+if [[ $MODBUS ]];        then   get_repo epics-modules          modbus         MODBUS         $MODBUS        ; fi
+if [[ $MOTOR ]];         then   get_repo epics-modules          motor          MOTOR          $MOTOR         ; fi
+if [[ $OPTICS ]];        then   get_repo epics-modules          optics         OPTICS         $OPTICS        ; fi
+if [[ $QUADEM ]];        then   get_repo epics-modules          quadEM         QUADEM         $QUADEM        ; fi
+if [[ $SOFTGLUE ]];      then   get_repo epics-modules          softGlue       SOFTGLUE       $SOFTGLUE      ; fi
+if [[ $SOFTGLUEZYNQ ]];  then   get_repo epics-modules          softGlueZynq   SOFTGLUEZYNQ   $SOFTGLUEZYNQ  ; fi
+if [[ $SSCAN ]];         then   get_repo epics-modules          sscan          SSCAN          $SSCAN         ; fi
+if [[ $STD ]];           then   get_repo epics-modules          std            STD            $STD           ; fi
+if [[ $STREAM ]];        then   get_repo paulscherrerinstitute  StreamDevice   STREAM         $STREAM        ; fi
+if [[ $VAC ]];           then   get_repo epics-modules          vac            VAC            $VAC           ; fi
+if [[ $VME ]];           then   get_repo epics-modules          vme            VME            $VME           ; fi
+if [[ $YOKOGAWA_DAS ]];  then   get_repo epics-modules          Yokogawa_DAS   YOKOGAWA_DAS   $YOKOGAWA_DAS  ; fi
+if [[ $XXX ]];           then   get_repo epics-modules          xxx            XXX            $XXX           ; fi
+
+
+if [[ $AREA_DETECTOR ]]
+then 
+
+get_repo  areaDetector  areaDetector  AREA_DETECTOR  $AREA_DETECTOR
+
+cd areaDetector-$AREA_DETECTOR
+git submodule init
+git submodule update ADCore
+git submodule update ADSupport
+git submodule update ADSimDetector
+
+cd ADCore/iocBoot
+
+cp EXAMPLE_commonPlugins.cmd commonPlugins.cmd
+cp EXAMPLE_commonPlugin_settings.req commonPlugin_settings.req
+
+cd ../..
+
+cd configure
+cp EXAMPLE_CONFIG_SITE.local CONFIG_SITE.local
+
+# vxWorks has pthread and other issues
+echo 'WITH_GRAPHICSMAGICK = NO' >> CONFIG_SITE.local.vxWorks
+echo 'WITH_BLOSC = NO' >> CONFIG_SITE.local.vxWorks
+echo 'WITH_BITSHUFFLE = NO' >> CONFIG_SITE.local.vxWorks
+
+
+# linux-arm has X11 and other issues
+echo 'WITH_BITSHUFFLE = NO' >> CONFIG_SITE.local.linux-x86_64.linux-arm
+echo 'WITH_GRAPHICSMAGICK = NO' >> CONFIG_SITE.local.linux-x86_64.linux-arm
+
+# We are still using Epics v3
+echo 'WITH_PVA = NO' >> CONFIG_SITE.local.linux-x86_64
+echo 'WITH_PVA = NO' >> CONFIG_SITE.local.linux-x86_64.linux-arm
+echo 'WITH_PVA = NO' >> CONFIG_SITE.local.vxWorks
+echo 'WITH_PVA = NO' >> CONFIG_SITE.local.win32-x86
+echo 'WITH_PVA = NO' >> CONFIG_SITE.local.windows-x64
+echo 'WITH_PVA = NO' >> CONFIG_SITE.local.win32-x86-static
+echo 'WITH_PVA = NO' >> CONFIG_SITE.local.windows-x64-static
+
+# We are still using Epics v3
+echo 'WITH_QSRV = NO' >> CONFIG_SITE.local.linux-x86_64
+echo 'WITH_QSRV = NO' >> CONFIG_SITE.local.vxWorks
+echo 'WITH_QSRV = NO' >> CONFIG_SITE.local.win32-x86
+echo 'WITH_QSRV = NO' >> CONFIG_SITE.local.windows-x64
+echo 'WITH_QSRV = NO' >> CONFIG_SITE.local.win32-x86-static
+echo 'WITH_QSRV = NO' >> CONFIG_SITE.local.windows-x64-static
+
+# DBD files aren't separated between architectures, so there are issues building
+echo 'BUILD_IOCS = NO' >> CONFIG_SITE.local.linux-x86_64
+echo 'BUILD_IOCS = NO' >> CONFIG_SITE.local.vxWorks
+echo 'BUILD_IOCS = NO' >> CONFIG_SITE.local.win32-x86
+echo 'BUILD_IOCS = NO' >> CONFIG_SITE.local.windows-x64
+echo 'BUILD_IOCS = NO' >> CONFIG_SITE.local.win32-x86-static
+echo 'BUILD_IOCS = NO' >> CONFIG_SITE.local.windows-x64-static
+
+#HDF5 flag for windows
+echo 'HDF5_STATIC_BUILD=$(STATIC_BUILD)' >> CONFIG_SITE.local.win32-x86
+echo 'HDF5_STATIC_BUILD=$(STATIC_BUILD)' >> CONFIG_SITE.local.win32-x86-static
+echo 'HDF5_STATIC_BUILD=$(STATIC_BUILD)' >> CONFIG_SITE.local.windows-x64
+echo 'HDF5_STATIC_BUILD=$(STATIC_BUILD)' >> CONFIG_SITE.local.windows-x64-static
+
+#Can't just use default RELEASE.local because it has simDetector commented out
+echo 'ADSIMDETECTOR=$(AREA_DETECTOR)/ADSimDetector' >> RELEASE.local
+echo 'ADSUPPORT=$(AREA_DETECTOR)/ADSupport' >> RELEASE.local
+echo '-include $(TOP)/configure/RELEASE_PRODS.local' >> RELEASE.local
+echo '-include $(TOP)/configure/RELEASE.local.$(EPICS_HOST_ARCH)' >> RELEASE.local
+
+echo "SUPPORT=$SUPPORT" >> RELEASE_SUPPORT.local
+echo "EPICS_BASE=$EPICS_BASE" >> RELEASE_BASE.local
+
+# make release will give the correct paths for these files, so we just need to rename them
+cp EXAMPLE_RELEASE_PRODS.local RELEASE_PRODS.local
+cp EXAMPLE_RELEASE_LIBS.local RELEASE_LIBS.local
+
+cd ../..
+
+echo 'ADCORE=$(AREA_DETECTOR)/ADCore' >> ./configure/RELEASE
+echo 'ADSUPPORT=$(AREA_DETECTOR)/ADSupport' >> ./configure/RELEASE
+echo 'ADSIMDETECTOR=$(AREA_DETECTOR)/ADSimDetector' >> ./configure/RELEASE
+
+fi
+
+if [[ $DXP ]]
+then
+	cd dxp-$DXP
+	echo "LINUX_USB_INSTALLED = NO" >> ./configure/CONFIG_SITE.linux-x86_64.linux-arm
+	cd ..
+fi
+
+if [[ $MCA ]]
+then
+	cd mca-$MCA
+	echo "LINUX_LIBUSB-1.0_INSTALLED = NO" >> ./configure/CONFIG_SITE.linux-x86_64.linux-arm
+	cd ..
+fi
+
+if [[ $MOTOR ]]
+then
+	cd motor-$MOTOR
+	
+	git submodule init
+	git submodule update
+	
+	cd ..
+fi
+
+if [[ $STREAM ]]
+then
+	cd StreamDevice-${STREAM//./-}
+	
+	# Use the EPICS makefile, rather than PSI's
+	rm GNUmakefile
+	
+	# Don't install to synApps/support
+	sed -i 's/TOP = ../TOP = ./g' ./Makefile
+	sed -i 's/TOP = ..\/../TOP = ../g' ./streamApp/Makefile
+	sed -i 's/TOP = ..\/../TOP = ../g' ./src/Makefile
+	sed -i 's/INSTALL_LOCATION = $(TOP)/INSTALL_LOCATION = $(STREAM)/g' ./configure/CONFIG_APP
+	
+	# Comment out PCRE
+	sed -i 's/PCRE=/#PCRE=/g' ./configure/RELEASE
+	
+	echo "SSCAN=" >> ./configure/RELEASE
+	echo "STREAM=" >> ./configure/RELEASE
+	sed -i 's/#PROD_LIBS += sscan/PROD_LIBS += sscan/g' ./streamApp/Makefile
+	cd ..
+fi
+
+
+if [[ $SNCSEQ ]]
+then
+
+# seq
+wget http://www-csr.bessy.de/control/SoftDist/sequencer/releases/seq-$SNCSEQ.tar.gz
+tar zxf seq-$SNCSEQ.tar.gz
+# The synApps build can't handle '.'
+mv seq-$SNCSEQ seq-${SNCSEQ//./-}
+rm -f seq-$SNCSEQ.tar.gz
+echo "SNCSEQ=\$(SUPPORT)/seq-${SNCSEQ//./-}" >> ./configure/RELEASE
+
+fi
+
+
+if [[ $ALLENBRADLEY ]]
+then
+
+# get allenBradley-2-3
+wget http://www.aps.anl.gov/epics/download/modules/allenBradley-$ALLENBRADLEY.tar.gz
+tar xf allenBradley-$ALLENBRADLEY.tar.gz
+mv allenBradley-$ALLENBRADLEY allenBradley-${ALLENBRADLEY//./-}
+rm -f allenBradley-$ALLENBRADLEY.tar.gz
+echo "ALLEN_BRADLEY=\$(SUPPORT)/allenBradley-${ALLENBRADLEY//./-}" >> ./configure/RELEASE
+
+fi
+
+if [[ $GALIL ]]
+then
+
+mv Galil-3-0-$GALIL/3-6 galil-3-6
+rm -Rf Galil-3-0-$GALIL
+cp galil-3-6/config/GALILRELEASE galil-3-6/configure/RELEASE
+echo 'GALIL=$(SUPPORT)/galil-3-6' >> ./configure/RELEASE
+sed -i 's/MODULE_LIST[ ]*=[ ]*MEASCOMP/MODULE_LIST = MEASCOMP GALIL/g' Makefile
+sed -i '/\$(MEASCOMP)_DEPEND_DIRS/a \$(GALIL)_DEPEND_DIRS = \$(AUTOSAVE) \$(SNCSEQ) \$(SSCAN) \$(CALC) \$(ASYN) \$(BUSY) \$(MOTOR) \$(IPAC)' Makefile
+
+fi
+
+make release