2019/12/12

JAGURS compilation using Homebrew on MacOS

まだ MacPorts 使ってるの?とか言われてしまったので, Homebrew へ.主に何に使ってたかと言うと, JAGURS なので,まずは JAGURS がコンパイル出来るように整備してみた.

が,Makefile のバージョン管理に RCS 使ってたので,先ずは,
% brew intall rcs

それ以前としては, /usr/local に入っている HPC compiler を上書きさせないために, /opt/homebrew をインストール先にした.参考にした記事はこちら
cd /opt
sudo mkdir homebrew
sudo chown ${USER}:staff homebrew
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew

依存ライブラリのインストール
 % brew install netcdf
 % brew install proj
 % brew install fftw
(伴って gcc のインストールも始まっていて重い・・・)

Makefile:
PROJ4_DIR=/opt/homebrew
FFTW3_INCLUDE_DIR=/opt/homebrew/include
NETCDF=/opt/homebrew

% make
In file included from mapproject.c:4:
/opt/homebrew/include/proj_api.h:37:2: error: #error 'To use the proj_api.h you must define the macro ACCEPT_USE_OF_DEPRECATED_PROJ_API_H'
 #error 'To use the proj_api.h you must define the macro ACCEPT_USE_OF_DEPRECATED_PROJ_API_H'
  ^~~~~

mapproject.c で,proj_api.h を include する前に, ACCEPT_USE_OF_DEPRECATED_PROJ_API_H を定義してあげると, make が通るようになります.

% cat mapproject.patch
*** mapproject.c        2019/12/11 20:49:39     1.1
--- mapproject.c        2019/12/11 20:51:04
***************
*** 1,6 ****
--- 1,7 ----
  #include <stdio.h>
  #include <string.h>
  #include <stdlib.h>
+ #define ACCEPT_USE_OF_DEPRECATED_PROJ_API_H
  #include <proj_api.h>

  static  projPJ pj_tmerc, pj_latlong;

もしくは,proj をバージョン5にするという解決策もあるようですが,,,悩みどころ.

参考までに,GitHub上のOSGeoのチケット