Added build step for python modules
authorAnders Henja <anders@baltrad.eu>
Fri, 26 Aug 2011 12:29:11 +0000 (14:29 +0200)
committerAnders Henja <anders@baltrad.eu>
Fri, 26 Aug 2011 12:29:11 +0000 (14:29 +0200)
Makefile
configure
configure.in
def.mk.in
drain/Makefile
pyrack/Makefile [new file with mode: 0644]
pyrack/pyrack.c
rack/Makefile

index ab17ef2..4dfdbb0 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -33,6 +33,7 @@ def.mk:
 build: def.mk
        $(MAKE) -C drain
        $(MAKE) -C rack
+       $(MAKE) -C pyrack
 
 .PHONY:doc
 doc:
@@ -40,8 +41,9 @@ doc:
 
 .PHONY:install
 install: def.mk
-       #$(MAKE) -C drain install
-       #$(MAKE) -C rack install
+       $(MAKE) -C drain install
+       $(MAKE) -C rack install
+       $(MAKE) -C pyrack install
        @echo "################################################################"
        @echo "To run the binaries you will need to setup your library path to"
        @echo "LD_LIBRARY_PATH="`cat def.mk | grep LD_PRINTOUT | sed -e"s/LD_PRINTOUT=//"`
@@ -51,9 +53,11 @@ install: def.mk
 clean:
        $(MAKE) -C drain clean
        $(MAKE) -C rack clean
+       $(MAKE) -C pyrack clean
 
 .PHONY:distclean
 distclean:
        $(MAKE) -C drain distclean
        $(MAKE) -C rack distclean
+       $(MAKE) -C pyrack distclean
        @\rm -f *~ config.log config.status def.mk
index b40c5fa..78ab7c8 100755 (executable)
--- a/configure
+++ b/configure
@@ -593,6 +593,7 @@ ac_includes_default="\
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
 LD_PRINTOUT
+LDCPPSHARED
 HLHDFLDSHARED
 HLHDF_LIBRARY_FLAG
 HLHDF_INCLUDE_FLAG
@@ -605,6 +606,7 @@ NUMPY_INCLUDE_FLAG
 PYTHON_INCLUDE_FLAG
 RAVECCSHARED
 RAVELDFLAGS
+CPPOPTS
 RAVECCOPTS
 RAVECC
 PNG_LIB_DIR
@@ -3187,6 +3189,12 @@ RAVECCOPTS=`cat $RAVE_ROOT_DIR/mkf/def.mk | sed -n "/^OPTS=/p" | sed -n -e"s/^OP
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RAVECCOPTS" >&5
 $as_echo "$RAVECCOPTS" >&6; }
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cpp options" >&5
+$as_echo_n "checking for cpp options... " >&6; }
+CPPOPTS=`echo "$RAVECCOPTS" | sed -e "s/-Wstrict-prototypes//"`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPPOPTS" >&5
+$as_echo "$CPPOPTS" >&6; }
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rave ld flags" >&5
 $as_echo_n "checking for rave ld flags... " >&6; }
 RAVELDFLAGS=`cat $RAVE_ROOT_DIR/mkf/def.mk | sed -n "/^LDFLAGS=/p" | sed -n -e"s/^LDFLAGS=[    ]*\(.*\)/\1/p"`
@@ -3265,6 +3273,13 @@ HLHDFLDSHARED=`cat $HLHDF_MK_FILE | sed -n "/^LDSHARED=/p" | sed -n -e"s/^LDSHAR
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HLHDFLDSHARED" >&5
 $as_echo "$HLHDFLDSHARED" >&6; }
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for g++ ld shared options" >&5
+$as_echo_n "checking for g++ ld shared options... " >&6; }
+LDCPPSHARED=`echo "$HLHDFLDSHARED" | awk '{$1=""}1'`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LDCPPSHARED" >&5
+$as_echo "$LDCPPSHARED" >&6; }
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hdf5 software used by hlhdf" >&5
 $as_echo_n "checking for hdf5 software used by hlhdf... " >&6; }
 HLHDF_HDF5_LIB=`cat $HLHDF_MK_FILE | sed -n "/^HDF5_LIBDIR=/p" | sed -n -e"s/^HDF5_LIBDIR=[    ]*\(.*\)/\1/p"`
