Thanks for your reply. Actually my problem is not how to install the libraries in the sense of copying them to the right place, but how to build more than one .so or .dll file. Anyway, I did read the code and found that absence of a Makefile, a single library is built from all source files in directory src:

                 srcs <- dir(pattern = "\\.([cfmM]|cc|cpp|f90|f95|mm)$")

                 [...]

                         has_error <- run_shlib(pkg_name, srcs,
                           instdir, "")

where the last call basically executes R CMD SHLIB on the sources.

So a custom Makefile seems the only feasible solution. Still I'd be thankful to know about other packages (if they exist) which create other than the standard library files.

Best regards,

Andreas

Prof Brian Ripley schrieb:
R CMD INSTALL is R code, and you can read it for yourself rather than asking other people to do so for you. If you look in
tools:::.install.packages you will see

        shlib_install <- function(instdir, arch)
        {
            files <- Sys.glob(paste0("*", SHLIB_EXT))
            if (length(files)) {
            ...

so it does in general install all the *.so or *.dll's generated. I am not aware of a package that does so for more than one, though.

On Mon, 15 Nov 2010, Andreas Borg wrote:

Dear R-devel members,

I would like to compile a package with two seperate shared libraries. For example, in a package 'foo', a file 'bar.so' built from a distinct set of source files should be installed in addition to the default 'foo.so' (or .dll on windows). Does anyone know about a way to achieve this without having a custom Makefile, e.g. via 'Makevars'?

Also, I'd be thankful for information on existing packages which make use of this or a similar customization.

Just in case anyone is interested in details: I have some C-code which is not intended to be loaded into R but into a SQLite database to which I connect via RSQLite. I would like to have these object in a seperate library.

In which case it seems that the library should not be in the package's libs directory, which is intended for DSO/DLLs to be loaded into R.

If you want to do this in a public package you need to remember that multiple architectures are used on Mac OS and Windows.

Thanks and kind regards,

Andreas

--
Andreas Borg
Medizinische Informatik

UNIVERSITÄTSMEDIZIN
der Johannes Gutenberg-Universität
Institut für Medizinische Biometrie, Epidemiologie und Informatik
Obere Zahlbacher Straße 69, 55131 Mainz
www.imbei.uni-mainz.de

Telefon +49 (0) 6131 175062
E-Mail: b...@imbei.uni-mainz.de



--
Andreas Borg
Medizinische Informatik

UNIVERSITÄTSMEDIZIN
der Johannes Gutenberg-Universität
Institut für Medizinische Biometrie, Epidemiologie und Informatik
Obere Zahlbacher Straße 69, 55131 Mainz
www.imbei.uni-mainz.de

Telefon +49 (0) 6131 175062
E-Mail: b...@imbei.uni-mainz.de

Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte Informationen. 
Wenn Sie nicht der
richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren 
Sie bitte sofort den
Absender und löschen Sie diese Mail. Das unerlaubte Kopieren sowie die 
unbefugte Weitergabe
dieser Mail und der darin enthaltenen Informationen ist nicht gestattet.

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to