<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to 24: Cross-compiling : win32</title><link>https://sourceforge.net/p/dia2code/bugs/24/</link><description>Recent changes to 24: Cross-compiling : win32</description><atom:link href="https://sourceforge.net/p/dia2code/bugs/24/feed.rss" rel="self"/><language>en</language><lastBuildDate>Thu, 10 Jul 2014 15:18:35 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/dia2code/bugs/24/feed.rss" rel="self" type="application/rss+xml"/><item><title>#24 Cross-compiling : win32</title><link>https://sourceforge.net/p/dia2code/bugs/24/?limit=25#c207</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;About strnlen, I discover : &lt;a href="http://cgit.freedesktop.org/cairo/tree/util/cairo-missing/strndup.c" rel="nofollow"&gt;http://cgit.freedesktop.org/cairo/tree/util/cairo-missing/strndup.c&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">bansan</dc:creator><pubDate>Thu, 10 Jul 2014 15:18:35 -0000</pubDate><guid>https://sourceforge.net02c021dbda8553635c5f68dcf870d386fbd23a4c</guid></item><item><title>Cross-compiling : win32</title><link>https://sourceforge.net/p/dia2code/bugs/24/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Dear,&lt;/p&gt;
&lt;p&gt;I try to compile dia2code for Windows but I found some problem.&lt;/p&gt;
&lt;p&gt;First, I run autoreconf -i --force :&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;aclocal&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1.14&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;warning&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;autoconf&lt;/span&gt; &lt;span class="nx"&gt;input&lt;/span&gt; &lt;span class="nx"&gt;should&lt;/span&gt; &lt;span class="nx"&gt;be&lt;/span&gt; &lt;span class="nx"&gt;named&lt;/span&gt; &lt;span class="s1"&gt;'configure.ac'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;not&lt;/span&gt; &lt;span class="s1"&gt;'configure.in'&lt;/span&gt;
&lt;span class="nx"&gt;autoheader&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2.69&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;WARNING&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Using&lt;/span&gt; &lt;span class="nx"&gt;auxiliary&lt;/span&gt; &lt;span class="nx"&gt;files&lt;/span&gt; &lt;span class="nx"&gt;such&lt;/span&gt; &lt;span class="nx"&gt;as&lt;/span&gt; &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="nx"&gt;acconfig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="s1"&gt;', `config.h.bot'&lt;/span&gt;
&lt;span class="nx"&gt;autoheader&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2.69&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;WARNING&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;and&lt;/span&gt; &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;top&lt;/span&gt;&lt;span class="s1"&gt;', to define templates for `config.h.in'&lt;/span&gt;
&lt;span class="nx"&gt;autoheader&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2.69&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;WARNING&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;is&lt;/span&gt; &lt;span class="nx"&gt;deprecated&lt;/span&gt; &lt;span class="nx"&gt;and&lt;/span&gt; &lt;span class="nx"&gt;discouraged&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="nx"&gt;autoheader&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2.69&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; 
&lt;span class="nx"&gt;autoheader&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2.69&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;WARNING&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Using&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="nx"&gt;third&lt;/span&gt; &lt;span class="nx"&gt;argument&lt;/span&gt; &lt;span class="nx"&gt;of&lt;/span&gt; &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="nx"&gt;AC_DEFINE&lt;/span&gt;&lt;span class="s1"&gt;' and&lt;/span&gt;
&lt;span class="s1"&gt;autoheader-2.69: WARNING: `AC_DEFINE_UNQUOTED'&lt;/span&gt; &lt;span class="nx"&gt;allows&lt;/span&gt; &lt;span class="nx"&gt;one&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;define&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;template&lt;/span&gt; &lt;span class="nx"&gt;without&lt;/span&gt;
&lt;span class="nx"&gt;autoheader&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2.69&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;WARNING&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="nx"&gt;acconfig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;span class="nx"&gt;autoheader&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2.69&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; 
&lt;span class="nx"&gt;autoheader&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2.69&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;WARNING&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;   &lt;span class="nx"&gt;AC_DEFINE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="cp"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;NEED_FUNC_MAIN&lt;/span&gt;&lt;span class="cp"&gt;]&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="nx"&gt;autoheader&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2.69&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;                &lt;span class="cp"&gt;[&lt;/span&gt;&lt;span class="kd"&gt;Define&lt;/span&gt; &lt;span class="nf"&gt;if&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;function&lt;/span&gt; &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="s1"&gt;' is needed.])&lt;/span&gt;
&lt;span class="s1"&gt;autoheader-2.69: &lt;/span&gt;
&lt;span class="s1"&gt;autoheader-2.69: WARNING: More sophisticated templates can also be produced, see the&lt;/span&gt;
&lt;span class="s1"&gt;autoheader-2.69: WARNING: documentation.&lt;/span&gt;
&lt;span class="s1"&gt;automake-1.14: warning: autoconf input should be named '&lt;/span&gt;&lt;span class="nx"&gt;configure.ac&lt;/span&gt;&lt;span class="s1"&gt;', not '&lt;/span&gt;&lt;span class="nx"&gt;configure.in&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;
&lt;span class="s1"&gt;configure.in:6: warning: AM_INIT_AUTOMAKE: two- and three-arguments forms are deprecated.  For more info, see:&lt;/span&gt;
&lt;span class="s1"&gt;configure.in:6: http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation&lt;/span&gt;
&lt;span class="s1"&gt;dia2code/Makefile.am:12: warning: '&lt;/span&gt;&lt;span class="nb"&gt;INCLUDES&lt;/span&gt;&lt;span class="s1"&gt;' is the old name for '&lt;/span&gt;&lt;span class="nx"&gt;AM_CPPFLAGS&lt;/span&gt;&lt;span class="s1"&gt;' (or '&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;_CPPFLAGS&lt;/span&gt;&lt;span class="s1"&gt;')&lt;/span&gt;
&lt;span class="s1"&gt;automake-1.14: warning: autoconf input should be named '&lt;/span&gt;&lt;span class="nx"&gt;configure.ac&lt;/span&gt;&lt;span class="s1"&gt;', not '&lt;/span&gt;&lt;span class="nx"&gt;configure.in&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;So first, I renamed configure.in to configure.ac. For the rest, I do not really care.&lt;/p&gt;
&lt;p&gt;We compiling, I have :&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nx"&gt;dia2code&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;In&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="nx"&gt;create_package_dir&lt;/span&gt;&lt;span class="err"&gt;’&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;span class="nx"&gt;dia2code&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;239&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;52&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;erreur&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="nx"&gt;S_IRGRP&lt;/span&gt;&lt;span class="err"&gt;’&lt;/span&gt; &lt;span class="nx"&gt;undeclared&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;first&lt;/span&gt; &lt;span class="nx"&gt;use&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
     &lt;span class="nx"&gt;mode_t&lt;/span&gt; &lt;span class="nx"&gt;dir_mask&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;S_IRUSR&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;S_IWUSR&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;S_IXUSR&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="nx"&gt;S_IRGRP&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;S_IXGRP&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                                                    &lt;span class="o"&gt;^&lt;/span&gt;
&lt;span class="nx"&gt;dia2code&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;239&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;52&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;note&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;each&lt;/span&gt; &lt;span class="nx"&gt;undeclared&lt;/span&gt; &lt;span class="nx"&gt;identifier&lt;/span&gt; &lt;span class="nx"&gt;is&lt;/span&gt; &lt;span class="nx"&gt;reported&lt;/span&gt; &lt;span class="nx"&gt;only&lt;/span&gt; &lt;span class="nx"&gt;once&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nx"&gt;each&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;it&lt;/span&gt; &lt;span class="nx"&gt;appears&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt;
&lt;span class="nx"&gt;dia2code&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;239&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;62&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;erreur&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;‘&lt;/span&gt;&lt;span class="nx"&gt;S_IXGRP&lt;/span&gt;&lt;span class="err"&gt;’&lt;/span&gt; &lt;span class="nx"&gt;undeclared&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;first&lt;/span&gt; &lt;span class="nx"&gt;use&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
     &lt;span class="nx"&gt;mode_t&lt;/span&gt; &lt;span class="nx"&gt;dir_mask&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;S_IRUSR&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;S_IWUSR&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;S_IXUSR&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="nx"&gt;S_IRGRP&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nx"&gt;S_IXGRP&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Some research shows that theses 2 flags have no meaning in Windows.&lt;br /&gt;
So I propose :&lt;br /&gt;
        mode_t dir_mask = S_IRUSR | S_IWUSR | S_IXUSR;&lt;br /&gt;
&lt;br /&gt;
    #if !defined(_WIN64) &amp;amp;&amp;amp; !defined(_WIN32)&lt;br /&gt;
        dir_mask = dir_mask | S_IRGRP | S_IXGRP;&lt;br /&gt;
    #endif&lt;/p&gt;
&lt;p&gt;Then I have&lt;br /&gt;
    i686-pc-mingw32-gcc  -g -O2   -o dia2code.exe dia2code.o main.o parse_diagram.o scan_tree.o generate_code_c.o generate_code_java.o generate_code_cpp.o generate_code_ada.o generate_code_sql.o generate_code_python.o generate_code_php.o generate_code_shp.o generate_code_idl.o generate_code_csharp.o generate_code_php_five.o generate_code_ruby.o generate_code_as3.o decls.o includes.o source_parser.o comment_helper.o  -lxml2 -lz -lm&lt;br /&gt;
    dia2code.o: dans la fonction « find_diaoid »:&lt;br /&gt;
    /tmp/dia2code-git/dia2code/dia2code.c:1001: référence indéfinie vers « strndup »&lt;br /&gt;
    source_parser.o: dans la fonction « sourceblock_new »:&lt;br /&gt;
    /tmp/dia2code-git/dia2code/source_parser.c:80: référence indéfinie vers « strndup »&lt;br /&gt;
    source_parser.o: dans la fonction « source_parse »:&lt;br /&gt;
    /tmp/dia2code-git/dia2code/source_parser.c:153: référence indéfinie vers « strndup »&lt;br /&gt;
    source_parser.o: dans la fonction « source_preserve »:&lt;br /&gt;
    /tmp/dia2code-git/dia2code/source_parser.c:56: référence indéfinie vers « strndup »&lt;br /&gt;
But after some research, the code looks fine : there is &lt;br /&gt;
    #define  _GNU_SOURCE in dia2code.h&lt;br /&gt;
and adding&lt;br /&gt;
    #define _POSIX_C_SOURCE 200809L&lt;br /&gt;
solve nothing. Looks like strndup is not in MinGW.&lt;/p&gt;
&lt;p&gt;Adding (in dia2code.c) something like this help gcc.&lt;br /&gt;
    #ifndef strndup&lt;br /&gt;
    static size_t strnlen(const char &lt;em&gt;s, size_t max) {&lt;br /&gt;
        register const char &lt;/em&gt;p;&lt;br /&gt;
        for(p = s; &lt;em&gt;p &amp;amp;&amp;amp; max--; ++p);&lt;br /&gt;
        return(p - s);&lt;br /&gt;
    }&lt;br /&gt;
    char&lt;/em&gt; strndup(const char&lt;em&gt;s, size_t n)&lt;br /&gt;
    {&lt;br /&gt;
        char&lt;/em&gt; newbuf = (char*)malloc(strnlen(s, n) + 1);&lt;br /&gt;
        strncpy(newbuf, s, n-1);&lt;br /&gt;
        return newbuf;&lt;br /&gt;
    }&lt;br /&gt;
    #endif&lt;/p&gt;
&lt;p&gt;Then I have&lt;br /&gt;
    i686-pc-mingw32-gcc  -g -O2   -o dia2code.exe dia2code.o main.o parse_diagram.o scan_tree.o generate_code_c.o generate_code_java.o generate_code_cpp.o generate_code_ada.o generate_code_sql.o generate_code_python.o generate_code_php.o generate_code_shp.o generate_code_idl.o generate_code_csharp.o generate_code_php_five.o generate_code_ruby.o generate_code_as3.o decls.o includes.o source_parser.o comment_helper.o  -lxml2 -lz -lm -ldl&lt;br /&gt;
    /usr/libexec/gcc/i686-pc-mingw32/ld: ne peut trouver -ldl&lt;/p&gt;
&lt;p&gt;is ldl is necessary ?&lt;br /&gt;
PS removing it from configure.in do not solve the problem. I don't know why.&lt;/p&gt;
&lt;p&gt;What do you think of all this things ?&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">bansan</dc:creator><pubDate>Tue, 08 Jul 2014 21:16:03 -0000</pubDate><guid>https://sourceforge.net134e4baec5be99c7f4f59de51459372b380b2056</guid></item></channel></rss>