@@ -4003,6 +4018,8 @@ fi
 
 
 
+
+
 ac_config_files="$ac_config_files def.mk"
 
 cat >confcache <<\_ACEOF
index 4b6f626..4216bdc 100644 (file)
@@ -70,6 +70,12 @@ AC_MSG_CHECKING(for rave cc options)
 RAVECCOPTS=`cat $RAVE_ROOT_DIR/mkf/def.mk | sed -n "/^OPTS=/p" | sed -n -e"s/^OPTS=[[  ]]*\(.*\)/\1/p"`
 AC_MSG_RESULT($RAVECCOPTS)
 
+dnl Remove strict prototype from cc options
+dnl
+AC_MSG_CHECKING(for cpp options)
+CPPOPTS=`echo "$RAVECCOPTS" | sed -e "s/-Wstrict-prototypes//"`
+AC_MSG_RESULT($CPPOPTS)
+
 AC_MSG_CHECKING(for rave ld flags)
 RAVELDFLAGS=`cat $RAVE_ROOT_DIR/mkf/def.mk | sed -n "/^LDFLAGS=/p" | sed -n -e"s/^LDFLAGS=[[   ]]*\(.*\)/\1/p"`
 AC_MSG_RESULT($RAVELDFLAGS)
@@ -122,6 +128,11 @@ AC_MSG_CHECKING(for hlhdf ld shared)
 HLHDFLDSHARED=`cat $HLHDF_MK_FILE | sed -n "/^LDSHARED=/p" | sed -n -e"s/^LDSHARED=[[  ]]*\(.*\)/\1/p"`
 AC_MSG_RESULT($HLHDFLDSHARED)
 
+AC_MSG_CHECKING(for g++ ld shared options)
+LDCPPSHARED=`echo "$HLHDFLDSHARED" | awk '{$1=""}1'`
+AC_MSG_RESULT($LDCPPSHARED)
+
+
 AC_MSG_CHECKING(for hdf5 software used by hlhdf)
 HLHDF_HDF5_LIB=`cat $HLHDF_MK_FILE | sed -n "/^HDF5_LIBDIR=/p" | sed -n -e"s/^HDF5_LIBDIR=[[   ]]*\(.*\)/\1/p"`
 AC_MSG_RESULT($HLHDF_HDF5_LIB)
@@ -279,6 +290,7 @@ AC_SUBST(PNG_INCLUDE_DIR)
 AC_SUBST(PNG_LIB_DIR)
 AC_SUBST(RAVECC)
 AC_SUBST(RAVECCOPTS)
+AC_SUBST(CPPOPTS)
 AC_SUBST(RAVELDFLAGS)
 AC_SUBST(RAVECCSHARED)
 AC_SUBST(PYTHON_INCLUDE_FLAG)
@@ -291,6 +303,7 @@ AC_SUBST(EXPAT_SUPPRESSED)
 AC_SUBST(HLHDF_INCLUDE_FLAG)
 AC_SUBST(HLHDF_LIBRARY_FLAG)
 AC_SUBST(HLHDFLDSHARED)
+AC_SUBST(LDCPPSHARED)
 AC_SUBST(LD_PRINTOUT)
 
 AC_CONFIG_FILES(def.mk)
index ff349ff..e08bf1b 100644 (file)
--- a/def.mk.in
+++ b/def.mk.in
@@ -12,10 +12,15 @@ prefix=             @prefix@
 CPP=                @CXX@
 CC=                 @RAVECC@
 CCOPTS=             @RAVECCOPTS@
