Skip to content
This repository has been archived by the owner on May 18, 2024. It is now read-only.

win32, mingw: Build fails. #5

Closed
GoogleCodeExporter opened this issue May 24, 2015 · 17 comments
Closed

win32, mingw: Build fails. #5

GoogleCodeExporter opened this issue May 24, 2015 · 17 comments

Comments

@GoogleCodeExporter
Copy link

Using msys-1.10 the build fails after ./configure:

make  all-am
make[1]: Entering directory `/home/Administrator/stringencoders-v3.7.0'
gcc   modp_b2_gen.o   -o modp_b2_gen
modp_b2_gen.o: In function `hexdecodemap':
C:/msys/1.0/home/Administrator/stringencoders-v3.7.0/src/modp_b2_gen.c:64:
undefined reference to `uint32_array_to_c'
C:/msys/1.0/home/Administrator/stringencoders-v3.7.0/src/modp_b2_gen.c:66:
undefined reference to `uint32_array_to_c'
collect2: ld returned 1 exit status
make[1]: *** [modp_b2_gen] Error 1
make[1]: Leaving directory `/home/Administrator/stringencoders-v3.7.0'
make: *** [all] Error 2


Original issue reported on code.google.com by ch.no...@noltec.org on 5 Mar 2008 at 4:37

Attachments:

@GoogleCodeExporter
Copy link
Author

[deleted comment]

@GoogleCodeExporter
Copy link
Author

same with cygwin!

Original comment by caus...@gmail.com on 7 Oct 2008 at 10:02

@GoogleCodeExporter
Copy link
Author

ok guys tomorrow, I'll work on this.



Original comment by nickgsup...@gmail.com on 7 Oct 2008 at 2:38

@GoogleCodeExporter
Copy link
Author

I think the uint32_array_to_c issue is occurring because modp_b2_gen is not 
being
linked to arraytoc.o. It looks like this is occurring because an implicit link
command is being used and not the defined one in the Makefile.

The cause seems to be a mishandling of the executable extension (EXEEXT) .exe 
(or
lack thereof in MSYS).

To eliminate this issue, for MSYS, you can remove $(EXEEXT) from the Makefile.

However the build fails later while build modp_85 due to missing reference to 
htonl.
I understand that this is defined in the winsock library (-lws2_32) but I am 
not sure
what overhead this adds. Perhaps a "built in" htonl is the way to go?

make  all-am
make[1]: Entering directory `/home/epamks/stringencoders-v3.8.0'
if /bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.
 -Isrc -Wall -Werror -g -O2 -MT modp_b85.lo -MD -MP -MF ".deps/modp_b85.Tpo" -c
-o modp_b85.lo `test -f 'src/modp_b85.c' || echo './'`src/modp_b85.c; \
        then mv -f ".deps/modp_b85.Tpo" ".deps/modp_b85.Plo"; else rm -f ".deps/
modp_b85.Tpo"; exit 1; fi
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I. -I. -Isrc -Wall -Werror -g -O2 -M
T modp_b85.lo -MD -MP -MF .deps/modp_b85.Tpo -c src/modp_b85.c  -DDLL_EXPORT -DP
IC -o .libs/modp_b85.o
src/modp_b85.c:57:23: arpa/inet.h: No such file or directory
src/modp_b85.c: In function `modp_b85_decode':
src/modp_b85.c:82: warning: implicit declaration of function `htonl'
make[1]: *** [modp_b85.lo] Error 1
make[1]: Leaving directory `/home/epamks/stringencoders-v3.8.0'
make: *** [all] Error 2

Original comment by mscr...@gmail.com on 23 Dec 2009 at 5:46

@GoogleCodeExporter
Copy link
Author

[deleted comment]

2 similar comments
@GoogleCodeExporter
Copy link
Author

[deleted comment]

@GoogleCodeExporter
Copy link
Author

[deleted comment]

@GoogleCodeExporter
Copy link
Author

[deleted comment]

4 similar comments
@GoogleCodeExporter
Copy link
Author

[deleted comment]

@GoogleCodeExporter
Copy link
Author

[deleted comment]

@GoogleCodeExporter
Copy link
Author

[deleted comment]

@GoogleCodeExporter
Copy link
Author

[deleted comment]

@GoogleCodeExporter
Copy link
Author

no guarantee it will compile 8-) edited in place, sorry about that.

// modp_compat.h draft $mmw

#ifndef MODP_COMPAT_H
#define MODP_COMPAT_H

#include <sys/cdefs.h>
#include <sys/types.h>
#include <stdlib.h>

__BEGIN_DECLS

#if !defined(__GNUC__) && defined(__WIN32__) // VC VERSION should be checked 
also, newest has stdint
// winsock2 there is a trick to do; do not remember if you have to include it 
before
    #include <windows.h>
    #include <io.h>

    #define int8_t CHAR
    #define int16_t SHORT
    #define int32_t INT32
    #define int64_t INT64

    #define uint8_t UCHAR
    #define uint16_t USHORT
    #define uint32_t UINT32
    #define uint64_t UINT64

    #define size_t SIZE_T
    #define ssize_t SSIZE_T

    #ifndef __cplusplus
        #undef false
        #undef true
        #undef bool
        #define bool BOOL
        #define true TRUE
        #define false FALSE
    #endif
#else
    #include <stdint.h>
    #include <stdbool.h>
#endif

#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(_WIN64)
    #if defined(__MINGW32__) || defined(__MINGW64__) || defined(__MINGW__)
        inline uint32_t htonl(uint32_t x)
        {
            #ifdef __GNUC__
                return __builtin_bswap32(x);
            #else // or !GCC
                // no windows PPC E.G BYTE_ORDER = LITTLE_ENDIAN
                // http://msdn.microsoft.com/en-us/library/a3140177(v=vs.80).aspx
                return _byteswap_ulong(x);
            #endif
        }   
        #define ntohl htonl
    #endif /* !MINGW */
#else
    #include <arpa/inet.h>
#endif /* !WIN */

__END_DECLS

#endif /* !MODP_COMPAT_H */

/* EOF */

Original comment by 0xcafef...@gmail.com on 1 Jan 2012 at 12:42

@GoogleCodeExporter
Copy link
Author

but basically I repeat it modp_stdint is a mistake if you include the project 
to your src like everybody does you get the typedef conflicts 

Original comment by 0xcafef...@gmail.com on 3 Jan 2012 at 10:23

@GoogleCodeExporter
Copy link
Author

Any news here please ? I have the same problem with stringencoders-v3.10.3 and 
MinGW32.

Original comment by l.aleba...@gmail.com on 18 Jul 2013 at 3:14

@GoogleCodeExporter
Copy link
Author

idem with MinGW32, MinGW64-32, and MinGW64-64

Original comment by l.aleba...@gmail.com on 19 Jul 2013 at 7:16

@client9
Copy link
Owner

client9 commented Sep 22, 2016

pull requests welcome.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants