geolobrad has asked for the wisdom of the Perl Monks concerning the following question:

Hi, am hoping someone can help me with this. I am trying to build ARSperl-1.91 (a module for accessing the Remedy trouble ticketing system) on Strawberry Perl 5.16 on Windows Server 2008 R2 .

I started the install with cpan: install JMURPHY/ARSperl-1.91

That errored on the 'perl Makefile.PL' because that needs to be edited to include the path to the ARS libraries.

So I dropped out of cpan at that point and went to the build directory D:\strawberry\cpan\build\ARSperl-1.91-UzxqZ9, made the edit to Makefile.PL, and ran the 'perl Makefile.PL', it seemed to run normally.

For the make I am using the 'dmake' that comes with Strawberry. That gives me the error below, I am stuck for now on this and there is not much in Google on ARSperl, it is kind of obscure. I am hoping to get some ideas on what to try next.

Thanks!

D:\strawberry\cpan\build\ARSperl-1.91-UzxqZ9>dmake
...
gcc -c -I"D:\Integrations\arapi/include" -s -O2 -DWIN32 -DPERL_TEXTMODE_S CRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -mms-bit fields -s -O2 -DVERSION=\"1.91\" -DXS_VERSION=\"1.91\" "-ID:\strawberry\ perl\lib\CORE" -D_WIN32 -Wno-unused-variable -Wuninitialized -DARS32 -DARS4 52 -DPERL_PATCHLEVEL_IS=16 -DPERL_SUBVERSION_IS=1 -DPERL_BASEREV_IS=50 ARS.c
In file included from ARS.xs:27:0:
supportrev.h:105:12: error: conflicting types for 'strcasecmp'
supportrev.h:107:12: error: conflicting types for 'strncasecmp'
dmake: Error code 129, while making 'ARS.o'

The lines it is complaining about are
D:\strawberry\cpan\build\ARSperl-1.91-UzxqZ9>grep casecmp *.h
supportrev.h:/* roll our own strcasecmp and strncasecmp for Win */
supportrev.h:EXTERN int strcasecmp(char *s1, char *s2);
supportrev.h:EXTERN int strncasecmp(char *s1, char *s2, size_t n);

Replies are listed 'Best First'.
Re: Build ARSperl-1.91 in Strawberry
by syphilis (Archbishop) on Aug 24, 2012 at 00:26 UTC
    /* roll our own strcasecmp and strncasecmp for Win */

    MinGW has its own implementations of strcasecmp, strncasecmp and strdup (in string.h) - maybe (some) MS compilers don't.
    Anyway, just change the #idef _WIN32 (a coupla lines higher up, at about line 102) to #ifdef _MSC_VER.
    Then, in supportrev.c there's a section defining those three functions that also begins with an #ifdef _WIN32. You'll need to change it to #ifdef _MSC_VER too.

    See how that goes.

    Cheers,
    Rob