Renamed applications. Legacy names are kept as symlinks.

The symbolic links are created with use of CMake during building.
diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt
index 0a91a0d..e8957d6 100644
--- a/apps/CMakeLists.txt
+++ b/apps/CMakeLists.txt
@@ -19,33 +19,36 @@
 
 include(GrPython)
 
-#SET(APPS_DIR ${CMAKE_SOURCE_DIR}/apps)
-
-#SET(GRCC_COMMAND ${PC_GNURADIO_RUNTIME_PREFIX}/${GR_RUNTIME_DIR}/grcc)
-#SET(BLOCK_PATH ../grc/)
-
-#ADD_CUSTOM_TARGET(airprobe_file.py ALL)
-#ADD_CUSTOM_COMMAND(
-# TARGET airprobe_file.py
-# COMMAND GRC_BLOCKS_PATH=${BLOCK_PATH} ${GRCC_COMMAND} -d ${CMAKE_CURRENT_BINARY_DIR} 
-# ARGS "airprobe_file.grc"
-# WORKING_DIRECTORY ${APPS_DIR}
-#)
-
-#ADD_CUSTOM_TARGET(airprobe_rtlsdr.py ALL)
-#ADD_CUSTOM_COMMAND(
-# TARGET airprobe_rtlsdr.py
-# COMMAND GRC_BLOCKS_PATH=${BLOCK_PATH} ${GRCC_COMMAND} -d ${CMAKE_CURRENT_BINARY_DIR} 
-# ARGS "airprobe_rtlsdr.grc"
-# WORKING_DIRECTORY ${APPS_DIR}
-#)
-
 GR_PYTHON_INSTALL(
     PROGRAMS
-#    ${CMAKE_CURRENT_BINARY_DIR}/airprobe_rtlsdr.py
-    airprobe_rtlsdr.py
-    airprobe_decode.py
-    airprobe_rtlsdr_capture.py
-    airprobe_rtlsdr_scanner.py
+    grgsm_airprobe.py
+    grgsm_capture.py
+    grgsm_decode.py
+    grgsm_scanner.py
+    gsm_channelize.py
+    DESTINATION bin
+)
+
+#create logical links in order to keep legacy names of apps
+macro(CREATE_SYMLINK _source _dest)
+    set(source ${CMAKE_CURRENT_SOURCE_DIR}/${_source})
+    set(dest ${CMAKE_CURRENT_BINARY_DIR}/${_dest})
+    list(APPEND symlinks ${dest})
+    add_custom_command(
+        DEPENDS ${source} OUTPUT ${dest}
+        COMMAND ln -sf ${_source} ${_dest}
+    )
+endmacro(CREATE_SYMLINK)
+
+CREATE_SYMLINK(grgsm_decode.py airprobe_decode.py)
+CREATE_SYMLINK(grgsm_capture.py airprobe_rtlsdr_capture.py)
+CREATE_SYMLINK(grgsm_airprobe.py airprobe_rtlsdr.py)
+CREATE_SYMLINK(grgsm_scanner.py airprobe_rtlsdr_scanner.py)
+
+add_custom_target(multi_rtl_grc_xml_blocks ALL DEPENDS ${symlinks})
+
+install(
+    PROGRAMS
+    ${symlinks}
     DESTINATION bin
 )
diff --git a/apps/airprobe_rtlsdr.grc b/apps/grgsm_airprobe.grc
similarity index 99%
rename from apps/airprobe_rtlsdr.grc
rename to apps/grgsm_airprobe.grc
index e30a2ef..a603103 100644
--- a/apps/airprobe_rtlsdr.grc
+++ b/apps/grgsm_airprobe.grc
@@ -46,7 +46,7 @@
     </param>
     <param>
       <key>id</key>
-      <value>airprobe_rtlsdr</value>
+      <value>grgsm_airprobe</value>
     </param>
     <param>
       <key>max_nouts</key>
diff --git a/apps/airprobe_rtlsdr.py b/apps/grgsm_airprobe.py
similarity index 96%
rename from apps/airprobe_rtlsdr.py
rename to apps/grgsm_airprobe.py
index 97c6097..8c2245f 100755
--- a/apps/airprobe_rtlsdr.py
+++ b/apps/grgsm_airprobe.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python2
 ##################################################
 # GNU Radio Python Flow Graph
-# Title: Airprobe Rtlsdr
+# Title: Gr-gsm Airprobe
 # Generated: Wed Sep  2 21:46:35 2015
 ##################################################
 
@@ -33,12 +33,12 @@
 import time
 
 
-class airprobe_rtlsdr(gr.top_block, Qt.QWidget):
+class grgsm_airprobe(gr.top_block, Qt.QWidget):
 
     def __init__(self, fc=939.4e6, gain=30, ppm=0, samp_rate=2000000.052982, shiftoff=400e3):
-        gr.top_block.__init__(self, "Airprobe Rtlsdr")
+        gr.top_block.__init__(self, "Gr-gsm Airprobe")
         Qt.QWidget.__init__(self)
-        self.setWindowTitle("Airprobe Rtlsdr")
+        self.setWindowTitle("Gr-gsm Airprobe")
         try:
              self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
         except:
@@ -55,7 +55,7 @@
         self.top_grid_layout = Qt.QGridLayout()
         self.top_layout.addLayout(self.top_grid_layout)
 
-        self.settings = Qt.QSettings("GNU Radio", "airprobe_rtlsdr")
+        self.settings = Qt.QSettings("GNU Radio", "grgsm_airprobe")
         self.restoreGeometry(self.settings.value("geometry").toByteArray())
 
         ##################################################
@@ -180,7 +180,7 @@
         self.connect((self.rtlsdr_source_0, 0), (self.blocks_rotator_cc_0, 0))    
 
     def closeEvent(self, event):
-        self.settings = Qt.QSettings("GNU Radio", "airprobe_rtlsdr")
+        self.settings = Qt.QSettings("GNU Radio", "grgsm_airprobe")
         self.settings.setValue("geometry", self.saveGeometry())
         event.accept()
 
@@ -266,7 +266,7 @@
 #        Qt.QApplication.setGraphicsSystem(gr.prefs().get_string('qtgui','style','raster'))
     Qt.QApplication.setGraphicsSystem(gr.prefs().get_string('qtgui','style','raster'))
     qapp = Qt.QApplication(sys.argv)
-    tb = airprobe_rtlsdr(fc=options.fc, gain=options.gain, ppm=options.ppm, samp_rate=options.samp_rate, shiftoff=options.shiftoff)
+    tb = grgsm_airprobe(fc=options.fc, gain=options.gain, ppm=options.ppm, samp_rate=options.samp_rate, shiftoff=options.shiftoff)
     tb.start()
     tb.show()
 
diff --git a/apps/airprobe_rtlsdr_capture.py b/apps/grgsm_capture.py
similarity index 97%
rename from apps/airprobe_rtlsdr_capture.py
rename to apps/grgsm_capture.py
index 909ce2e..98696f4 100755
--- a/apps/airprobe_rtlsdr_capture.py
+++ b/apps/grgsm_capture.py
@@ -36,11 +36,11 @@
 import sys
 
 
-class airprobe_rtlsdr_capture(gr.top_block):
+class grgsm_capture(gr.top_block):
 
     def __init__(self, fc, gain, samp_rate, ppm, arfcn, cfile=None, burst_file=None, band=None, verbose=False, rec_length=None):
 
-        gr.top_block.__init__(self, "Airprobe RTL-SDR Capture")
+        gr.top_block.__init__(self, "Gr-gsm Capture")
                 
         ##################################################
         # Parameters
@@ -255,7 +255,7 @@
                     arfcn = grgsm.arfcn.downlink2arfcn(options.fc, band)
                     break
      
-    tb = airprobe_rtlsdr_capture(fc=fc, gain=options.gain, samp_rate=options.samp_rate,
+    tb = grgsm_capture(fc=fc, gain=options.gain, samp_rate=options.samp_rate,
                          ppm=options.ppm, arfcn=arfcn, cfile=options.cfile, 
                          burst_file=options.burst_file, band=options.band, verbose=options.verbose,
                          rec_length=options.rec_length)
diff --git a/apps/airprobe_decode.py b/apps/grgsm_decode.py
similarity index 98%
rename from apps/airprobe_decode.py
rename to apps/grgsm_decode.py
index ceb38ef..099d680 100755
--- a/apps/airprobe_decode.py
+++ b/apps/grgsm_decode.py
@@ -32,7 +32,7 @@
 import socket
 
 
-class airprobe_decoder(gr.top_block):
+class grgsm_decoder(gr.top_block):
 
     def __init__(self, timeslot=0, subslot=None, chan_mode='BCCH',
                  burst_file=None,
@@ -41,7 +41,7 @@
                  speech_file=None, speech_codec=None,
                  verbose=False):
 
-        gr.top_block.__init__(self, "Airprobe Decode")
+        gr.top_block.__init__(self, "Gr-gsm Decode")
 
         ##################################################
         # Parameters
@@ -364,7 +364,7 @@
     sock.bind(("localhost", 4729))
 
     # instanciate decoder
-    tb = airprobe_decoder(timeslot=options.timeslot, subslot=options.subslot, chan_mode=options.chan_mode,
+    tb = grgsm_decoder(timeslot=options.timeslot, subslot=options.subslot, chan_mode=options.chan_mode,
                           burst_file=options.burst_file,
                           cfile=options.cfile, arfcn=arfcn, fc=fc, samp_rate=options.samp_rate,
                           a5=options.a5, a5_kc=kc,
diff --git a/apps/airprobe_rtlsdr_scanner.py b/apps/grgsm_scanner.py
similarity index 100%
rename from apps/airprobe_rtlsdr_scanner.py
rename to apps/grgsm_scanner.py