Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37729033
en ru br
ALT Linux repos
S:20.03-alt9
5.0: 8.02-alt3
4.1: 8.02-alt1
4.0: 1.0-alt0.svn4742

Group :: Development/C++
RPM: codeblocks

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs and FR  Repocop 

Patch: codeblocks-20.03-FortranProject_autotools_build.patch
Download


diff --git a/codeblocks/configure.ac b/codeblocks/configure.ac
index c0217bd4..dcf5fea6 100644
--- a/codeblocks/configure.ac
+++ b/codeblocks/configure.ac
@@ -542,6 +542,27 @@ AC_CONFIG_FILES([Makefile
 	src/plugins/contrib/EditorTweaks/Makefile
 	src/plugins/contrib/envvars/Makefile
 	src/plugins/contrib/FileManager/Makefile
+	src/plugins/contrib/FortranProject/Makefile
+	src/plugins/contrib/FortranProject/images/Makefile
+	src/plugins/contrib/FortranProject/images/16x16/Makefile
+	src/plugins/contrib/FortranProject/images/20x20/Makefile
+	src/plugins/contrib/FortranProject/images/24x24/Makefile
+	src/plugins/contrib/FortranProject/images/28x28/Makefile
+	src/plugins/contrib/FortranProject/images/32x32/Makefile
+	src/plugins/contrib/FortranProject/images/40x40/Makefile
+	src/plugins/contrib/FortranProject/images/48x48/Makefile
+	src/plugins/contrib/FortranProject/images/56x56/Makefile
+	src/plugins/contrib/FortranProject/images/64x64/Makefile
+	src/plugins/contrib/FortranProject/images/fortranproject/16x16/Makefile
+	src/plugins/contrib/FortranProject/images/fortranproject/20x20/Makefile
+	src/plugins/contrib/FortranProject/images/fortranproject/24x24/Makefile
+	src/plugins/contrib/FortranProject/images/fortranproject/28x28/Makefile
+	src/plugins/contrib/FortranProject/images/fortranproject/32x32/Makefile
+	src/plugins/contrib/FortranProject/images/fortranproject/40x40/Makefile
+	src/plugins/contrib/FortranProject/images/fortranproject/48x48/Makefile
+	src/plugins/contrib/FortranProject/images/fortranproject/56x56/Makefile
+	src/plugins/contrib/FortranProject/images/fortranproject/64x64/Makefile
+	src/plugins/contrib/FortranProject/images/fortranproject/Makefile
 	src/plugins/contrib/headerfixup/Makefile
 	src/plugins/contrib/help_plugin/Makefile
 	src/plugins/contrib/help_plugin/bzip2/Makefile
diff --git a/codeblocks/m4/acinclude.m4 b/codeblocks/m4/acinclude.m4
index ee877b1f..af90475e 100644
--- a/codeblocks/m4/acinclude.m4
+++ b/codeblocks/m4/acinclude.m4
@@ -345,6 +345,7 @@ AC_DEFUN([BUILD_CONTRIB_NONE], [
 	AM_CONDITIONAL([BUILD_EDITORTWEAKS], [false])
 	AM_CONDITIONAL([BUILD_ENVVARS], [false])
 	AM_CONDITIONAL([BUILD_FILEMANAGER], [false])
+	AM_CONDITIONAL([BUILD_FORTRANPROJECT], [false])
 	AM_CONDITIONAL([BUILD_HEADERFIXUP], [false])
 	AM_CONDITIONAL([BUILD_HELP], [false])
 	AM_CONDITIONAL([BUILD_KEYBINDER], [false])
@@ -388,6 +389,7 @@ AC_DEFUN([BUILD_CONTRIB_ALL], [
 	AM_CONDITIONAL([BUILD_EDITORTWEAKS], [true])
 	AM_CONDITIONAL([BUILD_ENVVARS], [true])
 	AM_CONDITIONAL([BUILD_FILEMANAGER], [true])
+	AM_CONDITIONAL([BUILD_FORTRANPROJECT], [true])
 	AM_CONDITIONAL([BUILD_HEADERFIXUP], [true])
 	AM_CONDITIONAL([BUILD_HELP], [true])
 	AM_CONDITIONAL([BUILD_KEYBINDER], [true])
@@ -429,7 +431,7 @@ AC_ARG_WITH(contrib-plugins,
   [                        compiles none of the contrib-plugins ]
   [                        Plugin names are: AutoVersioning, BrowseTracker, byogames, Cccc, CppCheck, cbkoders, codesnippets, ]
   [                        		     codestat, copystrings, Cscope, DoxyBlocks, dragscroll, EditorConfig, EditorTweaks, envvars, exporter, ]
-  [                        		     FileManager, headerfixup, help, hexeditor, incsearch, keybinder, libfinder, MouseSap, ]
+  [                        		     FileManager, FortranProject, headerfixup, help, hexeditor, incsearch, keybinder, libfinder, MouseSap, ]
   [                        		     NassiShneiderman, ProjectOptionsManipulator, profiler, regex, ReopenEditor, rndgen, smartindent, spellchecker, ]
   [                        		     symtab, ThreadSearch, ToolsPlus, Valgrind, wxcontrib, wxsmith, wxsmithcontrib, wxsmithaui ],
   plugins="$withval", plugins="none")
@@ -483,6 +485,9 @@ do
 	FileManager)
 		AM_CONDITIONAL([BUILD_FILEMANAGER], [true])
 		;;
+	FortranProject)
+		AM_CONDITIONAL([BUILD_FORTRANPROJECT], [true])
+		;;
 	headerfixup)
 		AM_CONDITIONAL([BUILD_HEADERFIXUP], [true])
 		;;
@@ -603,6 +608,9 @@ do
 	-FileManager)
 		AM_CONDITIONAL([BUILD_FILEMANAGER], [false])
 		;;
+	-FortranProject)
+		AM_CONDITIONAL([BUILD_FORTRANPROJECT], [false])
+		;;
 	-headerfixup)
 		AM_CONDITIONAL([BUILD_HEADERFIXUP], [false])
 		;;
@@ -708,6 +716,7 @@ AC_SUBST(BUILD_EDITORCONFIG)
 AC_SUBST(BUILD_EDITORTWEAKS)
 AC_SUBST(BUILD_ENVVARS)
 AC_SUBST(BUILD_FILEMANAGER)
+AC_SUBST(BUILD_FORTRANPROJECT)
 AC_SUBST(BUILD_HEADERFIXUP)
 AC_SUBST(BUILD_HELP)
 AC_SUBST(BUILD_HEXEDITOR)
