CPPFLAGS=\
 -Ifusion_sdk/calvin_files/array/src\
 -Ifusion_sdk/calvin_files/data/src\
 -Ifusion_sdk/calvin_files/exception/src\
 -Ifusion_sdk/calvin_files/parameter/src\
 -Ifusion_sdk/calvin_files/parsers/src\
 -Ifusion_sdk/calvin_files/portability/src\
 -Ifusion_sdk/calvin_files/template/src\
 -Ifusion_sdk/calvin_files/utils/src\
 -Ifusion_sdk/calvin_files/writers/src\
 -Ifusion_sdk/file\
 -Ifusion_sdk/portability\
 -Ifusion_sdk/calvin_files/fusion/src\
 -Ifusion_sdk/calvin_files/fusion/src/GCOSAdapter\
 -Ifusion_sdk/calvin_files/fusion/src/CalvinAdapter\
 -I/usr/lib/R/include\
# /usr/local/gcc4.0/lib/libstdc++.dylib\
 -DIS_BIG_ENDIAN\
 -D_USE_MEM_MAPPING_

CXXFLAGS= -g

CC=g++

CCONMAC=/usr/local/gcc4.0/bin/g++-4.0

SOURCES.fusion = \
	fusion_sdk/calvin_files/data/src/CDFData.cpp\
	fusion_sdk/calvin_files/data/src/CDFProbeGroupInformation.cpp\
	fusion_sdk/calvin_files/data/src/CDFProbeInformation.cpp\
	fusion_sdk/calvin_files/data/src/CDFProbeSetInformation.cpp\
	fusion_sdk/calvin_files/data/src/CDFQCProbeInformation.cpp\
	fusion_sdk/calvin_files/data/src/CDFQCProbeSetInformation.cpp\
	fusion_sdk/calvin_files/data/src/CELData.cpp\
	fusion_sdk/calvin_files/data/src/DataGroup.cpp\
	fusion_sdk/calvin_files/data/src/DataGroupHeader.cpp\
	fusion_sdk/calvin_files/data/src/DataSet.cpp\
	fusion_sdk/calvin_files/data/src/DataSetHeader.cpp\
	fusion_sdk/calvin_files/data/src/FileHeader.cpp\
	fusion_sdk/calvin_files/data/src/GenericData.cpp\
	fusion_sdk/calvin_files/data/src/GenericDataHeader.cpp\
	fusion_sdk/calvin_files/exception/src/ExceptionBase.cpp\
	fusion_sdk/calvin_files/fusion/src/CalvinAdapter/CalvinCELDataAdapter.cpp\
	fusion_sdk/calvin_files/fusion/src/FusionBPMAPData.cpp\
	fusion_sdk/calvin_files/fusion/src/FusionCDFData.cpp\
	fusion_sdk/calvin_files/fusion/src/FusionCDFQCProbeSetNames.cpp\
	fusion_sdk/calvin_files/fusion/src/FusionCELData.cpp\
	fusion_sdk/calvin_files/fusion/src/GCOSAdapter/GCOSCELDataAdapter.cpp\
	fusion_sdk/calvin_files/parameter/src/ParameterNameValueType.cpp\
	fusion_sdk/calvin_files/parsers/src/CDFFileReader.cpp\
	fusion_sdk/calvin_files/parsers/src/CelFileReader.cpp\
	fusion_sdk/calvin_files/parsers/src/DataGroupHeaderReader.cpp\
	fusion_sdk/calvin_files/parsers/src/DataGroupReader.cpp\
	fusion_sdk/calvin_files/parsers/src/DataSetHeaderReader.cpp\
	fusion_sdk/calvin_files/parsers/src/DataSetReader.cpp\
	fusion_sdk/calvin_files/parsers/src/FileHeaderReader.cpp\
	fusion_sdk/calvin_files/parsers/src/FileInput.cpp\
	fusion_sdk/calvin_files/parsers/src/GenericDataHeaderReader.cpp\
	fusion_sdk/calvin_files/parsers/src/GenericFileReader.cpp\
	fusion_sdk/calvin_files/utils/src/AffymetrixGuid.cpp\
	fusion_sdk/calvin_files/utils/src/DateTime.cpp\
	fusion_sdk/calvin_files/utils/src/FileUtils.cpp\
	fusion_sdk/calvin_files/utils/src/StringUtils.cpp\
	fusion_sdk/calvin_files/utils/src/checksum.cpp\
	fusion_sdk/calvin_files/writers/src/CDFFileWriter.cpp\
	fusion_sdk/calvin_files/writers/src/CDFProbeSetWriter.cpp\
	fusion_sdk/calvin_files/writers/src/CalvinCelFileWriter.cpp\
	fusion_sdk/calvin_files/writers/src/DataGroupWriter.cpp\
	fusion_sdk/calvin_files/writers/src/DataGroupHeaderWriter.cpp\
	fusion_sdk/calvin_files/writers/src/DataSetHeaderWriter.cpp\
	fusion_sdk/calvin_files/writers/src/DataSetWriter.cpp\
	fusion_sdk/calvin_files/writers/src/FileHeaderWriter.cpp\
	fusion_sdk/calvin_files/writers/src/FileOutput.cpp\
	fusion_sdk/calvin_files/writers/src/GenericDataHeaderWriter.cpp\
	fusion_sdk/calvin_files/writers/src/GenericFileWriter.cpp\
	fusion_sdk/file/CDFFileData.cpp\
	fusion_sdk/file/CELFileData.cpp\
	fusion_sdk/file/CELFileWriter.cpp\
	fusion_sdk/file/BPMAPFileData.cpp\
	fusion_sdk/file/FileIO.cpp\
	fusion_sdk/file/FileWriter.cpp\

