# -*-Makefile-*-
#
# This file is part of rasdaman community.
#
# Rasdaman community is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Rasdaman community 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with rasdaman community. If not, see .
#
# Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann /
# rasdaman GmbH.
#
# For more information please see
# or contact Peter Baumann via . # Top Level makefile. This points to the various modules that have to be build
# and/or deployed
#
# MAKEFILE FOR:
# Compile and link example C++ programs;
# right now, works only with GNU Make!
#
#
##################################################################
######################### Definitions ############################
# choose C++ compiler
ifeq ($(OSTYPE),linux)
OSTYPE=linux-gnu
endif
ifeq ($(OSTYPE),Linux)
OSTYPE=linux-gnu
endif
ifneq ($(OSTYPE),linux-gnu)
endif
ifneq ($(OSTYPE),linux-gnu)
CXX = CC
else
CXX = g++
endif
# RasDaMan central includes
CXXFLAGS = -I$(RMANHOME)/include
ifeq ($(OSTYPE),solaris)
CXXFLAGS += -DSOLARIS
# enable exception handling
# exceptions are supported by default
# use ANSI C
# is used by default
else
ifeq ($(OSTYPE),linux-gnu)
CXXFLAGS += -DLINUX -DEARLY_TEMPLATE
# enable exception handling
# exceptions are supported by default
# use ANSI C
# is used by default
else
CXXFLAGS += -DHPUX
# enable exception handling
CXXFLAGS += +eh
# use ANSI C
CXXFLAGS += +a1
# necessary for templates because of bug in nm
CXXFLAGS += -ptb
endif
endif
ifeq ($(OSTYPE),solaris)
LDFLAGS += -lmalloc -lsocket -lnsl
endif
# add communication flags
CXXFLAGS += -DONCRPC
# pre-installed exchange format libraries needed
FMTLIBS = /usr/lib/libnetpbm.a /usr/lib/libjpeg.a /usr/local/lib/libpng.a /usr/local/lib/libtiff.a
# libraries needed for linkage (in particular: rasdaman + exchange formats)
LIBS += -L/usr/lib -L$(RMANHOME)/lib \
-lclientcomm -lrasodmg -lcompression -lconversion -lclientcomm -lrasodmg -lraslib \
-lppm -lpgm -lnetpbm -ljpeg -lpng -ltiff -lmfhdf -ldf -lcrypto \
-lm -lz
########################### Targets ##############################
# this global target first checks for required libraries
# disable target 'check' if you don't want this to be run
all: check avg-cell avg-cell-red lookup query insertppm
# check whether exchange format libraries have been installed
.PHONY: check
check:
@for lib in $(FMTLIBS); \
do \
if [[ ! -f $$lib ]]; \
then \
echo "error: cannot find required library $$lib - package not installed?"; \
fi \
done
avg-cell: avg-cell.o
$(CXX) $(LDFLAGS) -o $@ $^ $(LIBS)
avg-cell-red: avg-cell-red.o
$(CXX) $(LDFLAGS) -o $@ $^ $(LIBS)
lookup: lookup.o
$(CXX) $(LDFLAGS) -o $@ $^ $(LIBS)
query: query.o
$(CXX) $(LDFLAGS) -o $@ $^ $(LIBS)
insertppm: insertppm.o
$(CXX) $(LDFLAGS) -o $@ $^ $(LIBS)
.PHONY : clean
clean:
-rm *.o *.log *.dbg *.bm
-rm query insertppm lookup avg-cell avg-cell-red
ifeq ($(OSTYPE),solaris)
cd $(RMANHOME)/include/rasodmg/ptrepository; ptclean
else
ifneq ($(OSTYPE),linux-gnu)
-rm -R $(RMANHOME)/include/rasodmg/ptrepository/*
endif
endif
######################## Dependencies ############################
avg-cell.o: avg-cell.cc
avg-cell-red.o: avg-cell-red.cc
lookup.o: lookup.cc
query.o: query.cc
insertppm.o: insertppm.cc
$(CXX) $(CXXFLAGS) -c insertppm.cc -I/usr/X11R6/include
# end of Makefile