[chronojump] Fix R.NET build and make it portable



commit 97aef3c6e8fb67eb0f63c4f6cba04afed2a463ff
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date:   Mon Oct 14 13:05:13 2013 +0200

    Fix R.NET build and make it portable

 Makefile.am                                      |    6 +-
 autogen.sh                                       |    2 +-
 build/Makefile.am                                |    8 ++
 build/build.environment.mk                       |   56 +++++++++++
 build/build.mk                                   |    3 +
 build/build.rules.mk                             |   97 +++++++++++++++++++
 build/m4/Makefile.am                             |    6 +
 expansions.m4 => build/m4/shamrock/expansions.m4 |    0
 {m4 => build/m4}/shamrock/gnome-doc.m4           |    0
 {m4 => build/m4}/shamrock/i18n.m4                |    0
 {m4 => build/m4}/shamrock/mono.m4                |    0
 {m4 => build/m4}/shamrock/monodoc.m4             |    0
 {m4 => build/m4}/shamrock/nunit.m4               |    0
 {m4 => build/m4}/shamrock/programs.m4            |    0
 {m4 => build/m4}/shamrock/util.m4                |    0
 {m4 => build/m4}/shave/shave-libtool.in          |    0
 {m4 => build/m4}/shave/shave.in                  |    0
 {m4 => build/m4}/shave/shave.m4                  |    0
 configure.ac                                     |   39 +++++++-
 m4/shamrock/expansions.m4                        |   50 ----------
 m4/shave/shave                                   |  109 ----------------------
 m4/shave/shave-libtool                           |  109 ----------------------
 rdotnet/Makefile.am                              |   14 +---
 rdotnet/R.NET/Makefile.am                        |   71 ++++++++++++++
 rdotnet/RDotNet.NativeLibrary/Makefile.am        |   11 ++
 25 files changed, 292 insertions(+), 289 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 1c3b852..02239af 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,9 +1,9 @@
-EXTRA_DIST = m4 expansions.m4
+EXTRA_DIST = build/m4 expansions.m4
 
-ACLOCAL_AMFLAGS = -I m4
+ACLOCAL_AMFLAGS = -I build/m4 -I build/m4/shave -I build/m4/shamrock
 
 SUBDIRS = chronopic-firmware \
-       encoder libcesarplayer CesarPlayer src po manual chronojump_server #rdotnet 
+       encoder libcesarplayer CesarPlayer rdotnet src po manual chronojump_server
 
 if OSTYPE_LINUX
 SUBDIRS += chronopic-tests chronojump_server
diff --git a/autogen.sh b/autogen.sh
index d1cb822..dddeceb 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -18,7 +18,7 @@ test -z "$srcdir" && srcdir=.
 ORIGDIR=`pwd`
 cd $srcdir
 TEST_TYPE=-f
-aclocalinclude="-I m4/shamrock -I m4/shave $ACLOCAL_FLAGS"
+aclocalinclude="-I build/m4/shamrock -I build/m4/shave $ACLOCAL_FLAGS"
 conf_flags="--enable-maintainer-mode"
 
 #test $TEST_TYPE $FILE || {
