SSE 命令の使用可否チェックする CMake モジュールを単独リポジトリにした
以前書いた SSE 命令の使用可否を判定する CMake モジュールを Gist から単独のリポジトリに移動しました。
https://github.com/hideo55/CMake-FindSSE
Gistのままでもcloneできますが、リポジトリにしておいた方が他の人が利用しやすいだろうという考えによるものです。
利用する場合は以下のようにサブモジュールとするといいと思います。
git submodule add https://github.com/hideo55/CMake-FindSSE.git cmake/FindSSE
あとは、CMakeLists.txt に以下のように記述するだけです。
SET (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") INCLUDE(FindSSE/FindSSE) FindSSE () IF(SSE3_FOUND) IF(SSSE3_FOUND) SET(CXX_DFLAGS -DHSDS_USE_SSE3 -msse3 -mssse3) ENDIF(SSSE3_FOUND) ENDIF(SSE3_FOUND) IF(SSE4_2_FOUND) SET(CXX_DFLAGS ${CXX_DFLAGS} -DHSDS_USE_POPCNT -msse4.2 -mpopcnt) ENDIF(SSE4_2_FOUND) ADD_DEFINITIONS(${CXX_DFLAGS})
Go言語用の Vim 設定を見なおした
暫く Vim の設定をいじっていなかったので、設定(Vim 7.4 へのアップグレードも含めて)を見直しました。
以前の記事はこちら。
Go 付属の vim プラグインを使うのをやめて vim-go にした
$GOROOT/libexec/misc/vim に Vim プラグインが付属していますが、使うのをやめました。
理由としては付属 Vim プラグインと gocode の Vim プラグインを使うより、vim-go を使うほうが管理が楽だと考えたためです。
Go 関連の設定は以下のようにしました。
if !exists('g:neocomplete#omni_patterns') let g:neocomplete#omni_patterns = {} endif let g:neocomplete#omni_patterns.go = '\h\w*\.\?' let g:quickrun_config['go'] = { \ 'command': 'go', \ 'exec': ['%c run %s'] \ } """ vim-go let g:go_bin_path = expand("~/.go/bin") let g:go_play_open_browser = 0 let g:go_fmt_fail_silently = 1 let g:go_fmt_autosave = 0 let g:go_fmt_command = "gofmt" let g:go_disable_autoinstall = 1 au FileType go nmap <Leader>i <Plug>(go-info) au FileType go nmap <Leader>gd <Plug>(go-doc) au FileType go nmap <Leader>gv <Plug>(go-doc-vertical) au FileType go nmap <leader>gb <Plug>(go-build) au FileType go nmap <leader>gt <Plug>(go-test) au FileType go nmap gd <Plug>(go-def) au FileType go nmap <Leader>ds <Plug>(go-def-split) au FileType go nmap <Leader>dv <Plug>(go-def-vertical) au FileType go nmap <Leader>dt <Plug>(go-def-tab) au FileType go nmap <Leader>gl :GoLint<CR>
npm の Node.js C++ Addonを Node.js v0.11 に対応させた
npmにあげてあるNode.jsのC++ Addon を Node.js v0.11 に対応させました。
https://www.npmjs.org/package/kytea
https://www.npmjs.org/package/murmurhash3
https://www.npmjs.org/package/unqlite
これらのモジュールは以前までは自前で Node.js の各バージョンに対応していたが、Node.js v0.11 での非互換な変更に対応しつつ、以前のバージョンもサポートするのが大変だったので NAN を使うようにしました。
現時点では NAN 自体の API もあまり安定していないため、NAN のバージョンアップに対応する手間はありますが Node.js 自体の変化に対応するよりは楽だと判断した結果です。
NANの使用に関しては、基本的に node-leveldownの0.11-wipブランチを参考にすればいいと思います。
MinillaでModule::Build::XSUtilを使う
もう先週の話になりますが、拙作 Module::Build::XSUtilがサポートされたMinilla 0.7.0がリリースされました。
Module::Build::XSUtilとは?
Module::Build::XSUtilはModule::Install::XSUtilと同等の機能をModule::Buildで実現するためのモジュールです。以下の機能があります。
MinillaでModule::Build::XSUtilを使用する方法
minil.tomlに以下のようにXSUtilセクションを記述してください。
[XSUtil] needs_compiler_c99 = 1 generate_ppport_h = 1 cc_warnings = 1
この設定で、コンパイラのC99サポートのチェック、ディストリビューションのトップディレクトリにppport.hを生成、コンパイラの警告の有効化が行われます。
ファイルを生成する 'generate_ppport_h' と 'generate_xshelper_h' はファイルパスを指定することも可能です。(この機能はMinilla 0.7.0の時点ではバグっていて、0.7.3で修正してます。)
[XSUtil] generate_ppport_h = "lib/Your/XS/ppport.h"