# Copyright (c) 1994 - 2010, Lawrence Livermore National Security, LLC.
# LLNL-CODE-425250.
# All rights reserved.
# 
# This file is part of Silo. For details, see silo.llnl.gov.
# 
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 
#    * Redistributions of source code must retain the above copyright
#      notice, this list of conditions and the disclaimer below.
#    * Redistributions in binary form must reproduce the above copyright
#      notice, this list of conditions and the disclaimer (as noted
#      below) in the documentation and/or other materials provided with
#      the distribution.
#    * Neither the name of the LLNS/LLNL nor the names of its
#      contributors may be used to endorse or promote products derived
#      from this software without specific prior written permission.
# 
# THIS SOFTWARE  IS PROVIDED BY  THE COPYRIGHT HOLDERS  AND CONTRIBUTORS
# "AS  IS" AND  ANY EXPRESS  OR IMPLIED  WARRANTIES, INCLUDING,  BUT NOT
# LIMITED TO, THE IMPLIED  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A  PARTICULAR  PURPOSE ARE  DISCLAIMED.  IN  NO  EVENT SHALL  LAWRENCE
# LIVERMORE  NATIONAL SECURITY, LLC,  THE U.S.  DEPARTMENT OF  ENERGY OR
# CONTRIBUTORS BE LIABLE FOR  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR  CONSEQUENTIAL DAMAGES  (INCLUDING, BUT NOT  LIMITED TO,
# PROCUREMENT OF  SUBSTITUTE GOODS  OR SERVICES; LOSS  OF USE,  DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER  IN CONTRACT, STRICT LIABILITY,  OR TORT (INCLUDING
# NEGLIGENCE OR  OTHERWISE) ARISING IN  ANY WAY OUT  OF THE USE  OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# 
# This work was produced at Lawrence Livermore National Laboratory under
# Contract  No.   DE-AC52-07NA27344 with  the  DOE.  Neither the  United
# States Government  nor Lawrence  Livermore National Security,  LLC nor
# any of  their employees,  makes any warranty,  express or  implied, or
# assumes   any   liability   or   responsibility  for   the   accuracy,
# completeness, or usefulness of any information, apparatus, product, or
# process  disclosed, or  represents  that its  use  would not  infringe
# privately-owned   rights.  Any  reference   herein  to   any  specific
# commercial products,  process, or  services by trade  name, trademark,
# manufacturer or otherwise does not necessarily constitute or imply its
# endorsement,  recommendation,   or  favoring  by   the  United  States
# Government or Lawrence Livermore National Security, LLC. The views and
# opinions  of authors  expressed  herein do  not  necessarily state  or
# reflect those  of the United  States Government or  Lawrence Livermore
# National  Security, LLC,  and shall  not  be used  for advertising  or
# product endorsement purposes.

SILO_HOME=/groups/visit/miller/silo/trunk/install
SILO_INC=../src/silo
SILO_LIB=../src/.libs
SILO_LIBF=$(SILO_LIB)/libsiloh5.a

# set for pdb-lite
PDB_HOME=$(SILO_HOME)
PDB_INC=/usr/gapps/visit/1.12.1/linux-intel/include/visit
PDB_LIB=$(PDB_HOME)/lib
PDB_LIBF=$(SILO_LIBF)

HDF5_HOME=/usr/gapps/silo/hdf5/1.8.4/i686_Linux_ELsmp
HDF5_INC=$(HDF5_HOME)/include
HDF5_LIB=$(HDF5_HOME)/lib
HDF5_LIBF=$(HDF5_LIB)/libhdf5.a

# only for linking
SZIP_HOME=/usr/gapps/silo/szip/2.1/i686_Linux_ELsmp
SZIP_LIB=$(SZIP_HOME)/lib
SZIP_LIBF=$(SZIP_LIB)/libsz.a

#ZLIB_HOME=/usr/gapps/silo/zlib/1.2.3/sles_10_ppc64
#ZLIB_LIB=$(ZLIB_HOME)/lib
#ZLIB_LIBF=$(ZLIB_LIB)/libz.a

#CFLAGS=-DPARALLEL
#CC=mpixlc
#LINK=mpixlcxx

CFLAGS=-g -pg
CC=gcc
LINK=g++

.SUFFIXES: .c .so .o

DRIVER_SRC=\
    ioperf_sec2.c \
    ioperf_stdio.c \
    ioperf_hdf5.c \
    ioperf_silo.c \
    ioperf_pdb.c

DRIVER_STATIC_OBJ=$(DRIVER_SRC:.c=.o)
DRIVER_SHARED_OBJ=$(DRIVER_SRC:.c=.so)

# shared object rule
.c.so:
	$(CC) $< -o $@ -shared $(CFLAGS) -I. -I$(HDF5_INC) -I$(PDB_INC) -I$(SILO_INC) \
		$(SILO_LIBF) $(HDF5_LIBF) $(SZIP_LIBF) $(ZLIB_LIBF)

# object rule
.c.o:
	$(CC) $< -o $@ -c -DSTATIC_PLUGINS $(CFLAGS) -I. -I$(HDF5_INC) -I$(PDB_INC) -I$(SILO_INC)

ioperf_shared.o: ioperf.c
	$(CC) $< -o $@ -c $(CFLAGS) -I.

ioperf_static.o: ioperf.c
	$(CC) $< -o $@ -c -DSTATIC_PLUGINS $(CFLAGS) -I.

ioperf_shared: ioperf_shared.o $(DRIVER_SHARED_OBJ)
	$(LINK) $< -o $@ $(CFLAGS) $(DRIVER_SHARED_OBJ) -ldl -lz -lm \
	-Wl,-rpath -Wl,`pwd`

ioperf_static: ioperf_static.o $(DRIVER_STATIC_OBJ)
	$(LINK) $< -o $@ $(CFLAGS) $(DRIVER_STATIC_OBJ) $(SILO_LIBF) $(HDF5_LIBF) $(SZIP_LIBF) $(ZLIB_LIBF) -lz -lm
