[R] package compilation: including external libraries in windows compilation

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri Apr 25 16:25:16 CEST 2008


The standard C define is WIN32, not Win32 (which R uses as private 
define).  You could have

PKG_CPPFLAGS=-DWin32

in Makevars.win, but this is unnecessary.

See e.g. Rmath.h.

On Fri, 25 Apr 2008, Jonathan Lees wrote:

> Dear R package developers:
>
> I need help on getting a package compiled for windows.
> I am trying to use definitions and routines from a
> set of libraries in that are in LINUX under
> #include <netdb.h>
> #include <sys/socket.h>
> #include <netinet/in.h>
> #include <arpa/inet.h>
>
> but these are unavailable in windows.
> I found that we can get these by including, in windows these includes:
>
> #include <winsock2.h>
> #include <io.h>
>
> My problem is I do not know how to instruct the preprocessor to include
> the linux .h files
> when in linux and the windows one in windows.
>
> I thought I found a solution online by using:

You mean in the R sources?


> #if defined(Win32)
> #include <winsock2.h>
> #include <io.h>
> #else
> #ifdef HAVE_UNISTD_H
> #include <unistd.h>
> #endif
> #ifdef HAVE_BSD_NETWORKING
> #include <netdb.h>
> #include <sys/socket.h>
> #include <netinet/in.h>
> #include <arpa/inet.h>
> #endif
> #endif
>
> But I still get an error when these are compiled on the R-distribution.
> I do not understand where I am supposed to set the Win32 flag so
> that it will be ignored in LINUX but used in windows.
> where is "Win32" "HAVE_UNISTD_H" and "HAVE_BSD_NETWORKING" set?

In config.h.

> It seems that Makevars.win would be logical place, but
> I do not see how to do this.
>
> Thanks for any help.
>
> Jonathan Lees
>
>
> ---------- Making package WINRPACK ------------
>  adding build stamp to DESCRIPTION
>  making DLL ...
> making win2R.d from win2R.c
> making win2asc.d from win2asc.c
> gcc-sjlj  -std=gnu99  -Id:/Rcompile/recent/R-26~1.2/include     -O3 -Wall  -c win2R.c -o win2R.o
> win2R.c:21:24: error: sys/socket.h: No such file or directory
> win2R.c:22:24: error: netinet/in.h: No such file or directory
> win2R.c:23:23: error: arpa/inet.h: No such file or directory
> win2R.c: In function 'read_data':
> win2R.c:591: warning: implicit declaration of function 'ntohl'
> win2R.c: In function 'read_one_sec':
> win2R.c:723: warning: implicit declaration of function 'ntohs'
> make[3]: *** [win2R.o] Error 1
> make[2]: *** [srcDynlib] Error 2
> make[1]: *** [all] Error 2
> make: *** [pkg-WINRPACK] Error 2
> *** Installation of WINRPACK failed ***
>
>
>
>
>
>
>
>
> -- 
> ==========================================
> Prof. Jonathan M. Lees
> Department of Geological Sciences
> CB #3315, Mitchell Hall
> University of North Carolina
> Chapel Hill, NC  27599-3315
> (919) 962-0695
> FAX (919) 966-4519
>
> jonathan_lees at unc.edu
> http://www.unc.edu/~leesj
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-help mailing list