diff --git a/build/Makefile.am b/build/Makefile.am
new file mode 100644
index 0000000..e781ccd
--- /dev/null
+++ b/build/Makefile.am
@@ -0,0 +1,8 @@
+SUBDIRS = m4
+
+EXTRA_DIST = \
+       icon-theme-installer \
+       private-icon-theme-installer
+
+CLEANFILES = *.exe *.mdb
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/build/build.environment.mk b/build/build.environment.mk
new file mode 100644
index 0000000..0ce133f
--- /dev/null
+++ b/build/build.environment.mk
@@ -0,0 +1,56 @@
+# Initializers
+MONO_BASE_PATH = 
+MONO_ADDINS_PATH =
+
+# Install Paths
+DEFAULT_INSTALL_DIR = $(pkglibdir)
+
+# External libraries to link against, generated from configure
+LINK_SYSTEM = -r:System
+LINK_SYSTEM_CORE = -r:System.Core
+LINK_SYSTEM_DATA_DATASETEXTENSTIONS = -r:System.Data.DataSetExtensions
+LINK_SYSTEM_DRAWING = -r:System.Drawing
+LINK_SYSTEM_NUMERICS = -r:System.Numerics
+LINK_SYSTEM_XML = -r:System.Xml
+LINK_SYSTEM_XML_LINQ = -r:System.Xml.Linq
+LINK_MICROSOFT_CSHARP = -r:Microsoft.CSharp
+LINK_CAIRO = -r:Mono.Cairo
+LINK_MONO_POSIX = -r:Mono.Posix
+LINK_GLIB = $(GLIBSHARP_LIBS)
+LINK_GTK = $(GTKSHARP_LIBS)
+LINK_GCONF = $(GCONFSHARP_LIBS)
+LINK_RDOTNET = -r:$(DIR_BIN)/RDotNet.dll
+LINK_RDOTNET_NATIVE = -r:$(DIR_BIN)/RDotNet.NativeLibrary.dll
+
+
+REF_DEP_RDOTNET_NATIVE = \
+       $(LINK_SYSTEM) \
+       $(LINK_SYSTEM_CORE) \
+       $(LINK_SYSTEM_DATA_DATASETEXTENSTIONS) \
+       $(LINK_SYSTEM_XML) \
+       $(LINK_SYSTEM_XML_LINQ) \
+       $(LINK_MICROSOFT_CSHARP)
+
+REF_DEP_RDOTNET = \
+       $(LINK_SYSTEM) \
+       $(LINK_SYSTEM_CORE) \
+       $(LINK_SYSTEM_DATA) \
+       $(LINK_SYSTEM_DATA_DATASETEXTENSTIONS) \
+       $(LINK_SYSTEM_NUMERICS) \
+       $(LINK_SYSTEM_XML) \
+       $(LINK_SYSTEM_XML_LINQ) \
+       $(LINK_MICROSOFT_CSHARP) \
+       $(LINK_RDOTNET_NATIVE)
+
+
+
+DIR_BIN = $(top_builddir)/bin
+
+# Cute hack to replace a space with something
+colon:= :
+empty:=
+space:= $(empty) $(empty)
+
+# Build path to allow running uninstalled
+RUN_PATH = $(subst $(space),$(colon), $(MONO_BASE_PATH))
+
diff --git a/build/build.mk b/build/build.mk
new file mode 100644
index 0000000..78e0760
--- /dev/null
+++ b/build/build.mk
@@ -0,0 +1,3 @@
+include $(top_srcdir)/build/build.environment.mk
+include $(top_srcdir)/build/build.rules.mk
+
diff --git a/build/build.rules.mk b/build/build.rules.mk
new file mode 100644
index 0000000..43112df
--- /dev/null
+++ b/build/build.rules.mk
@@ -0,0 +1,97 @@
+UNIQUE_FILTER_PIPE = tr [:space:] \\n | sort | uniq
+BUILD_DATA_DIR = $(top_builddir)/bin/share/$(PACKAGE)
+
+SOURCES_BUILD = $(addprefix $(srcdir)/, $(SOURCES))
+#SOURCES_BUILD += $(top_srcdir)/src/AssemblyInfo.cs
+
+RESOURCES_EXPANDED = $(addprefix $(srcdir)/, $(RESOURCES))
+RESOURCES_BUILD = $(foreach resource, $(RESOURCES_EXPANDED), \
+       -resource:$(resource),$(notdir $(resource)))
+
+#INSTALL_ICONS = $(top_srcdir)/build/private-icon-theme-installer "$(mkinstalldirs)" "$(INSTALL_DATA)"
+#THEME_ICONS_SOURCE = $(wildcard $(srcdir)/ThemeIcons/*/*/*.png) $(wildcard 
$(srcdir)/ThemeIcons/scalable/*/*.svg)
+#THEME_ICONS_RELATIVE = $(subst $(srcdir)/ThemeIcons/, , $(THEME_ICONS_SOURCE))
+
+ASSEMBLY_EXTENSION = $(strip $(patsubst library, dll, $(TARGET)))
+ASSEMBLY_FILE = $(top_builddir)/bin/$(ASSEMBLY).$(ASSEMBLY_EXTENSION)
+
+INSTALL_DIR_RESOLVED = $(firstword $(subst , $(DEFAULT_INSTALL_DIR), $(INSTALL_DIR)))
+
+if ENABLE_TESTS
+    LINK += " $(NUNIT_LIBS)"
+    ENABLE_TESTS_FLAG = "-define:ENABLE_TESTS"
+endif
+
+FILTERED_LINK = $(shell echo "$(LINK)" | $(UNIQUE_FILTER_PIPE))
+DEP_LINK = $(shell echo "$(LINK)" | $(UNIQUE_FILTER_PIPE) | sed s,-r:,,g | grep '$(top_builddir)/bin/')
+
+OUTPUT_FILES = \
+       $(ASSEMBLY_FILE) \
+       $(ASSEMBLY_FILE).mdb \
+       $(DLLCONFIG)
+
+moduledir = $(INSTALL_DIR_RESOLVED)
+module_SCRIPTS = $(OUTPUT_FILES)
+
+ INTLTOOL_DESKTOP_RULE@
+desktopdir = $(datadir)/applications
+desktop_in_files = $(DESKTOP_FILE)
+desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
+
+imagesdir = @datadir@/@PACKAGE@/images
+images_DATA = $(IMAGES)
+
+logo_48dir = @datadir@/icons/hicolor/48x48/apps
+logo_48_DATA = $(LOGO_48)
+
+logodir = @datadir@/icons/hicolor/scalable/apps
+logo_DATA = $(LOGO)
+
+all: $(ASSEMBLY_FILE)
+
+run: 
+       @pushd $(top_builddir); \
+       make run; \
+       popd;
+
+test:
+       @pushd $(top_builddir)/tests; \
+       make $(ASSEMBLY); \
+       popd;
+
+build-debug:
+       @echo $(DEP_LINK)
+
+$(ASSEMBLY_FILE).mdb: $(ASSEMBLY_FILE)
+
+$(ASSEMBLY_FILE): $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(DEP_LINK)
+       @mkdir -p $(top_builddir)/bin
+       $(MCS) \
+               $(GMCS_FLAGS) \
+               $(ASSEMBLY_BUILD_FLAGS) \
+               -nowarn:0278 -nowarn:0078 $$warn -unsafe \
+               -define:HAVE_GTK -codepage:utf8 \
+               -debug -target:$(TARGET) -out:$@ \
+               $(BUILD_DEFINES) $(ENABLE_TESTS_FLAG) $(ENABLE_ATK_FLAG) \
+               $(FILTERED_LINK) $(RESOURCES_BUILD) $(SOURCES_BUILD)
+       @if [ ! -z "$(EXTRA_BUNDLE)" ]; then \
+               cp $(EXTRA_BUNDLE) $(top_builddir)/bin; \
+       fi;
+
+#theme-icons: $(THEME_ICONS_SOURCE)
+#      @$(INSTALL_ICONS) -il "$(BUILD_DATA_DIR)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
+
+install-data-hook: $(THEME_ICONS_SOURCE)
+       @$(INSTALL_ICONS) -i "$(DESTDIR)$(pkgdatadir)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
+       $(EXTRA_INSTALL_DATA_HOOK)
+
+uninstall-hook: $(THEME_ICONS_SOURCE)
+       @$(INSTALL_ICONS) -u "$(DESTDIR)$(pkgdatadir)" "$(srcdir)" $(THEME_ICONS_RELATIVE)
+       $(EXTRA_UNINSTALL_HOOK)
+
+EXTRA_DIST = $(SOURCES_BUILD) $(RESOURCES_EXPANDED) $(THEME_ICONS_SOURCE) $(IMAGES) $(LOGO) $(LOGO_48) 
$(desktop_in_files)
+
+CLEANFILES = $(OUTPUT_FILES)
+DISTCLEANFILES = *.pidb $(desktop_DATA)
+MAINTAINERCLEANFILES = Makefile.in
+
diff --git a/build/m4/Makefile.am b/build/m4/Makefile.am
new file mode 100644
index 0000000..6c1d899
--- /dev/null
+++ b/build/m4/Makefile.am
@@ -0,0 +1,6 @@
+EXTRA_DIST = \
+       $(srcdir)/shamrock/*.m4 \
+       $(srcdir)/shave/*.m4 \
+       $(srcdir)/shave/*.in
+MAINTAINERCLEANFILES = Makefile.in
+
diff --git a/expansions.m4 b/build/m4/shamrock/expansions.m4
similarity index 100%
rename from expansions.m4
rename to build/m4/shamrock/expansions.m4
diff --git a/m4/shamrock/gnome-doc.m4 b/build/m4/shamrock/gnome-doc.m4
similarity index 100%
rename from m4/shamrock/gnome-doc.m4
rename to build/m4/shamrock/gnome-doc.m4
diff --git a/m4/shamrock/i18n.m4 b/build/m4/shamrock/i18n.m4
similarity index 100%
rename from m4/shamrock/i18n.m4
rename to build/m4/shamrock/i18n.m4
diff --git a/m4/shamrock/mono.m4 b/build/m4/shamrock/mono.m4
similarity index 100%
rename from m4/shamrock/mono.m4
rename to build/m4/shamrock/mono.m4
diff --git a/m4/shamrock/monodoc.m4 b/build/m4/shamrock/monodoc.m4
similarity index 100%
rename from m4/shamrock/monodoc.m4
rename to build/m4/shamrock/monodoc.m4
diff --git a/m4/shamrock/nunit.m4 b/build/m4/shamrock/nunit.m4
similarity index 100%
rename from m4/shamrock/nunit.m4
rename to build/m4/shamrock/nunit.m4
diff --git a/m4/shamrock/programs.m4 b/build/m4/shamrock/programs.m4
similarity index 100%
rename from m4/shamrock/programs.m4
rename to build/m4/shamrock/programs.m4
diff --git a/m4/shamrock/util.m4 b/build/m4/shamrock/util.m4
similarity index 100%
rename from m4/shamrock/util.m4
rename to build/m4/shamrock/util.m4
diff --git a/m4/shave/shave-libtool.in b/build/m4/shave/shave-libtool.in
similarity index 100%
rename from m4/shave/shave-libtool.in
rename to build/m4/shave/shave-libtool.in
diff --git a/m4/shave/shave.in b/build/m4/shave/shave.in
similarity index 100%
rename from m4/shave/shave.in
rename to build/m4/shave/shave.in
diff --git a/m4/shave/shave.m4 b/build/m4/shave/shave.m4
similarity index 100%
rename from m4/shave/shave.m4
rename to build/m4/shave/shave.m4
diff --git a/configure.ac b/configure.ac
index ff56cb2..f893f15 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,12 +5,17 @@ AC_INIT([chronojump], [1.3.9])
 AM_INIT_AUTOMAKE([foreign])
 AM_MAINTAINER_MODE
 
-AC_CONFIG_MACRO_DIR([m4])
-AC_SUBST([ACLOCAL_AMFLAGS], ["-I m4/shamrock -I m4/shave \${ACLOCAL_FLAGS}"])
-
+AC_CONFIG_MACRO_DIR([build/m4])
+AC_SUBST([ACLOCAL_AMFLAGS], ["-I build/m4/shamrock -I build/m4/shave \${ACLOCAL_FLAGS}"])
+
+AM_PROG_CC_STDC
+AC_ISC_POSIX
+AC_PROG_CC
+AC_C_CONST
+AC_HEADER_STDC
 AM_PROG_LIBTOOL
-
 AM_PATH_PYTHON
+LT_INIT
 
 dnl Check for pkg-config
 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
@@ -25,6 +30,25 @@ SHAMROCK_EXPAND_DATADIR
 
 AC_PROG_INSTALL
 
+#*******************************************************************************
+# Internationalization
+#*******************************************************************************
+GETTEXT_PACKAGE=chronojump
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [GETTEXT package name])
+
+dnl Check for gettext utils
+AC_PATH_PROG(MSGFMT, msgfmt, no)
+if test "x$MSGFMT" = "xno"; then
+       AC_MSG_ERROR([gettext not found])
+else 
+       AC_SUBST(MSGFMT,[msgfmt])
+fi
+
+IT_PROG_INTLTOOL([0.40.0])
+AM_GLIB_GNU_GETTEXT
+
+
 dnl Mono and C# compiler
 dnl Check first for a 4.0 compiler or than fallback to 2.0
 SHAMROCK_CHECK_MONO_MODULE(2.4.0)
@@ -99,6 +123,9 @@ if test -z "$CONFIG_REQUESTED" ; then
        enable_release=yes
 fi
 
+dnl Disable tests
+AM_CONDITIONAL(ENABLE_TESTS, test x = y)
+
 
 dnl package checks, common for all configs
 PKG_CHECK_MODULES([GLIB_SHARP_20], [glib-sharp-2.0])
@@ -111,6 +138,8 @@ AC_SUBST(CESARPLAYER_LIBS)
 
 AC_CONFIG_FILES([
 Makefile
+build/m4/shave/shave
+build/m4/shave/shave-libtool
 chronopic-firmware/Makefile
 chronopic-firmware/chronopic-firmwarecord/Makefile
 chronopic-firmware/chronopic-firmwarecord/libIris/Makefile
@@ -131,6 +160,8 @@ CesarPlayer/AssemblyInfo.cs
 CesarPlayer/CesarPlayer.dll.config
 win32/chronojump_innosetup.iss
 rdotnet/Makefile
+rdotnet/R.NET/Makefile
+rdotnet/RDotNet.NativeLibrary/Makefile
 ])
 
 AC_OUTPUT
diff --git a/rdotnet/Makefile.am b/rdotnet/Makefile.am
index 46b7abf..851b5e2 100644
--- a/rdotnet/Makefile.am
+++ b/rdotnet/Makefile.am
@@ -1,13 +1 @@
-R_NET_BIN_FOLDER = R.NET/bin/Debug
-R_NET_ASSEMBLY = $(R_NET_BIN_FOLDER)/RDotNet.dll
-R_NET_NATIVE_ASSEMBLY = $(R_NET_BIN_FOLDER)/RDotNet.NativeLibrary.dll
-
-$(R_NET_ASSEMBLY) $(R_NET_NATIVE_ASSEMBLY):
-       xbuild R.NET/RDotNet.csproj
-
-all: $(R_NET_ASSEMBLY) $(R_NET_NATIVE_ASSEMBLY)
-
-chronojump_pkglibdir = $(pkglibdir)
-chronojump_pkglib_SCRIPTS = $(R_NET_ASSEMBLY) $(R_NET_NATIVE_ASSEMBLY)
-
-CLEANFILES = $(R_NET_ASSEMBLY) $(R_NET_NATIVE_ASSEMBLY)
+SUBDIRS = RDotNet.NativeLibrary R.NET
diff --git a/rdotnet/R.NET/Makefile.am b/rdotnet/R.NET/Makefile.am
new file mode 100644
index 0000000..f76a722
--- /dev/null
+++ b/rdotnet/R.NET/Makefile.am
@@ -0,0 +1,71 @@
+ASSEMBLY = RDotNet
+TARGET = library
+
+LINK = $(REF_DEP_RDOTNET)
+
+SOURCES = \
+    Closure.cs \
+    ComplexVector.cs \
+    CharacterMatrix.cs \
+    ComplexMatrix.cs \
+    BuiltinFunction.cs \
+    Devices/CharacterDeviceAdapter.cs \
+    Devices/ConsoleDevice.cs \
+    Devices/NullCharacterDevice.cs \
+    Devices/ICharacterDevice.cs \
+    Internals/Delegates.cs \
+    Internals/OutputMode.cs \
+    Internals/Unix/RStart.cs \
+    Internals/ConsoleOutputType.cs \
+    Internals/BusyType.cs \
+    Internals/SaveActions.cs \
+    Internals/Unix/Delegates.cs \
+    Internals/Windows/Delegates.cs \
+    Internals/Windows/RStart.cs \
+    Internals/Windows/UiMode.cs \
+    Internals/YesNoCancel.cs \
+    SpecialFunction.cs \
+    Environment.cs \
+    Expression.cs \
+    ExpressionVector.cs \
+    DataFrame.cs \
+    DataFrameRow.cs \
+    DynamicVector.cs \
+    Dynamic/DataFrameDynamicMeta.cs \
+    Dynamic/SymbolicExpressionDynamicMeta.cs \
+    Dynamic/ListDynamicMeta.cs \
+    Function.cs \
+    GenericVector.cs \
+    Language.cs \
+    LogicalMatrix.cs \
+    Pairlist.cs \
+    RawMatrix.cs \
+    NumericMatrix.cs \
+    IntegerMatrix.cs \
+    Matrix.cs \
+    InternalString.cs \
+    Internals/SEXPREC_HEADER.cs \
+    RawVector.cs \
+    Internals/ParseStatus.cs \
+    NumericVector.cs \
+    IntegerVector.cs \
+    Internals/VECTOR_SEXPREC.cs \
+    ParseException.cs \
+    ProtectedPointer.cs \
+    REngineExtension.cs \
+    StartupParameter.cs \
+    Symbol.cs \
+    SymbolicExpression.cs \
+    Internals/SEXPREC.cs \
+    Internals/SymbolicExpressionType.cs \
+    Internals/sxpinfo.cs \
+    Properties/AssemblyInfo.cs \
+    REngine.cs \
+    SymbolicExpressionExtension.cs \
+    Utility.cs \
+    Vector.cs \
+    LogicalVector.cs \
+    CharacterVector.cs
+
+
+include $(top_srcdir)/build/build.mk
diff --git a/rdotnet/RDotNet.NativeLibrary/Makefile.am b/rdotnet/RDotNet.NativeLibrary/Makefile.am
new file mode 100644
index 0000000..a106b66
--- /dev/null
+++ b/rdotnet/RDotNet.NativeLibrary/Makefile.am
@@ -0,0 +1,11 @@
+ASSEMBLY = RDotNet.NativeLibrary
+TARGET = library
+
+LINK = $(REF_DEP_RDOTNET_NATIVE)
+
+SOURCES = \
+    Properties/AssemblyInfo.cs \
+    UnmanagedDll.cs \
+    NativeUtility.cs
+
+include $(top_srcdir)/build/build.mk


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]