Репозитории ALT
S: | 20.03-alt9 |
5.1: | 12.11-alt0.M51.1 |
4.1: | 8.02-alt1 |
4.0: | 1.0-alt0.svn4742 |
Группа :: Разработка/C++
Пакет: codeblocks
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: codeblocks-20.03-FortranProject_autotools_build.patch
Скачать
Скачать
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.
Variables "$procname$", "$modulename$" and "$modname$" 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;
 $modulename$ is changed to the name of module;
 $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'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
 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;
 $modulename$ is changed to the name of module;
 $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 'self' 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 \