h2o コンパイル時のエラーについて

Pocket

h2o-2.2.5をソースからコンパイル中に下記のエラーが出た

cmake -DWITH_BUNDLED_SSL=on -DWITH_MRUBY=on .
...
make
...
[ 51%] Building C object CMakeFiles/h2o.dir/deps/picotls/deps/micro-ecc/uECC.c.o
[ 53%] Building C object CMakeFiles/h2o.dir/deps/picotls/deps/cifra/src/aes.c.o
[ 53%] Building C object CMakeFiles/h2o.dir/deps/picotls/deps/cifra/src/blockwise.c.o
[ 53%] Building C object CMakeFiles/h2o.dir/deps/picotls/deps/cifra/src/chacha20.c.o
[ 53%] Building C object CMakeFiles/h2o.dir/deps/picotls/deps/cifra/src/chash.c.o
[ 55%] Building C object CMakeFiles/h2o.dir/deps/picotls/deps/cifra/src/curve25519.c.o
[ 55%] Building C object CMakeFiles/h2o.dir/deps/picotls/deps/cifra/src/drbg.c.o
[ 55%] Building C object CMakeFiles/h2o.dir/deps/picotls/deps/cifra/src/hmac.c.o
[ 55%] Building C object CMakeFiles/h2o.dir/deps/picotls/deps/cifra/src/gcm.c.o
[ 57%] Building C object CMakeFiles/h2o.dir/deps/picotls/deps/cifra/src/gf128.c.o
[ 57%] Building C object CMakeFiles/h2o.dir/deps/picotls/deps/cifra/src/modes.c.o
[ 57%] Building C object CMakeFiles/h2o.dir/deps/picotls/deps/cifra/src/poly1305.c.o
[ 57%] Building C object CMakeFiles/h2o.dir/deps/picotls/deps/cifra/src/sha256.c.o
[ 59%] Building C object CMakeFiles/h2o.dir/deps/picotls/deps/cifra/src/sha512.c.o
/usr/local/src/h2o-2.2.5/deps/picotls/deps/cifra/src/sha512.c: 関数 ‘sha512_update_block’ 内:
/usr/local/src/h2o-2.2.5/deps/picotls/deps/cifra/src/sha512.c:115:3: エラー: ‘for’ ループ初期化宣言は C99 モード内でのみ許可されています
for (size_t t = 0; t < 80; t++)
^
/usr/local/src/h2o-2.2.5/deps/picotls/deps/cifra/src/sha512.c:115:3: 備考: オプション -std=c99 または -std=gnu99 をコードコンパイル時に使用してください
make[2]: *** [CMakeFiles/h2o.dir/deps/picotls/deps/cifra/src/sha512.c.o] エラー 1
make[1]: *** [CMakeFiles/h2o.dir/all] エラー 2
make: *** [all] エラー 2

エラーメッセージが出ている通りコンパイルオプションに-std=gnu99を追記する形で対応
h2oはCMakeを使っているのでCMakeLists.txtに追記する

# CMakeLists.txt
SET(CMAKE_C_FLAGS "-std=gnu99 -O2 -g ${CC_WARNING_FLAGS} ${CMAKE_C_FLAGS} -DH2O_ROOT=\"${CMAKE_INSTALL_PREFIX}\" -DH2O_CONFIG_PATH=\"${CMAKE_INSTALL_SYSCONFDIR}/h2o.conf\"")

これで無事コンパイルできました!

h2o コンパイル時のエラーについて
Tagged on: