Prog/TagSystem/lctags
の編集
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
App
App/archiver
App/audio
App/audio/audacity
App/audio/mpg321
App/audio/puddletag
App/base64
App/Browser
App/column
App/diff-patch
App/downloader
App/ffmpeg
App/ffprobe
App/find
App/gimp
App/gnuplot
App/ImageMagick
App/info
App/inxi
App/LibreOffice
App/locate
App/md5
App/Music
App/Music/frescobaldi
App/Music/MuseScore
App/OCR
App/od
App/OpenOffice.org
App/pagers
App/pdf
App/QRコード
App/ripgrep
App/screen
App/script
App/sed
App/selenium
App/signal-desktop
App/skype
App/sylpheed
App/tmux
App/ttyrec
App/uniq
App/UUID
App/wget
App/xargs
App/テキスト処理
App/仮想化
App/仮想化/Docker
App/仮想化/qemu
App/仮想化/webos
AutoTicketLinkName
BracketName
CentOS
CentOS/yum
CrossCompile
Debian
Debian/kernel
Debian/kernel/ver8-or-older
Debian/Plan9関連
Debian/ver5
Debian/ver6
Debian/ver7
Debian/ver8
Debian/ver9
Debian/ver10
Debian/ver11
Debian/ver12
Debian/X
Debian/X/日本語
Debian/パッケージ管理
Deveice/Sensor/MotionSensor
Device
Device/Mouse
Device/Net/wifi
Device/Scanner
Device/Sensor
Device/Sensor/MotionSensor
Device/tty
Device/xmodmap
Editor
Editor/atom
Editor/binary
Editor/binary/beav
Editor/binary/hexedit
Editor/emacs
Editor/emacs/clang-format
Editor/emacs/flycheck
Editor/emacs/gdb-mode
Editor/emacs/github/copilot
Editor/emacs/html-mode
Editor/emacs/lisp
Editor/emacs/lsp-mode
Editor/emacs/markdown-mode
Editor/emacs/neotree
Editor/emacs/package-install
Editor/emacs/sdic
Editor/emacs/speedbar
Editor/emacs/XEmacs
Editor/emacs/ローカルビルド
Editor/emacs/多言語
Editor/fte
Editor/vi
FormattingRules
FrontPage
Help
InterWiki
InterWikiName
InterWikiSandBox
iPhone
Lang
Lang/C++
Lang/C++/Boost
Lang/C++/C++11
Lang/C++/C++11/thread
Lang/C++/C++11/コンテナ
Lang/C++/C++11/コンテナ/string
Lang/C++/C++11/初期化子
Lang/C++/C++17
Lang/C++/C++20
Lang/C++/error
Lang/C++/macro
Lang/C++/template
Lang/C++/コンテナ
Lang/C++/処理系
Lang/C-Sharp
Lang/Go
Lang/html
Lang/html/5
Lang/html/5/canvas
Lang/html/css
Lang/Java
Lang/Java/jar
Lang/Objective-C
Lang/Pascal
Lang/Perl
Lang/Perl/CGI
Lang/Perl/thread
Lang/Perl/utf-8
Lang/pike
Lang/Python
Lang/Python/Class
Lang/Python/Error
Lang/Python/import対象パス
Lang/Python/pip
Lang/Python/基本文法
Lang/Python/開発環境
Lang/Rust
Lang/sed
Lang/shell
Lang/shell/bash
Lang/shell/bash/設定
Lang/shell/bash/設定/command-not-found
Lang/Tcl_Tk_Expect
Lang/Tcl_Tk_Expect/Ctrl-キーマップ
Lang/TypeScript
Lang/xml
Mac
Memo
memo
MenuBar
midi
Multimedia
Net
Net/apache
Net/apache2
Net/dig
Net/dns/server
Net/domain
Net/http/アクセス制御
Net/iptables
Net/IRC
Net/Jenkins
Net/lighttpd
Net/mail
Net/mail/X-Face
Net/news
Net/news/gnus
Net/ntp
Net/pukiwiki
Net/pukiwiki/plugin
Net/resolv.conf
Net/SPAM
Net/ss
Net/tcpdump
Net/traceroute
Net/twitter
Net/vpn
Net/web
Net/webAPI
Net/wifi
Net/wifi/AP
Net/監視
otherlinks
PHP
Plan9
PPC
PPC/LinuxPPC
PPC/MkLinux
Prog
Prog/AI
Prog/autotools
Prog/cmake
Prog/Compiler/gcc
Prog/CrossReferencer
Prog/debug
Prog/debug/gdb
Prog/debug/lldb
Prog/debug/ltrace
Prog/debug/memory
Prog/debug/strace
Prog/formatter/clang-format
Prog/GoogleTest
Prog/Gtk
Prog/IDE
Prog/IDE/Geany
Prog/ldd
Prog/make
Prog/nm
Prog/Profiler
Prog/Qt
Prog/readelf
Prog/Sound
Prog/StaticCodeAnalysis
Prog/StaticCodeAnalysis/cppcheck
Prog/strip
Prog/TagSystem
Prog/TagSystem/cscope
Prog/TagSystem/ctags-exuberant
Prog/TagSystem/ebrowse
Prog/TagSystem/etags
Prog/TagSystem/gtags
Prog/TagSystem/id-utils
Prog/TagSystem/lctags
Prog/TagSystem/rtags
Prog/TagSystem/SilentBob
Prog/X/X11
Prog/プロセス間通信
Prog/プロセス間通信/SharedMemory
Prog/プロセス間通信/singal
Prog/人為的なシグナル
Prog/分散ビルド/distcc
Prog/逆アセンブル
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
RS232C
SandBox
Security
Security/aide
Security/chkrootkit
Security/clamav
Security/gpg
Security/pkcs
Security/ssh
Security/test
Security/パスワード解析
System
System/Audio
System/beep
System/bluetooth
System/cpu
System/dm-crypt
System/fs
System/fs/ext2-3
System/fs/mount
System/fs/nfs
System/fs/tmpfs
System/fs/xfs
System/fs/大容量のファイルを高速に作成する
System/fs/強制物理フォーマット
System/grub
System/Hardware情報
System/HDD/IDE/チューニング
System/input
System/iostat
System/Kernel
System/Kernel/Module
System/locale
System/memory
System/OpenCL
System/os
System/power/battery
System/Process
System/random
System/rpm
System/runlevel
System/signal
System/sudo
System/swap
System/USB-Boot
System/user
System/シリアル接続
System/環境変数
TeX
TeX/MusiXTeX
tools
Top/Editor/emacs/python開発環境
transcription/old
Ubuntu
VersionCtl
VersionCtl/git
VersionCtl/git/Gerrit
VersionCtl/git/Gerrit/old
VersionCtl/git/git-gutter+
VersionCtl/git/git-imerge
VersionCtl/git/magit
VersionCtl/git/magit/2.1.0
VersionCtl/git/magit/2.8.0
VersionCtl/git/magit/2.13.1
VersionCtl/git/magit/v3.2.1
VersionCtl/git/magit/v3.3.0
VersionCtl/git/subversion からの移行
VersionCtl/git/subversion とのコマンド対比
VersionCtl/git/tig
VersionCtl/git/統計
VersionCtl/hg
VersionCtl/Mercurial
VersionCtl/repo
VersionCtl/Subversion
WikiEngines
WikiName
WikiWikiWeb
Windows
Windows/cmd
X
X/DisplayManager
X/DisplayManager/gdm3
X/DisplayManager/lightdm
X/font
X/font/old
X/GNOME3
X/input
X/input/OnScreenKeyboard
X/input/キーアサインを変更する
X/input/グラゴル文字
X/input/日本語
X/input/日本語/ATOK X3
X/input/日本語/ibus
X/input/日本語/uim
X/KDE
X/remote
X/screensaver
X/terminal
X/terminal/mlterm
X/terminal/urxvt
X/terminal/uxterm
X/vnc
X/vnc/tigervnc
X/WindowManager
X/WindowManager/9wm
X/WindowManager/amiwm
X/WindowManager/awesome
X/WindowManager/CDE
X/WindowManager/cinnamon
X/WindowManager/dwm
X/WindowManager/flwm
X/WindowManager/i3
X/WindowManager/jwm
X/WindowManager/matchbox
X/WindowManager/MATE
X/WindowManager/mlvwm
X/WindowManager/qvwm
X/WindowManager/ratpoison
X/WindowManager/ude
X/WindowManager/WindowMaker
X/WindowManager/xfce4
X/xdotool
X/Xnest
X/xrdp
X/xvfb
YukiWiki
スタジオ・ホール
旅
旅/Czech
旅/三重
旅/京都・滋賀
旅/兵庫
旅/千葉
旅/各務
旅/和歌山
旅/埼玉
旅/山形
旅/岐阜
旅/岡山
旅/岩手
旅/島根
旅/愛媛
旅/新潟
旅/東京
旅/栃木
旅/神奈川
旅/秋田
旅/群馬
旅/茨城
旅/長野・山梨
旅/静岡
旅/静岡/伊豆
未整理
食
食/チェコ
食/各国
食/料理
食/激辛
食/蕎麦
食/郷土料理
#topicpath /////////////////////////////////////////////////////////////////////////////// * 目次 [#of67ad55] #contents(); /////////////////////////////////////////////////////////////////////////////// * lctags [#jfb0b04c] //============================================================================== ** 環境構築 [#k8dbdfff] + コードの取得 $ git clone https://github.com/ifritJP/lctags.git + 追加パッケージのインストール -- swig (ビルドに必要) -- liblua50-dev -- lua5.3 -- luajit -- liblua5.3-dev -- libssl-dev + 他モジュールのコードを取得・展開 $ cd lctags/external $ curl http://lua.sqlite.org/index.cgi/zip/lsqlite3_fsl09x.zip?uuid=fsl_9x -o luasqlite3.zip $ unzip luasqlite3.zip $ cp -Rfdp lsqlite3_fsl09x/ luasqlite3/ $ curl https://www.lua.org/ftp/lua-5.3.4.tar.gz -o lua/lua-5.3.4/src/lua.tar.gz $ tar -xvzf lua.tar.gz $ mv lua-5.3.4 lua/ + ビルド ++ src/makefile の修正 diff --git a/src/makefile b/src/makefile index d3dde80..9a92a49 100644 --- a/src/makefile +++ b/src/makefile @@ -1,128 +1,152 @@ NDIR=$(shell pwd) -INST_DIR=/usr/local/bin +INST_DIR := /usr/local/bin -PROXY= +PROXY := -SWIG=swig +SWIG := swig INSTALL=/usr/bin/install -c -SO=so -## cygwin -#SO=dll +LUA_VER := 5.3 +# LUA_VER := 5.2 +# LUA_VER := 5.1 -####### customize Lua environment ###### +LUAJIT_VER := 2.0.4 +# LUAJIT_VER := $(shell luajit -v | awk '{print $2;}') + +CLANG_VER := 7 +# CLANG_VER=3.8 + +UNAME := $(shell uname -a) +ifeq ($(filter Darwin,$(UNAME)),Darwin) +OS := mac +else +ifeq ($(filter Linux,$(UNAME)),Linux) +OS := linux +else +ifeq ($(filter MINGW,$(UNAME)),Cygwin) +OS := cygwin +else +$(info Your platform $(UNAME) is not supported.) +endif +endif +endif +ifeq ($(OS),cygwin) ## cygwin -# LUA_COMMAND=lua -# LUA_INC=/usr/include -# LUA_LDFLAGS= -# LUA_SO=-llua +SO := dll +else +SO := so +endif -# LUA_COMMAND=lua5.1 -# LUA_INC=/usr/include/lua5.1 -# LUA_LDFLAGS= -# LUA_SO=-llua5.1 +####### customize Lua environment ###### +ifeq ($(OS),cygwin) +## cygwin +LUA_COMMAND := lua +LUA_INC := /usr/include +LUA_LDFLAGS := +LUA_SO := -llua -LUA_COMMAND=lua5.3 -LUA_INC=/usr/include/lua5.3 -LUA_LDFLAGS= -LUA_SO=-llua5.3 +else +LUA_COMMAND := lua$(LUA_VER) +LUA_INC := /usr/include/lua$(LUA_VER) +LUA_LDFLAGS := +LUA_SO := -llua$(LUA_VER) +endif -# LUA_COMMAND=luajit -# LUA_INC=/usr/include/luajit-2.0 -# LUA_LDFLAGS= -# LUA_SO=-lluajit-5.1 +# LUA_COMMAND := luajit +# LUA_INC := /usr/include/luajit-2.0 +# LUA_LDFLAGS := +# LUA_SO := -lluajit-5.1 -# LUA_COMMAND=./clanglua -# LUA_CFLAGS=-fPIC -DLUA_COMPAT_5_1 -DLUA_COMPAT_5_2 -I$(NDIR)/$(LUA_DIR) -# LUA_DIR=../external/lua/lua-5.3.4/src -# LUA_INC=$(NDIR)/$(LUA_DIR) -# LUA_LIB=$(LUA_DIR)/liblua.a -# LUA_INST_DIR=/usr/local/bin -# LUA_LIB_DIR=/usr/local/lib/lua/5.3 -# LUA_LDFLAGS=-lncursesw +# LUA_COMMAND := ./clanglua +# LUA_CFLAGS := -fPIC -DLUA_COMPAT_5_1 -DLUA_COMPAT_5_2 -I$(NDIR)/$(LUA_DIR) +# LUA_DIR := ../external/lua/lua-5.3.4/src +# LUA_INC := $(NDIR)/$(LUA_DIR) +# LUA_LIB := $(LUA_DIR)/liblua.a +# LUA_INST_DIR := /usr/local/bin +# LUA_LIB_DIR := /usr/local/lib/lua/5.3 +# LUA_LDFLAGS := -lncursesw -TEST_LUA_DIR=../external/lua/lua-5.3.4/src +TEST_LUA_DIR := ../external/lua/lua-5.3.4/src -LUA_URL="https://www.lua.org/ftp/lua-5.3.4.tar.gz" +LUA_URL := "https://www.lua.org/ftp/lua-5.3.4.tar.gz" -LUA_COMMAND_FULL:=$(shell python -c 'import os; print( os.path.abspath( "$(shell which $(LUA_COMMAND))" ) );' ) +LUA_COMMAND_FULL := $(shell python -c 'import os; print( os.path.abspath( "$(shell which $(LUA_COMMAND))" ) );' ) ####### customize libclang environment ###### +ifeq ($(OS),cygwin) ## cygwin -# LIBCLANG_INC=/usr/include -# LIBCLANG_LIB=/lib -# LIBCLANG_STD_INC=/lib/clang/5.0.1/include - - -CLANG_VER=3.8 -LIBCLANG_INC=/usr/lib/llvm-$(CLANG_VER)/include -LIBCLANG_LIB=/usr/lib/llvm-$(CLANG_VER)/lib -LIBCLANG_STD_INC=$(shell find /usr/lib/llvm-$(CLANG_VER)/lib/clang/ -maxdepth 1 -mindepth 1 | head -n 1) +LIBCLANG_INC := /usr/include +LIBCLANG_LIB := /lib +LIBCLANG_STD_INC := /lib/clang/5.0.1/include -# LIBCLANG_DIR=/proj/next/clang/r34-final -# LIBCLANG_INC=../external/clang/r390/llvm/tools/clang/include -# LIBCLANG_STD_INC=../external/clang/r390/build/lib/clang/3.9.0/include -# LIBCLANG_LIB=/usr/lib/llvm-$(CLANG_VER)/lib +else +LIBCLANG_INC := /usr/lib/llvm-$(CLANG_VER)/include +LIBCLANG_LIB := /usr/lib/llvm-$(CLANG_VER)/lib +LIBCLANG_STD_INC := $(shell find /usr/lib/llvm-$(CLANG_VER)/lib/clang/ -maxdepth 1 -mindepth 1 | head -n 1) -# LIBCLANG_SO=-lclang +# LIBCLANG_DIR := /proj/next/clang/r34-final +# LIBCLANG_INC := ../external/clang/r390/llvm/tools/clang/include +# LIBCLANG_STD_INC := ../external/clang/r390/build/lib/clang/3.9.0/include +# LIBCLANG_LIB := /usr/lib/llvm-$(CLANG_VER)/lib +endif -LIBCLANG_SO=-lclang +LIBCLANG_SO := -lclang ####### customize luasqlite3 environment ###### # If you don't have luasqlite3, you must customize this setting. # http://lua.sqlite.org/index.cgi/index -LUASQLITE3_WORKDIR=../external/luasqlite3 -LUASQLITE3_DIR=$(LUASQLITE3_WORKDIR)/lsqlite3_fsl09x -#USE_BDB_SQLITE=y +LUASQLITE3_WORKDIR := ../external/luasqlite3 +LUASQLITE3_DIR := $(LUASQLITE3_WORKDIR)/lsqlite3_fsl09x +#USE_BDB_SQLITE := y -LUASQLITE3_URL="http://lua.sqlite.org/index.cgi/zip/lsqlite3_fsl09x.zip?uuid=fsl_9x" +LUASQLITE3_URL := "http://lua.sqlite.org/index.cgi/zip/lsqlite3_fsl09x.zip?uuid=fsl_9x" ####### make rules ###### -LUA_LIB_DIR=$(shell echo $(LUA_DIR_LIB) | $(LUA_COMMAND) ) -LUA_MOD_DIR=$(shell echo $(LUA_DIR_SCRIPT) | $(LUA_COMMAND) ) +LUA_LIB_DIR := $(shell echo $(LUA_DIR_LIB) | $(LUA_COMMAND) ) +LUA_MOD_DIR := $(shell echo $(LUA_DIR_SCRIPT) | $(LUA_COMMAND) ) -LCTAGS_LOG=4 -JOBS=3 +LCTAGS_LOG := 4 +JOBS := 3 ifdef LCTAGS_PROF -LCTAGS_PROF_OP = --lctags-prof +LCTAGS_PROF_OP := --lctags-prof endif -LCTAGS_LOCKLOG=y +LCTAGS_LOCKLOG := y ifdef LCTAGS_LOCKLOG -LOCKLOG = --lctags-lockLog +LOCKLOG := --lctags-lockLog endif ifdef LCTAGS_SERVER_ON -LCTAGS_SERVER=--lctags-srv +LCTAGS_SERVER := --lctags-srv endif -LUA_LIB:=$(addprefix $(NDIR)/,$(LUA_LIB)) +LUA_LIB := $(addprefix $(NDIR)/,$(LUA_LIB)) -LCTAGS_LUA=lctags/lctags.lua +LCTAGS_LUA := lctags/lctags.lua -#OPT_OP = -O3 +#OPT_OP := -O3 -IF_LUA = libclanglua/if.lua -IFC_LUA = libclanglua/ifc.lua -COREBASE_SO = libclanglua/coreBase.$(SO) -CORE_SO = libclanglua/core.$(SO) +IF_LUA := libclanglua/if.lua +IFC_LUA := libclanglua/ifc.lua +COREBASE_SO := libclanglua/coreBase.$(SO) +CORE_SO := libclanglua/core.$(SO) -LUA_DIR_SCRIPT='for path in string.gmatch( package.path, "[^;]+" ) do if path:find( ".*lua.*%?%.lua" ) then print( (path:gsub( "/%?%.lua", "" )) ); break end end' -LUA_DIR_LIB="for path in string.gmatch( package.cpath, '[^;]+' ) do if path:find( \".*lua.*%?%.$(SO)\" ) then print( (path:gsub( \"/%?%.$(SO)\", '' ))); break end end" +LUA_DIR_SCRIPT := 'for path in string.gmatch( package.path, "[^;]+" ) do if path:find( ".*lua.*%?%.lua" ) then print( (path:gsub( "/%?%.lua", "" )) ); break end end' +LUA_DIR_LIB := "for path in string.gmatch( package.cpath, '[^;]+' ) do if path:find( \".*lua.*%?%.$(SO)\" ) then print( (path:gsub( \"/%?%.$(SO)\", '' ))); break end end" ifneq ($(LUA_DIR),) -TARGET_LUA = $(LUA_COMMAND) +TARGET_LUA := $(LUA_COMMAND) endif all: @@ -254,11 +278,11 @@ test-simple: ifdef BATCH -BATCH_OP=--lctags-only-reg +BATCH_OP := --lctags-only-reg endif ifeq ($(INDIV),y) -INDIV_OP=--lctags-indiv +INDIV_OP := --lctags-indiv endif ++ ビルド(lctags のトップディレクトリに戻ってから) $ make build 成功すると、以下のファイルが出来る src/lsqlite3.so src/lctags/Helper src/lctags/Helper.so src/lctags/core.so src/lctags/coreBase.so //============================================================================== ** 実行ファイルに PATH を通す [#ab952543] - make で生成された実行ファイルと共有ライブラリを、1箇所に集めて環境変数 PATH と LD_LIBRARY_PATH に追加する。 -- 或いは、パッケージ管理システムで構築されている環境では、これらをパッケージ化してインストールする。 //============================================================================== ** emacs から使う [#o7c56a8d] + lctags を emacs から使う為の lisp は、lctags のリポジトリ内に同梱されているので、これを load 出来るようにする。 ++ リポジトリ内の src/lisp を、emacs が load 出来る場所にコピーするか、 load-path に追加する。 (add-to-list 'load-path "hoge/lctags/src/lisp") t) ++ src/lisp/lctags.el を load する。 (require 'lctags) + これらを使えるようにするために、 [[helm>Editor/emacs#helm]] と [[gtags.el>Prog/TagSystem/gtags]] も使えるようにする必要がある。 //============================================================================== ** 参考リンク [#lefcf64d] - [[ifritJP/lctags - GitHub>https://github.com/ifritJP/lctags]] - [[lctags で C 言語の関数コールを簡単に - 公開技術情報>https://ifritjp.github.io/documents/lctags/callfunc/]]
#topicpath /////////////////////////////////////////////////////////////////////////////// * 目次 [#of67ad55] #contents(); /////////////////////////////////////////////////////////////////////////////// * lctags [#jfb0b04c] //============================================================================== ** 環境構築 [#k8dbdfff] + コードの取得 $ git clone https://github.com/ifritJP/lctags.git + 追加パッケージのインストール -- swig (ビルドに必要) -- liblua50-dev -- lua5.3 -- luajit -- liblua5.3-dev -- libssl-dev + 他モジュールのコードを取得・展開 $ cd lctags/external $ curl http://lua.sqlite.org/index.cgi/zip/lsqlite3_fsl09x.zip?uuid=fsl_9x -o luasqlite3.zip $ unzip luasqlite3.zip $ cp -Rfdp lsqlite3_fsl09x/ luasqlite3/ $ curl https://www.lua.org/ftp/lua-5.3.4.tar.gz -o lua/lua-5.3.4/src/lua.tar.gz $ tar -xvzf lua.tar.gz $ mv lua-5.3.4 lua/ + ビルド ++ src/makefile の修正 diff --git a/src/makefile b/src/makefile index d3dde80..9a92a49 100644 --- a/src/makefile +++ b/src/makefile @@ -1,128 +1,152 @@ NDIR=$(shell pwd) -INST_DIR=/usr/local/bin +INST_DIR := /usr/local/bin -PROXY= +PROXY := -SWIG=swig +SWIG := swig INSTALL=/usr/bin/install -c -SO=so -## cygwin -#SO=dll +LUA_VER := 5.3 +# LUA_VER := 5.2 +# LUA_VER := 5.1 -####### customize Lua environment ###### +LUAJIT_VER := 2.0.4 +# LUAJIT_VER := $(shell luajit -v | awk '{print $2;}') + +CLANG_VER := 7 +# CLANG_VER=3.8 + +UNAME := $(shell uname -a) +ifeq ($(filter Darwin,$(UNAME)),Darwin) +OS := mac +else +ifeq ($(filter Linux,$(UNAME)),Linux) +OS := linux +else +ifeq ($(filter MINGW,$(UNAME)),Cygwin) +OS := cygwin +else +$(info Your platform $(UNAME) is not supported.) +endif +endif +endif +ifeq ($(OS),cygwin) ## cygwin -# LUA_COMMAND=lua -# LUA_INC=/usr/include -# LUA_LDFLAGS= -# LUA_SO=-llua +SO := dll +else +SO := so +endif -# LUA_COMMAND=lua5.1 -# LUA_INC=/usr/include/lua5.1 -# LUA_LDFLAGS= -# LUA_SO=-llua5.1 +####### customize Lua environment ###### +ifeq ($(OS),cygwin) +## cygwin +LUA_COMMAND := lua +LUA_INC := /usr/include +LUA_LDFLAGS := +LUA_SO := -llua -LUA_COMMAND=lua5.3 -LUA_INC=/usr/include/lua5.3 -LUA_LDFLAGS= -LUA_SO=-llua5.3 +else +LUA_COMMAND := lua$(LUA_VER) +LUA_INC := /usr/include/lua$(LUA_VER) +LUA_LDFLAGS := +LUA_SO := -llua$(LUA_VER) +endif -# LUA_COMMAND=luajit -# LUA_INC=/usr/include/luajit-2.0 -# LUA_LDFLAGS= -# LUA_SO=-lluajit-5.1 +# LUA_COMMAND := luajit +# LUA_INC := /usr/include/luajit-2.0 +# LUA_LDFLAGS := +# LUA_SO := -lluajit-5.1 -# LUA_COMMAND=./clanglua -# LUA_CFLAGS=-fPIC -DLUA_COMPAT_5_1 -DLUA_COMPAT_5_2 -I$(NDIR)/$(LUA_DIR) -# LUA_DIR=../external/lua/lua-5.3.4/src -# LUA_INC=$(NDIR)/$(LUA_DIR) -# LUA_LIB=$(LUA_DIR)/liblua.a -# LUA_INST_DIR=/usr/local/bin -# LUA_LIB_DIR=/usr/local/lib/lua/5.3 -# LUA_LDFLAGS=-lncursesw +# LUA_COMMAND := ./clanglua +# LUA_CFLAGS := -fPIC -DLUA_COMPAT_5_1 -DLUA_COMPAT_5_2 -I$(NDIR)/$(LUA_DIR) +# LUA_DIR := ../external/lua/lua-5.3.4/src +# LUA_INC := $(NDIR)/$(LUA_DIR) +# LUA_LIB := $(LUA_DIR)/liblua.a +# LUA_INST_DIR := /usr/local/bin +# LUA_LIB_DIR := /usr/local/lib/lua/5.3 +# LUA_LDFLAGS := -lncursesw -TEST_LUA_DIR=../external/lua/lua-5.3.4/src +TEST_LUA_DIR := ../external/lua/lua-5.3.4/src -LUA_URL="https://www.lua.org/ftp/lua-5.3.4.tar.gz" +LUA_URL := "https://www.lua.org/ftp/lua-5.3.4.tar.gz" -LUA_COMMAND_FULL:=$(shell python -c 'import os; print( os.path.abspath( "$(shell which $(LUA_COMMAND))" ) );' ) +LUA_COMMAND_FULL := $(shell python -c 'import os; print( os.path.abspath( "$(shell which $(LUA_COMMAND))" ) );' ) ####### customize libclang environment ###### +ifeq ($(OS),cygwin) ## cygwin -# LIBCLANG_INC=/usr/include -# LIBCLANG_LIB=/lib -# LIBCLANG_STD_INC=/lib/clang/5.0.1/include - - -CLANG_VER=3.8 -LIBCLANG_INC=/usr/lib/llvm-$(CLANG_VER)/include -LIBCLANG_LIB=/usr/lib/llvm-$(CLANG_VER)/lib -LIBCLANG_STD_INC=$(shell find /usr/lib/llvm-$(CLANG_VER)/lib/clang/ -maxdepth 1 -mindepth 1 | head -n 1) +LIBCLANG_INC := /usr/include +LIBCLANG_LIB := /lib +LIBCLANG_STD_INC := /lib/clang/5.0.1/include -# LIBCLANG_DIR=/proj/next/clang/r34-final -# LIBCLANG_INC=../external/clang/r390/llvm/tools/clang/include -# LIBCLANG_STD_INC=../external/clang/r390/build/lib/clang/3.9.0/include -# LIBCLANG_LIB=/usr/lib/llvm-$(CLANG_VER)/lib +else +LIBCLANG_INC := /usr/lib/llvm-$(CLANG_VER)/include +LIBCLANG_LIB := /usr/lib/llvm-$(CLANG_VER)/lib +LIBCLANG_STD_INC := $(shell find /usr/lib/llvm-$(CLANG_VER)/lib/clang/ -maxdepth 1 -mindepth 1 | head -n 1) -# LIBCLANG_SO=-lclang +# LIBCLANG_DIR := /proj/next/clang/r34-final +# LIBCLANG_INC := ../external/clang/r390/llvm/tools/clang/include +# LIBCLANG_STD_INC := ../external/clang/r390/build/lib/clang/3.9.0/include +# LIBCLANG_LIB := /usr/lib/llvm-$(CLANG_VER)/lib +endif -LIBCLANG_SO=-lclang +LIBCLANG_SO := -lclang ####### customize luasqlite3 environment ###### # If you don't have luasqlite3, you must customize this setting. # http://lua.sqlite.org/index.cgi/index -LUASQLITE3_WORKDIR=../external/luasqlite3 -LUASQLITE3_DIR=$(LUASQLITE3_WORKDIR)/lsqlite3_fsl09x -#USE_BDB_SQLITE=y +LUASQLITE3_WORKDIR := ../external/luasqlite3 +LUASQLITE3_DIR := $(LUASQLITE3_WORKDIR)/lsqlite3_fsl09x +#USE_BDB_SQLITE := y -LUASQLITE3_URL="http://lua.sqlite.org/index.cgi/zip/lsqlite3_fsl09x.zip?uuid=fsl_9x" +LUASQLITE3_URL := "http://lua.sqlite.org/index.cgi/zip/lsqlite3_fsl09x.zip?uuid=fsl_9x" ####### make rules ###### -LUA_LIB_DIR=$(shell echo $(LUA_DIR_LIB) | $(LUA_COMMAND) ) -LUA_MOD_DIR=$(shell echo $(LUA_DIR_SCRIPT) | $(LUA_COMMAND) ) +LUA_LIB_DIR := $(shell echo $(LUA_DIR_LIB) | $(LUA_COMMAND) ) +LUA_MOD_DIR := $(shell echo $(LUA_DIR_SCRIPT) | $(LUA_COMMAND) ) -LCTAGS_LOG=4 -JOBS=3 +LCTAGS_LOG := 4 +JOBS := 3 ifdef LCTAGS_PROF -LCTAGS_PROF_OP = --lctags-prof +LCTAGS_PROF_OP := --lctags-prof endif -LCTAGS_LOCKLOG=y +LCTAGS_LOCKLOG := y ifdef LCTAGS_LOCKLOG -LOCKLOG = --lctags-lockLog +LOCKLOG := --lctags-lockLog endif ifdef LCTAGS_SERVER_ON -LCTAGS_SERVER=--lctags-srv +LCTAGS_SERVER := --lctags-srv endif -LUA_LIB:=$(addprefix $(NDIR)/,$(LUA_LIB)) +LUA_LIB := $(addprefix $(NDIR)/,$(LUA_LIB)) -LCTAGS_LUA=lctags/lctags.lua +LCTAGS_LUA := lctags/lctags.lua -#OPT_OP = -O3 +#OPT_OP := -O3 -IF_LUA = libclanglua/if.lua -IFC_LUA = libclanglua/ifc.lua -COREBASE_SO = libclanglua/coreBase.$(SO) -CORE_SO = libclanglua/core.$(SO) +IF_LUA := libclanglua/if.lua +IFC_LUA := libclanglua/ifc.lua +COREBASE_SO := libclanglua/coreBase.$(SO) +CORE_SO := libclanglua/core.$(SO) -LUA_DIR_SCRIPT='for path in string.gmatch( package.path, "[^;]+" ) do if path:find( ".*lua.*%?%.lua" ) then print( (path:gsub( "/%?%.lua", "" )) ); break end end' -LUA_DIR_LIB="for path in string.gmatch( package.cpath, '[^;]+' ) do if path:find( \".*lua.*%?%.$(SO)\" ) then print( (path:gsub( \"/%?%.$(SO)\", '' ))); break end end" +LUA_DIR_SCRIPT := 'for path in string.gmatch( package.path, "[^;]+" ) do if path:find( ".*lua.*%?%.lua" ) then print( (path:gsub( "/%?%.lua", "" )) ); break end end' +LUA_DIR_LIB := "for path in string.gmatch( package.cpath, '[^;]+' ) do if path:find( \".*lua.*%?%.$(SO)\" ) then print( (path:gsub( \"/%?%.$(SO)\", '' ))); break end end" ifneq ($(LUA_DIR),) -TARGET_LUA = $(LUA_COMMAND) +TARGET_LUA := $(LUA_COMMAND) endif all: @@ -254,11 +278,11 @@ test-simple: ifdef BATCH -BATCH_OP=--lctags-only-reg +BATCH_OP := --lctags-only-reg endif ifeq ($(INDIV),y) -INDIV_OP=--lctags-indiv +INDIV_OP := --lctags-indiv endif ++ ビルド(lctags のトップディレクトリに戻ってから) $ make build 成功すると、以下のファイルが出来る src/lsqlite3.so src/lctags/Helper src/lctags/Helper.so src/lctags/core.so src/lctags/coreBase.so //============================================================================== ** 実行ファイルに PATH を通す [#ab952543] - make で生成された実行ファイルと共有ライブラリを、1箇所に集めて環境変数 PATH と LD_LIBRARY_PATH に追加する。 -- 或いは、パッケージ管理システムで構築されている環境では、これらをパッケージ化してインストールする。 //============================================================================== ** emacs から使う [#o7c56a8d] + lctags を emacs から使う為の lisp は、lctags のリポジトリ内に同梱されているので、これを load 出来るようにする。 ++ リポジトリ内の src/lisp を、emacs が load 出来る場所にコピーするか、 load-path に追加する。 (add-to-list 'load-path "hoge/lctags/src/lisp") t) ++ src/lisp/lctags.el を load する。 (require 'lctags) + これらを使えるようにするために、 [[helm>Editor/emacs#helm]] と [[gtags.el>Prog/TagSystem/gtags]] も使えるようにする必要がある。 //============================================================================== ** 参考リンク [#lefcf64d] - [[ifritJP/lctags - GitHub>https://github.com/ifritJP/lctags]] - [[lctags で C 言語の関数コールを簡単に - 公開技術情報>https://ifritjp.github.io/documents/lctags/callfunc/]]
テキスト整形のルールを表示する