diff --git a/codeblocks/src/plugins/contrib/FortranProject/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/Makefile.am
new file mode 100644
index 00000000..9c1833b8
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/Makefile.am
@@ -0,0 +1,147 @@
+SUBDIRS = images
+
+ACLOCAL_AMFLAGS = --install -I m4
+
+AM_CPPFLAGS = $(WX_CXXFLAGS) \
+		-I$(top_srcdir)/src/include \
+		-I$(top_srcdir)/src/sdk/wxscintilla/include
+
+cb_plugin_datadir = $(datarootdir)/@PACKAGE@/
+cb_plugin_libdir = $(pkglibdir)/plugins/
+
+cb_plugin_lib_LTLIBRARIES = libFortranProject.la
+
+libFortranProject_la_LDFLAGS = -shared -no-undefined -avoid-version
+
+libFortranProject_la_LIBADD = ../../../sdk/libcodeblocks.la \
+                      $(WX_LIBS) \
+                      $(CB_TINYXML_LIBS)
+
+libFortranProject_la_SOURCES = adddirparserthread.cpp \
+					autoinsert.cpp \
+					bindto.cpp \
+					bindtonewtype.cpp \
+					bufferparserthread.cpp \
+					calledbydict.cpp \
+					calltree.cpp \
+					calltreeview.cpp \
+					ccsmartfilter.cpp \
+					changecase.cpp \
+					constrhighlighter.cpp \
+					docblock.cpp \
+					farrays.cpp \
+					fconstruct.cpp \
+					finfowindow.cpp \
+					formatindent.cpp \
+					formatindentdlg.cpp \
+					fortranfileext.cpp \
+					fortranproject.cpp \
+					fpimagelist.cpp \
+					fpoptionsdlg.cpp \
+					fpoptionsprjdlg.cpp \
+					includedb.cpp \
+					indentestimator.cpp \
+					jumptracker.cpp \
+					keywordsparserf.cpp \
+					lineaddress.cpp \
+					makefiledlg.cpp \
+					makefilegen.cpp \
+					moduletokenf.cpp \
+					nativeparserf.cpp \
+					parserf.cpp \
+					parserthreadf.cpp \
+					projectdependencies.cpp \
+					tab2space.cpp \
+					textcutter.cpp \
+					tokenf.cpp \
+					tokenizerf.cpp \
+					usetokenf.cpp \
+					workspacebrowserbuilder.cpp \
+					workspacebrowserf.cpp \
+					workspaceparserthread.cpp
+
+noinst_HEADERS = adddirparserthread.h \
+					autoinsert.h \
+					bindto.h \
+					bindtonewtype.h \
+					bufferparserthread.h \
+					calledbydict.h \
+					calltree.h \
+					calltreeview.h \
+					ccsmartfilter.h \
+					changecase.h \
+					constrhighlighter.h \
+					docblock.h \
+					farrays.h \
+					fconstruct.h \
+					finfowindow.h \
+					formatindent.h \
+					formatindentdlg.h \
+					fortranfileext.h \
+					fortranproject.h \
+					fpimagelist.h \
+					fpoptionsdlg.h \
+					fpoptionsprjdlg.h \
+					includedb.h \
+					indentestimator.h \
+					jumptracker.h \
+					keywordsparserf.h \
+					lineaddress.h \
+					makefiledlg.h \
+					makefilegen.h \
+					moduletokenf.h \
+					nativeparserf.h \
+					parserf.h \
+					parserthreadf.h \
+					projectdependencies.h \
+					tab2space.h \
+					textcutter.h \
+					tokenf.h \
+					tokenizerf.h \
+					usetokenf.h \
+					workspacebrowserbuilder.h \
+					workspacebrowserf.h \
+					workspaceparserthread.h
+
+EXTRA_DIST = $(srcdir)/*.cbp \
+		wxsmith/Bindto.wxs \
+		wxsmith/BindNewType.wxs \
+		wxsmith/FormatIndentDlg.wxs \
+		wxsmith/MakefileDlg.wxs \
+		manifest.xml \
+		resources/calltreeview.xrc \
+		resources/changecase.xrc \
+		resources/fortranprojecttoolbar.xrc \
+		resources/project_settings_fortran.xrc \
+		resources/settings.xrc \
+		resources/tab2space.xrc \
+		resources/workspacebrowserf.xrc \
+		update* \
+		images/16x16/*.png \
+		images/20x20/*.png \
+		images/24x24/*.png \
+		images/28x28/*.png \
+		images/32x32/*.png \
+		images/40x40/*.png \
+		images/48x48/*.png \
+		images/56x56/*.png \
+		images/64x64/*.png \
+		images/fortranproject/*.py \
+		images/fortranproject/*.f90 \
+		images/fortranproject/16x16/*.png \
+		images/fortranproject/20x20/*.png \
+		images/fortranproject/24x24*.png \
+		images/fortranproject/28x28/*.png \
+		images/fortranproject/32x32/*.png \
+		images/fortranproject/40x40/*.png \
+		images/fortranproject/48x48/*.png \
+		images/fortranproject/56x56/*.png \
+		images/fortranproject/64x64/*.png
+
+cb_plugin_data_DATA = FortranProject.zip
+
+CLEANFILES = $(cb_plugin_data_DATA)
+
+FortranProject.zip: manifest.xml
+	PWD=`pwd` cd $(srcdir) && zip -j9 $(PWD)/FortranProject.zip manifest.xml resources/*.xrc > /dev/null
+	PWD=`pwd` cd $(srcdir) && zip -R9 $(PWD)/FortranProject.zip images/16x16/*.png images/20x20/*.png images/24x24/*.png images/28x28/*.png images/32x32/*.png images/40x40/*.png images/48x48/*.png images/56x56/*.png images/64x64/*.png images/fortranproject/*.f90 images/fortranproject/16x16/*.png images/fortranproject/20x20/*.png images/fortranproject/24x24/*.png images/fortranproject/28x28/*.png images/fortranproject/32x32/*.png images/fortranproject/40x40/*.png images/fortranproject/48x48/*.png images/fortranproject/56x56/*.png images/fortranproject/64x64/*.png > /dev/null
diff --git a/codeblocks/src/plugins/contrib/FortranProject/ax_cxx_compile_stdcxx.m4 b/codeblocks/src/plugins/contrib/FortranProject/ax_cxx_compile_stdcxx.m4
new file mode 100644
index 00000000..079e17d2
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/ax_cxx_compile_stdcxx.m4
@@ -0,0 +1,558 @@
+# ===========================================================================
+#   http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional])
+#
+# DESCRIPTION
+#
+#   Check for baseline language coverage in the compiler for the specified
+#   version of the C++ standard.  If necessary, add switches to CXXFLAGS to
+#   enable support.  VERSION may be '11' (for the C++11 standard) or '14'
+#   (for the C++14 standard).
+#
+#   The second argument, if specified, indicates whether you insist on an
+#   extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
+#   -std=c++11).  If neither is specified, you get whatever works, with
+#   preference for an extended mode.
+#
+#   The third argument, if specified 'mandatory' or if left unspecified,
+#   indicates that baseline support for the specified C++ standard is
+#   required and that the macro should error out if no mode with that
+#   support is found.  If specified 'optional', then configuration proceeds
+#   regardless, after defining HAVE_CXX${VERSION} if and only if a
+#   supporting mode is found.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
+#   Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
+#   Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
+#   Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
+#   Copyright (c) 2015 Paul Norman <penorman@mac.com>
+#   Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved.  This file is offered as-is, without any
+#   warranty.
+
+#serial 1
+
+dnl  This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
+dnl  (serial version number 13).
+
+AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
+  m4_if([$1], [11], [],
+        [$1], [14], [],
+        [$1], [17], [m4_fatal([support for C++17 not yet implemented in AX_CXX_COMPILE_STDCXX])],
+        [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
+  m4_if([$2], [], [],
+        [$2], [ext], [],
+        [$2], [noext], [],
+        [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl
+  m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true],
+        [$3], [mandatory], [ax_cxx_compile_cxx$1_required=true],
+        [$3], [optional], [ax_cxx_compile_cxx$1_required=false],
+        [m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])])
+  AC_LANG_PUSH([C++])dnl
+  ac_success=no
+  AC_CACHE_CHECK(whether $CXX supports C++$1 features by default,
+  ax_cv_cxx_compile_cxx$1,
+  [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+    [ax_cv_cxx_compile_cxx$1=yes],
+    [ax_cv_cxx_compile_cxx$1=no])])
+  if test x$ax_cv_cxx_compile_cxx$1 = xyes; then
+    ac_success=yes
+  fi
+
+  m4_if([$2], [noext], [], [dnl
+  if test x$ac_success = xno; then
+    for switch in -std=gnu++$1 -std=gnu++0x; do
+      cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
+      AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
+                     $cachevar,
+        [ac_save_CXXFLAGS="$CXXFLAGS"
+         CXXFLAGS="$CXXFLAGS $switch"
+         AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+          [eval $cachevar=yes],
+          [eval $cachevar=no])
+         CXXFLAGS="$ac_save_CXXFLAGS"])
+      if eval test x\$$cachevar = xyes; then
+        CXXFLAGS="$CXXFLAGS $switch"
+        ac_success=yes
+        break
+      fi
+    done
+  fi])
+
+  m4_if([$2], [ext], [], [dnl
+  if test x$ac_success = xno; then
+    dnl HP's aCC needs +std=c++11 according to:
+    dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
+    dnl Cray's crayCC needs "-h std=c++11"
+    for switch in -std=c++$1 -std=c++0x +std=c++$1 "-h std=c++$1"; do
+      cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
+      AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
+                     $cachevar,
+        [ac_save_CXXFLAGS="$CXXFLAGS"
+         CXXFLAGS="$CXXFLAGS $switch"
+         AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+          [eval $cachevar=yes],
+          [eval $cachevar=no])
+         CXXFLAGS="$ac_save_CXXFLAGS"])
+      if eval test x\$$cachevar = xyes; then
+        CXXFLAGS="$CXXFLAGS $switch"
+        ac_success=yes
+        break
+      fi
+    done
+  fi])
+  AC_LANG_POP([C++])
+  if test x$ax_cxx_compile_cxx$1_required = xtrue; then
+    if test x$ac_success = xno; then
+      AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.])
+    fi
+  else
+    if test x$ac_success = xno; then
+      HAVE_CXX$1=0
+      AC_MSG_NOTICE([No compiler with C++$1 support was found])
+    else
+      HAVE_CXX$1=1
+      AC_DEFINE(HAVE_CXX$1,1,
+                [define if the compiler supports basic C++$1 syntax])
+    fi
+
+    AC_SUBST(HAVE_CXX$1)
+  fi
+])
+
+
+dnl  Test body for checking C++11 support
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11],
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+)
+
+
+dnl  Test body for checking C++14 support
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
+)
+
+
+dnl  Tests for new features in C++11
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
+
+// If the compiler admits that it is not ready for C++11, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201103L
+
+#error "This is not a C++11 compiler"
+
+#else
+
+namespace cxx11
+{
+
+  namespace test_static_assert
+  {
+
+    template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+  }
+
+  namespace test_final_override
+  {
+
+    struct Base
+    {
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual void f() override {}
+    };
+
+  }
+
+  namespace test_double_right_angle_brackets
+  {
+
+    template < typename T >
+    struct check {};
+
+    typedef check<void> single_type;
+    typedef check<check<void>> double_type;
+    typedef check<check<check<void>>> triple_type;
+    typedef check<check<check<check<void>>>> quadruple_type;
+
+  }
+
+  namespace test_decltype
+  {
+
+    int
+    f()
+    {
+      int a = 1;
+      decltype(a) b = 2;
+      return a + b;
+    }
+
+  }
+
+  namespace test_type_deduction
+  {
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static const bool value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static const bool value = true;
+    };
+
+    template < typename T1, typename T2 >
+    auto
+    add(T1 a1, T2 a2) -> decltype(a1 + a2)
+    {
+      return a1 + a2;
+    }
+
+    int
+    test(const int c, volatile int v)
+    {
+      static_assert(is_same<int, decltype(0)>::value == true, "");
+      static_assert(is_same<int, decltype(c)>::value == false, "");
+      static_assert(is_same<int, decltype(v)>::value == false, "");
+      auto ac = c;
+      auto av = v;
+      auto sumi = ac + av + 'x';
+      auto sumf = ac + av + 1.0;
+      static_assert(is_same<int, decltype(ac)>::value == true, "");
+      static_assert(is_same<int, decltype(av)>::value == true, "");
+      static_assert(is_same<int, decltype(sumi)>::value == true, "");
+      static_assert(is_same<int, decltype(sumf)>::value == false, "");
+      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
+      return (sumf > 0.0) ? sumi : add(c, v);
+    }
+
+  }
+
+  namespace test_noexcept
+  {
+
+    int f() { return 0; }
+    int g() noexcept { return 0; }
+
+    static_assert(noexcept(f()) == false, "");
+    static_assert(noexcept(g()) == true, "");
+
+  }
+
+  namespace test_constexpr
+  {
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
+    {
+      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
+    }
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c(const CharT *const s) noexcept
+    {
+      return strlen_c_r(s, 0UL);
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("1") == 1UL, "");
+    static_assert(strlen_c("example") == 7UL, "");
+    static_assert(strlen_c("another\0example") == 7UL, "");
+
+  }
+
+  namespace test_rvalue_references
+  {
+
+    template < int N >
+    struct answer
+    {
+      static constexpr int value = N;
+    };
+
+    answer<1> f(int&)       { return answer<1>(); }
+    answer<2> f(const int&) { return answer<2>(); }
+    answer<3> f(int&&)      { return answer<3>(); }
+
+    void
+    test()
+    {
+      int i = 0;
+      const int c = 0;
+      static_assert(decltype(f(i))::value == 1, "");
+      static_assert(decltype(f(c))::value == 2, "");
+      static_assert(decltype(f(0))::value == 3, "");
+    }
+
+  }
+
+  namespace test_uniform_initialization
+  {
+
+    struct test
+    {
+      static const int zero {};
+      static const int one {1};
+    };
+
+    static_assert(test::zero == 0, "");
+    static_assert(test::one == 1, "");
+
+  }
+
+  namespace test_lambdas
+  {
+
+    void
+    test1()
+    {
+      auto lambda1 = [](){};
+      auto lambda2 = lambda1;
+      lambda1();
+      lambda2();
+    }
+
+    int
+    test2()
+    {
+      auto a = [](int i, int j){ return i + j; }(1, 2);
+      auto b = []() -> int { return '0'; }();
+      auto c = [=](){ return a + b; }();
+      auto d = [&](){ return c; }();
+      auto e = [a, &b](int x) mutable {
+        const auto identity = [](int y){ return y; };
+        for (auto i = 0; i < a; ++i)
+          a += b--;
+        return x + identity(a + b);
+      }(0);
+      return a + b + c + d + e;
+    }
+
+    int
+    test3()
+    {
+      const auto nullary = [](){ return 0; };
+      const auto unary = [](int x){ return x; };
+      using nullary_t = decltype(nullary);
+      using unary_t = decltype(unary);
+      const auto higher1st = [](nullary_t f){ return f(); };
+      const auto higher2nd = [unary](nullary_t f1){
+        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
+      };
+      return higher1st(nullary) + higher2nd(nullary)(unary);
+    }
+
+  }
+
+  namespace test_variadic_templates
+  {
+
+    template <int...>
+    struct sum;
+
+    template <int N0, int... N1toN>
+    struct sum<N0, N1toN...>
+    {
+      static constexpr auto value = N0 + sum<N1toN...>::value;
+    };
+
+    template <>
+    struct sum<>
+    {
+      static constexpr auto value = 0;
+    };
+
+    static_assert(sum<>::value == 0, "");
+    static_assert(sum<1>::value == 1, "");
+    static_assert(sum<23>::value == 23, "");
+    static_assert(sum<1, 2>::value == 3, "");
+    static_assert(sum<5, 5, 11>::value == 21, "");
+    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
+
+  }
+
+  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
+  // because of this.
+  namespace test_template_alias_sfinae
+  {
+
+    struct foo {};
+
+    template<typename T>
+    using member = typename T::member_type;
+
+    template<typename T>
+    void func(...) {}
+
+    template<typename T>
+    void func(member<T>*) {}
+
+    void test();
+
+    void test() { func<foo>(0); }
+
+  }
+
+}  // namespace cxx11
+
+#endif  // __cplusplus >= 201103L
+
+]])
+
+
+dnl  Tests for new features in C++14
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[
+
+// If the compiler admits that it is not ready for C++14, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201402L
+
+#error "This is not a C++14 compiler"
+
+#else
+
+namespace cxx14
+{
+
+  namespace test_polymorphic_lambdas
+  {
+
+    int
+    test()
+    {
+      const auto lambda = [](auto&&... args){
+        const auto istiny = [](auto x){
+          return (sizeof(x) == 1UL) ? 1 : 0;
+        };
+        const int aretiny[] = { istiny(args)... };
+        return aretiny[0];
+      };
+      return lambda(1, 1L, 1.0f, '1');
+    }
+
+  }
+
+  namespace test_binary_literals
+  {
+
+    constexpr auto ivii = 0b0000000000101010;
+    static_assert(ivii == 42, "wrong value");
+
+  }
+
+  namespace test_generalized_constexpr
+  {
+
+    template < typename CharT >
+    constexpr unsigned long
+    strlen_c(const CharT *const s) noexcept
+    {
+      auto length = 0UL;
+      for (auto p = s; *p; ++p)
+        ++length;
+      return length;
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("x") == 1UL, "");
+    static_assert(strlen_c("test") == 4UL, "");
+    static_assert(strlen_c("another\0test") == 7UL, "");
+
+  }
+
+  namespace test_lambda_init_capture
+  {
+
+    int
+    test()
+    {
+      auto x = 0;
+      const auto lambda1 = [a = x](int b){ return a + b; };
+      const auto lambda2 = [a = lambda1(x)](){ return a; };
+      return lambda2();
+    }
+
+  }
+
+  namespace test_digit_seperators
+  {
+
+    constexpr auto ten_million = 100'000'000;
+    static_assert(ten_million == 100000000, "");
+
+  }
+
+  namespace test_return_type_deduction
+  {
+
+    auto f(int& x) { return x; }
+    decltype(auto) g(int& x) { return x; }
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static constexpr auto value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static constexpr auto value = true;
+    };
+
+    int
+    test()
+    {
+      auto x = 0;
+      static_assert(is_same<int, decltype(f(x))>::value, "");
+      static_assert(is_same<int&, decltype(g(x))>::value, "");
+      return x;
+    }
+
+  }
+
+}  // namespace cxx14
+
+#endif  // __cplusplus >= 201402L
+
+]])
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/16x16/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/16x16/Makefile.am
new file mode 100644
index 00000000..9e0c9caf
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/16x16/Makefile.am
@@ -0,0 +1,3 @@
+pkgdatadir = $(datarootdir)/@PACKAGE@/images/16x16
+
+dist_pkgdata_DATA = $(srcdir)/*.png
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/20x20/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/20x20/Makefile.am
new file mode 100644
index 00000000..063190c5
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/20x20/Makefile.am
@@ -0,0 +1,3 @@
+pkgdatadir = $(datarootdir)/@PACKAGE@/images/20x20
+
+dist_pkgdata_DATA = $(srcdir)/*.png
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/24x24/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/24x24/Makefile.am
new file mode 100644
index 00000000..8121a1a3
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/24x24/Makefile.am
@@ -0,0 +1,3 @@
+pkgdatadir = $(datarootdir)/@PACKAGE@/images/24x24
+
+dist_pkgdata_DATA = $(srcdir)/*.png
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/28x28/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/28x28/Makefile.am
new file mode 100644
index 00000000..f50a5a57
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/28x28/Makefile.am
@@ -0,0 +1,3 @@
+pkgdatadir = $(datarootdir)/@PACKAGE@/images/28x28
+
+dist_pkgdata_DATA = $(srcdir)/*.png
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/32x32/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/32x32/Makefile.am
new file mode 100644
index 00000000..d56b5cad
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/32x32/Makefile.am
@@ -0,0 +1,3 @@
+pkgdatadir = $(datarootdir)/@PACKAGE@/images/32x32
+
+dist_pkgdata_DATA = $(srcdir)/*.png
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/40x40/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/40x40/Makefile.am
new file mode 100644
index 00000000..954d2383
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/40x40/Makefile.am
@@ -0,0 +1,3 @@
+pkgdatadir = $(datarootdir)/@PACKAGE@/images/40x40
+
+dist_pkgdata_DATA = $(srcdir)/*.png
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/48x48/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/48x48/Makefile.am
new file mode 100644
index 00000000..c597ab05
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/48x48/Makefile.am
@@ -0,0 +1,3 @@
+pkgdatadir = $(datarootdir)/@PACKAGE@/images/48x48
+
+dist_pkgdata_DATA = $(srcdir)/*.png
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/56x56/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/56x56/Makefile.am
new file mode 100644
index 00000000..27048f3b
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/56x56/Makefile.am
@@ -0,0 +1,3 @@
+pkgdatadir = $(datarootdir)/@PACKAGE@/images/56x56
+
+dist_pkgdata_DATA = $(srcdir)/*.png
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/64x64/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/64x64/Makefile.am
new file mode 100644
index 00000000..6a7f465f
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/64x64/Makefile.am
@@ -0,0 +1,3 @@
+pkgdatadir = $(datarootdir)/@PACKAGE@/images/64x64
+
+dist_pkgdata_DATA = $(srcdir)/*.png
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/Makefile.am
new file mode 100644
index 00000000..aa70cb39
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/Makefile.am
@@ -0,0 +1,4 @@
+SUBDIRS = 16x16 20x20 24x24 28x28 32x32 40x40 48x48 56x56 64x64 fortranproject
+
+pkgdatadir = $(datarootdir)/@PACKAGE@/images
+
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/16x16/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/16x16/Makefile.am
new file mode 100644
index 00000000..4953d911
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/16x16/Makefile.am
@@ -0,0 +1,3 @@
+pkgdatadir = $(datarootdir)/@PACKAGE@/images/fortranproject/16x16
+
+dist_pkgdata_DATA = $(srcdir)/*.png
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/20x20/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/20x20/Makefile.am
new file mode 100644
index 00000000..323c74e7
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/20x20/Makefile.am
@@ -0,0 +1,3 @@
+pkgdatadir = $(datarootdir)/@PACKAGE@/images/fortranproject/20x20
+
+dist_pkgdata_DATA = $(srcdir)/*.png
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/24x24/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/24x24/Makefile.am
new file mode 100644
index 00000000..c033e793
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/24x24/Makefile.am
@@ -0,0 +1,3 @@
+pkgdatadir = $(datarootdir)/@PACKAGE@/images/fortranproject/24x24
+
+dist_pkgdata_DATA = $(srcdir)/*.png
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/28x28/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/28x28/Makefile.am
new file mode 100644
index 00000000..1f6d7231
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/28x28/Makefile.am
@@ -0,0 +1,3 @@
+pkgdatadir = $(datarootdir)/@PACKAGE@/images/fortranproject/28x28
+
+dist_pkgdata_DATA = $(srcdir)/*.png
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/32x32/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/32x32/Makefile.am
new file mode 100644
index 00000000..57534348
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/32x32/Makefile.am
@@ -0,0 +1,3 @@
+pkgdatadir = $(datarootdir)/@PACKAGE@/images/fortranproject/32x32
+
+dist_pkgdata_DATA = $(srcdir)/*.png
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/40x40/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/40x40/Makefile.am
new file mode 100644
index 00000000..7cde716c
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/40x40/Makefile.am
@@ -0,0 +1,3 @@
+pkgdatadir = $(datarootdir)/@PACKAGE@/images/fortranproject/40x40
+
+dist_pkgdata_DATA = $(srcdir)/*.png
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/48x48/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/48x48/Makefile.am
new file mode 100644
index 00000000..f2beeeed
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/48x48/Makefile.am
@@ -0,0 +1,3 @@
+pkgdatadir = $(datarootdir)/@PACKAGE@/images/fortranproject/48x48
+
+dist_pkgdata_DATA = $(srcdir)/*.png
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/56x56/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/56x56/Makefile.am
new file mode 100644
index 00000000..f58246e0
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/56x56/Makefile.am
@@ -0,0 +1,3 @@
+pkgdatadir = $(datarootdir)/@PACKAGE@/images/fortranproject/56x56
+
+dist_pkgdata_DATA = $(srcdir)/*.png
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/64x64/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/64x64/Makefile.am
new file mode 100644
index 00000000..0cc582a6
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/64x64/Makefile.am
@@ -0,0 +1,3 @@
+pkgdatadir = $(datarootdir)/@PACKAGE@/images/fortranproject/64x64
+
+dist_pkgdata_DATA = $(srcdir)/*.png
diff --git a/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/Makefile.am b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/Makefile.am
new file mode 100644
index 00000000..4ccd3fd3
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/images/fortranproject/Makefile.am
@@ -0,0 +1,5 @@
+SUBDIRS = 16x16 20x20 24x24 28x28 32x32 40x40 48x48 56x56 64x64
+
+pkgdatadir = $(datarootdir)/@PACKAGE@/images/fortranproject
+
+dist_pkgdata_DATA = $(srcdir)/*.f90 $(srcdir)/*.py $(srcdir)/*.dem
diff --git a/codeblocks/src/plugins/contrib/FortranProject/nativeparserf.cpp b/codeblocks/src/plugins/contrib/FortranProject/nativeparserf.cpp
index 1e9f5a62..3e8bad74 100644
--- a/codeblocks/src/plugins/contrib/FortranProject/nativeparserf.cpp
+++ b/codeblocks/src/plugins/contrib/FortranProject/nativeparserf.cpp
@@ -420,13 +420,59 @@ void NativeParserF::OnEditorClose(EditorBase* editor)
 void NativeParserF::UpdateWorkspaceFilesDependency()
 {
     ClearWSDependency();
+    UpdateWSFilesDependency();
+}
+
+void NativeParserF::UpdateWSFilesDependency()
+{
     ProjectsArray* projects = Manager::Get()->GetProjectManager()->GetProjects();
 
+    ProjectFilesArray pfs;
     for (size_t i = 0; i < projects->GetCount(); ++i)
     {
         cbProject* proj = projects->Item(i);
-        if (!proj->IsMakefileCustom())
-            UpdateProjectFilesDependency(proj);
+        if (proj->IsMakefileCustom()) continue;
+
+        proj->SaveAllFiles();
+
+        FilesList& flist = proj->GetFilesList();
+        for (FilesList::iterator it = flist.begin(); it != flist.end(); ++it)
+        {
+            ProjectFile* pf = *it;
+            if (IsFileFortran(pf->relativeFilename))
+            {
+                pfs.push_back(pf);
+            }
+        }
+    }
+
+    wxString name = _T("### WorkspaceAllFortranFiles ###");
+    WSDependencyMap::iterator pos;
+    pos = m_WSDependency.find(name);
+    if (pos == m_WSDependency.end())
+    {
+        pos = m_WSDependency.insert(std::make_pair(name,new ProjectDependencies())).first;
+    }
+    if (pfs.size() > 0)
+    {
+        ProjectDependencies* projDep = pos->second;
+        projDep->MakeProjectFilesDependencies(pfs, m_Parser);
+        projDep->EnsureUpToDateObjs();
+
+        for (size_t i=0; i<pfs.size(); i++)
+        {
+            wxString fn2 = pfs[i]->file.GetFullPath();
+            unsigned short int wt = projDep->GetFileWeight(fn2);
+            pfs[i]->weight = wt;
+        }
+        if (projDep->HasInfiniteDependences())
+        {
+            wxString msg = _T("Warning. FortranProject plugin:\n");
+            msg << _T("     'It seems you have a circular dependency in Fortran files. Check your USE or INCLUDE statements.'");
+            Manager::Get()->GetLogManager()->Log(msg);
+            cbMessageBox(_("It seems you have a circular dependency in Fortran files. Check your USE or INCLUDE statements."),
+                         _("Warning"));
+        }
     }
 }
 
@@ -435,7 +481,8 @@ void NativeParserF::UpdateProjectFilesDependency(cbProject* project)
     project->SaveAllFiles();
 
     ProjectFilesArray pfs;
-    for (FilesList::iterator it = project->GetFilesList().begin(); it != project->GetFilesList().end(); ++it)
+    FilesList& flist = project->GetFilesList();
+    for (FilesList::iterator it = flist.begin(); it != flist.end(); ++it)
     {
         ProjectFile* pf = *it;
         if (IsFileFortran(pf->relativeFilename))
@@ -449,20 +496,21 @@ void NativeParserF::UpdateProjectFilesDependency(cbProject* project)
     pos = m_WSDependency.find(fn);
     if (pos == m_WSDependency.end())
     {
-        pos = m_WSDependency.insert(std::make_pair(fn,new ProjectDependencies(project))).first;
+        pos = m_WSDependency.insert(std::make_pair(fn,new ProjectDependencies())).first;
     }
     if (pfs.size() > 0)
     {
-        pos->second->MakeProjectFilesDependencies(pfs, m_Parser);
-        pos->second->EnsureUpToDateObjs();
+        ProjectDependencies* projDep = pos->second;
+        projDep->MakeProjectFilesDependencies(pfs, m_Parser);
+        projDep->EnsureUpToDateObjs();
 
         for (size_t i=0; i<pfs.size(); i++)
         {
             wxString fn2 = pfs[i]->file.GetFullPath();
-            unsigned short int wt = pos->second->GetFileWeight(fn2);
+            unsigned short int wt = projDep->GetFileWeight(fn2);
             pfs[i]->weight = wt;
         }
-        if (pos->second->HasInfiniteDependences())
+        if (projDep->HasInfiniteDependences())
         {
             wxString msg = _T("Warning. FortranProject plugin:\n");
             msg << _T("     'It seems you have a circular dependency in Fortran files. Check your USE or INCLUDE statements.'");
diff --git a/codeblocks/src/plugins/contrib/FortranProject/nativeparserf.h b/codeblocks/src/plugins/contrib/FortranProject/nativeparserf.h
index 2f9719d3..aea6266b 100644
--- a/codeblocks/src/plugins/contrib/FortranProject/nativeparserf.h
+++ b/codeblocks/src/plugins/contrib/FortranProject/nativeparserf.h
@@ -91,6 +91,7 @@ class NativeParserF : public wxEvtHandler
         void OnEditorClose(EditorBase* editor);
         void OnProjectActivated(cbProject* project);
         void UpdateWorkspaceFilesDependency();
+        void UpdateWSFilesDependency();
         void ClearWSDependency();
         void RemoveProjectFilesDependency(cbProject* project);
 
diff --git a/codeblocks/src/plugins/contrib/FortranProject/projectdependencies.cpp b/codeblocks/src/plugins/contrib/FortranProject/projectdependencies.cpp
index 44e1d027..c6c58878 100644
--- a/codeblocks/src/plugins/contrib/FortranProject/projectdependencies.cpp
+++ b/codeblocks/src/plugins/contrib/FortranProject/projectdependencies.cpp
@@ -24,10 +24,10 @@
 #include "nativeparserf.h"
 
 
-ProjectDependencies::ProjectDependencies(cbProject* project)
+ProjectDependencies::ProjectDependencies()
 {
-    m_Project = project;
     //ctor
+    m_WasInfiniteLoop = false;
 }
 
 ProjectDependencies::~ProjectDependencies()
@@ -198,6 +198,7 @@ unsigned short int ProjectDependencies::GetFileWeightByIndex(size_t idx)
     {
         return 0;
     }
+    cbProject* project = m_prFilesArr[idx]->GetParentProject();
     unsigned short int wt;
     unsigned short int wt_max = 0;
     StringSet* fileUseModules = m_pUseModules[idx];
@@ -213,6 +214,9 @@ unsigned short int ProjectDependencies::GetFileWeightByIndex(size_t idx)
             size_t fidx = m_ModuleFileIdxMap[*pos];
             if (fidx == idx)
                 continue; // module defined and is used in the same file.
+            cbProject* project2 = m_prFilesArr[fidx]->GetParentProject();
+            if (project != project2)
+                continue; // files are from different projects. File weight is limited to the same project.
             m_Deep++;
             wt = 1 + GetFileWeightByIndex(fidx);
             m_Deep--;
@@ -421,7 +425,8 @@ void ProjectDependencies::EnsureUpToDateObjs()
         const wxArrayString& btarr = pf->GetBuildTargets();
         if (btarr.IsEmpty())
             continue;
-        ProjectBuildTarget* bTarget = m_Project->GetBuildTarget(btarr[0]);
+        cbProject* curProject = pf->GetParentProject();
+        ProjectBuildTarget* bTarget = curProject->GetBuildTarget(btarr[0]);
         const pfDetails& pfd = pf->GetFileDetails(bTarget);
         time_t time_src = wxFileModificationTime(pfd.source_file_absolute_native);
 
@@ -430,12 +435,12 @@ void ProjectDependencies::EnsureUpToDateObjs()
         for (pos=children->begin(); pos != children->end(); ++pos)
         {
             ProjectFile* pfChild = m_prFilesArr[*pos];
-
+            cbProject* childProject = pfChild->GetParentProject();
             const wxArrayString& btChild_arr = pfChild->GetBuildTargets();
             size_t nChTag = btChild_arr.size();
             for (size_t iCh=0; iCh < nChTag; ++iCh)
             {
-                ProjectBuildTarget* bTargetChild = m_Project->GetBuildTarget(btChild_arr[iCh]);
+                ProjectBuildTarget* bTargetChild = childProject->GetBuildTarget(btChild_arr[iCh]);
                 Compiler* compilerChild = CompilerFactory::GetCompiler(bTargetChild->GetCompilerID());
                 if(!compilerChild)
                     continue;
@@ -514,15 +519,34 @@ void ProjectDependencies::RemoveModFiles(cbProject* pr, ProjectBuildTarget* bTar
 
 void ProjectDependencies::RemoveModFilesWS(NativeParserF* nativeParser)
 {
-    //Remove all *.mod files in Workspace
+    //Remove all *.mod and *.smod files in Workspace
+    cbProject* activeProject = Manager::Get()->GetProjectManager()->GetActiveProject();
+    if (!activeProject)
+        return;
+    wxString activeTargetName = activeProject->GetActiveBuildTarget();
     ProjectsArray* projects = Manager::Get()->GetProjectManager()->GetProjects();
     for (size_t i = 0; i < projects->GetCount(); ++i)
     {
         cbProject* pr = projects->Item(i);
         if (!pr->IsMakefileCustom())
         {
-            ProjectBuildTarget* bTarget = pr->GetBuildTarget(pr->GetActiveBuildTarget());
-            RemoveModFiles(pr, bTarget, nativeParser);
+            ProjectBuildTarget* bTarget = pr->GetBuildTarget(activeTargetName);
+            if (!bTarget)
+            {
+                const wxArrayString virtTagGroup = pr->GetVirtualBuildTargetGroup(activeTargetName);
+                for (size_t j = 0; j < virtTagGroup.GetCount(); ++j)
+                {
+                    bTarget = pr->GetBuildTarget(virtTagGroup[j]);
+                    if (bTarget)
+                    {
+                        RemoveModFiles(pr, bTarget, nativeParser);
+                    }
+                }
+            }
+            else
+            {
+                RemoveModFiles(pr, bTarget, nativeParser);
+            }
         }
     }
 }
diff --git a/codeblocks/src/plugins/contrib/FortranProject/projectdependencies.h b/codeblocks/src/plugins/contrib/FortranProject/projectdependencies.h
index 0cf4de40..44a46f33 100644
--- a/codeblocks/src/plugins/contrib/FortranProject/projectdependencies.h
+++ b/codeblocks/src/plugins/contrib/FortranProject/projectdependencies.h
@@ -34,7 +34,7 @@ class NativeParserF;
 class ProjectDependencies
 {
     public:
-        ProjectDependencies(cbProject* project);
+        ProjectDependencies();
         virtual ~ProjectDependencies();
         void Clear();
         void MakeProjectFilesDependencies(ProjectFilesArray& prFilesArr, ParserF& parser);
@@ -53,7 +53,6 @@ class ProjectDependencies
         unsigned short int GetFileWeightByIndex(size_t idx);
         void MakeFileChildren(IntSet* children, size_t fileIndex);
 
-        cbProject* m_Project;
         ProjectFilesArray m_prFilesArr;
     	StringSetPVector m_pUseModules;
         StringSetPVector m_pDeclaredModules;
diff --git a/codeblocks/src/plugins/contrib/FortranProject/wxsmith/Bindto.wxs b/codeblocks/src/plugins/contrib/FortranProject/wxsmith/Bindto.wxs
new file mode 100644
index 00000000..6c71dbad
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/wxsmith/Bindto.wxs
@@ -0,0 +1,514 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<wxsmith>
+	<object class="wxDialog" name="Bindto">
+		<title>Bind To</title>
+		<id_arg>0</id_arg>
+		<style>wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</style>
+		<object class="wxBoxSizer" variable="BoxSizer1" member="no">
+			<orient>wxVERTICAL</orient>
+			<object class="sizeritem">
+				<object class="wxBoxSizer" variable="BoxSizer6" member="no">
+					<object class="sizeritem">
+						<object class="wxNotebook" name="ID_NOTEBOOK1" variable="nb_settings" member="no">
+							<object class="notebookpage">
+								<object class="wxPanel" name="ID_PANEL2" variable="Panel2" member="yes">
+									<object class="wxBoxSizer" variable="BoxSizer7" member="no">
+										<orient>wxVERTICAL</orient>
+										<object class="sizeritem">
+											<object class="wxStaticText" name="wxID_ANY" variable="StaticText1" member="no">
+												<label>This tool generates a wrapping for Fortran code to be called from the C language.</label>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>5</border>
+										</object>
+										<object class="sizeritem">
+											<object class="wxStaticText" name="wxID_ANY" variable="StaticText2" member="no">
+												<label>Generate wrapping for:</label>
+											</object>
+											<flag>wxTOP|wxLEFT|wxRIGHT|wxALIGN_LEFT</flag>
+											<border>5</border>
+										</object>
+										<object class="sizeritem">
+											<object class="wxBoxSizer" variable="BoxSizer3" member="no">
+												<object class="spacer">
+													<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+													<border>5</border>
+													<size>30,0</size>
+												</object>
+												<object class="sizeritem">
+													<object class="wxRadioButton" name="ID_BTOACTIVEPROJECT" variable="rb_ActiveProject" member="yes">
+														<label>Active project</label>
+														<style>wxRB_GROUP</style>
+														<handler function="Onrb_ActiveProjectSelect" entry="EVT_RADIOBUTTON" />
+													</object>
+													<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+													<border>5</border>
+												</object>
+												<object class="sizeritem">
+													<object class="wxRadioButton" name="ID_BTOCURRENTFILE" variable="rb_CurrentFile" member="yes">
+														<label>Current file</label>
+														<handler function="Onrb_ActiveProjectSelect" entry="EVT_RADIOBUTTON" />
+													</object>
+													<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+													<border>5</border>
+												</object>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>5</border>
+										</object>
+										<object class="sizeritem">
+											<object class="wxBoxSizer" variable="BoxSizer8" member="no">
+												<object class="sizeritem">
+													<object class="wxStaticText" name="wxID_ANY" variable="StaticText5" member="no">
+														<label>BIND(C, name=#):</label>
+													</object>
+													<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+													<border>5</border>
+												</object>
+												<object class="sizeritem">
+													<object class="wxTextCtrl" name="ID_TEXTCTRL1" variable="tc_bindCName" member="yes">
+														<tooltip>Write how the names called from C code will be constructed.&#x0A;Variables &quot;$procname$&quot;, &quot;$modulename$&quot; and &quot;$modname$&quot; will be changed procedure, module and truncated module names corespondingly.</tooltip>
+													</object>
+													<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+													<border>5</border>
+													<option>1</option>
+												</object>
+											</object>
+											<flag>wxEXPAND</flag>
+											<border>5</border>
+										</object>
+										<object class="sizeritem">
+											<object class="wxStaticText" name="ID_STATICTEXT5" variable="StaticText16" member="yes">
+												<label>Note: $procname$ is changed to the original name of procedure;&#x0A;         $modulename$ is changed to the name of module;&#x0A;         $modname$ is changed to the truncated name of module.</label>
+											</object>
+											<flag>wxBOTTOM|wxLEFT|wxRIGHT|wxALIGN_LEFT</flag>
+											<border>5</border>
+										</object>
+										<object class="sizeritem">
+											<object class="wxCheckBox" name="ID_CHECKBOX9" variable="cb_incompleteWrapperProc" member="yes">
+												<label>Don&apos;t write incomplete (with errors) wrapper procedures</label>
+											</object>
+											<flag>wxBOTTOM|wxLEFT|wxRIGHT|wxALIGN_LEFT</flag>
+											<border>5</border>
+										</object>
+										<object class="sizeritem">
+											<object class="wxBoxSizer" variable="BoxSizer15" member="no">
+												<orient>wxVERTICAL</orient>
+												<object class="sizeritem">
+													<object class="wxCheckBox" name="ID_CHECKBOX3" variable="cb_globalToOne" member="yes">
+														<label>Add wrapper code for global procedures into one file</label>
+														<handler function="Oncb_globalToOneClick" entry="EVT_CHECKBOX" />
+													</object>
+													<flag>wxLEFT|wxALIGN_CENTER_HORIZONTAL</flag>
+													<border>5</border>
+													<option>1</option>
+												</object>
+												<object class="sizeritem">
+													<object class="wxBoxSizer" variable="BoxSizer16" member="no">
+														<object class="spacer">
+															<flag>wxALIGN_CENTER_VERTICAL</flag>
+															<border>5</border>
+															<size>30,0</size>
+														</object>
+														<object class="sizeritem">
+															<object class="wxStaticText" name="wxID_ANY" variable="st_globalFilename" member="yes">
+																<label>File name:</label>
+															</object>
+															<flag>wxLEFT|wxRIGHT|wxALIGN_CENTER_VERTICAL</flag>
+															<border>5</border>
+														</object>
+														<object class="sizeritem">
+															<object class="wxTextCtrl" name="ID_TEXTCTRL6" variable="tc_globalFilename" member="yes">
+																<value>myprocedures.f90</value>
+															</object>
+															<flag>wxLEFT|wxRIGHT|wxEXPAND</flag>
+															<border>5</border>
+															<option>1</option>
+														</object>
+													</object>
+													<flag>wxEXPAND</flag>
+													<border>5</border>
+													<option>1</option>
+												</object>
+											</object>
+											<flag>wxTOP|wxBOTTOM|wxALIGN_LEFT</flag>
+											<border>5</border>
+										</object>
+										<object class="sizeritem">
+											<object class="wxBoxSizer" variable="BoxSizer17" member="no">
+												<object class="sizeritem">
+													<object class="wxStaticText" name="ID_STATICTEXT1" variable="StaticText7" member="yes">
+														<label>Output dir:</label>
+													</object>
+													<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+													<border>5</border>
+												</object>
+												<object class="sizeritem">
+													<object class="wxTextCtrl" name="ID_TEXTCTRL7" variable="tc_OutputDir" member="yes">
+														<value>Text</value>
+													</object>
+													<flag>wxALIGN_CENTER_VERTICAL</flag>
+													<border>5</border>
+													<option>1</option>
+												</object>
+												<object class="sizeritem">
+													<object class="wxButton" name="ID_BUTTON1" variable="bt_OutputDir" member="yes">
+														<label>...</label>
+														<style>wxBU_EXACTFIT</style>
+														<handler function="Onbt_OutputDirClick" entry="EVT_BUTTON" />
+													</object>
+													<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+													<border>5</border>
+												</object>
+											</object>
+											<flag>wxALL|wxEXPAND</flag>
+										</object>
+									</object>
+								</object>
+								<label>General</label>
+							</object>
+							<object class="notebookpage">
+								<object class="wxPanel" name="ID_PANEL1" variable="Panel1" member="yes">
+									<pos>314,298</pos>
+									<object class="wxBoxSizer" variable="BoxSizer2" member="no">
+										<orient>wxVERTICAL</orient>
+										<object class="sizeritem">
+											<object class="wxBoxSizer" variable="BoxSizer4" member="no">
+												<orient>wxVERTICAL</orient>
+												<object class="sizeritem">
+													<object class="wxStaticText" name="wxID_ANY" variable="StaticText3" member="no">
+														<label>Binding types</label>
+													</object>
+													<flag>wxTOP|wxLEFT|wxRIGHT|wxALIGN_LEFT</flag>
+													<border>5</border>
+												</object>
+												<object class="sizeritem">
+													<object class="wxListView" name="ID_LV_TYPES" variable="lv_Types" member="yes">
+														<size>500,300</size>
+														<style>wxLC_REPORT|wxLC_SINGLE_SEL|wxLC_VRULES|wxSUNKEN_BORDER</style>
+													</object>
+													<flag>wxTOP|wxBOTTOM|wxEXPAND</flag>
+													<border>5</border>
+													<option>1</option>
+												</object>
+												<object class="sizeritem">
+													<object class="wxBoxSizer" variable="BoxSizer5" member="no">
+														<object class="sizeritem">
+															<object class="wxButton" name="ID_BUTTON_ADD" variable="bt_Add" member="yes">
+																<label>Add</label>
+																<tooltip>Add a new type</tooltip>
+																<handler function="OnAdd" entry="EVT_BUTTON" />
+															</object>
+															<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+															<border>5</border>
+														</object>
+														<object class="sizeritem">
+															<object class="wxButton" name="ID_BUTTON_COPY" variable="bt_copy" member="yes">
+																<label>Copy</label>
+																<tooltip>Copy selected type to a new one</tooltip>
+																<handler function="OnCopy" entry="EVT_BUTTON" />
+															</object>
+															<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+															<border>5</border>
+														</object>
+														<object class="sizeritem">
+															<object class="wxButton" name="ID_BUTTON_EDIT" variable="bt_Edit" member="yes">
+																<label>Edit</label>
+																<tooltip>Edit selected type</tooltip>
+																<handler function="OnEdit" entry="EVT_BUTTON" />
+															</object>
+															<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+															<border>5</border>
+														</object>
+														<object class="sizeritem">
+															<object class="wxButton" name="ID_BUTTON_REMOVE" variable="bt_Remove" member="yes">
+																<label>Remove</label>
+																<tooltip>Remove selected type</tooltip>
+																<handler function="OnRemove" entry="EVT_BUTTON" />
+															</object>
+															<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+															<border>5</border>
+														</object>
+														<object class="spacer">
+															<flag>wxALIGN_CENTER_VERTICAL</flag>
+															<border>5</border>
+															<option>1</option>
+														</object>
+														<object class="sizeritem">
+															<object class="wxButton" name="ID_BUTTON_DEFAULTS" variable="bt_Defaults" member="yes">
+																<label>Defaults</label>
+																<tooltip>Restore default binding types</tooltip>
+																<handler function="OnDefaults" entry="EVT_BUTTON" />
+															</object>
+															<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+															<border>5</border>
+														</object>
+													</object>
+													<flag>wxALL|wxEXPAND</flag>
+													<border>5</border>
+												</object>
+											</object>
+											<flag>wxTOP|wxBOTTOM|wxEXPAND</flag>
+											<border>5</border>
+											<option>1</option>
+										</object>
+									</object>
+								</object>
+								<label>Types</label>
+							</object>
+							<object class="notebookpage">
+								<object class="wxPanel" name="ID_PANEL3" variable="Panel3" member="no">
+									<object class="wxBoxSizer" variable="BoxSizer10" member="no">
+										<orient>wxVERTICAL</orient>
+										<object class="sizeritem">
+											<object class="wxStaticText" name="wxID_ANY" variable="StaticText4" member="no">
+												<label>Recognize procedure, which name starts/ends with # as a constructor:</label>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>5</border>
+										</object>
+										<object class="sizeritem">
+											<object class="wxBoxSizer" variable="BoxSizer11" member="no">
+												<object class="sizeritem">
+													<object class="wxBoxSizer" variable="BoxSizer12" member="no">
+														<object class="spacer">
+															<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+															<border>5</border>
+															<size>30,0</size>
+														</object>
+														<object class="sizeritem">
+															<object class="wxFlexGridSizer" variable="FlexGridSizer2" member="no">
+																<cols>2</cols>
+																<rows>2</rows>
+																<vgap>2</vgap>
+																<hgap>1</hgap>
+																<object class="sizeritem">
+																	<object class="wxCheckBox" name="ID_CHECKBOX4" variable="cb_ctorStart" member="yes">
+																		<label>Constructor starts with:</label>
+																		<handler function="OnClick_cbCtorStart" entry="EVT_CHECKBOX" />
+																	</object>
+																	<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+																	<option>1</option>
+																</object>
+																<object class="sizeritem">
+																	<object class="wxTextCtrl" name="ID_TEXTCTRL4" variable="tc_ctorStart" member="yes">
+																		<value>Text</value>
+																	</object>
+																	<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+																	<option>1</option>
+																</object>
+																<object class="sizeritem">
+																	<object class="wxCheckBox" name="ID_CHECKBOX5" variable="cb_ctorEnd" member="yes">
+																		<label>Constructor ends with:</label>
+																		<handler function="OnClick_cbCtorEnd" entry="EVT_CHECKBOX" />
+																	</object>
+																	<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+																	<option>1</option>
+																</object>
+																<object class="sizeritem">
+																	<object class="wxTextCtrl" name="ID_TEXTCTRL5" variable="tc_ctorEnd" member="yes">
+																		<value>Text</value>
+																	</object>
+																	<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+																	<option>1</option>
+																</object>
+															</object>
+															<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+															<option>1</option>
+														</object>
+													</object>
+													<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+													<option>1</option>
+												</object>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+										</object>
+									</object>
+								</object>
+								<label>Constructor</label>
+							</object>
+							<object class="notebookpage">
+								<object class="wxPanel" name="ID_PANEL4" variable="Panel4" member="yes">
+									<object class="wxBoxSizer" variable="BoxSizer9" member="no">
+										<orient>wxVERTICAL</orient>
+										<object class="sizeritem">
+											<object class="wxStaticText" name="wxID_ANY" variable="StaticText9" member="no">
+												<label>Recognize subroutine, which name starts/ends with # as a destructor:</label>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>5</border>
+										</object>
+										<object class="sizeritem">
+											<object class="wxBoxSizer" variable="BoxSizer13" member="no">
+												<object class="sizeritem">
+													<object class="wxBoxSizer" variable="BoxSizer14" member="no">
+														<object class="spacer">
+															<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+															<border>5</border>
+															<size>30,0</size>
+														</object>
+														<object class="sizeritem">
+															<object class="wxFlexGridSizer" variable="FlexGridSizer1" member="no">
+																<cols>2</cols>
+																<rows>2</rows>
+																<vgap>2</vgap>
+																<object class="sizeritem">
+																	<object class="wxCheckBox" name="ID_CHECKBOX1" variable="cb_dtorStart" member="yes">
+																		<label>Destructor starts with:</label>
+																		<handler function="OnClick_cbDtorStart" entry="EVT_CHECKBOX" />
+																	</object>
+																	<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+																	<option>1</option>
+																</object>
+																<object class="sizeritem">
+																	<object class="wxTextCtrl" name="ID_TEXTCTRL2" variable="tc_dtorStart" member="yes">
+																		<value>Text</value>
+																	</object>
+																	<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+																	<option>1</option>
+																</object>
+																<object class="sizeritem">
+																	<object class="wxCheckBox" name="ID_CHECKBOX2" variable="cb_dtorEnd" member="yes">
+																		<label>Destructor ends with:</label>
+																		<handler function="OnClick_cbDtorEnd" entry="EVT_CHECKBOX" />
+																	</object>
+																	<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+																	<option>1</option>
+																</object>
+																<object class="sizeritem">
+																	<object class="wxTextCtrl" name="ID_TEXTCTRL3" variable="tc_dtorEnd" member="yes">
+																		<value>Text</value>
+																	</object>
+																	<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+																	<option>1</option>
+																</object>
+															</object>
+															<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+														</object>
+													</object>
+													<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+												</object>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+										</object>
+										<object class="sizeritem">
+											<object class="wxStaticText" name="wxID_ANY" variable="StaticText10" member="no">
+												<label>Note: a default destructor is created for the derived type if</label>
+											</object>
+											<flag>wxTOP|wxLEFT|wxRIGHT|wxALIGN_LEFT</flag>
+											<border>5</border>
+										</object>
+										<object class="sizeritem">
+											<object class="wxStaticText" name="wxID_ANY" variable="StaticText12" member="no">
+												<label>         another destructor is not found.</label>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+										</object>
+									</object>
+								</object>
+								<label>Destructor</label>
+							</object>
+							<object class="notebookpage">
+								<object class="wxPanel" name="ID_PANEL5" variable="Panel5" member="yes">
+									<object class="wxBoxSizer" variable="BoxSizer18" member="no">
+										<orient>wxVERTICAL</orient>
+										<object class="sizeritem">
+											<object class="wxStaticText" name="wxID_ANY" variable="StaticText13" member="no">
+												<label>This tool can generate Cython code which wraps Fortran. Generated *.pyx file&#x0A; can later be compiled into an extention module for the Python language.</label>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>5</border>
+										</object>
+										<object class="sizeritem">
+											<object class="wxCheckBox" name="ID_CHECKBOX6" variable="cb_genCython" member="yes">
+												<label>Generate Cython files</label>
+												<handler function="Oncb_genCythonClick" entry="EVT_CHECKBOX" />
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>5</border>
+										</object>
+										<object class="sizeritem">
+											<object class="wxPanel" name="ID_PANEL6" variable="pn_pyOpts" member="yes">
+												<object class="wxBoxSizer" variable="BoxSizer20" member="no">
+													<orient>wxVERTICAL</orient>
+													<object class="sizeritem">
+														<object class="wxBoxSizer" variable="BoxSizer19" member="no">
+															<object class="sizeritem">
+																<object class="wxStaticText" name="wxID_ANY" variable="StaticText14" member="no">
+																	<label>Python function names:</label>
+																</object>
+																<flag>wxTOP|wxBOTTOM|wxRIGHT|wxALIGN_CENTER_VERTICAL</flag>
+																<border>5</border>
+															</object>
+															<object class="sizeritem">
+																<object class="wxTextCtrl" name="ID_TEXTCTRL8" variable="tc_pyFunName" member="yes">
+																	<value>Text</value>
+																</object>
+																<flag>wxALIGN_CENTER_VERTICAL</flag>
+																<border>5</border>
+																<option>1</option>
+															</object>
+														</object>
+														<flag>wxALL|wxEXPAND</flag>
+														<border>5</border>
+													</object>
+													<object class="sizeritem">
+														<object class="wxStaticText" name="wxID_ANY" variable="StaticText15" member="no">
+															<label>Note: $procname$ is changed to the original name of procedure;&#x0A;         $modulename$ is changed to the name of module;&#x0A;         $modname$ is changed to the truncated name of module.</label>
+														</object>
+														<flag>wxBOTTOM|wxLEFT|wxRIGHT|wxALIGN_LEFT</flag>
+														<border>5</border>
+													</object>
+													<object class="sizeritem">
+														<object class="wxCheckBox" name="ID_CHECKBOX7" variable="cb_pyGenClass" member="yes">
+															<label>Generate Python class from Fortran module</label>
+														</object>
+														<flag>wxALL|wxALIGN_LEFT</flag>
+														<border>5</border>
+													</object>
+													<object class="sizeritem">
+														<object class="wxCheckBox" name="ID_CHECKBOX8" variable="cb_pyFirstSelf" member="yes">
+															<label>Use first argument of the derived type as &apos;self&apos; in Python</label>
+														</object>
+														<flag>wxALL|wxALIGN_LEFT</flag>
+														<border>5</border>
+													</object>
+												</object>
+											</object>
+											<flag>wxEXPAND</flag>
+											<border>5</border>
+											<option>1</option>
+										</object>
+									</object>
+								</object>
+								<label>Python</label>
+							</object>
+						</object>
+						<flag>wxALL|wxEXPAND</flag>
+						<border>5</border>
+						<option>1</option>
+					</object>
+				</object>
+				<flag>wxEXPAND</flag>
+				<border>5</border>
+				<option>1</option>
+			</object>
+			<object class="sizeritem">
+				<object class="wxStdDialogButtonSizer" variable="StdDialogButtonSizer1" member="no">
+					<object class="button">
+						<object class="wxButton" name="wxID_OK">
+							<label></label>
+						</object>
+					</object>
+					<object class="button">
+						<object class="wxButton" name="wxID_CANCEL">
+							<label></label>
+						</object>
+					</object>
+				</object>
+				<flag>wxALL|wxALIGN_CENTER_HORIZONTAL</flag>
+				<border>5</border>
+			</object>
+		</object>
+	</object>
+</wxsmith>
diff --git a/codeblocks/src/plugins/contrib/FortranProject/wxsmith/BindtoNewType.wxs b/codeblocks/src/plugins/contrib/FortranProject/wxsmith/BindtoNewType.wxs
new file mode 100644
index 00000000..0f5888f1
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/wxsmith/BindtoNewType.wxs
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<wxsmith>
+	<object class="wxDialog" name="BindtoNewType">
+		<title>Add New Type</title>
+		<size>400,180</size>
+		<minsize>200,100</minsize>
+		<id_arg>0</id_arg>
+		<style>wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</style>
+		<object class="wxBoxSizer" variable="BoxSizer1" member="no">
+			<orient>wxVERTICAL</orient>
+			<object class="sizeritem">
+				<object class="wxFlexGridSizer" variable="FlexGridSizer1" member="no">
+					<cols>2</cols>
+					<rows>3</rows>
+					<growablecols>1</growablecols>
+					<growablerows>2</growablerows>
+					<object class="sizeritem">
+						<object class="wxStaticText" name="wxID_ANY" variable="StaticText1" member="no">
+							<label>Fortran type:</label>
+						</object>
+						<flag>wxTOP|wxBOTTOM|wxRIGHT|wxALIGN_CENTER_VERTICAL</flag>
+						<border>5</border>
+					</object>
+					<object class="sizeritem">
+						<object class="wxTextCtrl" name="ID_TEXTCTRL1" variable="tc_Fortran" member="yes" />
+						<flag>wxTOP|wxBOTTOM|wxEXPAND</flag>
+						<border>5</border>
+						<option>1</option>
+					</object>
+					<object class="sizeritem">
+						<object class="wxStaticText" name="wxID_ANY" variable="StaticText2" member="no">
+							<label>Fortran Bind(C):</label>
+						</object>
+						<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+						<border>5</border>
+					</object>
+					<object class="sizeritem">
+						<object class="wxTextCtrl" name="ID_TEXTCTRL2" variable="tc_BindC" member="yes" />
+						<flag>wxTOP|wxBOTTOM|wxEXPAND</flag>
+						<border>5</border>
+						<option>1</option>
+					</object>
+					<object class="sizeritem">
+						<object class="wxStaticText" name="wxID_ANY" variable="StaticText3" member="no">
+							<label>C type:</label>
+						</object>
+						<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+						<border>5</border>
+					</object>
+					<object class="sizeritem">
+						<object class="wxTextCtrl" name="ID_TEXTCTRL3" variable="tc_C" member="yes" />
+						<flag>wxTOP|wxBOTTOM|wxEXPAND</flag>
+						<border>5</border>
+						<option>1</option>
+					</object>
+				</object>
+				<flag>wxALL|wxEXPAND</flag>
+				<border>5</border>
+			</object>
+			<object class="spacer">
+				<flag>wxALL|wxALIGN_CENTER_HORIZONTAL</flag>
+				<border>5</border>
+				<option>1</option>
+			</object>
+			<object class="sizeritem">
+				<object class="wxStdDialogButtonSizer" variable="StdDialogButtonSizer1" member="no">
+					<object class="button">
+						<object class="wxButton" name="wxID_OK">
+							<label></label>
+						</object>
+					</object>
+					<object class="button">
+						<object class="wxButton" name="wxID_CANCEL">
+							<label></label>
+						</object>
+					</object>
+				</object>
+				<flag>wxALL|wxALIGN_CENTER_HORIZONTAL</flag>
+				<border>5</border>
+			</object>
+		</object>
+	</object>
+</wxsmith>
diff --git a/codeblocks/src/plugins/contrib/FortranProject/wxsmith/FormatIndentDlg.wxs b/codeblocks/src/plugins/contrib/FortranProject/wxsmith/FormatIndentDlg.wxs
new file mode 100644
index 00000000..9339a2ce
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/wxsmith/FormatIndentDlg.wxs
@@ -0,0 +1,263 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<wxsmith>
+	<object class="wxDialog" name="FormatIndentDlg">
+		<id_arg>0</id_arg>
+		<object class="wxBoxSizer" variable="BoxSizer1" member="no">
+			<orient>wxVERTICAL</orient>
+			<object class="sizeritem">
+				<object class="wxNotebook" name="ID_NOTEBOOK1" variable="Notebook1" member="yes">
+					<object class="notebookpage">
+						<object class="wxPanel" name="ID_PANEL1" variable="Panel1" member="yes">
+							<object class="wxBoxSizer" variable="BoxSizer4" member="no">
+								<orient>wxVERTICAL</orient>
+								<object class="sizeritem">
+									<object class="wxBoxSizer" variable="BoxSizer3" member="no">
+										<orient>wxVERTICAL</orient>
+										<object class="sizeritem">
+											<object class="wxStaticText" name="ID_STATICTEXT1" variable="StaticText1" member="yes">
+												<label>Format indent for Fortran code.</label>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>5</border>
+										</object>
+										<object class="sizeritem">
+											<object class="wxStaticText" name="ID_STATICTEXT3" variable="StaticText3" member="yes">
+												<label>Format indent for:</label>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>5</border>
+										</object>
+									</object>
+									<flag>wxTOP|wxLEFT|wxRIGHT|wxEXPAND</flag>
+									<border>5</border>
+								</object>
+								<object class="sizeritem">
+									<object class="wxBoxSizer" variable="BoxSizer2" member="no">
+										<object class="spacer">
+											<flag>wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+											<border>9</border>
+										</object>
+										<object class="sizeritem">
+											<object class="wxRadioButton" name="ID_RADIOBUTTON1" variable="rb_ActiveProject" member="yes">
+												<label>Active project</label>
+												<style>wxRB_GROUP</style>
+											</object>
+											<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+											<border>5</border>
+										</object>
+										<object class="sizeritem">
+											<object class="wxRadioButton" name="ID_RADIOBUTTON2" variable="rb_CurrentFile" member="yes">
+												<label>Current file</label>
+											</object>
+											<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+											<border>5</border>
+										</object>
+										<object class="sizeritem">
+											<object class="wxRadioButton" name="ID_RADIOBUTTON3" variable="rb_Selection" member="yes">
+												<label>Selection</label>
+											</object>
+											<flag>wxALL|wxALIGN_CENTER_VERTICAL</flag>
+											<border>5</border>
+										</object>
+									</object>
+									<flag>wxBOTTOM|wxLEFT|wxRIGHT|wxALIGN_LEFT</flag>
+									<border>5</border>
+								</object>
+							</object>
+						</object>
+						<label>Scope</label>
+					</object>
+					<object class="notebookpage">
+						<object class="wxPanel" name="ID_PANEL3" variable="Panel3" member="yes">
+							<object class="wxBoxSizer" variable="BoxSizer6" member="no">
+								<orient>wxVERTICAL</orient>
+								<object class="sizeritem">
+									<object class="wxBoxSizer" variable="BoxSizer7" member="no">
+										<object class="sizeritem">
+											<object class="wxStaticText" name="ID_STATICTEXT2" variable="StaticText2" member="yes">
+												<label>Options for statements:</label>
+											</object>
+											<flag>wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+											<border>5</border>
+										</object>
+									</object>
+									<flag>wxTOP|wxLEFT|wxRIGHT|wxALIGN_LEFT</flag>
+									<border>5</border>
+								</object>
+								<object class="sizeritem">
+									<object class="wxBoxSizer" variable="BoxSizer8" member="no">
+										<orient>wxVERTICAL</orient>
+										<object class="sizeritem">
+											<object class="wxCheckBox" name="ID_CHECKBOX2" variable="cb_PROGafter" member="yes">
+												<label>Indent after PROGRAM, FUNCTION, SUBROUTINE</label>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>2</border>
+											<option>1</option>
+										</object>
+										<object class="sizeritem">
+											<object class="wxCheckBox" name="ID_CHECKBOX3" variable="cb_MODafter" member="yes">
+												<label>Indent after MODULE, SUBMODULE</label>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>2</border>
+											<option>1</option>
+										</object>
+										<object class="sizeritem">
+											<object class="wxCheckBox" name="ID_CHECKBOX4" variable="cb_CONTMod" member="yes">
+												<label>Unindent CONTAINS at module level</label>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>2</border>
+											<option>1</option>
+										</object>
+										<object class="sizeritem">
+											<object class="wxCheckBox" name="ID_CHECKBOX5" variable="cb_CONTModAfter" member="yes">
+												<label>Indent after CONTAINS at module level</label>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>2</border>
+											<option>1</option>
+										</object>
+										<object class="sizeritem">
+											<object class="wxCheckBox" name="ID_CHECKBOX6" variable="cb_CONTProc" member="yes">
+												<label>Unindent CONTAINS at procedure level</label>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>2</border>
+											<option>1</option>
+										</object>
+										<object class="sizeritem">
+											<object class="wxCheckBox" name="ID_CHECKBOX1" variable="cb_CONTProcAfter" member="yes">
+												<label>Indent after CONTAINS at procedure level</label>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>2</border>
+											<option>1</option>
+										</object>
+										<object class="sizeritem">
+											<object class="wxCheckBox" name="ID_CHECKBOX7" variable="cb_CONTType" member="yes">
+												<label>Unindent CONTAINS at type definition level</label>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>2</border>
+											<option>1</option>
+										</object>
+										<object class="sizeritem">
+											<object class="wxCheckBox" name="ID_CHECKBOX8" variable="cb_CONTTypeAfter" member="yes">
+												<label>Indent after CONTAINS at type definition level</label>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>2</border>
+											<option>1</option>
+										</object>
+										<object class="sizeritem">
+											<object class="wxCheckBox" name="ID_CHECKBOX9" variable="cb_SELECTCASEafter" member="yes">
+												<label>Indent after SELECT CASE</label>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>2</border>
+											<option>1</option>
+										</object>
+										<object class="sizeritem">
+											<object class="wxCheckBox" name="ID_CHECKBOX10" variable="cb_SELECTTYPEafter" member="yes">
+												<label>Indent after SELECT TYPE</label>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>2</border>
+											<option>1</option>
+										</object>
+									</object>
+									<flag>wxALL|wxEXPAND</flag>
+									<border>5</border>
+									<option>1</option>
+								</object>
+							</object>
+						</object>
+						<label>Statements</label>
+					</object>
+					<object class="notebookpage">
+						<object class="wxPanel" name="ID_PANEL2" variable="Panel2" member="yes">
+							<object class="wxBoxSizer" variable="BoxSizer5" member="no">
+								<orient>wxVERTICAL</orient>
+								<object class="sizeritem">
+									<object class="wxCheckBox" name="ID_CHECKBOX11" variable="cb_TrimLines" member="yes">
+										<label>Trim lines from right</label>
+									</object>
+									<flag>wxALL|wxALIGN_LEFT</flag>
+									<border>5</border>
+								</object>
+								<object class="sizeritem">
+									<object class="wxStaticBoxSizer" variable="StaticBoxSizer1" member="no">
+										<label>Tab options</label>
+										<orient>wxVERTICAL</orient>
+										<object class="sizeritem">
+											<object class="wxCheckBox" name="ID_CHECKBOX12" variable="cb_TabAsEditor" member="yes">
+												<label>Same as C::B editor</label>
+												<handler function="OnCbTabAsEditorClick" entry="EVT_CHECKBOX" />
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>2</border>
+										</object>
+										<object class="sizeritem">
+											<object class="wxCheckBox" name="ID_CHECKBOX13" variable="cb_UseTabs" member="yes">
+												<label>Use tabs instead of spaces</label>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>2</border>
+										</object>
+										<object class="sizeritem">
+											<object class="wxBoxSizer" variable="BoxSizer9" member="no">
+												<object class="sizeritem">
+													<object class="wxStaticText" name="ID_STATICTEXT4" variable="stxt_TabSpaces" member="yes">
+														<label>Indent size in spaces:</label>
+													</object>
+													<flag>wxRIGHT|wxALIGN_CENTER_VERTICAL</flag>
+													<border>4</border>
+												</object>
+												<object class="sizeritem">
+													<object class="wxSpinCtrl" name="ID_SPINCTRL1" variable="spc_Spaces" member="yes">
+														<value>0</value>
+														<min>1</min>
+														<max>16</max>
+													</object>
+													<flag>wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+													<border>2</border>
+													<option>1</option>
+												</object>
+											</object>
+											<flag>wxALL|wxALIGN_LEFT</flag>
+											<border>2</border>
+										</object>
+									</object>
+									<flag>wxALL|wxALIGN_LEFT</flag>
+									<border>5</border>
+								</object>
+							</object>
+						</object>
+						<label>Others</label>
+					</object>
+				</object>
+				<flag>wxALL|wxEXPAND</flag>
+				<border>5</border>
+				<option>1</option>
+			</object>
+			<object class="sizeritem">
+				<object class="wxStdDialogButtonSizer" variable="StdDialogButtonSizer1" member="no">
+					<object class="button">
+						<object class="wxButton" name="wxID_OK">
+							<label></label>
+						</object>
+					</object>
+					<object class="button">
+						<object class="wxButton" name="wxID_CANCEL">
+							<label></label>
+						</object>
+					</object>
+				</object>
+				<flag>wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+				<border>5</border>
+			</object>
+		</object>
+	</object>
+</wxsmith>
diff --git a/codeblocks/src/plugins/contrib/FortranProject/wxsmith/MakefileDlg.wxs b/codeblocks/src/plugins/contrib/FortranProject/wxsmith/MakefileDlg.wxs
new file mode 100644
index 00000000..6c33da58
--- /dev/null
+++ b/codeblocks/src/plugins/contrib/FortranProject/wxsmith/MakefileDlg.wxs
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<wxsmith>
+	<object class="wxDialog" name="MakefileDlg">
+		<title>Generate Makefile</title>
+		<id_arg>0</id_arg>
+		<style>wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</style>
+		<handler function="OnInit" entry="EVT_INIT_DIALOG" />
+		<object class="wxBoxSizer" variable="BoxSizer1" member="no">
+			<orient>wxVERTICAL</orient>
+			<object class="sizeritem">
+				<object class="wxBoxSizer" variable="BoxSizer2" member="no">
+					<orient>wxVERTICAL</orient>
+					<object class="sizeritem">
+						<object class="wxBoxSizer" variable="BoxSizer4" member="no">
+							<object class="sizeritem">
+								<object class="wxStaticText" name="ID_STATICTEXT2" variable="StaticText2" member="yes">
+									<label>Choose a name for the make file:</label>
+								</object>
+								<flag>wxALL</flag>
+								<border>5</border>
+							</object>
+							<object class="spacer">
+								<flag>wxALL|wxEXPAND</flag>
+								<border>5</border>
+								<size>100,-1d</size>
+							</object>
+						</object>
+						<flag>wxALL|wxEXPAND</flag>
+						<border>5</border>
+					</object>
+					<object class="sizeritem">
+						<object class="wxBoxSizer" variable="BoxSizer3" member="no">
+							<object class="sizeritem">
+								<object class="wxTextCtrl" name="ID_TEXTCTRL1" variable="tcMakefileName" member="yes">
+									<value>Text</value>
+									<size>-1,-1</size>
+								</object>
+								<flag>wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+								<border>5</border>
+								<option>1</option>
+							</object>
+							<object class="sizeritem">
+								<object class="wxButton" name="ID_BUTTON1" variable="btChooseFileName" member="yes">
+									<label>...</label>
+									<style>wxBU_EXACTFIT</style>
+									<handler function="OnbtChooseFileNameClick" entry="EVT_BUTTON" />
+								</object>
+								<flag>wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
+								<border>5</border>
+							</object>
+						</object>
+						<flag>wxALL|wxEXPAND</flag>
+						<option>1</option>
+					</object>
+				</object>
+				<flag>wxALL|wxEXPAND</flag>
+				<border>5</border>
+				<option>1</option>
+			</object>
+			<object class="sizeritem">
+				<object class="wxStdDialogButtonSizer" variable="StdDialogButtonSizer1" member="no">
+					<object class="button">
+						<object class="wxButton" name="wxID_OK">
+							<label></label>
+						</object>
+					</object>
+					<object class="button">
+						<object class="wxButton" name="wxID_CANCEL">
+							<label></label>
+						</object>
+					</object>
+				</object>
+				<flag>wxALL|wxALIGN_RIGHT</flag>
+				<border>5</border>
+			</object>
+		</object>
+	</object>
+</wxsmith>
diff --git a/codeblocks/src/plugins/contrib/Makefile.am b/codeblocks/src/plugins/contrib/Makefile.am
index 16dba995..0dcad145 100644
--- a/codeblocks/src/plugins/contrib/Makefile.am
+++ b/codeblocks/src/plugins/contrib/Makefile.am
@@ -54,6 +54,10 @@ if BUILD_FILEMANAGER
 MAYBE_FILEMANAGER=FileManager appdata
 endif
 
+if BUILD_FORTRANPROJECT
+MAYBE_FORTRANPROJECT=FortranProject appdata
+endif
+
 if BUILD_HELP
 MAYBE_HELP=help_plugin appdata
 endif
@@ -174,6 +178,7 @@ SUBDIRS = $(MAYBE_AUTOVERSIONING) \
 		$(MAYBE_EDITORTWEAKS) \
 		$(MAYBE_ENVVARS) \
 		$(MAYBE_FILEMANAGER) \
+		$(MAYBE_FORTRANPROJECT) \
 		$(MAYBE_HEADERFIXUP) \
 		$(MAYBE_HELP) \
 		$(MAYBE_HEXEDITOR) \
@@ -217,6 +222,7 @@ DIST_SUBDIRS = appdata \
 		EditorTweaks \
 		envvars \
 		FileManager \
+		FortranProject \
 		headerfixup \
 		help_plugin \
 		HexEditor \
 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin