CのライブラリをRのパッケージにする

# See Section 1.2.1 "Using 'Makevars'" of Writing R Extensions
# cran.r-project.org/doc/manuals/R-exts.pdf

PKG_CFLAGS=
PKG_CPPFLAGS=-Ilibmseed
PKG_LIBS=-Llibmseed -lmseed

$(SHLIB): libmseed/libmseed.a

libmseed/libmseed.a:
        @(cd libmseed && $(MAKE) static CC="$(CC)" CFLAGS="$(CFLAGS)")
    • このMakevarsファイルは、Makeの「追加情報」的な位置づけ。Makefileの基本はこちら
    • ちなみに、RはCとFortranを使って作られているので、そのコンパイルのためにCFLAGS,CPPFLAGS,FFLAGSとかBLAS_LIBSとかいろいろと定義されてしまっている。新たにパッケージを作るためのフラッギングであることを示すために、PKG_CFLAGSとか、PKG_が頭についている。こちらに詳細が書いてある
    • libmseed.aを使いたい自作C関数の冒頭は以下のようにlibmseed.hをincludeする
/***************************************************************************
 R callable function
 ***************************************************************************/

#include <R.h>
#include <Rdefines.h>

#include <libmseed.h>

SEXP test_hello_mseed () {

&#160; SEXP result;
...