+CPPOPTS=            @CPPOPTS@
 LDFLAGS=            @RAVELDFLAGS@
 
 # (from hlhdf)
 LDSHARED=           @HLHDFLDSHARED@
+
+# For created shared libraries with c++.
+LDCPPSHARED=        @CXX@ @LDCPPSHARED@
+
 SHARED_FLAG=        @RAVECCSHARED@
 
 WITH_MAGICK=        @WITH_MAGICK@
index 988a3e8..4367107 100644 (file)
@@ -26,7 +26,7 @@
 
 # Drain specific cpp flags
 #
-CPPFLAGS= $(SHARED_FLAG) $(DEFS) -I. $(PROJ_INCLUDE_FLAG) $(PNG_INCLUDE_DIR)
+CPPFLAGS= $(SHARED_FLAG) $(CPPOPTS) $(DEFS) -I. -I./image -I./radar -I./util -I.. $(PROJ_INCLUDE_FLAG) $(PNG_INCLUDE_DIR)
 
 ifeq ($(WITH_MAGICK), no)
 CPPFLAGS+= -DRAIN_MAGICK_no
@@ -49,7 +49,7 @@ UTIL_OBJECTS= $(UTIL_SOURCES:.cpp=.o)
 
 TARGET= libbdrain.so
 
-MAKEDEPEND=g++ -MM $(CPPFLAGS) -MT '$(@D)/$(@F)' -o $(DF).d $<
+MAKEDEPEND=$(CPP) -MM $(CPPFLAGS) -MT '$(@D)/$(@F)' -o $(DF).d $<
 DEPDIR=.dep
 DF=$(DEPDIR)/$(@D)/$(*F)
 
@@ -64,7 +64,7 @@ $(DEPDIR):
 all:           $(TARGET)
 
 $(TARGET): $(DEPDIR) $(IMAGE_OBJECTS) $(RADAR_OBJECTS) $(UTIL_OBJECTS)
-       $(LDSHARED) -o $@ $(IMAGE_OBJECTS) $(RADAR_OBJECTS) $(UTIL_OBJECTS)
+       $(LDCPPSHARED) -o $@ $(IMAGE_OBJECTS) $(RADAR_OBJECTS) $(UTIL_OBJECTS)
 
 .PHONY=install
 install:
@@ -75,8 +75,8 @@ install:
        
 .PHONY=clean
 clean:
-               @\rm -f image/*.o radar/*.o util/*.o core *~
-               @\rm -fr $(DEPDIR)
+       @\rm -f image/*.o radar/*.o util/*.o core *~
+       @\rm -fr $(DEPDIR)
 
 .PHONY=distclean                
 distclean:     clean
diff --git a/pyrack/Makefile b/pyrack/Makefile
new file mode 100644 (file)
index 0000000..6d8aa4a
--- /dev/null
@@ -0,0 +1,118 @@
+###########################################################################
+# Copyright (C) 2011 Swedish Meteorological and Hydrological Institute, SMHI,
+#
+# This file is part of bRack.
+#
+# bRack is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# 
+# bRack 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 Lesser General Public License for more details.
+# 
+# You should have received a copy of the GNU Lesser General Public License
+# along with RAVE.  If not, see <http://www.gnu.org/licenses/>.
+# ------------------------------------------------------------------------
+# 
+# pyrack make file
+# @file
+# @author Anders Henja (Swedish Meteorological and Hydrological Institute, SMHI)
+# @date 2011-08-26
+###########################################################################
+-include ../def.mk
+
+# Drain specific c flags
+#
+CFLAGS= $(SHARED_FLAG) $(CCOPTS) $(DEFS) -I../rack/rack $(PNG_INCLUDE_DIR) $(PYTHON_INCLUDE_FLAG)\
+                       $(RAVE_INCLUDE_FLAG) $(RAVE_INCLUDE_FLAG)/python $(HLHDF_INCLUDE_FLAG) $(ZLIB_INCDIR) \
+                       $(HDF5_INCDIR) $(PROJ_INCLUDE_FLAG)
+
+# Linker flags
+#
+LDFLAGS= -L../drain -L../rack -L. $(PNG_LIB_DIR) $(RAVE_LIB_FLAG) $(HLHDF_LIBRARY_FLAG) $(ZLIB_LIBDIR) \
+                       $(HDF5_LIBDIR) $(PROJ_LIB_FLAG) 
+
+# Handle magick specific flags
+#
+MAGICK_LIBRARIES=
+ifeq ($(WITH_MAGICK), no)
+CPPFLAGS+= -DRAIN_MAGICK_no
+CFLAGS+= -DRAIN_MAGICK_no
+else
+CPPFLAGS+= -DRAIN_MAGICK_yes `/usr/bin/Magick++-config --cppflags --cxxflags`
+CFLAGS+= -DRAIN_MAGICK_yes `/usr/bin/Magick++-config --cppflags --cxxflags`
+LDFLAGS+= `/usr/bin/Magick++-config --lddflags`
+MAGICK_LIBRARIES= `/usr/bin/Magick++-config --libs`
+endif
+
+# We also need to ensure that raves expat requirements are managed
+EXPAT_LIBRARY=
+ifeq ($(EXPAT_SUPPRESSED), no)
+CPPFLAGS+= $(EXPAT_INCLUDE_DIR) -DRAVE_XML_SUPPORTED
+CFLAGS+= $(EXPAT_INCLUDE_DIR) -DRAVE_XML_SUPPORTED
+LDFLAGS+= $(EXPAT_LIB_DIR)
+EXPAT_LIBRARY=-lexpat
+endif
+
+LIBRARIES=-lhlhdf -lproj  $(EXPAT_LIBRARY) -lravetransform $(MAGICK_LIBRARIES) -lbrack -lbdrain -lpng
+
+# --------------------------------------------------------------------
+# Fixed definitions
+
+SOURCES= pyrack.c
+                               
+OBJECTS= $(SOURCES:.c=.o)
+
+TARGET= _rack.so
+
+MAKECDEPEND=$(CC) -MM $(CFLAGS) -MT '$(@D)/$(@F)' -o $(DF).d $<
+
+DEPDIR=.dep
+DF=$(DEPDIR)/$(*F)
+
+# Ensures that the .dep directory exists
+.PHONY=$(DEPDIR)
+$(DEPDIR):
+       +@[ -d $@ ] || mkdir -p $@
+
+# And the rest of the make file targets
+#
+.PHONY=all
+all:           $(TARGET)
+
+$(TARGET): $(DEPDIR) $(OBJECTS) ../drain/libbdrain.so ../rack/libbrack.so
+       $(LDSHARED) -o $@ $(OBJECTS) $(LDFLAGS) $(LIBRARIES)
+
+.PHONY=install
+install:
+       @mkdir --parents ${prefix}/pyrack/
+       @cp -v -u _rack.so ${prefix}/pyrack/
+       @echo "$(prefix)/pyrack" > "$(SITEPACK_PYTHON)/pyrack.pth"
+
+.PHONY=clean
+clean:
+       @\rm -f *.o core *~
+       @\rm -fr $(DEPDIR)
+
+.PHONY=distclean                
+distclean:     clean
+       @\rm -f $(TARGET)
+
+# --------------------------------------------------------------------
+# Rules
+
+# Contains dependency generation as well, so if you are not using
+# gcc, comment out everything until the $(CC) statement.
+%.o : %.c
+       @$(MAKECDEPEND); \
+       cp $(DF).d $(DF).P; \
+       sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
+               -e '/^$$/ d' -e 's/$$/ :/' < $(DF).d >> $(DF).P; \
+       \rm -f $(DF).d
+       $(CC) -c $(CFLAGS) $< -o $@
+
+# NOTE! This ensures that the dependencies are setup at the right time so this should not be moved
+-include $(SOURCES:%.c=$(DEPDIR)/%.P)
index 28527a3..e432a40 100644 (file)
@@ -147,5 +147,6 @@ PyMODINIT_FUNC init_rack(void)
 
   import_pypolarvolume();
   import_pypolarscan();
+  import_pyraveio();
   PYRAVE_DEBUG_INITIALIZE;
 }
index 73fbcb7..da976cd 100644 (file)
 # along with RAVE.  If not, see <http://www.gnu.org/licenses/>.
 # ------------------------------------------------------------------------
 # 
-# Drain make file
+# Rack make file
 # @file
 # @author Anders Henja (Swedish Meteorological and Hydrological Institute, SMHI)
 # @date 2011-08-26
 ###########################################################################
 -include ../def.mk
 
-# Drain specific cpp flags
+# Rack specific cpp flags
 #
 CPPFLAGS= $(SHARED_FLAG) $(DEFS) -I./hi5 -I./rack -I./ropo $(PNG_INCLUDE_DIR) \
                        $(RAVE_INCLUDE_FLAG) $(HLHDF_INCLUDE_FLAG) $(ZLIB_INCDIR) \
                        $(HDF5_INCDIR) $(PROJ_INCLUDE_FLAG)
 
-# Drain specific c flags
+# Rack specific c flags
 #
 CFLAGS= $(SHARED_FLAG) $(CCOPTS) $(DEFS) -I./hi5 -I./rack -I./ropo $(PNG_INCLUDE_DIR) \
                        $(RAVE_INCLUDE_FLAG) $(HLHDF_INCLUDE_FLAG) $(ZLIB_INCDIR) \
@@ -63,10 +63,6 @@ LDFLAGS+= $(EXPAT_LIB_DIR)
 EXPAT_LIBRARY=-lexpat
 endif
 
-# Header files to install
-#
-INSTALL_HEADERS= 
-
 # --------------------------------------------------------------------
 # Fixed definitions
 
@@ -96,8 +92,8 @@ TARGET= libbrack.so
 TARGET_RACK= brack
 TARGET_ROPO= bropo
 
-MAKECPPDEPEND=g++ -MM $(CPPFLAGS) -MT '$(@D)/$(@F)' -o $(DF).d $<
-MAKECDEPEND=gcc -MM $(CFLAGS) -MT '$(@D)/$(@F)' -o $(DF).d $<
+MAKECPPDEPEND=$(CPP) -MM $(CPPFLAGS) -MT '$(@D)/$(@F)' -o $(DF).d $<
+MAKECDEPEND=$(CC) -MM $(CFLAGS) -MT '$(@D)/$(@F)' -o $(DF).d $<
 
 DEPDIR=.dep
 DF=$(DEPDIR)/$(@D)/$(*F)
@@ -113,7 +109,7 @@ $(DEPDIR):
 all:           $(TARGET) $(TARGET_RACK) $(TARGET_ROPO)
 
 $(TARGET): $(DEPDIR) $(HI5_OBJECTS) $(RACK_OBJECTS) $(ROPO_COBJECTS) $(ROPO_CPPOBJECTS)
-       $(LDSHARED) -o $@ $(HI5_OBJECTS) $(RACK_OBJECTS) $(ROPO_COBJECTS) $(ROPO_CPPOBJECTS)
+       $(LDCPPSHARED) -o $@ $(HI5_OBJECTS) $(RACK_OBJECTS) $(ROPO_COBJECTS) $(ROPO_CPPOBJECTS)
 
 $(TARGET_RACK): $(DEPDIR) $(TARGET) $(RACK_BIN_OBJECTS) ../drain/libbdrain.so
        $(CPP) $(CCSHARED) -o $@ $(LDFLAGS) $(RACK_BIN_OBJECTS) -lbdrain -lbrack -lravetransform -lhlhdf -lproj $(EXPAT_LIBRARY) $(MAGICK_LIBRARIES) -lpng