Make C++ shared libraries versioned
[debian/gnuradio] / gr-qtgui / src / lib / Makefile.am
index 913b2bd81d8612ef311b40caae7f4f4d3a615b42..26b97d1d45f0f27426c6ed3bb74e6ec2ccff0a04 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright 2008 Free Software Foundation, Inc.
+# Copyright 2008,2009 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
 
 include $(top_srcdir)/Makefile.common
 
-# Install this stuff so that it ends up as the gnuradio.qtgui module
-# This usually ends up at:
-#   ${prefix}/lib/python${python_version}/site-packages/gnuradio/qtgui
-
-ourpythondir = $(grpythondir)/qtgui
-ourlibdir    = $(grpyexecdir)/qtgui
-
 AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS) \
               $(QT_INCLUDES) -I. $(WITH_INCLUDES)
 
-SWIGPYTHONARGS = $(SWIGPYTHONFLAGS) $(STD_DEFINES_AND_INCLUDES) \
-       $(WITH_SWIG_INCLUDES) $(WITH_INCLUDES)
-
-ALL_IFILES =                           \
-       $(LOCAL_IFILES)                 \
-       $(NON_LOCAL_IFILES)             
-
-NON_LOCAL_IFILES =                     \
-       $(GNURADIO_I)
-
-LOCAL_IFILES =                                 \
-       $(top_srcdir)/gr-qtgui/src/lib/qtgui.i
-
-# These files are built by SWIG.  The first is the C++ glue.
-# The second is the python wrapper that loads the shared library
-# and knows how to call our extensions.
-
 # Only include these files in the build if qtgui passes configure checks
 # This is mostly to help make distcheck pass
-if BUILD_QT
 QMAKE_SOURCES =                                \
        spectrumdisplayform_moc.cc              \
        FrequencyDisplayPlot_moc.cc             \
        TimeDomainDisplayPlot_moc.cc            \
        WaterfallDisplayPlot_moc.cc             \
        Waterfall3DDisplayPlot_moc.cc           \
+       ConstellationDisplayPlot_moc.cc         \
        spectrumdisplayform_ui.h
-endif
 
 EXTRA_DIST = spectrumdisplayform.ui
 
-BUILT_SOURCES =                                \
-       qtgui.cc                                \
-       qtgui.py                                \
-       $(QMAKE_SOURCES)
-
-# This gets qtgui.py installed in the right place
-ourpython_PYTHON =                     \
-       qtgui.py
-
-# Build the library for Python module to link against
-ourlib_LTLIBRARIES = _qtgui.la
+BUILT_SOURCES = $(QMAKE_SOURCES)
 
 # Build the normal library for C++ apps to link against
-lib_LTLIBRARIES = libqtgui.la
+lib_LTLIBRARIES = libgnuradio-qtgui.la
 
 # These are the source files that go into the shared library
-libqtgui_la_SOURCES =  \
-       spectrumdisplayform.cc                  \
+libgnuradio_qtgui_la_SOURCES =         \
        FrequencyDisplayPlot.cc                 \
        TimeDomainDisplayPlot.cc                \
        WaterfallDisplayPlot.cc                 \
        Waterfall3DDisplayPlot.cc               \
        waterfallGlobalData.cc                  \
+       ConstellationDisplayPlot.cc             \
+       spectrumdisplayform.cc                  \
        SpectrumGUIClass.cc                     \
        spectrumUpdateEvents.cc                 \
        plot_waterfall.cc                       \
@@ -92,68 +58,62 @@ libqtgui_la_SOURCES =       \
        qtgui_sink_c.cc                         \
        qtgui_sink_f.cc
 
-_qtgui_la_SOURCES =                    \
-       $(libqtgui_la_SOURCES)          \
-       qtgui.cc
-
 # These headers get installed in ${prefix}/include/gnuradio
 grinclude_HEADERS =                    \
-       spectrumdisplayform.h           \
        FrequencyDisplayPlot.h          \
        TimeDomainDisplayPlot.h         \
        WaterfallDisplayPlot.h          \
        Waterfall3DDisplayPlot.h        \
-       SpectrumGUIClass.h              \
        waterfallGlobalData.h           \
+       ConstellationDisplayPlot.h      \
        highResTimeFunctions.h          \
        plot_waterfall.h                \
+       spectrumdisplayform.h           \
+       SpectrumGUIClass.h              \
        spectrumUpdateEvents.h          \
        qtgui.h                         \
        qtgui_sink_c.h                  \
        qtgui_sink_f.h
 
-if BUILD_QT
 %_moc.cc : %.h
-       $(QT_MOC_EXEC) -DQT_SHARED -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB $< -o $@
+       $(QT_MOC_EXEC) -DQT_SHARED -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -p $(srcdir) $< -o $@
 
 %_ui.h : %.ui
        $(QT_UIC_EXEC) $< -o $@
-else
-%_moc.cc : %.h
-       touch $@
-
-%_ui.h : %.ui
-       touch $@
-endif
 
 # magic flags
-_qtgui_la_LDFLAGS = $(NO_UNDEFINED) -module -avoid-version
-libqtgui_la_LDFLAGS = $(NO_UNDEFINED) -version-info 0:0:0
+libgnuradio_qtgui_la_LDFLAGS = $(NO_UNDEFINED) $(LTVERSIONFLAGS)
 
-# link the library against the c++ standard library
-_qtgui_la_LIBADD =             \
-       $(PYTHON_LDFLAGS)       \
+libgnuradio_qtgui_la_LIBADD =          \
        $(GNURADIO_CORE_LA)     \
        -lstdc++                \
        $(QT_LIBS)
 
+if PYTHON
+##############################
+# SWIG interface and library
 
-libqtgui_la_LIBADD =           \
-       $(GNURADIO_CORE_LA)     \
-       -lstdc++                \
-       $(QT_LIBS)
+TOP_SWIG_IFILES =              \
+       qtgui.i
 
-qtgui.cc qtgui.py: qtgui.i $(ALL_IFILES)
-       $(SWIG) $(SWIGPYTHONARGS) -module qtgui -o qtgui.cc $(LOCAL_IFILES)
+# Install so that they end up available as:
+#   import gnuradio.qtgui
+# This ends up at:
+#   ${prefix}/lib/python${python_version}/site-packages/gnuradio
+qtgui_pythondir_category =     \
+       gnuradio/qtgui
 
-# These swig headers get installed in ${prefix}/include/gnuradio/swig
-swiginclude_HEADERS =                  \
-       $(LOCAL_IFILES)
+# additional libraries for linking with the SWIG-generated library
+qtgui_la_swig_libadd =         \
+       libgnuradio-qtgui.la
 
+include $(top_srcdir)/Makefile.swig
 
-MOSTLYCLEANFILES = $(BUILT_SOURCES) *.pyc
+# add some of the variables generated inside the Makefile.swig.gen
+BUILT_SOURCES +=               \
+       $(swig_built_sources)
+endif
 
-# Don't distribute output of swig
-dist-hook:
-       @for file in $(BUILT_SOURCES); do echo $(RM) $(distdir)/$$file; done
-       @for file in $(BUILT_SOURCES); do $(RM) $(distdir)/$$file; done
+# Do not distribute built sources, they may contain generated paths
+# which are invalid on other systems
+no_dist_files = $(BUILT_SOURCES)