SOURCES.affxparser = \
	R_affx_cel_parser.cpp\
	R_affx_cdf_parser.cpp\
	R_affx_cdf_extras.cpp

SOURCES.cmdline = \
	R_affx_test_cmd_line.cpp

SOURCES.bpmap = \
	R_affx_test_bpmap_cmdline.cpp

SOURCES.celwriter = \
	R_affx_test_celwriter_cmdline.cpp

SOURCES.cdfwriter = \
	R_affx_test_cdfwriter_cmdline.cpp

SOURCES.header = \
	R_affx_test_header.cpp

OBJECTS.affxparser=$(SOURCES.affxparser:.cpp=.o)

OBJECTS.fusion=$(SOURCES.fusion:.cpp=.o)

OBJECTS.cmdline=$(SOURCES.cmdline:.cpp=.o)

OBJECTS.bpmap=$(SOURCES.bpmap:.cpp=.o)

OBJECTS.celwriter=$(SOURCES.celwriter:.cpp=.o)

OBJECTS.cdfwriter=$(SOURCES.cdfwriter:.cpp=.o)

OBJECTS.header=$(SOURCES.header:.cpp=.o)

LIB.fusion=./affx_fusion.lib

$(LIB.fusion): $(OBJECTS.fusion) $(OBJECTS.affxparser)
	ar -r $(LIB.fusion) $(OBJECTS.fusion)

cmd_line: $(OBJECTS.fusion) $(OBJECTS.cmdline)
	${CC} ${CPPFLAGS} ${CXXFLAGS} ${OBJECTS.fusion} $(OBJECTS.cmdline) -o cmd_line

bpmap: $(OBJECTS.fusion) $(OBJECTS.bpmap)
	${CC} ${CPPFLAGS} ${CXXFLAGS} ${OBJECTS.fusion} $(OBJECTS.bpmap) -DIS_BIG_ENDIAN -o bpmap_cmd

celwriter: $(OBJECTS.fusion) $(OBJECTS.celwriter)
	${CCONMAC} ${CPPFLAGS} ${CXXFLAGS} ${OBJECTS.fusion} $(OBJECTS.celwriter) -o celwriter_cmd

cdfwriter: $(OBJECTS.fusion) $(OBJECTS.cdfwriter)
	${CCONMAC} ${CPPFLAGS} ${CXXFLAGS} ${OBJECTS.fusion} $(OBJECTS.cdfwriter) -o cdfwriter_cmd

header: $(OBJECTS.fusion) $(OBJECTS.header)
	${CCONMAC} ${CPPFLAGS} ${CXXFLAGS} ${OBJECTS.fusion} $(OBJECTS.header) -o header_cmd

clean:
	-rm -rf $(OBJECTS.fusion) $(LIB.fusion) *.o *.so

SHELL=/bin/bash

dependency:
	${CC} -MM -MF depend.cel ${CPPFLAGS} fusion_sdk/calvin_files/fusion/src/FusionCELData.cpp
	${CC} -MM -MF depend.cdf  ${CPPFLAGS} fusion_sdk/calvin_files/fusion/src/FusionCDFData.cpp
	${CC} -MM -MF depend.bpmap  ${CPPFLAGS} fusion_sdk/calvin_files/fusion/src/FusionBPMAPData.cpp
	grep -v FusionCELData.cpp depend.cel > depend.tmp
	grep -v FusionCDFData.cpp depend.cdf >> depend.tmp
	grep -v FusionBPMAPData.cpp depend.bpmap | grep -v FusionBPMAPData.o >> depend.tmp
	sed 's/\.h/\.cpp/g' depend.tmp | sed 's/^  //' | sed 's/ \\//' > depend.tmp2
	while read filename; do if [ -a "$$filename" ]; then echo -e "\t$$filename\\"; fi; done < depend.tmp2 > depend.tmp
	echo -e "\tfusion_sdk/calvin_files/parsers/src/FileInput.cpp\\" >> depend.tmp
	echo -e "\tfusion_sdk/calvin_files/parsers/src/DataSetHeaderReader.cpp\\" >> depend.tmp
	echo -e "\tfusion_sdk/calvin_files/parsers/src/DataGroupHeaderReader.cpp\\" >> depend.tmp
	echo -e "\tfusion_sdk/calvin_files/parsers/src/CelFileReader.cpp\\" >> depend.tmp
	echo -e "\tfusion_sdk/file/CELFileData.cpp\\" >> depend.tmp
	echo -e "\tfusion_sdk/file/CDFFileData.cpp\\" >> depend.tmp
	echo -e "\tfusion_sdk/file/BPMAPFileData.cpp\\" >> depend.tmp
	echo -e "\tfusion_sdk/calvin_files/parsers/src/FileHeaderReader.cpp\\" >> depend.tmp
	echo -e "\tfusion_sdk/calvin_files/parsers/src/GenericDataHeaderReader.cpp\\" >> depend.tmp
	echo -e "\tfusion_sdk/calvin_files/utils/src/checksum.cpp\\" >> depend.tmp
	echo -e "\tfusion_sdk/file/FileIO.cpp\\" >> depend.tmp
	echo -e "\tfusion_sdk/file/BPMAPFileWriter.cpp\\" >> depend.tmp
	echo -e "\tfusion_sdk/file/FileWriter.cpp\\" >> depend.tmp
	sort depend.tmp | uniq > dependencies
	rm depend.tmp depend.tmp2 depend.cel depend.cdf depend.bpmap
