mirror of
https://github.com/zoriya/vim.git
synced 2026-01-03 12:58:14 +00:00
Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3e9a161496 | ||
|
|
b103138b1e | ||
|
|
3a0c908983 | ||
|
|
983c4e93dc | ||
|
|
345326aa3d | ||
|
|
374bf024d2 | ||
|
|
f9e6c3b8b0 | ||
|
|
0434482e5a | ||
|
|
6b2e938f13 | ||
|
|
4391cf98ec | ||
|
|
c3940c76e8 | ||
|
|
32efaf6154 | ||
|
|
72971a2611 | ||
|
|
e90c853ff6 | ||
|
|
9c7d98d7c2 | ||
|
|
fda3729a06 | ||
|
|
4f7e821f26 | ||
|
|
666578b539 | ||
|
|
eda73607a7 | ||
|
|
086329d3f6 | ||
|
|
2f31e39978 | ||
|
|
b851a96d5c | ||
|
|
6a64365c95 | ||
|
|
fe3c410098 |
4
Filelist
4
Filelist
@@ -102,6 +102,9 @@ SRC_ALL = \
|
||||
src/testdir/pythonx/topmodule/submodule/subsubmodule/subsubsubmodule.py \
|
||||
src/testdir/python_after/*.py \
|
||||
src/testdir/python_before/*.py \
|
||||
src/testdir/bench*.in \
|
||||
src/testdir/bench*.vim \
|
||||
src/testdir/samples/*.txt \
|
||||
src/proto.h \
|
||||
src/proto/blowfish.pro \
|
||||
src/proto/buffer.pro \
|
||||
@@ -277,6 +280,7 @@ SRC_DOS = \
|
||||
src/Make_bc3.mak \
|
||||
src/Make_bc5.mak \
|
||||
src/Make_cyg.mak \
|
||||
src/Make_cyg_ming.mak \
|
||||
src/Make_djg.mak \
|
||||
src/Make_ivc.mak \
|
||||
src/Make_dvc.mak \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# NSIS file to create a self-installing exe for Vim.
|
||||
# It requires NSIS version 2.0 or later.
|
||||
# Last Change: 2010 Jul 30
|
||||
# Last Change: 2014 Nov 5
|
||||
|
||||
# WARNING: if you make changes to this script, look out for $0 to be valid,
|
||||
# because uninstall deletes most files in $0.
|
||||
@@ -38,7 +38,7 @@ SetDatablockOptimize on
|
||||
RequestExecutionLevel highest
|
||||
|
||||
ComponentText "This will install Vim ${VER_MAJOR}.${VER_MINOR} on your computer."
|
||||
DirText "Choose a directory to install Vim (must end in 'vim')"
|
||||
DirText "Choose a directory to install Vim (should contain 'vim')"
|
||||
Icon icons\vim_16c.ico
|
||||
# NSIS2 uses a different strategy with six different images in a strip...
|
||||
#EnabledBitmap icons\enabled.bmp
|
||||
@@ -135,11 +135,6 @@ FunctionEnd
|
||||
# We only accept the directory if it ends in "vim". Using .onVerifyInstDir has
|
||||
# the disadvantage that the browse dialog is difficult to use.
|
||||
Function CheckInstallDir
|
||||
StrCpy $0 $INSTDIR 3 -3
|
||||
StrCmp $0 "vim" PathGood
|
||||
MessageBox MB_OK "The path must end in 'vim'."
|
||||
Abort
|
||||
PathGood:
|
||||
FunctionEnd
|
||||
|
||||
Function .onInstSuccess
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
" Vim autoload file for editing compressed files.
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2008 Jul 04
|
||||
" Last Change: 2014 Nov 05
|
||||
|
||||
" These functions are used by the gzip plugin.
|
||||
|
||||
@@ -120,6 +120,8 @@ fun gzip#read(cmd)
|
||||
silent! exe "bwipe " . tmp_esc
|
||||
silent! exe "bwipe " . tmpe_esc
|
||||
endif
|
||||
" Store the OK flag, so that we can use it when writing.
|
||||
let b:uncompressOk = ok
|
||||
|
||||
" Restore saved option values.
|
||||
let &pm = pm_save
|
||||
@@ -146,8 +148,10 @@ endfun
|
||||
|
||||
" After writing compressed file: Compress written file with "cmd"
|
||||
fun gzip#write(cmd)
|
||||
if exists('b:uncompressOk') && !b:uncompressOk
|
||||
echomsg "Not compressing file because uncompress failed; reset b:uncompressOk to compress anyway"
|
||||
" don't do anything if the cmd is not supported
|
||||
if s:check(a:cmd)
|
||||
elseif s:check(a:cmd)
|
||||
" Rename the file before compressing it.
|
||||
let nm = resolve(expand("<afile>"))
|
||||
let nmt = s:tempname(nm)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*diff.txt* For Vim version 7.4. Last change: 2014 May 20
|
||||
*diff.txt* For Vim version 7.4. Last change: 2014 Oct 31
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -266,13 +266,17 @@ that the buffers will be equal within the specified range.
|
||||
See below for [range].
|
||||
|
||||
*do*
|
||||
do Same as ":diffget" without argument or range. The "o" stands
|
||||
for "obtain" ("dg" can't be used, it could be the start of
|
||||
"dgg"!). Note: this doesn't work in Visual mode.
|
||||
[count]do Same as ":diffget" without range. The "o" stands for "obtain"
|
||||
("dg" can't be used, it could be the start of "dgg"!). Note:
|
||||
this doesn't work in Visual mode.
|
||||
If you give a [count], it is used as the [bufspec] argument
|
||||
for ":diffget".
|
||||
|
||||
*dp*
|
||||
dp Same as ":diffput" without argument or range.
|
||||
Note: this doesn't work in Visual mode.
|
||||
[count]dp Same as ":diffput" without range. Note: this doesn't work in
|
||||
Visual mode.
|
||||
If you give a [count], it is used as the [bufspec] argument
|
||||
for ":diffput".
|
||||
|
||||
|
||||
When no [range] is given, the diff at the cursor position or just above it is
|
||||
|
||||
@@ -2041,7 +2041,7 @@ winrestcmd() String returns command to restore window sizes
|
||||
winrestview( {dict}) none restore view of current window
|
||||
winsaveview() Dict save view of current window
|
||||
winwidth( {nr}) Number width of window {nr}
|
||||
writefile( {list}, {fname} [, {binary}])
|
||||
writefile( {list}, {fname} [, {flags}])
|
||||
Number write list of lines to file {fname}
|
||||
xor( {expr}, {expr}) Number bitwise XOR
|
||||
|
||||
@@ -6555,14 +6555,20 @@ winwidth({nr}) *winwidth()*
|
||||
:endif
|
||||
<
|
||||
*writefile()*
|
||||
writefile({list}, {fname} [, {binary}])
|
||||
writefile({list}, {fname} [, {flags}])
|
||||
Write |List| {list} to file {fname}. Each list item is
|
||||
separated with a NL. Each list item must be a String or
|
||||
Number.
|
||||
When {binary} is equal to "b" binary mode is used: There will
|
||||
When {flags} contains "b" then binary mode is used: There will
|
||||
not be a NL after the last list item. An empty item at the
|
||||
end does cause the last line in the file to end in a NL.
|
||||
All NL characters are replaced with a NUL character.
|
||||
|
||||
When {flags} contains "a" then append mode is used, lines are
|
||||
append to the file: >
|
||||
:call writefile(["foo"], "event.log", "a")
|
||||
:call writefile(["bar"], "event.log", "a")
|
||||
>
|
||||
< All NL characters are replaced with a NUL character.
|
||||
Inserting CR characters needs to be done before passing {list}
|
||||
to writefile().
|
||||
An existing file is overwritten, if possible.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*options.txt* For Vim version 7.4. Last change: 2014 Sep 23
|
||||
*options.txt* For Vim version 7.4. Last change: 2014 Nov 05
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -2221,7 +2221,7 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
|
||||
|
||||
*'cryptmethod'* *'cm'*
|
||||
'cryptmethod' string (default "zip")
|
||||
'cryptmethod' 'cm' string (default "zip")
|
||||
global or local to buffer |global-local|
|
||||
{not in Vi}
|
||||
Method used for encryption when the buffer is written to a file:
|
||||
@@ -4589,6 +4589,18 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
:source $VIMRUNTIME/menu.vim
|
||||
< Warning: This deletes all menus that you defined yourself!
|
||||
|
||||
*'langnoremap'* *'lnr'*
|
||||
'langnoremap' 'lnr' boolean (default off)
|
||||
global
|
||||
{not in Vi}
|
||||
{only available when compiled with the |+langmap|
|
||||
feature}
|
||||
When on, setting 'langmap' does not apply to characters resulting from
|
||||
a mapping. This basically means, if you noticed that setting
|
||||
'langmap' disables some of your mappings, try setting this option.
|
||||
This option defaults to off for backwards compatibility. Set it on if
|
||||
that works for you to avoid mappings to break.
|
||||
|
||||
*'laststatus'* *'ls'*
|
||||
'laststatus' 'ls' number (default 1)
|
||||
global
|
||||
@@ -5626,6 +5638,10 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
Note that when using the NFA engine and the pattern contains something
|
||||
that is not supported the pattern will not match. This is only useful
|
||||
for debugging the regexp engine.
|
||||
Using automatic selection enables Vim to switch the engine, if the
|
||||
default engine becomes too costly. E.g., when the NFA engine uses too
|
||||
many states. This should prevent Vim from hanging on a combination of
|
||||
a complex pattern with long text.
|
||||
|
||||
*'relativenumber'* *'rnu'* *'norelativenumber'* *'nornu'*
|
||||
'relativenumber' 'rnu' boolean (default off)
|
||||
@@ -7744,6 +7760,9 @@ A jump table for the options with a short description can be found at |Q_op|.
|
||||
current buffer: >
|
||||
setlocal ul=-1
|
||||
< This helps when you run out of memory for a single change.
|
||||
|
||||
The local value is set to -123456 when the global value is to be used.
|
||||
|
||||
Also see |clear-undo|.
|
||||
|
||||
*'undoreload'* *'ur'*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*quickref.txt* For Vim version 7.4. Last change: 2014 Aug 06
|
||||
*quickref.txt* For Vim version 7.4. Last change: 2014 Oct 22
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -1313,11 +1313,16 @@ Context-sensitive completion on the command-line:
|
||||
|CTRL-W_R| CTRL-W R rotate windows upwards
|
||||
|CTRL-W_x| CTRL-W x exchange current window with next one
|
||||
|
||||
|CTRL-W_=| CTRL-W = make all windows equal height
|
||||
|CTRL-W_=| CTRL-W = make all windows equal height & width
|
||||
|CTRL-W_-| CTRL-W - decrease current window height
|
||||
|CTRL-W_+| CTRL-W + increase current window height
|
||||
|CTRL-W__| CTRL-W _ set current window height (default:
|
||||
very high)
|
||||
|
||||
|CTRL-W_<| CTRL-W < decrease current window width
|
||||
|CTRL-W_>| CTRL-W > increase current window width
|
||||
|CTRL-W_bar| CTRL-W | set current window width (default:
|
||||
widest possible)
|
||||
------------------------------------------------------------------------------
|
||||
*Q_bu* Buffer list commands
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*repeat.txt* For Vim version 7.4. Last change: 2014 Mar 25
|
||||
*repeat.txt* For Vim version 7.4. Last change: 2014 Oct 29
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -64,6 +64,9 @@ replacement string.
|
||||
|
||||
For the definition of a pattern, see |pattern|.
|
||||
|
||||
NOTE [cmd] may contain a range; see |collapse| and |edit-paragraph-join| for
|
||||
examples.
|
||||
|
||||
The global commands work by first scanning through the [range] lines and
|
||||
marking each line where a match occurs (for a multi-line pattern, only the
|
||||
start of the match matters).
|
||||
|
||||
@@ -5473,6 +5473,7 @@ edit-dialogs editing.txt /*edit-dialogs*
|
||||
edit-files editing.txt /*edit-files*
|
||||
edit-intro editing.txt /*edit-intro*
|
||||
edit-no-break usr_25.txt /*edit-no-break*
|
||||
edit-paragraph-join usr_25.txt /*edit-paragraph-join*
|
||||
editing.txt editing.txt /*editing.txt*
|
||||
efm-%> quickfix.txt /*efm-%>*
|
||||
efm-entries quickfix.txt /*efm-entries*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*todo.txt* For Vim version 7.4. Last change: 2014 Oct 15
|
||||
*todo.txt* For Vim version 7.4. Last change: 2014 Nov 05
|
||||
|
||||
|
||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||
@@ -44,6 +44,7 @@ Regexp problems:
|
||||
2013 Dec 11)
|
||||
- Using \@> and \?. (Brett Stahlman, 2013 Dec 21) Remark from Marcin Szamotulski
|
||||
Remark from Brett 2014 Jan 6 and 7.
|
||||
- Difference in NFA and old engine. (Brett Stahlman, 2014 Nov 5)
|
||||
- Bug when using \>. (Ramel, 2014 Feb 2) (Aaron Bohannon, 2014 Feb 13)
|
||||
- NFA regexp doesn't handle \%<v correctly. (Ingo Karkat, 2014 May 12)
|
||||
- Does not work with NFA regexp engine:
|
||||
@@ -63,10 +64,6 @@ Breaks test_eval. Inefficient, can we only compute y_width when needed?
|
||||
Problem that a previous silent ":throw" causes a following try/catch not to
|
||||
work. (ZyX, 2013 Sep 28)
|
||||
|
||||
Patch to avoid problems with encoding conversion with diff.vim.
|
||||
(Yasuhiro Matsumoto, 2014 Sep 1.
|
||||
Depends on current language, language of file can be different.
|
||||
|
||||
":cd C:\Windows\System32\drivers\etc*" does not work, even though the
|
||||
directory exists. (Sergio Gallelli, 2013 Dec 29)
|
||||
|
||||
@@ -77,31 +74,26 @@ Patch by Marcin Szamotulski to add count to :close (2014 Aug 10, update Aug
|
||||
Make ":-1close" close the previous window.
|
||||
Doesn't look right, asked for updates.
|
||||
|
||||
C macro with number highlighted wrong. (Dominique Pelle, 2014 Oct 23)
|
||||
|
||||
The entries added by matchaddpos() are returned by getmatches() but can't be
|
||||
set with setmatches(). (lcd47, 2014 Jun 29)
|
||||
|
||||
Patch to fix that 0x80 in abbreviation isn't handled correctly.
|
||||
(Christian Brabandt, 2014 Oct 1)
|
||||
|
||||
Check for valid yank reg seems wrong. Patch by Zyx, 2014 Oct 12.
|
||||
|
||||
":sign-jump" uses first window in buffer instead of current window.
|
||||
Patch by James McCoy, 2013 Nov 22. Update 2014 Oct 5.
|
||||
|
||||
Patch to fix issue 57, on the issue.
|
||||
|
||||
Patch for issue 101, maintainer unreachable.
|
||||
|
||||
Gvim: when both Tab and CTRL-I are mapped, use CTRL-I not for Tab.
|
||||
|
||||
Patch to fix that last_changedtick is not update on saving. (Christian
|
||||
Brabandt, 2014 Oct 10, second one)
|
||||
Patch to add 'langnoremap'. (Christian Brabandt, 2014 Oct 15)
|
||||
Update Oct 20.
|
||||
|
||||
substitute() can be slow with long strings. Patch by Ozaki Kiichi, 2014 Oct
|
||||
12.
|
||||
Patch to add append mode to writefile(). (Yasuhiro Matsumoto, 2014 Nov 1)
|
||||
|
||||
Remove restriction in NSIS installer that the end of the path must be "Vim".
|
||||
(Tim Lebedkov, 2014 Sep 24) Again Oct 12.
|
||||
(Tim Lebedkov, 2014 Sep 24) Again Oct 12. Now on issue 272.
|
||||
|
||||
Fix that on MS-Windows MAX_PATH in bytes causes problems for file names
|
||||
between MAX_PATH and double that for double-byte encodings. (Ken Takata, 2014
|
||||
Oct 15)
|
||||
|
||||
Another problem with MAX_PATH, off-by-one. (Ken Takata, 2014 Oct 21)
|
||||
|
||||
Problem using ":try" inside ":execute". (ZyX, 2013 Sep 15)
|
||||
|
||||
@@ -117,11 +109,16 @@ Patch to fix issue 78. (Christian Brabandt, 2014 Oct 8)
|
||||
|
||||
Patch to fix leak in map() with error. (Christian Brabandt, 2014 Oct 11)
|
||||
|
||||
Patch to fix incsearch for "2/pattern/e".
|
||||
|
||||
Change behavior of v:hlsearch? Patch from Christian, 2014 Oct 22.
|
||||
|
||||
Value returned by virtcol() changes depending on how lines wrap. This is
|
||||
inconsistent with the documentation.
|
||||
|
||||
On MS-Windows running tests with Mercurial has problems when the input files
|
||||
are changed. (Ken Takata, Taro Muraoka, 2014 Sep 25)
|
||||
Update Nov 5.
|
||||
|
||||
MS-Windows: Crash opening very long file name starting with "\\".
|
||||
(Christian Brock, 2012 Jun 29)
|
||||
@@ -129,6 +126,9 @@ MS-Windows: Crash opening very long file name starting with "\\".
|
||||
ml_updatechunk() is slow when retrying for another encoding. (John Little,
|
||||
2014 Sep 11)
|
||||
|
||||
When 'balloonexpr' returns a list the result has a trailing newline.
|
||||
Just remove one trailing newline. (lcd, 2014 Oct 17)
|
||||
|
||||
Make comments in the test Makefile silent. (Kartik Agaram, 2014 Sep 24)
|
||||
|
||||
When in 'comments' "n:x" follows after three-part comment directly it repeats
|
||||
@@ -136,8 +136,16 @@ any one-character from the previous line. (Kartik Agaram, 2014 Sep 19)
|
||||
|
||||
Syntax highlighting slow (hangs) in SASS file. (Niek Bosch, 2013 Aug 21)
|
||||
|
||||
Patch to add the EndOfBuffer highlight group, used instead of NonText for "~"
|
||||
lines. (Marco Hinz, 2014 Nov 2)
|
||||
|
||||
Adding "~" to 'cdpath' doesn't work for completion? (Davido, 2013 Aug 19)
|
||||
|
||||
Can assign to s:type when a function s:type has been defined.
|
||||
Also the other way around: define a function while a variable with that name
|
||||
was already defined.
|
||||
(Yasuhiro Matsumoto, 2014 Nov 3)
|
||||
|
||||
Patch to make closed folds line up. (Charles Campbell, 2014 Sep 12)
|
||||
|
||||
Patch for building a 32bit Vim with 64bit MingW compiler.
|
||||
@@ -145,6 +153,11 @@ Patch for building a 32bit Vim with 64bit MingW compiler.
|
||||
|
||||
Delete old code in os_msdos.c, mch_FullName().
|
||||
|
||||
Using "." to repeat an Ex command puts that command in history. Probably
|
||||
should not happen. If the command is the result of a mapping it's not put in
|
||||
history either. (Jacob Niehus, 2014 Nov 2)
|
||||
Patch from Jacob, Nov 2.
|
||||
|
||||
"hi link" does not respect groups with GUI settings only. (Mark Lodato, 2014
|
||||
Jun 8)
|
||||
|
||||
@@ -183,6 +196,8 @@ its height? It's like dragging the status bar above it at the same time.
|
||||
Can we make ":unlet $VAR" use unsetenv() to delete the env var?
|
||||
What for systems that don't have unsetenv()?
|
||||
|
||||
Patch to add a :domodeline command. (Christian Brabandt, 2014 Oct 21)
|
||||
|
||||
This does not give an error: (Andre Sihera, 2014 Mar 21)
|
||||
vim -u NONE 1 2 3 -c 'bufdo if 1 | echo 1'
|
||||
This neither: (ZyX)
|
||||
@@ -635,6 +650,9 @@ Syntax region with 'concealends' and a 'cchar' value, 'conceallevel' set to 2,
|
||||
only one of the two ends gets the cchar displayed. (Brett Stahlman, 2010 Aug
|
||||
21, Ben Fritz, 2010 Sep 14)
|
||||
|
||||
The :syntax cchar value can only be a single character. It would be useful to
|
||||
support combining characters. (Charles Campbell)
|
||||
|
||||
'cursorline' works on a text line only. Add 'cursorscreenline' for
|
||||
highlighting the screen line. (Christian Brabandt, 2012 Mar 31)
|
||||
|
||||
@@ -759,6 +777,10 @@ Need for CursorHold that retriggers. Use a key that doesn't do anything, or a
|
||||
function that resets did_cursorhold.
|
||||
Patch by Christian Brabandt, 2011 May 6.
|
||||
|
||||
Add event for when the text scrolls. A bit like CursorMoved. Also a similar
|
||||
one for insert mode. Use the event in matchparen to update the highlight if
|
||||
the match scrolls into view.
|
||||
|
||||
7 Use "++--", "+++--" for different levels instead of "+---" "+----".
|
||||
Patch by Christian Brabandt, 2011 Jul 27.
|
||||
Update by Ben Fritz, with fix for TOhtml. (2011 Jul 30)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
*usr_25.txt* For Vim version 7.4. Last change: 2007 May 11
|
||||
*usr_25.txt* For Vim version 7.4. Last change: 2014 Oct 29
|
||||
|
||||
VIM USER MANUAL - by Bram Moolenaar
|
||||
|
||||
@@ -402,7 +402,7 @@ the cursor keys: >
|
||||
:map <Down> gj
|
||||
|
||||
|
||||
TURNING A PARAGRAPH INTO ONE LINE
|
||||
TURNING A PARAGRAPH INTO ONE LINE *edit-paragraph-join*
|
||||
|
||||
If you want to import text into a program like MS-Word, each paragraph should
|
||||
be a single line. If your paragraphs are currently separated with empty
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim support file to detect file types
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last Change: 2014 Oct 09
|
||||
" Last Change: 2014 Nov 05
|
||||
|
||||
" Listen very carefully, I will say this only once
|
||||
if exists("did_load_filetypes")
|
||||
@@ -782,6 +782,9 @@ au BufNewFile,BufRead *.git/config,.gitconfig,.gitmodules setf gitconfig
|
||||
au BufNewFile,BufRead *.git/modules/*/COMMIT_EDITMSG setf gitcommit
|
||||
au BufNewFile,BufRead *.git/modules/*/config setf gitconfig
|
||||
au BufNewFile,BufRead */.config/git/config setf gitconfig
|
||||
if !empty($XDG_CONFIG_HOME)
|
||||
au BufNewFile,BufRead $XDG_CONFIG_HOME/git/config setf gitconfig
|
||||
endif
|
||||
au BufNewFile,BufRead git-rebase-todo setf gitrebase
|
||||
au BufNewFile,BufRead .msg.[0-9]*
|
||||
\ if getline(1) =~ '^From.*# This line is ignored.$' |
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
" Vim syntax file
|
||||
" Language: Windows Registry export with regedit (*.reg)
|
||||
" Maintainer: Dominique St<EFBFBD>phan (dominique@mggen.com)
|
||||
" URL: http://www.mggen.com/vim/syntax/registry.zip
|
||||
" Last change: 2004 Apr 23
|
||||
" Maintainer: Dominique Stéphan (dominique@mggen.com)
|
||||
" URL: http://www.mggen.com/vim/syntax/registry.zip (doesn't work)
|
||||
" Last change: 2014 Oct 31
|
||||
" Included patch from Alexander A. Ulitin
|
||||
|
||||
" clear any unwanted syntax defs
|
||||
" For version 5.x: Clear all syntax items
|
||||
@@ -17,7 +18,7 @@ endif
|
||||
syn case ignore
|
||||
|
||||
" Head of regedit .reg files, it's REGEDIT4 on Win9#/NT
|
||||
syn match registryHead "^REGEDIT[0-9]*$"
|
||||
syn match registryHead "^REGEDIT[0-9]*\s*$\|^Windows Registry Editor Version \d*\.\d*\s*$"
|
||||
|
||||
" Comment
|
||||
syn match registryComment "^;.*$"
|
||||
@@ -58,7 +59,7 @@ syn region registryRemove start="\[\-" end="\]" contains=registryHKEY,registryGU
|
||||
" Subkey
|
||||
syn match registrySubKey "^\".*\"="
|
||||
" Default value
|
||||
syn match registrySubKey "^\@="
|
||||
syn match registrySubKey "^@="
|
||||
|
||||
" Numbers
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" An example for a vimrc file.
|
||||
"
|
||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||
" Last change: 2014 Feb 05
|
||||
" Last change: 2014 Nov 05
|
||||
"
|
||||
" To use it, copy it to
|
||||
" for Unix and OS/2: ~/.vimrc
|
||||
@@ -95,3 +95,10 @@ if !exists(":DiffOrig")
|
||||
command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis
|
||||
\ | wincmd p | diffthis
|
||||
endif
|
||||
|
||||
if has('langmap') && exists('+langnoremap')
|
||||
" Prevent that the langmap option applies to characters that result from a
|
||||
" mapping. If unset (default), this may break plugins (but it's backward
|
||||
" compatible).
|
||||
set langnoremap
|
||||
endif
|
||||
|
||||
@@ -228,11 +228,15 @@ at:
|
||||
|
||||
http://www.mingw.org/
|
||||
|
||||
or you can use 'MinGW-w64' compiler.
|
||||
|
||||
http://mingw-w64.sourceforge.net/
|
||||
|
||||
Once you have downloaded the compiler binaries, unpack them on your hard disk
|
||||
somewhere, and put them on your PATH. If you are on Win95/98 you can edit
|
||||
your AUTOEXEC.BAT file with a line like:
|
||||
|
||||
set PATH=C:\GCC-2.95.2\BIN;%PATH%
|
||||
set PATH=C:\MinGW\bin;%PATH%
|
||||
|
||||
or on NT/2000/XP, go to the Control Panel, (Performance and Maintenance),
|
||||
System, Advanced, and edit the environment from there.
|
||||
@@ -240,10 +244,10 @@ System, Advanced, and edit the environment from there.
|
||||
Test if gcc is on your path. From a CMD (or COMMAND on '95/98) window:
|
||||
|
||||
C:\> gcc --version
|
||||
2.95.2
|
||||
gcc (GCC) 4.8.1
|
||||
|
||||
C:\> make --version
|
||||
GNU Make version 3.77 (...etc...)
|
||||
C:\> mingw32-make --version
|
||||
GNU Make 3.82.90 (...etc...)
|
||||
|
||||
Now you are ready to rock 'n' roll. Unpack the vim sources (look on
|
||||
www.vim.org for exactly which version of the vim files you need).
|
||||
@@ -255,7 +259,7 @@ Change directory to 'vim\src':
|
||||
|
||||
and you type:
|
||||
|
||||
make -f Make_ming.mak gvim.exe
|
||||
mingw32-make -f Make_ming.mak gvim.exe
|
||||
|
||||
After churning for a while, you will end up with 'gvim.exe' in the 'vim\src'
|
||||
directory.
|
||||
@@ -264,7 +268,7 @@ You should not need to do *any* editing of any files to get vim compiled this
|
||||
way. If, for some reason, you want the console-mode-only version of vim (this
|
||||
is NOT recommended on Win32, especially on '95/'98!!!), you can use:
|
||||
|
||||
make -f Make_ming.mak GUI=no vim.exe
|
||||
mingw32-make -f Make_ming.mak GUI=no vim.exe
|
||||
|
||||
If you are dismayed by how big the EXE is, I strongly recommend you get 'UPX'
|
||||
(also free!) and compress the file (typical compression is 50%). UPX can be
|
||||
@@ -291,8 +295,7 @@ You need to uncomment lines in Make_ming.mak to have NLS defined.
|
||||
Use Make_cyg.mak with Cygwin's GCC. See
|
||||
http://users.skynet.be/antoine.mechelynck/vim/compile.htm
|
||||
|
||||
The Cygnus one many not fully work yet.
|
||||
With Cygnus gcc you can use the Unix Makefile instead (you need to get the
|
||||
With Cygnus gcc you should use the Unix Makefile instead (you need to get the
|
||||
Unix archive then). Then you get a Cygwin application (feels like Vim is
|
||||
running on Unix), while with Make_cyg.mak you get a Windows application (like
|
||||
with the other makefiles).
|
||||
@@ -316,9 +319,9 @@ your Linux (or other unix) box. To do this, you need to follow a few steps:
|
||||
http://www.mingw.org/wiki/LinuxCrossMinGW
|
||||
http://www.libsdl.org/extras/win32/cross/README.txt
|
||||
2) Get and unpack both the Unix sources and the extra archive
|
||||
3) in 'Make_ming.mak', set 'CROSS' to 'yes' instead of 'no'.
|
||||
Make further changes to 'Make_ming.mak' as you wish.
|
||||
If your cross-compiler prefix differs from the predefined value,
|
||||
3) in 'Make_cyg_ming.mak', set 'CROSS' to 'yes' instead of 'no'.
|
||||
Make further changes to 'Make_cyg_ming.mak' and 'Make_ming.mak' as you
|
||||
wish. If your cross-compiler prefix differs from the predefined value,
|
||||
set 'CROSS_COMPILE' corresponding.
|
||||
4) make -f Make_ming.mak gvim.exe
|
||||
|
||||
|
||||
757
src/Make_cyg.mak
757
src/Make_cyg.mak
@@ -1,735 +1,52 @@
|
||||
#
|
||||
# Makefile for VIM on Win32, using Cygnus gcc
|
||||
# Updated by Dan Sharp.
|
||||
# Last Change: 2014 Aug 10
|
||||
# Makefile for VIM on Win32, using MinGW cross compiler on Cygwin
|
||||
#
|
||||
# Also read INSTALLpc.txt!
|
||||
#
|
||||
# This compiles Vim as a Windows application. If you want Vim to run as a
|
||||
# Cygwin application use the Makefile (just like on Unix).
|
||||
#
|
||||
# GUI no or yes: set to yes if you want the GUI version (yes)
|
||||
# DIRECTX no or yes: set to yes if you want use DirectWrite (no)
|
||||
# PERL define to path to Perl dir to get Perl support (not defined)
|
||||
# PERL_VER define to version of Perl being used (56)
|
||||
# DYNAMIC_PERL no or yes: set to yes to load the Perl DLL dynamically (yes)
|
||||
# PYTHON define to path to Python dir to get PYTHON support (not defined)
|
||||
# PYTHON_VER define to version of Python being used (22)
|
||||
# DYNAMIC_PYTHON no or yes: use yes to load the Python DLL dynamically (yes)
|
||||
# PYTHON3 define to path to Python3 dir to get PYTHON3 support (not defined)
|
||||
# PYTHON3_VER define to version of Python3 being used (22)
|
||||
# DYNAMIC_PYTHON3 no or yes: use yes to load the Python3 DLL dynamically (yes)
|
||||
# TCL define to path to TCL dir to get TCL support (not defined)
|
||||
# TCL_VER define to version of TCL being used (83)
|
||||
# DYNAMIC_TCL no or yes: use yes to load the TCL DLL dynamically (yes)
|
||||
# RUBY define to path to Ruby dir to get Ruby support (not defined)
|
||||
# RUBY_VER define to version of Ruby being used (16)
|
||||
# RUBY_VER_LONG same, but in format with dot. (1.6)
|
||||
# You must set RUBY_VER_LONG when changing RUBY_VER.
|
||||
# You must set RUBY_API_VER version to RUBY_VER_LONG.
|
||||
# Don't set ruby API version to RUBY_VER like 191.
|
||||
# DYNAMIC_RUBY no or yes: use yes to load the Ruby DLL dynamically (yes)
|
||||
# MZSCHEME define to path to MzScheme dir to get MZSCHEME support (not defined)
|
||||
# MZSCHEME_VER define to version of MzScheme being used (209_000)
|
||||
# DYNAMIC_MZSCHEME no or yes: use yes to load the MzScheme DLLs dynamically (yes)
|
||||
# MZSCHEME_DLLS path to MzScheme DLLs (libmzgc and libmzsch), for "static" build.
|
||||
# MZSCHEME_USE_RACKET define to use "racket" instead of "mzsch".
|
||||
# LUA define to path to Lua dir to get Lua support (not defined)
|
||||
# LUA_VER define to version of Lua being used (51)
|
||||
# DYNAMIC_LUA no or yes: use yes to load the Lua DLL dynamically (yes)
|
||||
# GETTEXT no or yes: set to yes for dynamic gettext support (yes)
|
||||
# ICONV no or yes: set to yes for dynamic iconv support (yes)
|
||||
# MBYTE no or yes: set to yes to include multibyte support (yes)
|
||||
# IME no or yes: set to yes to include IME support (yes)
|
||||
# DYNAMIC_IME no or yes: set to yes to load imm32.dll dynamically (yes)
|
||||
# OLE no or yes: set to yes to make OLE gvim (no)
|
||||
# DEBUG no or yes: set to yes if you wish a DEBUGging build (no)
|
||||
# CPUNR No longer supported, use ARCH.
|
||||
# ARCH i386 through pentium4: select -march argument to compile with
|
||||
# (i386)
|
||||
# USEDLL no or yes: set to yes to use the Runtime library DLL (no)
|
||||
# For USEDLL=yes the cygwin1.dll is required to run Vim.
|
||||
# For "no" the mingw-gcc-g++ package or the mingw64-i686-gcc-g++
|
||||
# package is required to compile Vim. Or set CC to gcc-3 and add
|
||||
# -L/lib/w32api to EXTRA_LIBS.
|
||||
# POSTSCRIPT no or yes: set to yes for PostScript printing (no)
|
||||
# FEATURES TINY, SMALL, NORMAL, BIG or HUGE (BIG)
|
||||
# WINVER Lowest Win32 version to support. (0x0500)
|
||||
# CSCOPE no or yes: to include cscope interface support (yes)
|
||||
# OPTIMIZE SPACE, SPEED, or MAXSPEED: set optimization level (MAXSPEED)
|
||||
# NETBEANS no or yes: to include netbeans interface support (yes when GUI
|
||||
# is yes)
|
||||
# NBDEBUG no or yes: to include netbeans interface debugging support (no)
|
||||
# XPM define to path to XPM dir to get XPM image support (not defined)
|
||||
#>>>>> choose options:
|
||||
ifndef GUI
|
||||
GUI=yes
|
||||
endif
|
||||
|
||||
ifndef FEATURES
|
||||
FEATURES = BIG
|
||||
endif
|
||||
|
||||
ifndef GETTEXT
|
||||
GETTEXT = yes
|
||||
endif
|
||||
|
||||
ifndef ICONV
|
||||
ICONV = yes
|
||||
endif
|
||||
|
||||
ifndef MBYTE
|
||||
MBYTE = yes
|
||||
endif
|
||||
|
||||
ifndef IME
|
||||
IME = yes
|
||||
endif
|
||||
|
||||
ifndef ARCH
|
||||
ARCH = i386
|
||||
endif
|
||||
|
||||
ifndef DIRECTX
|
||||
DIRECTX = no
|
||||
endif
|
||||
|
||||
ifndef WINVER
|
||||
WINVER = 0x0500
|
||||
endif
|
||||
|
||||
ifndef CSCOPE
|
||||
CSCOPE = yes
|
||||
endif
|
||||
|
||||
ifndef NETBEANS
|
||||
ifeq ($(GUI),yes)
|
||||
NETBEANS = yes
|
||||
endif
|
||||
endif
|
||||
|
||||
ifndef OPTIMIZE
|
||||
OPTIMIZE = MAXSPEED
|
||||
endif
|
||||
# The old Make_cyg.mak (maintained by Dan Sharp et al.) was merged into
|
||||
# Make_cyg_ming.mak. Note: USEDLL option was removed.
|
||||
# This file contains Cygwin specific settings. Common settings are contained
|
||||
# in Make_cyg_ming.mak.
|
||||
#
|
||||
# Last updated by Ken Takata.
|
||||
# Last Change: 2014 Oct 21
|
||||
|
||||
|
||||
# Link against the shared version of libstdc++ by default. Set
|
||||
# STATIC_STDCPLUS to "yes" to link against static version instead.
|
||||
ifndef STATIC_STDCPLUS
|
||||
STATIC_STDCPLUS=no
|
||||
endif
|
||||
# uncomment 'PERL' if you want a perl-enabled version
|
||||
#PERL=/cygdrive/c/perl
|
||||
|
||||
### See feature.h for a list of optionals.
|
||||
### Any other defines can be included here.
|
||||
# uncomment 'LUA' if you want a Lua-enabled version
|
||||
#LUA=/cygdrive/c/lua
|
||||
|
||||
DEFINES = -DWIN32 -DHAVE_PATHDEF -DFEAT_$(FEATURES) \
|
||||
-DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER)
|
||||
ifeq ($(ARCH),x86-64)
|
||||
DEFINES+=-DMS_WIN64
|
||||
endif
|
||||
INCLUDES = -march=$(ARCH) -Iproto
|
||||
# uncomment 'MZSCHEME' if you want a MzScheme-enabled version
|
||||
#MZSCHEME=/cygdrive/d/plt
|
||||
|
||||
#>>>>> name of the compiler and linker, name of lib directory
|
||||
ifeq (yes, $(USEDLL))
|
||||
# CROSS_COMPILE is used for the gvimext DLL.
|
||||
# uncomment 'PYTHON' if you want a python-enabled version
|
||||
#PYTHON=/cygdrive/c/python20
|
||||
|
||||
# uncomment 'PYTHON3' if you want a python3-enabled version
|
||||
#PYTHON3=/cygdrive/c/python31
|
||||
|
||||
# uncomment 'TCL' if you want a Tcl-enabled version
|
||||
#TCL=/cygdrive/c/tcl
|
||||
|
||||
# uncomment 'RUBY' if you want a Ruby-enabled version
|
||||
#RUBY=/cygdribe/c/ruby
|
||||
|
||||
|
||||
# Use MinGW(-w64) cross compiler.
|
||||
# There are three MinGW packages in Cygwin:
|
||||
# 32-bit: mingw-gcc-g++ and mingw64-i686-gcc-g++
|
||||
# 64-bit: mingw64-x86_64-gcc-g++
|
||||
# You may also need to set 'ARCH' in Make_cyg_ming.mak.
|
||||
CROSS_COMPILE = i686-pc-mingw32-
|
||||
CC = gcc
|
||||
RC = windres
|
||||
else
|
||||
# i686-pc-mingw32-gcc, i686-w64-mingw32-gcc or gcc-3 can be used.
|
||||
CROSS_COMPILE = i686-pc-mingw32-
|
||||
CC = $(CROSS_COMPILE)gcc
|
||||
RC = $(CROSS_COMPILE)windres
|
||||
endif
|
||||
#CROSS_COMPILE = i686-w64-mingw32-
|
||||
#CROSS_COMPILE = x86_64-w64-mingw32-
|
||||
|
||||
##############################
|
||||
# DYNAMIC_PERL=yes and no both work
|
||||
##############################
|
||||
ifdef PERL
|
||||
DEFINES += -DFEAT_PERL
|
||||
INCLUDES += -I$(PERL)/lib/CORE
|
||||
EXTRA_OBJS += $(OUTDIR)/if_perl.o
|
||||
|
||||
ifndef DYNAMIC_PERL
|
||||
DYNAMIC_PERL = yes
|
||||
endif
|
||||
|
||||
ifndef PERL_VER
|
||||
PERL_VER = 56
|
||||
endif
|
||||
|
||||
ifeq (yes, $(DYNAMIC_PERL))
|
||||
DEFINES += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\"
|
||||
else
|
||||
EXTRA_LIBS += -L$(PERL)/lib/CORE -lperl$(PERL_VER)
|
||||
endif
|
||||
endif
|
||||
|
||||
##############################
|
||||
# DYNAMIC_PYTHON=yes works.
|
||||
# DYNAMIC_PYTHON=no does not (unresolved externals on link).
|
||||
##############################
|
||||
ifdef PYTHON
|
||||
DEFINES += -DFEAT_PYTHON
|
||||
EXTRA_OBJS += $(OUTDIR)/if_python.o
|
||||
|
||||
ifndef DYNAMIC_PYTHON
|
||||
DYNAMIC_PYTHON = yes
|
||||
endif
|
||||
|
||||
ifndef PYTHON_VER
|
||||
PYTHON_VER = 22
|
||||
endif
|
||||
|
||||
ifeq (yes, $(DYNAMIC_PYTHON))
|
||||
DEFINES += -DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\"
|
||||
else
|
||||
EXTRA_LIBS += $(PYTHON)/libs/python$(PYTHON_VER).lib
|
||||
endif
|
||||
endif
|
||||
|
||||
##############################
|
||||
# DYNAMIC_PYTHON3=yes works.
|
||||
# DYNAMIC_PYTHON3=no does not (unresolved externals on link).
|
||||
##############################
|
||||
ifdef PYTHON3
|
||||
DEFINES += -DFEAT_PYTHON3
|
||||
EXTRA_OBJS += $(OUTDIR)/if_python3.o
|
||||
|
||||
ifndef DYNAMIC_PYTHON3
|
||||
DYNAMIC_PYTHON3 = yes
|
||||
endif
|
||||
|
||||
ifndef PYTHON3_VER
|
||||
PYTHON3_VER = 31
|
||||
endif
|
||||
|
||||
ifeq (yes, $(DYNAMIC_PYTHON3))
|
||||
DEFINES += -DDYNAMIC_PYTHON3 -DDYNAMIC_PYTHON3_DLL=\"python$(PYTHON3_VER).dll\"
|
||||
else
|
||||
EXTRA_LIBS += $(PYTHON3)/libs/python$(PYTHON3_VER).lib
|
||||
endif
|
||||
endif
|
||||
|
||||
##############################
|
||||
# DYNAMIC_RUBY=yes works.
|
||||
# DYNAMIC_RUBY=no does not (process exits).
|
||||
##############################
|
||||
ifdef RUBY
|
||||
|
||||
ifndef DYNAMIC_RUBY
|
||||
DYNAMIC_RUBY=yes
|
||||
endif
|
||||
# Set default value
|
||||
ifndef RUBY_VER
|
||||
RUBY_VER = 16
|
||||
endif
|
||||
ifndef RUBY_VER_LONG
|
||||
RUBY_VER_LONG = 1.6
|
||||
endif
|
||||
ifndef RUBY_API_VER
|
||||
RUBY_API_VER = $(subst .,,$(RUBY_VER_LONG))
|
||||
endif
|
||||
|
||||
ifndef RUBY_PLATFORM
|
||||
ifeq ($(RUBY_VER), 16)
|
||||
RUBY_PLATFORM = i586-mswin32
|
||||
else
|
||||
ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),)
|
||||
RUBY_PLATFORM = i386-mingw32
|
||||
else
|
||||
ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/x64-mingw32),)
|
||||
RUBY_PLATFORM = x64-mingw32
|
||||
else
|
||||
RUBY_PLATFORM = i386-mswin32
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifndef RUBY_INSTALL_NAME
|
||||
ifeq ($(RUBY_VER), 16)
|
||||
RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER)
|
||||
else
|
||||
ifeq ($(ARCH),x86-64)
|
||||
RUBY_INSTALL_NAME = x64-msvcrt-ruby$(RUBY_API_VER)
|
||||
else
|
||||
RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq (19, $(word 1,$(sort 19 $(RUBY_VER))))
|
||||
RUBY_19_OR_LATER = 1
|
||||
endif
|
||||
|
||||
DEFINES += -DFEAT_RUBY
|
||||
ifneq ($(findstring w64-mingw32,$(CC)),)
|
||||
# A workaround for mingw-w64
|
||||
DEFINES += -DHAVE_STRUCT_TIMESPEC -DHAVE_STRUCT_TIMEZONE
|
||||
endif
|
||||
INCLUDES += -I$(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM)
|
||||
ifdef RUBY_19_OR_LATER
|
||||
INCLUDES += -I$(RUBY)/include/ruby-$(RUBY_VER_LONG) -I$(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM)
|
||||
endif
|
||||
EXTRA_OBJS += $(OUTDIR)/if_ruby.o
|
||||
|
||||
ifeq (yes, $(DYNAMIC_RUBY))
|
||||
DEFINES += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\"
|
||||
DEFINES += -DDYNAMIC_RUBY_VER=$(RUBY_VER)
|
||||
else
|
||||
EXTRA_LIBS += $(RUBY)/lib/$(RUBY_INSTALL_NAME)
|
||||
endif
|
||||
endif
|
||||
|
||||
##############################
|
||||
# DYNAMIC_MZSCHEME=yes works
|
||||
# DYNAMIC_MZSCHEME=no works too
|
||||
##############################
|
||||
ifdef MZSCHEME
|
||||
DEFINES += -DFEAT_MZSCHEME
|
||||
INCLUDES += -I$(MZSCHEME)/include
|
||||
EXTRA_OBJS += $(OUTDIR)/if_mzsch.o
|
||||
|
||||
ifndef DYNAMIC_MZSCHEME
|
||||
DYNAMIC_MZSCHEME = yes
|
||||
endif
|
||||
|
||||
ifndef MZSCHEME_VER
|
||||
MZSCHEME_VER = 209_000
|
||||
endif
|
||||
|
||||
ifndef MZSCHEME_PRECISE_GC
|
||||
MZSCHEME_PRECISE_GC=no
|
||||
endif
|
||||
|
||||
# for version 4.x we need to generate byte-code for Scheme base
|
||||
ifndef MZSCHEME_GENERATE_BASE
|
||||
MZSCHEME_GENERATE_BASE=no
|
||||
endif
|
||||
|
||||
ifndef MZSCHEME_USE_RACKET
|
||||
MZSCHEME_MAIN_LIB=mzsch
|
||||
else
|
||||
MZSCHEME_MAIN_LIB=racket
|
||||
endif
|
||||
|
||||
ifeq (yes, $(DYNAMIC_MZSCHEME))
|
||||
DEFINES += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
|
||||
else
|
||||
ifndef MZSCHEME_DLLS
|
||||
MZSCHEME_DLLS = $(MZSCHEME)
|
||||
endif
|
||||
ifeq (yes,$(MZSCHEME_PRECISE_GC))
|
||||
MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER)
|
||||
else
|
||||
MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
|
||||
endif
|
||||
EXTRA_LIBS += -L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)/lib $(MZSCHEME_LIB)
|
||||
endif
|
||||
ifeq (yes,$(MZSCHEME_GENERATE_BASE))
|
||||
DEFINES += -DINCLUDE_MZSCHEME_BASE
|
||||
MZ_EXTRA_DEP += mzscheme_base.c
|
||||
endif
|
||||
ifeq (yes,$(MZSCHEME_PRECISE_GC))
|
||||
DEFINES += -DMZ_PRECISE_GC
|
||||
endif
|
||||
endif
|
||||
|
||||
##############################
|
||||
# DYNAMIC_TCL=yes and no both work.
|
||||
##############################
|
||||
ifdef TCL
|
||||
DEFINES += -DFEAT_TCL
|
||||
INCLUDES += -I$(TCL)/include
|
||||
EXTRA_OBJS += $(OUTDIR)/if_tcl.o
|
||||
|
||||
ifndef DYNAMIC_TCL
|
||||
DYNAMIC_TCL = yes
|
||||
endif
|
||||
|
||||
ifndef TCL_VER
|
||||
TCL_VER = 83
|
||||
endif
|
||||
|
||||
ifeq (yes, $(DYNAMIC_TCL))
|
||||
DEFINES += -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl$(TCL_VER).dll\"
|
||||
EXTRA_LIBS += $(TCL)/lib/tclstub$(TCL_VER).lib
|
||||
else
|
||||
EXTRA_LIBS += $(TCL)/lib/tcl$(TCL_VER).lib
|
||||
endif
|
||||
endif
|
||||
|
||||
##############################
|
||||
# DYNAMIC_LUA=yes works.
|
||||
# DYNAMIC_LUA=no does not (unresolved externals on link).
|
||||
##############################
|
||||
ifdef LUA
|
||||
DEFINES += -DFEAT_LUA
|
||||
INCLUDES += -I$(LUA)/include
|
||||
EXTRA_OBJS += $(OUTDIR)/if_lua.o
|
||||
|
||||
ifndef DYNAMIC_LUA
|
||||
DYNAMIC_LUA = yes
|
||||
endif
|
||||
|
||||
ifndef LUA_VER
|
||||
LUA_VER = 51
|
||||
endif
|
||||
|
||||
ifeq (yes, $(DYNAMIC_LUA))
|
||||
DEFINES += -DDYNAMIC_LUA -DDYNAMIC_LUA_DLL=\"lua$(LUA_VER).dll\"
|
||||
else
|
||||
EXTRA_LIBS += $(LUA)/lib/lua$(LUA_VER).lib
|
||||
endif
|
||||
endif
|
||||
|
||||
##############################
|
||||
ifeq (yes, $(GETTEXT))
|
||||
DEFINES += -DDYNAMIC_GETTEXT
|
||||
endif
|
||||
|
||||
##############################
|
||||
ifeq (yes, $(ICONV))
|
||||
DEFINES += -DDYNAMIC_ICONV
|
||||
endif
|
||||
|
||||
##############################
|
||||
ifeq (yes, $(MBYTE))
|
||||
DEFINES += -DFEAT_MBYTE
|
||||
endif
|
||||
|
||||
##############################
|
||||
ifeq (yes, $(IME))
|
||||
DEFINES += -DFEAT_MBYTE_IME
|
||||
|
||||
ifndef DYNAMIC_IME
|
||||
DYNAMIC_IME = yes
|
||||
endif
|
||||
|
||||
ifeq (yes, $(DYNAMIC_IME))
|
||||
DEFINES += -DDYNAMIC_IME
|
||||
else
|
||||
EXTRA_LIBS += -limm32
|
||||
endif
|
||||
endif
|
||||
|
||||
##############################
|
||||
ifeq (yes, $(DEBUG))
|
||||
DEFINES += -DDEBUG
|
||||
INCLUDES += -g -fstack-check
|
||||
DEBUG_SUFFIX = d
|
||||
else
|
||||
|
||||
ifeq ($(OPTIMIZE), SIZE)
|
||||
OPTFLAG = -Os
|
||||
else
|
||||
ifeq ($(OPTIMIZE), MAXSPEED)
|
||||
OPTFLAG = -O3 -fomit-frame-pointer -freg-struct-return
|
||||
else
|
||||
OPTFLAG = -O2
|
||||
endif
|
||||
endif
|
||||
|
||||
# A bug in the GCC <= 3.2 optimizer can cause a crash. The
|
||||
# following option removes the problem optimization.
|
||||
OPTFLAG += -fno-strength-reduce
|
||||
|
||||
INCLUDES += -s
|
||||
|
||||
endif
|
||||
|
||||
##############################
|
||||
# USEDLL=yes will build a Cygwin32 executable that relies on cygwin1.dll.
|
||||
# USEDLL=no will build a Mingw32 executable with no extra dll dependencies.
|
||||
##############################
|
||||
ifeq (yes, $(USEDLL))
|
||||
DEFINES += -D_MAX_PATH=256 -D__CYGWIN__
|
||||
endif
|
||||
|
||||
##############################
|
||||
ifeq (yes, $(POSTSCRIPT))
|
||||
DEFINES += -DMSWINPS
|
||||
endif
|
||||
|
||||
##############################
|
||||
ifeq (yes, $(CSCOPE))
|
||||
DEFINES += -DFEAT_CSCOPE
|
||||
EXTRA_OBJS += $(OUTDIR)/if_cscope.o
|
||||
endif
|
||||
|
||||
##############################
|
||||
ifeq ($(GUI),yes)
|
||||
|
||||
##############################
|
||||
ifeq (yes, $(NETBEANS))
|
||||
# Only allow NETBEANS for a GUI build.
|
||||
DEFINES += -DFEAT_NETBEANS_INTG
|
||||
EXTRA_OBJS += $(OUTDIR)/netbeans.o
|
||||
EXTRA_LIBS += -lwsock32
|
||||
|
||||
ifeq (yes, $(NBDEBUG))
|
||||
DEFINES += -DNBDEBUG
|
||||
NBDEBUG_DEP = nbdebug.h nbdebug.c
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
##############################
|
||||
ifeq (yes, $(DIRECTX))
|
||||
# Only allow DIRECTX for a GUI build.
|
||||
DEFINES += -DFEAT_DIRECTX -DDYNAMIC_DIRECTX
|
||||
EXTRA_OBJS += $(OUTDIR)/gui_dwrite.o
|
||||
EXTRA_LIBS += -ld2d1 -ldwrite
|
||||
USE_STDCPLUS = yes
|
||||
endif
|
||||
|
||||
##############################
|
||||
ifneq ($(XPM),no)
|
||||
# Only allow XPM for a GUI build.
|
||||
DEFINES += -DFEAT_XPM_W32
|
||||
INCLUDES += -I$(XPM)/include
|
||||
EXTRA_OBJS += $(OUTDIR)/xpm_w32.o
|
||||
EXTRA_LIBS += -L$(XPM)/lib -lXpm
|
||||
endif
|
||||
|
||||
##############################
|
||||
EXE = gvim$(DEBUG_SUFFIX).exe
|
||||
OUTDIR = gobj$(DEBUG_SUFFIX)
|
||||
DEFINES += -DFEAT_GUI_W32 -DFEAT_CLIPBOARD
|
||||
EXTRA_OBJS += $(OUTDIR)/gui.o $(OUTDIR)/gui_w32.o $(OUTDIR)/gui_beval.o $(OUTDIR)/os_w32exe.o
|
||||
EXTRA_LIBS += -mwindows -lcomctl32 -lversion
|
||||
else
|
||||
EXE = vim$(DEBUG_SUFFIX).exe
|
||||
OUTDIR = obj$(DEBUG_SUFFIX)
|
||||
LIBS += -luser32 -lgdi32 -lcomdlg32
|
||||
endif
|
||||
|
||||
##############################
|
||||
ifeq (yes, $(OLE))
|
||||
DEFINES += -DFEAT_OLE
|
||||
EXTRA_OBJS += $(OUTDIR)/if_ole.o
|
||||
EXTRA_LIBS += -loleaut32
|
||||
USE_STDCPLUS = yes
|
||||
endif
|
||||
|
||||
##############################
|
||||
ifneq (sh.exe, $(SHELL))
|
||||
DEL = rm
|
||||
MKDIR = mkdir -p
|
||||
DIRSLASH = /
|
||||
else
|
||||
DEL = del
|
||||
MKDIR = mkdir
|
||||
DIRSLASH = \\
|
||||
endif
|
||||
|
||||
##############################
|
||||
ifeq (yes, $(USE_STDCPLUS))
|
||||
ifeq (yes, $(STATIC_STDCPLUS))
|
||||
EXTRA_LIBS += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic
|
||||
else
|
||||
EXTRA_LIBS += -lstdc++
|
||||
endif
|
||||
endif
|
||||
|
||||
#>>>>> end of choices
|
||||
###########################################################################
|
||||
|
||||
INCL = vim.h globals.h option.h keymap.h macros.h ascii.h term.h os_win32.h \
|
||||
structs.h version.h
|
||||
|
||||
CFLAGS = $(OPTFLAG) $(DEFINES) $(INCLUDES)
|
||||
|
||||
RCFLAGS = -O coff $(DEFINES)
|
||||
|
||||
OBJ = \
|
||||
$(OUTDIR)/blowfish.o \
|
||||
$(OUTDIR)/buffer.o \
|
||||
$(OUTDIR)/charset.o \
|
||||
$(OUTDIR)/crypt.o \
|
||||
$(OUTDIR)/crypt_zip.o \
|
||||
$(OUTDIR)/diff.o \
|
||||
$(OUTDIR)/digraph.o \
|
||||
$(OUTDIR)/edit.o \
|
||||
$(OUTDIR)/eval.o \
|
||||
$(OUTDIR)/ex_cmds.o \
|
||||
$(OUTDIR)/ex_cmds2.o \
|
||||
$(OUTDIR)/ex_docmd.o \
|
||||
$(OUTDIR)/ex_eval.o \
|
||||
$(OUTDIR)/ex_getln.o \
|
||||
$(OUTDIR)/fileio.o \
|
||||
$(OUTDIR)/fold.o \
|
||||
$(OUTDIR)/getchar.o \
|
||||
$(OUTDIR)/hardcopy.o \
|
||||
$(OUTDIR)/hashtab.o \
|
||||
$(OUTDIR)/main.o \
|
||||
$(OUTDIR)/mark.o \
|
||||
$(OUTDIR)/memfile.o \
|
||||
$(OUTDIR)/memline.o \
|
||||
$(OUTDIR)/menu.o \
|
||||
$(OUTDIR)/message.o \
|
||||
$(OUTDIR)/misc1.o \
|
||||
$(OUTDIR)/misc2.o \
|
||||
$(OUTDIR)/move.o \
|
||||
$(OUTDIR)/mbyte.o \
|
||||
$(OUTDIR)/normal.o \
|
||||
$(OUTDIR)/ops.o \
|
||||
$(OUTDIR)/option.o \
|
||||
$(OUTDIR)/os_win32.o \
|
||||
$(OUTDIR)/os_mswin.o \
|
||||
$(OUTDIR)/winclip.o \
|
||||
$(OUTDIR)/pathdef.o \
|
||||
$(OUTDIR)/popupmnu.o \
|
||||
$(OUTDIR)/quickfix.o \
|
||||
$(OUTDIR)/regexp.o \
|
||||
$(OUTDIR)/screen.o \
|
||||
$(OUTDIR)/search.o \
|
||||
$(OUTDIR)/sha256.o \
|
||||
$(OUTDIR)/spell.o \
|
||||
$(OUTDIR)/syntax.o \
|
||||
$(OUTDIR)/tag.o \
|
||||
$(OUTDIR)/term.o \
|
||||
$(OUTDIR)/ui.o \
|
||||
$(OUTDIR)/undo.o \
|
||||
$(OUTDIR)/version.o \
|
||||
$(OUTDIR)/vimrc.o \
|
||||
$(OUTDIR)/window.o \
|
||||
$(EXTRA_OBJS)
|
||||
|
||||
all: $(EXE) xxd/xxd.exe vimrun.exe install.exe uninstal.exe GvimExt/gvimext.dll
|
||||
|
||||
# According to the Cygwin doc 1.2 FAQ, kernel32 should not be specified for
|
||||
# linking unless calling ld directly.
|
||||
# See /usr/doc/cygwin-doc-1.2/html/faq_toc.html#TOC93 for more information.
|
||||
$(EXE): $(OUTDIR) $(OBJ)
|
||||
$(CC) $(CFLAGS) -o $(EXE) $(OBJ) $(LIBS) -luuid -lole32 $(EXTRA_LIBS)
|
||||
|
||||
xxd/xxd.exe: xxd/xxd.c
|
||||
$(MAKE) -C xxd -f Make_cyg.mak CC=$(CC) USEDLL=$(USEDLL)
|
||||
|
||||
GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
|
||||
$(MAKE) -C GvimExt -f Make_cyg.mak CROSS_COMPILE=$(CROSS_COMPILE)
|
||||
|
||||
vimrun.exe: vimrun.c
|
||||
$(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIBS)
|
||||
|
||||
install.exe: dosinst.c
|
||||
$(CC) $(CFLAGS) -o install.exe dosinst.c $(LIBS) -luuid -lole32
|
||||
|
||||
uninstal.exe: uninstal.c
|
||||
$(CC) $(CFLAGS) -o uninstal.exe uninstal.c $(LIBS)
|
||||
|
||||
$(OUTDIR):
|
||||
$(MKDIR) $(OUTDIR)
|
||||
|
||||
tags:
|
||||
command /c ctags *.c $(INCL)
|
||||
|
||||
clean:
|
||||
-$(DEL) $(OUTDIR)$(DIRSLASH)*.o
|
||||
-rmdir $(OUTDIR)
|
||||
-$(DEL) $(EXE) vimrun.exe install.exe uninstal.exe
|
||||
ifdef PERL
|
||||
-$(DEL) if_perl.c
|
||||
endif
|
||||
ifdef MZSCHEME
|
||||
-$(DEL) mzscheme_base.c
|
||||
endif
|
||||
-$(DEL) pathdef.c
|
||||
$(MAKE) -C xxd -f Make_cyg.mak clean
|
||||
$(MAKE) -C GvimExt -f Make_cyg.mak clean
|
||||
|
||||
distclean: clean
|
||||
-$(DEL) obj$(DIRSLASH)*.o
|
||||
-rmdir obj
|
||||
-$(DEL) gobj$(DIRSLASH)*.o
|
||||
-rmdir gobj
|
||||
-$(DEL) objd$(DIRSLASH)*.o
|
||||
-rmdir objd
|
||||
-$(DEL) gobjd$(DIRSLASH)*.o
|
||||
-rmdir gobjd
|
||||
-$(DEL) *.exe
|
||||
|
||||
###########################################################################
|
||||
|
||||
$(OUTDIR)/%.o : %.c $(INCL)
|
||||
$(CC) -c $(CFLAGS) $< -o $@
|
||||
|
||||
$(OUTDIR)/ex_docmd.o: ex_docmd.c $(INCL) ex_cmds.h
|
||||
$(CC) -c $(CFLAGS) ex_docmd.c -o $(OUTDIR)/ex_docmd.o
|
||||
|
||||
$(OUTDIR)/ex_eval.o: ex_eval.c $(INCL) ex_cmds.h
|
||||
$(CC) -c $(CFLAGS) ex_eval.c -o $(OUTDIR)/ex_eval.o
|
||||
|
||||
$(OUTDIR)/gui_w32.o: gui_w32.c gui_w48.c $(INCL)
|
||||
$(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o
|
||||
|
||||
$(OUTDIR)/gui_dwrite.o: gui_dwrite.cpp $(INCL) gui_dwrite.h
|
||||
$(CC) -c $(CFLAGS) gui_dwrite.cpp -o $(OUTDIR)/gui_dwrite.o
|
||||
|
||||
$(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h
|
||||
$(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o
|
||||
|
||||
$(OUTDIR)/if_ole.o: if_ole.cpp $(INCL)
|
||||
$(CC) -c $(CFLAGS) if_ole.cpp -o $(OUTDIR)/if_ole.o
|
||||
|
||||
$(OUTDIR)/if_python.o : if_python.c if_py_both.h $(INCL)
|
||||
$(CC) -c $(CFLAGS) -I$(PYTHON)/include $< -o $@
|
||||
|
||||
$(OUTDIR)/if_python3.o : if_python3.c if_py_both.h $(INCL)
|
||||
$(CC) -c $(CFLAGS) -I$(PYTHON3)/include $< -o $@
|
||||
|
||||
if_perl.c: if_perl.xs typemap
|
||||
$(PERL)/bin/perl `cygpath -d $(PERL)/lib/ExtUtils/xsubpp` \
|
||||
-prototypes -typemap \
|
||||
`cygpath -d $(PERL)/lib/ExtUtils/typemap` if_perl.xs > $@
|
||||
|
||||
$(OUTDIR)/if_perl.o: if_perl.c $(INCL)
|
||||
ifeq (yes, $(USEDLL))
|
||||
$(CC) -c $(CFLAGS) -I/usr/include/mingw -D__MINGW32__ if_perl.c -o $(OUTDIR)/if_perl.o
|
||||
endif
|
||||
|
||||
$(OUTDIR)/if_ruby.o: if_ruby.c $(INCL)
|
||||
ifeq (16, $(RUBY_VER))
|
||||
$(CC) -c $(CFLAGS) -U_WIN32 if_ruby.c -o $(OUTDIR)/if_ruby.o
|
||||
endif
|
||||
|
||||
$(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_DEP)
|
||||
$(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o
|
||||
|
||||
$(OUTDIR)/regexp.o: regexp.c regexp_nfa.c $(INCL)
|
||||
$(CC) -c $(CFLAGS) regexp.c -o $(OUTDIR)/regexp.o
|
||||
|
||||
$(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP)
|
||||
$(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o
|
||||
|
||||
$(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h
|
||||
$(RC) $(RCFLAGS) vim.rc -o $(OUTDIR)/vimrc.o
|
||||
|
||||
mzscheme_base.c:
|
||||
$(MZSCHEME)/mzc --c-mods mzscheme_base.c ++lib scheme/base
|
||||
|
||||
pathdef.c: $(INCL)
|
||||
ifneq (sh.exe, $(SHELL))
|
||||
@echo creating pathdef.c
|
||||
@echo '/* pathdef.c */' > pathdef.c
|
||||
@echo '#include "vim.h"' >> pathdef.c
|
||||
@echo 'char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)";' >> pathdef.c
|
||||
@echo 'char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)";' >> pathdef.c
|
||||
@echo 'char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)";' >> pathdef.c
|
||||
@echo 'char_u *all_lflags = (char_u *)"$(CC) -s -o $(EXE) $(LIBS) -luuid -lole32 $(EXTRA_LIBS)";' >> pathdef.c
|
||||
@echo 'char_u *compiled_user = (char_u *)"$(USERNAME)";' >> pathdef.c
|
||||
@echo 'char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";' >> pathdef.c
|
||||
else
|
||||
@echo creating pathdef.c
|
||||
@echo /* pathdef.c */ > pathdef.c
|
||||
@echo #include "vim.h" >> pathdef.c
|
||||
@echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)"; >> pathdef.c
|
||||
@echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)"; >> pathdef.c
|
||||
@echo char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)"; >> pathdef.c
|
||||
@echo char_u *all_lflags = (char_u *)"$(CC) -s -o $(EXE) $(LIBS) -luuid -lole32 $(EXTRA_LIBS)"; >> pathdef.c
|
||||
@echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> pathdef.c
|
||||
@echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> pathdef.c
|
||||
endif
|
||||
|
||||
# Do not change this.
|
||||
UNDER_CYGWIN = yes
|
||||
include Make_cyg_ming.mak
|
||||
|
||||
847
src/Make_cyg_ming.mak
Normal file
847
src/Make_cyg_ming.mak
Normal file
@@ -0,0 +1,847 @@
|
||||
# Makefile for VIM on Win32 (Cygwin and MinGW)
|
||||
#
|
||||
# This file contains common part for Cygwin and MinGW and it is included
|
||||
# from Make_cyg.mak and Make_ming.mak.
|
||||
#
|
||||
# Info at http://www.mingw.org
|
||||
# Alternative x86 and 64-builds: http://mingw-w64.sourceforge.net
|
||||
# Also requires GNU make, which you can download from the same sites.
|
||||
# Get missing libraries from http://gnuwin32.sf.net.
|
||||
#
|
||||
# Tested on Win32 NT 4 and Win95.
|
||||
#
|
||||
# To make everything, just 'make -f Make_ming.mak'.
|
||||
# To make just e.g. gvim.exe, 'make -f Make_ming.mak gvim.exe'.
|
||||
# After a run, you can 'make -f Make_ming.mak clean' to clean up.
|
||||
#
|
||||
# NOTE: Sometimes 'GNU Make' will stop after building vimrun.exe -- I think
|
||||
# it's just run out of memory or something. Run again, and it will continue
|
||||
# with 'xxd'.
|
||||
#
|
||||
# "make upx" makes *compressed* versions of the 32 bit GUI and console EXEs,
|
||||
# using the excellent UPX compressor:
|
||||
# http://upx.sourceforge.net/
|
||||
# "make mpress" uses the MPRESS compressor for 32- and 64-bit EXEs:
|
||||
# http://www.matcode.com/mpress.htm
|
||||
#
|
||||
# Maintained by Ron Aaron <ronaharon@yahoo.com> et al.
|
||||
# Updated 2014 Oct 13.
|
||||
|
||||
#>>>>> choose options:
|
||||
# set to yes for a debug build
|
||||
DEBUG=no
|
||||
# set to SIZE for size, SPEED for speed, MAXSPEED for maximum optimization
|
||||
OPTIMIZE=MAXSPEED
|
||||
# set to yes to make gvim, no for vim
|
||||
GUI=yes
|
||||
# set to yes if you want to use DirectWrite (DirectX)
|
||||
# MinGW-w64 is needed, and ARCH should be set to i686 or x86-64.
|
||||
DIRECTX=no
|
||||
# FEATURES=[TINY | SMALL | NORMAL | BIG | HUGE]
|
||||
# Set to TINY to make minimal version (few features).
|
||||
FEATURES=BIG
|
||||
# Set to one of i386, i486, i586, i686 as the minimum target processor.
|
||||
# For amd64/x64 architecture set ARCH=x86-64 .
|
||||
ARCH=i386
|
||||
# Set to yes to cross-compile from unix; no=native Windows (and Cygwin).
|
||||
CROSS=no
|
||||
# Set to path to iconv.h and libiconv.a to enable using 'iconv.dll'.
|
||||
#ICONV="."
|
||||
ICONV=yes
|
||||
GETTEXT=yes
|
||||
# Set to yes to include multibyte support.
|
||||
MBYTE=yes
|
||||
# Set to yes to include IME support.
|
||||
IME=yes
|
||||
DYNAMIC_IME=yes
|
||||
# Set to yes to enable writing a postscript file with :hardcopy.
|
||||
POSTSCRIPT=no
|
||||
# Set to yes to enable OLE support.
|
||||
OLE=no
|
||||
# Set the default $(WINVER) to make it work with pre-Win2k.
|
||||
ifndef WINVER
|
||||
WINVER = 0x0500
|
||||
endif
|
||||
# Set to yes to enable Cscope support.
|
||||
CSCOPE=yes
|
||||
# Set to yes to enable Netbeans support.
|
||||
NETBEANS=$(GUI)
|
||||
|
||||
|
||||
# Link against the shared version of libstdc++ by default. Set
|
||||
# STATIC_STDCPLUS to "yes" to link against static version instead.
|
||||
ifndef STATIC_STDCPLUS
|
||||
STATIC_STDCPLUS=no
|
||||
endif
|
||||
|
||||
# If the user doesn't want gettext, undefine it.
|
||||
ifeq (no, $(GETTEXT))
|
||||
GETTEXT=
|
||||
endif
|
||||
# Added by E.F. Amatria <eferna1@platea.ptic.mec.es> 2001 Feb 23
|
||||
# Uncomment the first line and one of the following three if you want Native Language
|
||||
# Support. You'll need gnu_gettext.win32, a MINGW32 Windows PORT of gettext by
|
||||
# Franco Bez <franco.bez@gmx.de>. It may be found at
|
||||
# http://home.a-city.de/franco.bez/gettext/gettext_win32_en.html
|
||||
# Tested with mingw32 with GCC-2.95.2 on Win98
|
||||
# Updated 2001 Jun 9
|
||||
#GETTEXT=c:/gettext.win32.msvcrt
|
||||
#STATIC_GETTEXT=USE_STATIC_GETTEXT
|
||||
#DYNAMIC_GETTEXT=USE_GETTEXT_DLL
|
||||
#DYNAMIC_GETTEXT=USE_SAFE_GETTEXT_DLL
|
||||
SAFE_GETTEXT_DLL_OBJ = $(GETTEXT)/src/safe_gettext_dll/safe_gettext_dll.o
|
||||
# Alternatively, if you uncomment the two following lines, you get a "safe" version
|
||||
# without linking the safe_gettext_dll.o object file.
|
||||
#DYNAMIC_GETTEXT=DYNAMIC_GETTEXT
|
||||
#GETTEXT_DYNAMIC=gnu_gettext.dll
|
||||
INTLPATH=$(GETTEXT)/lib/mingw32
|
||||
INTLLIB=gnu_gettext
|
||||
|
||||
# If you are using gettext-0.10.35 from http://sourceforge.net/projects/gettext
|
||||
# or gettext-0.10.37 from http://sourceforge.net/projects/mingwrep/
|
||||
# uncomment the following, but I can't build a static version with them, ?-(|
|
||||
#GETTEXT=c:/gettext-0.10.37-20010430
|
||||
#STATIC_GETTEXT=USE_STATIC_GETTEXT
|
||||
#DYNAMIC_GETTEXT=DYNAMIC_GETTEXT
|
||||
#INTLPATH=$(GETTEXT)/lib
|
||||
#INTLLIB=intl
|
||||
|
||||
# Perl interface:
|
||||
# PERL=[Path to Perl directory] (Set inside Make_cyg.mak or Make_ming.mak)
|
||||
# DYNAMIC_PERL=yes (to load the Perl DLL dynamically)
|
||||
# PERL_VER=[Perl version, eg 56, 58, 510] (default is 56)
|
||||
ifdef PERL
|
||||
ifndef PERL_VER
|
||||
PERL_VER=56
|
||||
endif
|
||||
ifndef DYNAMIC_PERL
|
||||
DYNAMIC_PERL=yes
|
||||
endif
|
||||
# on Linux, for cross-compile, it's here:
|
||||
#PERLLIB=/home/ron/ActivePerl/lib
|
||||
# on NT, it's here:
|
||||
PERLEXE=$(PERL)/bin/perl
|
||||
PERLLIB=$(PERL)/lib
|
||||
PERLLIBS=$(PERLLIB)/Core
|
||||
ifeq ($(UNDER_CYGWIN),yes)
|
||||
PERLTYPEMAP:=$(shell cygpath -m $(PERLLIB)/ExtUtils/typemap)
|
||||
XSUBPPTRY:=$(shell cygpath -m $(PERLLIB)/ExtUtils/xsubpp)
|
||||
else
|
||||
PERLTYPEMAP=$(PERLLIB)/ExtUtils/typemap
|
||||
XSUBPPTRY=$(PERLLIB)/ExtUtils/xsubpp
|
||||
endif
|
||||
XSUBPP_EXISTS=$(shell $(PERLEXE) -e "print 1 unless -e '$(XSUBPPTRY)'")
|
||||
ifeq "$(XSUBPP_EXISTS)" ""
|
||||
XSUBPP=$(PERLEXE) $(XSUBPPTRY)
|
||||
else
|
||||
XSUBPP=xsubpp
|
||||
endif
|
||||
endif
|
||||
|
||||
# Lua interface:
|
||||
# LUA=[Path to Lua directory] (Set inside Make_cyg.mak or Make_ming.mak)
|
||||
# DYNAMIC_LUA=yes (to load the Lua DLL dynamically)
|
||||
# LUA_VER=[Lua version, eg 51, 52] (default is 51)
|
||||
ifdef LUA
|
||||
ifndef DYNAMIC_LUA
|
||||
DYNAMIC_LUA=yes
|
||||
endif
|
||||
|
||||
ifndef LUA_VER
|
||||
LUA_VER=51
|
||||
endif
|
||||
|
||||
ifeq (no,$(DYNAMIC_LUA))
|
||||
LUA_LIB = -L$(LUA)/lib -llua
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
# MzScheme interface:
|
||||
# MZSCHEME=[Path to MzScheme directory] (Set inside Make_cyg.mak or Make_ming.mak)
|
||||
# DYNAMIC_MZSCHEME=yes (to load the MzScheme DLL dynamically)
|
||||
# MZSCHEME_VER=[MzScheme version] (default is 205_000)
|
||||
# MZSCHEME_DEBUG=no
|
||||
ifdef MZSCHEME
|
||||
ifndef DYNAMIC_MZSCHEME
|
||||
DYNAMIC_MZSCHEME=yes
|
||||
endif
|
||||
|
||||
ifndef MZSCHEME_VER
|
||||
MZSCHEME_VER=205_000
|
||||
endif
|
||||
|
||||
ifndef MZSCHEME_PRECISE_GC
|
||||
MZSCHEME_PRECISE_GC=no
|
||||
endif
|
||||
|
||||
# for version 4.x we need to generate byte-code for Scheme base
|
||||
ifndef MZSCHEME_GENERATE_BASE
|
||||
MZSCHEME_GENERATE_BASE=no
|
||||
endif
|
||||
|
||||
ifndef MZSCHEME_USE_RACKET
|
||||
MZSCHEME_MAIN_LIB=mzsch
|
||||
else
|
||||
MZSCHEME_MAIN_LIB=racket
|
||||
endif
|
||||
|
||||
ifeq (no,$(DYNAMIC_MZSCHEME))
|
||||
ifeq (yes,$(MZSCHEME_PRECISE_GC))
|
||||
MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER)
|
||||
else
|
||||
MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
|
||||
endif
|
||||
# the modern MinGW can dynamically link to dlls directly.
|
||||
# point MZSCHEME_DLLS to where you put libmzschXXXXXXX.dll and libgcXXXXXXX.dll
|
||||
ifndef MZSCHEME_DLLS
|
||||
MZSCHEME_DLLS=$(MZSCHEME)
|
||||
endif
|
||||
MZSCHEME_LIBDIR=-L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)\lib
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
# Python interface:
|
||||
# PYTHON=[Path to Python directory] (Set inside Make_cyg.mak or Make_ming.mak)
|
||||
# DYNAMIC_PYTHON=yes (to load the Python DLL dynamically)
|
||||
# PYTHON_VER=[Python version, eg 22, 23, ..., 27] (default is 22)
|
||||
ifdef PYTHON
|
||||
ifndef DYNAMIC_PYTHON
|
||||
DYNAMIC_PYTHON=yes
|
||||
endif
|
||||
|
||||
ifndef PYTHON_VER
|
||||
PYTHON_VER=22
|
||||
endif
|
||||
|
||||
ifeq (no,$(DYNAMIC_PYTHON))
|
||||
PYTHONLIB=-L$(PYTHON)/libs -lpython$(PYTHON_VER)
|
||||
endif
|
||||
# my include files are in 'win32inc' on Linux, and 'include' in the standard
|
||||
# NT distro (ActiveState)
|
||||
ifeq ($(CROSS),no)
|
||||
PYTHONINC=-I $(PYTHON)/include
|
||||
else
|
||||
PYTHONINC=-I $(PYTHON)/win32inc
|
||||
endif
|
||||
endif
|
||||
|
||||
# Python3 interface:
|
||||
# PYTHON3=[Path to Python3 directory] (Set inside Make_cyg.mak or Make_ming.mak)
|
||||
# DYNAMIC_PYTHON3=yes (to load the Python3 DLL dynamically)
|
||||
# PYTHON3_VER=[Python3 version, eg 31, 32] (default is 31)
|
||||
ifdef PYTHON3
|
||||
ifndef DYNAMIC_PYTHON3
|
||||
DYNAMIC_PYTHON3=yes
|
||||
endif
|
||||
|
||||
ifndef PYTHON3_VER
|
||||
PYTHON3_VER=31
|
||||
endif
|
||||
|
||||
ifeq (no,$(DYNAMIC_PYTHON3))
|
||||
PYTHON3LIB=-L$(PYTHON3)/libs -lPYTHON$(PYTHON3_VER)
|
||||
endif
|
||||
|
||||
ifeq ($(CROSS),no)
|
||||
PYTHON3INC=-I $(PYTHON3)/include
|
||||
else
|
||||
PYTHON3INC=-I $(PYTHON3)/win32inc
|
||||
endif
|
||||
endif
|
||||
|
||||
# TCL interface:
|
||||
# TCL=[Path to TCL directory] (Set inside Make_cyg.mak or Make_ming.mak)
|
||||
# DYNAMIC_TCL=yes (to load the TCL DLL dynamically)
|
||||
# TCL_VER=[TCL version, eg 83, 84] (default is 83)
|
||||
ifdef TCL
|
||||
ifndef DYNAMIC_TCL
|
||||
DYNAMIC_TCL=yes
|
||||
endif
|
||||
ifndef TCL_VER
|
||||
TCL_VER = 83
|
||||
endif
|
||||
TCLINC += -I$(TCL)/include
|
||||
endif
|
||||
|
||||
|
||||
# Ruby interface:
|
||||
# RUBY=[Path to Ruby directory] (Set inside Make_cyg.mak or Make_ming.mak)
|
||||
# DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically)
|
||||
# RUBY_VER=[Ruby version, eg 18, 19, 20] (default is 18)
|
||||
# RUBY_VER_LONG=[Ruby version, eg 1.8, 1.9.1, 2.0.0] (default is 1.8)
|
||||
# You must set RUBY_VER_LONG when changing RUBY_VER.
|
||||
# RUBY_API_VER is derived from RUBY_VER_LONG.
|
||||
# Note: If you use Ruby 1.9.3, set as follows:
|
||||
# RUBY_VER=19
|
||||
# RUBY_VER_LONG=1.9.1 (not 1.9.3, because the API version is 1.9.1.)
|
||||
ifdef RUBY
|
||||
ifndef DYNAMIC_RUBY
|
||||
DYNAMIC_RUBY=yes
|
||||
endif
|
||||
# Set default value
|
||||
ifndef RUBY_VER
|
||||
RUBY_VER = 18
|
||||
endif
|
||||
ifndef RUBY_VER_LONG
|
||||
RUBY_VER_LONG = 1.8
|
||||
endif
|
||||
ifndef RUBY_API_VER
|
||||
RUBY_API_VER = $(subst .,,$(RUBY_VER_LONG))
|
||||
endif
|
||||
|
||||
ifndef RUBY_PLATFORM
|
||||
ifeq ($(RUBY_VER), 16)
|
||||
RUBY_PLATFORM = i586-mswin32
|
||||
else
|
||||
ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),)
|
||||
RUBY_PLATFORM = i386-mingw32
|
||||
else
|
||||
ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/x64-mingw32),)
|
||||
RUBY_PLATFORM = x64-mingw32
|
||||
else
|
||||
RUBY_PLATFORM = i386-mswin32
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifndef RUBY_INSTALL_NAME
|
||||
ifeq ($(RUBY_VER), 16)
|
||||
RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER)
|
||||
else
|
||||
ifeq ($(ARCH),x86-64)
|
||||
RUBY_INSTALL_NAME = x64-msvcrt-ruby$(RUBY_API_VER)
|
||||
else
|
||||
RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq (19, $(word 1,$(sort 19 $(RUBY_VER))))
|
||||
RUBY_19_OR_LATER = 1
|
||||
endif
|
||||
|
||||
RUBYINC = -I $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM)
|
||||
ifdef RUBY_19_OR_LATER
|
||||
RUBYINC += -I $(RUBY)/include/ruby-$(RUBY_VER_LONG) -I $(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM)
|
||||
endif
|
||||
ifeq (no, $(DYNAMIC_RUBY))
|
||||
RUBYLIB = -L$(RUBY)/lib -l$(RUBY_INSTALL_NAME)
|
||||
endif
|
||||
|
||||
endif # RUBY
|
||||
|
||||
# See feature.h for a list of options.
|
||||
# Any other defines can be included here.
|
||||
DEF_GUI=-DFEAT_GUI_W32 -DFEAT_CLIPBOARD
|
||||
DEFINES=-DWIN32 -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) \
|
||||
-DHAVE_PATHDEF -DFEAT_$(FEATURES)
|
||||
ifeq ($(ARCH),x86-64)
|
||||
DEFINES+=-DMS_WIN64
|
||||
endif
|
||||
ifeq ($(CROSS),yes)
|
||||
# cross-compiler prefix:
|
||||
ifndef CROSS_COMPILE
|
||||
CROSS_COMPILE = i586-pc-mingw32msvc-
|
||||
endif
|
||||
DEL = rm
|
||||
MKDIR = mkdir -p
|
||||
DIRSLASH = /
|
||||
else
|
||||
# normal (Windows) compilation:
|
||||
ifndef CROSS_COMPILE
|
||||
CROSS_COMPILE =
|
||||
endif
|
||||
ifneq (sh.exe, $(SHELL))
|
||||
DEL = rm
|
||||
MKDIR = mkdir -p
|
||||
DIRSLASH = /
|
||||
else
|
||||
DEL = del
|
||||
MKDIR = mkdir
|
||||
DIRSLASH = \\
|
||||
endif
|
||||
endif
|
||||
CC := $(CROSS_COMPILE)gcc
|
||||
CXX := $(CROSS_COMPILE)g++
|
||||
WINDRES := $(CROSS_COMPILE)windres
|
||||
WINDRES_CC = $(CC)
|
||||
|
||||
#>>>>> end of choices
|
||||
###########################################################################
|
||||
|
||||
CFLAGS = -Iproto $(DEFINES) -pipe -w -march=$(ARCH) -Wall
|
||||
WINDRES_FLAGS = --preprocessor="$(WINDRES_CC) -E -xc" -DRC_INVOKED
|
||||
EXTRA_LIBS =
|
||||
|
||||
ifdef GETTEXT
|
||||
DEFINES += -DHAVE_GETTEXT -DHAVE_LOCALE_H
|
||||
GETTEXTINCLUDE = $(GETTEXT)/include
|
||||
GETTEXTLIB = $(INTLPATH)
|
||||
ifeq (yes, $(GETTEXT))
|
||||
DEFINES += -DDYNAMIC_GETTEXT
|
||||
else
|
||||
ifdef DYNAMIC_GETTEXT
|
||||
DEFINES += -D$(DYNAMIC_GETTEXT)
|
||||
ifdef GETTEXT_DYNAMIC
|
||||
DEFINES += -DGETTEXT_DYNAMIC -DGETTEXT_DLL=\"$(GETTEXT_DYNAMIC)\"
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef PERL
|
||||
CFLAGS += -I$(PERLLIBS) -DFEAT_PERL
|
||||
ifeq (yes, $(DYNAMIC_PERL))
|
||||
CFLAGS += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\"
|
||||
EXTRA_LIBS += -L$(PERLLIBS) -lperl$(PERL_VER)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef LUA
|
||||
CFLAGS += -I$(LUA)/include -I$(LUA) -DFEAT_LUA
|
||||
ifeq (yes, $(DYNAMIC_LUA))
|
||||
CFLAGS += -DDYNAMIC_LUA -DDYNAMIC_LUA_DLL=\"lua$(LUA_VER).dll\"
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef MZSCHEME
|
||||
CFLAGS += -I$(MZSCHEME)/include -DFEAT_MZSCHEME -DMZSCHEME_COLLECTS=\"$(MZSCHEME)/collects\"
|
||||
ifeq (yes, $(DYNAMIC_MZSCHEME))
|
||||
CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
|
||||
endif
|
||||
ifeq (yes, "$(MZSCHEME_DEBUG)")
|
||||
CFLAGS += -DMZSCHEME_FORCE_GC
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef RUBY
|
||||
CFLAGS += -DFEAT_RUBY $(RUBYINC)
|
||||
ifeq (yes, $(DYNAMIC_RUBY))
|
||||
CFLAGS += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\"
|
||||
CFLAGS += -DDYNAMIC_RUBY_VER=$(RUBY_VER)
|
||||
endif
|
||||
ifneq ($(findstring w64-mingw32,$(CC)),)
|
||||
# A workaround for MinGW-w64
|
||||
CFLAGS += -DHAVE_STRUCT_TIMESPEC -DHAVE_STRUCT_TIMEZONE
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef PYTHON
|
||||
CFLAGS += -DFEAT_PYTHON
|
||||
ifeq (yes, $(DYNAMIC_PYTHON))
|
||||
CFLAGS += -DDYNAMIC_PYTHON
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef PYTHON3
|
||||
CFLAGS += -DFEAT_PYTHON3
|
||||
ifeq (yes, $(DYNAMIC_PYTHON3))
|
||||
CFLAGS += -DDYNAMIC_PYTHON3
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef TCL
|
||||
CFLAGS += -DFEAT_TCL $(TCLINC)
|
||||
ifeq (yes, $(DYNAMIC_TCL))
|
||||
CFLAGS += -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl$(TCL_VER).dll\"
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(POSTSCRIPT),yes)
|
||||
DEFINES += -DMSWINPS
|
||||
endif
|
||||
|
||||
ifeq (yes, $(OLE))
|
||||
DEFINES += -DFEAT_OLE
|
||||
endif
|
||||
|
||||
ifeq ($(CSCOPE),yes)
|
||||
DEFINES += -DFEAT_CSCOPE
|
||||
endif
|
||||
|
||||
ifeq ($(NETBEANS),yes)
|
||||
# Only allow NETBEANS for a GUI build.
|
||||
ifeq (yes, $(GUI))
|
||||
DEFINES += -DFEAT_NETBEANS_INTG
|
||||
|
||||
ifeq ($(NBDEBUG), yes)
|
||||
DEFINES += -DNBDEBUG
|
||||
NBDEBUG_INCL = nbdebug.h
|
||||
NBDEBUG_SRC = nbdebug.c
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# DirectWrite (DirectX)
|
||||
ifeq ($(DIRECTX),yes)
|
||||
# Only allow DirectWrite for a GUI build.
|
||||
ifeq (yes, $(GUI))
|
||||
DEFINES += -DFEAT_DIRECTX -DDYNAMIC_DIRECTX
|
||||
endif
|
||||
endif
|
||||
|
||||
# Only allow XPM for a GUI build.
|
||||
ifeq (yes, $(GUI))
|
||||
|
||||
ifndef XPM
|
||||
ifeq ($(ARCH),i386)
|
||||
XPM = xpm/x86
|
||||
endif
|
||||
ifeq ($(ARCH),i486)
|
||||
XPM = xpm/x86
|
||||
endif
|
||||
ifeq ($(ARCH),i586)
|
||||
XPM = xpm/x86
|
||||
endif
|
||||
ifeq ($(ARCH),i686)
|
||||
XPM = xpm/x86
|
||||
endif
|
||||
ifeq ($(ARCH),x86-64)
|
||||
XPM = xpm/x64
|
||||
endif
|
||||
endif
|
||||
ifdef XPM
|
||||
ifneq ($(XPM),no)
|
||||
CFLAGS += -DFEAT_XPM_W32 -I $(XPM)/include -I $(XPM)/../include
|
||||
endif
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
ifeq ($(DEBUG),yes)
|
||||
CFLAGS += -g -fstack-check
|
||||
DEBUG_SUFFIX=d
|
||||
else
|
||||
ifeq ($(OPTIMIZE), SIZE)
|
||||
CFLAGS += -Os
|
||||
else
|
||||
ifeq ($(OPTIMIZE), MAXSPEED)
|
||||
CFLAGS += -O3
|
||||
CFLAGS += -fomit-frame-pointer -freg-struct-return
|
||||
else # SPEED
|
||||
CFLAGS += -O2
|
||||
endif
|
||||
endif
|
||||
CFLAGS += -s
|
||||
endif
|
||||
|
||||
LIB = -lkernel32 -luser32 -lgdi32 -ladvapi32 -lcomdlg32 -lcomctl32 -lversion
|
||||
GUIOBJ = $(OUTDIR)/gui.o $(OUTDIR)/gui_w32.o $(OUTDIR)/gui_beval.o $(OUTDIR)/os_w32exe.o
|
||||
OBJ = \
|
||||
$(OUTDIR)/blowfish.o \
|
||||
$(OUTDIR)/buffer.o \
|
||||
$(OUTDIR)/charset.o \
|
||||
$(OUTDIR)/crypt.o \
|
||||
$(OUTDIR)/crypt_zip.o \
|
||||
$(OUTDIR)/diff.o \
|
||||
$(OUTDIR)/digraph.o \
|
||||
$(OUTDIR)/edit.o \
|
||||
$(OUTDIR)/eval.o \
|
||||
$(OUTDIR)/ex_cmds.o \
|
||||
$(OUTDIR)/ex_cmds2.o \
|
||||
$(OUTDIR)/ex_docmd.o \
|
||||
$(OUTDIR)/ex_eval.o \
|
||||
$(OUTDIR)/ex_getln.o \
|
||||
$(OUTDIR)/fileio.o \
|
||||
$(OUTDIR)/fold.o \
|
||||
$(OUTDIR)/getchar.o \
|
||||
$(OUTDIR)/hardcopy.o \
|
||||
$(OUTDIR)/hashtab.o \
|
||||
$(OUTDIR)/main.o \
|
||||
$(OUTDIR)/mark.o \
|
||||
$(OUTDIR)/memfile.o \
|
||||
$(OUTDIR)/memline.o \
|
||||
$(OUTDIR)/menu.o \
|
||||
$(OUTDIR)/message.o \
|
||||
$(OUTDIR)/misc1.o \
|
||||
$(OUTDIR)/misc2.o \
|
||||
$(OUTDIR)/move.o \
|
||||
$(OUTDIR)/mbyte.o \
|
||||
$(OUTDIR)/normal.o \
|
||||
$(OUTDIR)/ops.o \
|
||||
$(OUTDIR)/option.o \
|
||||
$(OUTDIR)/os_win32.o \
|
||||
$(OUTDIR)/os_mswin.o \
|
||||
$(OUTDIR)/winclip.o \
|
||||
$(OUTDIR)/pathdef.o \
|
||||
$(OUTDIR)/popupmnu.o \
|
||||
$(OUTDIR)/quickfix.o \
|
||||
$(OUTDIR)/regexp.o \
|
||||
$(OUTDIR)/screen.o \
|
||||
$(OUTDIR)/search.o \
|
||||
$(OUTDIR)/sha256.o \
|
||||
$(OUTDIR)/spell.o \
|
||||
$(OUTDIR)/syntax.o \
|
||||
$(OUTDIR)/tag.o \
|
||||
$(OUTDIR)/term.o \
|
||||
$(OUTDIR)/ui.o \
|
||||
$(OUTDIR)/undo.o \
|
||||
$(OUTDIR)/version.o \
|
||||
$(OUTDIR)/vimrc.o \
|
||||
$(OUTDIR)/window.o
|
||||
|
||||
ifdef PERL
|
||||
OBJ += $(OUTDIR)/if_perl.o
|
||||
endif
|
||||
ifdef LUA
|
||||
OBJ += $(OUTDIR)/if_lua.o
|
||||
endif
|
||||
ifdef MZSCHEME
|
||||
OBJ += $(OUTDIR)/if_mzsch.o
|
||||
MZSCHEME_INCL = if_mzsch.h
|
||||
ifeq (yes,$(MZSCHEME_GENERATE_BASE))
|
||||
CFLAGS += -DINCLUDE_MZSCHEME_BASE
|
||||
MZ_EXTRA_DEP += mzscheme_base.c
|
||||
endif
|
||||
ifeq (yes,$(MZSCHEME_PRECISE_GC))
|
||||
CFLAGS += -DMZ_PRECISE_GC
|
||||
endif
|
||||
endif
|
||||
ifdef PYTHON
|
||||
OBJ += $(OUTDIR)/if_python.o
|
||||
endif
|
||||
ifdef PYTHON3
|
||||
OBJ += $(OUTDIR)/if_python3.o
|
||||
endif
|
||||
ifdef RUBY
|
||||
OBJ += $(OUTDIR)/if_ruby.o
|
||||
endif
|
||||
ifdef TCL
|
||||
OBJ += $(OUTDIR)/if_tcl.o
|
||||
endif
|
||||
ifeq ($(CSCOPE),yes)
|
||||
OBJ += $(OUTDIR)/if_cscope.o
|
||||
endif
|
||||
ifeq ($(NETBEANS),yes)
|
||||
# Only allow NETBEANS for a GUI build.
|
||||
ifeq (yes, $(GUI))
|
||||
OBJ += $(OUTDIR)/netbeans.o
|
||||
LIB += -lwsock32
|
||||
endif
|
||||
endif
|
||||
ifeq ($(DIRECTX),yes)
|
||||
# Only allow DIRECTX for a GUI build.
|
||||
ifeq (yes, $(GUI))
|
||||
OBJ += $(OUTDIR)/gui_dwrite.o
|
||||
LIB += -ld2d1 -ldwrite
|
||||
USE_STDCPLUS = yes
|
||||
endif
|
||||
endif
|
||||
ifneq ($(XPM),no)
|
||||
# Only allow XPM for a GUI build.
|
||||
ifeq (yes, $(GUI))
|
||||
OBJ += $(OUTDIR)/xpm_w32.o
|
||||
# You'll need libXpm.a from http://gnuwin32.sf.net
|
||||
LIB += -L$(XPM)/lib -lXpm
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
ifdef MZSCHEME
|
||||
MZSCHEME_SUFFIX = Z
|
||||
endif
|
||||
|
||||
ifeq ($(GUI),yes)
|
||||
TARGET := gvim$(DEBUG_SUFFIX).exe
|
||||
DEFINES += $(DEF_GUI)
|
||||
OBJ += $(GUIOBJ)
|
||||
LFLAGS += -mwindows
|
||||
OUTDIR = gobj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH)
|
||||
else
|
||||
TARGET := vim$(DEBUG_SUFFIX).exe
|
||||
OUTDIR = obj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH)
|
||||
endif
|
||||
|
||||
ifdef GETTEXT
|
||||
ifneq (yes, $(GETTEXT))
|
||||
CFLAGS += -I$(GETTEXTINCLUDE)
|
||||
ifndef STATIC_GETTEXT
|
||||
LIB += -L$(GETTEXTLIB) -l$(INTLLIB)
|
||||
ifeq (USE_SAFE_GETTEXT_DLL, $(DYNAMIC_GETTEXT))
|
||||
OBJ+=$(SAFE_GETTEXT_DLL_OBJ)
|
||||
endif
|
||||
else
|
||||
LIB += -L$(GETTEXTLIB) -lintl
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef PERL
|
||||
ifeq (no, $(DYNAMIC_PERL))
|
||||
LIB += -L$(PERLLIBS) -lperl$(PERL_VER)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef TCL
|
||||
LIB += -L$(TCL)/lib
|
||||
ifeq (yes, $(DYNAMIC_TCL))
|
||||
LIB += -ltclstub$(TCL_VER)
|
||||
else
|
||||
LIB += -ltcl$(TCL_VER)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq (yes, $(OLE))
|
||||
LIB += -loleaut32
|
||||
OBJ += $(OUTDIR)/if_ole.o
|
||||
USE_STDCPLUS = yes
|
||||
endif
|
||||
|
||||
ifeq (yes, $(MBYTE))
|
||||
DEFINES += -DFEAT_MBYTE
|
||||
endif
|
||||
|
||||
ifeq (yes, $(IME))
|
||||
DEFINES += -DFEAT_MBYTE_IME
|
||||
ifeq (yes, $(DYNAMIC_IME))
|
||||
DEFINES += -DDYNAMIC_IME
|
||||
else
|
||||
LIB += -limm32
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef ICONV
|
||||
ifneq (yes, $(ICONV))
|
||||
LIB += -L$(ICONV)
|
||||
CFLAGS += -I$(ICONV)
|
||||
endif
|
||||
DEFINES+=-DDYNAMIC_ICONV
|
||||
endif
|
||||
|
||||
ifeq (yes, $(USE_STDCPLUS))
|
||||
ifeq (yes, $(STATIC_STDCPLUS))
|
||||
LIB += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic
|
||||
else
|
||||
LIB += -lstdc++
|
||||
endif
|
||||
endif
|
||||
|
||||
all: $(TARGET) vimrun.exe xxd/xxd.exe install.exe uninstal.exe GvimExt/gvimext.dll
|
||||
|
||||
vimrun.exe: vimrun.c
|
||||
$(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIB)
|
||||
|
||||
install.exe: dosinst.c
|
||||
$(CC) $(CFLAGS) -o install.exe dosinst.c $(LIB) -lole32 -luuid
|
||||
|
||||
uninstal.exe: uninstal.c
|
||||
$(CC) $(CFLAGS) -o uninstal.exe uninstal.c $(LIB)
|
||||
|
||||
$(TARGET): $(OUTDIR) $(OBJ)
|
||||
$(CC) $(CFLAGS) $(LFLAGS) -o $@ $(OBJ) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)
|
||||
|
||||
upx: exes
|
||||
upx gvim.exe
|
||||
upx vim.exe
|
||||
|
||||
mpress: exes
|
||||
mpress gvim.exe
|
||||
mpress vim.exe
|
||||
|
||||
xxd/xxd.exe: xxd/xxd.c
|
||||
$(MAKE) -C xxd -f Make_ming.mak CC='$(CC)'
|
||||
|
||||
GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
|
||||
$(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE) CXX='$(CXX)' STATIC_STDCPLUS=$(STATIC_STDCPLUS)
|
||||
|
||||
clean:
|
||||
-$(DEL) $(OUTDIR)$(DIRSLASH)*.o
|
||||
-$(DEL) $(OUTDIR)$(DIRSLASH)*.res
|
||||
-rmdir $(OUTDIR)
|
||||
-$(DEL) *.exe
|
||||
-$(DEL) pathdef.c
|
||||
ifdef PERL
|
||||
-$(DEL) if_perl.c
|
||||
endif
|
||||
ifdef MZSCHEME
|
||||
-$(DEL) mzscheme_base.c
|
||||
endif
|
||||
$(MAKE) -C GvimExt -f Make_ming.mak clean
|
||||
$(MAKE) -C xxd -f Make_ming.mak clean
|
||||
|
||||
###########################################################################
|
||||
INCL = vim.h feature.h os_win32.h os_dos.h ascii.h keymap.h term.h macros.h \
|
||||
structs.h regexp.h option.h ex_cmds.h proto.h globals.h farsi.h \
|
||||
gui.h
|
||||
|
||||
$(OUTDIR)/if_python.o : if_python.c if_py_both.h $(INCL)
|
||||
$(CC) -c $(CFLAGS) $(PYTHONINC) -DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\" $< -o $@
|
||||
|
||||
$(OUTDIR)/if_python3.o : if_python3.c if_py_both.h $(INCL)
|
||||
$(CC) -c $(CFLAGS) $(PYTHON3INC) -DDYNAMIC_PYTHON3_DLL=\"PYTHON$(PYTHON3_VER).dll\" $< -o $@
|
||||
|
||||
$(OUTDIR)/%.o : %.c $(INCL)
|
||||
$(CC) -c $(CFLAGS) $< -o $@
|
||||
|
||||
$(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h
|
||||
$(WINDRES) $(WINDRES_FLAGS) $(DEFINES) \
|
||||
--input-format=rc --output-format=coff -i vim.rc -o $@
|
||||
|
||||
$(OUTDIR):
|
||||
$(MKDIR) $(OUTDIR)
|
||||
|
||||
$(OUTDIR)/ex_docmd.o: ex_docmd.c $(INCL) ex_cmds.h
|
||||
$(CC) -c $(CFLAGS) ex_docmd.c -o $(OUTDIR)/ex_docmd.o
|
||||
|
||||
$(OUTDIR)/ex_eval.o: ex_eval.c $(INCL) ex_cmds.h
|
||||
$(CC) -c $(CFLAGS) ex_eval.c -o $(OUTDIR)/ex_eval.o
|
||||
|
||||
$(OUTDIR)/gui_w32.o: gui_w32.c gui_w48.c $(INCL)
|
||||
$(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o
|
||||
|
||||
$(OUTDIR)/gui_dwrite.o: gui_dwrite.cpp $(INCL) gui_dwrite.h
|
||||
$(CC) -c $(CFLAGS) gui_dwrite.cpp -o $(OUTDIR)/gui_dwrite.o
|
||||
|
||||
$(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h
|
||||
$(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o
|
||||
|
||||
# Remove -D__IID_DEFINED__ for newer versions of the w32api
|
||||
$(OUTDIR)/if_ole.o: if_ole.cpp $(INCL)
|
||||
$(CC) $(CFLAGS) -c -o $(OUTDIR)/if_ole.o if_ole.cpp
|
||||
|
||||
$(OUTDIR)/if_ruby.o: if_ruby.c $(INCL)
|
||||
ifeq (16, $(RUBY))
|
||||
$(CC) $(CFLAGS) -U_WIN32 -c -o $(OUTDIR)/if_ruby.o if_ruby.c
|
||||
endif
|
||||
|
||||
if_perl.c: if_perl.xs typemap
|
||||
$(XSUBPP) -prototypes -typemap \
|
||||
$(PERLTYPEMAP) if_perl.xs > $@
|
||||
|
||||
$(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC)
|
||||
$(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o
|
||||
|
||||
$(OUTDIR)/regexp.o: regexp.c regexp_nfa.c $(INCL)
|
||||
$(CC) -c $(CFLAGS) regexp.c -o $(OUTDIR)/regexp.o
|
||||
|
||||
$(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP)
|
||||
$(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o
|
||||
|
||||
mzscheme_base.c:
|
||||
$(MZSCHEME)/mzc --c-mods mzscheme_base.c ++lib scheme/base
|
||||
|
||||
pathdef.c: $(INCL)
|
||||
ifneq (sh.exe, $(SHELL))
|
||||
@echo creating pathdef.c
|
||||
@echo '/* pathdef.c */' > pathdef.c
|
||||
@echo '#include "vim.h"' >> pathdef.c
|
||||
@echo 'char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)";' >> pathdef.c
|
||||
@echo 'char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)";' >> pathdef.c
|
||||
@echo 'char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)";' >> pathdef.c
|
||||
@echo 'char_u *all_lflags = (char_u *)"$(CC) $(CFLAGS) $(LFLAGS) -o $(TARGET) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)";' >> pathdef.c
|
||||
@echo 'char_u *compiled_user = (char_u *)"$(USERNAME)";' >> pathdef.c
|
||||
@echo 'char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";' >> pathdef.c
|
||||
else
|
||||
@echo creating pathdef.c
|
||||
@echo /* pathdef.c */ > pathdef.c
|
||||
@echo #include "vim.h" >> pathdef.c
|
||||
@echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)"; >> pathdef.c
|
||||
@echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)"; >> pathdef.c
|
||||
@echo char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)"; >> pathdef.c
|
||||
@echo char_u *all_lflags = (char_u *)"$(CC) $(CFLAGS) $(LFLAGS) -o $(TARGET) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)"; >> pathdef.c
|
||||
@echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> pathdef.c
|
||||
@echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> pathdef.c
|
||||
endif
|
||||
@@ -1,193 +1,27 @@
|
||||
# Makefile for VIM on Win32
|
||||
#
|
||||
# Info at http://www.mingw.org
|
||||
# Alternative x86 and 64-builds: http://mingw-w64.sourceforge.net
|
||||
# Also requires GNU make, which you can download from the same sites.
|
||||
# Get missing libraries from http://gnuwin32.sf.net.
|
||||
# Makefile for VIM on Win32, using MinGW
|
||||
#
|
||||
# Tested on Win32 NT 4 and Win95.
|
||||
# Also read INSTALLpc.txt!
|
||||
#
|
||||
# To make everything, just 'make -f Make_ming.mak'.
|
||||
# To make just e.g. gvim.exe, 'make -f Make_ming.mak gvim.exe'.
|
||||
# After a run, you can 'make -f Make_ming.mak clean' to clean up.
|
||||
# The old Make_ming.mak (maintained by Ron Aaron et al.) was merged into
|
||||
# Make_cyg_ming.mak.
|
||||
# This file contains MinGW specific settings. Common settings are contained
|
||||
# in Make_cyg_ming.mak.
|
||||
#
|
||||
# NOTE: Sometimes 'GNU Make' will stop after building vimrun.exe -- I think
|
||||
# it's just run out of memory or something. Run again, and it will continue
|
||||
# with 'xxd'.
|
||||
#
|
||||
# "make upx" makes *compressed* versions of the 32 bit GUI and console EXEs,
|
||||
# using the excellent UPX compressor:
|
||||
# http://upx.sourceforge.net/
|
||||
# "make mpress" uses the MPRESS compressor for 32- and 64-bit EXEs:
|
||||
# http://www.matcode.com/mpress.htm
|
||||
#
|
||||
# Maintained by Ron Aaron <ronaharon@yahoo.com> et al.
|
||||
# Updated 2014 Oct 13.
|
||||
# Last updated by Ken Takata.
|
||||
# Last Change: 2014 Oct 21
|
||||
|
||||
#>>>>> choose options:
|
||||
# set to yes for a debug build
|
||||
DEBUG=no
|
||||
# set to SIZE for size, SPEED for speed, MAXSPEED for maximum optimization
|
||||
OPTIMIZE=MAXSPEED
|
||||
# set to yes to make gvim, no for vim
|
||||
GUI=yes
|
||||
# set to yes if you want to use DirectWrite (DirectX)
|
||||
DIRECTX=no
|
||||
# FEATURES=[TINY | SMALL | NORMAL | BIG | HUGE]
|
||||
# Set to TINY to make minimal version (few features).
|
||||
FEATURES=BIG
|
||||
# Set to one of i386, i486, i586, i686 as the minimum target processor.
|
||||
# For amd64/x64 architecture set ARCH=x86-64 .
|
||||
ARCH=i386
|
||||
# Set to yes to cross-compile from unix; no=native Windows.
|
||||
CROSS=no
|
||||
# Set to path to iconv.h and libiconv.a to enable using 'iconv.dll'.
|
||||
#ICONV="."
|
||||
ICONV=yes
|
||||
GETTEXT=yes
|
||||
# Set to yes to include multibyte support.
|
||||
MBYTE=yes
|
||||
# Set to yes to include IME support.
|
||||
IME=yes
|
||||
DYNAMIC_IME=yes
|
||||
# Set to yes to enable writing a postscript file with :hardcopy.
|
||||
POSTSCRIPT=no
|
||||
# Set to yes to enable OLE support.
|
||||
OLE=no
|
||||
# Set the default $(WINVER) to make it work with pre-Win2k.
|
||||
ifndef WINVER
|
||||
WINVER = 0x0500
|
||||
endif
|
||||
# Set to yes to enable Cscope support.
|
||||
CSCOPE=yes
|
||||
# Set to yes to enable Netbeans support.
|
||||
NETBEANS=$(GUI)
|
||||
|
||||
|
||||
# Link against the shared version of libstdc++ by default. Set
|
||||
# STATIC_STDCPLUS to "yes" to link against static version instead.
|
||||
ifndef STATIC_STDCPLUS
|
||||
STATIC_STDCPLUS=no
|
||||
endif
|
||||
|
||||
# If the user doesn't want gettext, undefine it.
|
||||
ifeq (no, $(GETTEXT))
|
||||
GETTEXT=
|
||||
endif
|
||||
# Added by E.F. Amatria <eferna1@platea.ptic.mec.es> 2001 Feb 23
|
||||
# Uncomment the first line and one of the following three if you want Native Language
|
||||
# Support. You'll need gnu_gettext.win32, a MINGW32 Windows PORT of gettext by
|
||||
# Franco Bez <franco.bez@gmx.de>. It may be found at
|
||||
# http://home.a-city.de/franco.bez/gettext/gettext_win32_en.html
|
||||
# Tested with mingw32 with GCC-2.95.2 on Win98
|
||||
# Updated 2001 Jun 9
|
||||
#GETTEXT=c:/gettext.win32.msvcrt
|
||||
#STATIC_GETTEXT=USE_STATIC_GETTEXT
|
||||
#DYNAMIC_GETTEXT=USE_GETTEXT_DLL
|
||||
#DYNAMIC_GETTEXT=USE_SAFE_GETTEXT_DLL
|
||||
SAFE_GETTEXT_DLL_OBJ = $(GETTEXT)/src/safe_gettext_dll/safe_gettext_dll.o
|
||||
# Alternatively, if you uncomment the two following lines, you get a "safe" version
|
||||
# without linking the safe_gettext_dll.o object file.
|
||||
#DYNAMIC_GETTEXT=DYNAMIC_GETTEXT
|
||||
#GETTEXT_DYNAMIC=gnu_gettext.dll
|
||||
INTLPATH=$(GETTEXT)/lib/mingw32
|
||||
INTLLIB=gnu_gettext
|
||||
|
||||
# If you are using gettext-0.10.35 from http://sourceforge.net/projects/gettext
|
||||
# or gettext-0.10.37 from http://sourceforge.net/projects/mingwrep/
|
||||
# uncomment the following, but I can't build a static version with them, ?-(|
|
||||
#GETTEXT=c:/gettext-0.10.37-20010430
|
||||
#STATIC_GETTEXT=USE_STATIC_GETTEXT
|
||||
#DYNAMIC_GETTEXT=DYNAMIC_GETTEXT
|
||||
#INTLPATH=$(GETTEXT)/lib
|
||||
#INTLLIB=intl
|
||||
|
||||
# uncomment 'PERL' if you want a perl-enabled version
|
||||
#PERL=C:/perl
|
||||
ifdef PERL
|
||||
ifndef PERL_VER
|
||||
PERL_VER=56
|
||||
endif
|
||||
ifndef DYNAMIC_PERL
|
||||
DYNAMIC_PERL=yes
|
||||
endif
|
||||
# on Linux, for cross-compile, it's here:
|
||||
#PERLLIB=/home/ron/ActivePerl/lib
|
||||
# on NT, it's here:
|
||||
PERLLIB=$(PERL)/lib
|
||||
PERLLIBS=$(PERLLIB)/Core
|
||||
XSUBPPTRY=$(PERLLIB)/ExtUtils/xsubpp
|
||||
XSUBPP_EXISTS=$(shell perl -e "print 1 unless -e '$(XSUBPPTRY)'")
|
||||
ifeq "$(XSUBPP_EXISTS)" ""
|
||||
XSUBPP=perl $(XSUBPPTRY)
|
||||
else
|
||||
XSUBPP=xsubpp
|
||||
endif
|
||||
endif
|
||||
#PERL=c:/perl
|
||||
|
||||
# uncomment 'LUA' if you want a Lua-enabled version
|
||||
#LUA=/usr/local
|
||||
ifdef LUA
|
||||
ifndef DYNAMIC_LUA
|
||||
DYNAMIC_LUA=yes
|
||||
endif
|
||||
|
||||
ifndef LUA_VER
|
||||
LUA_VER=51
|
||||
endif
|
||||
|
||||
ifeq (no,$(DYNAMIC_LUA))
|
||||
LUA_LIB = -L$(LUA)/lib -llua
|
||||
endif
|
||||
|
||||
endif
|
||||
#LUA=c:/lua
|
||||
|
||||
# uncomment 'MZSCHEME' if you want a MzScheme-enabled version
|
||||
#MZSCHEME=d:/plt
|
||||
ifdef MZSCHEME
|
||||
ifndef DYNAMIC_MZSCHEME
|
||||
DYNAMIC_MZSCHEME=yes
|
||||
endif
|
||||
|
||||
ifndef MZSCHEME_VER
|
||||
MZSCHEME_VER=205_000
|
||||
endif
|
||||
|
||||
ifndef MZSCHEME_PRECISE_GC
|
||||
MZSCHEME_PRECISE_GC=no
|
||||
endif
|
||||
|
||||
# for version 4.x we need to generate byte-code for Scheme base
|
||||
ifndef MZSCHEME_GENERATE_BASE
|
||||
MZSCHEME_GENERATE_BASE=no
|
||||
endif
|
||||
|
||||
ifndef MZSCHEME_USE_RACKET
|
||||
MZSCHEME_MAIN_LIB=mzsch
|
||||
else
|
||||
MZSCHEME_MAIN_LIB=racket
|
||||
endif
|
||||
|
||||
ifeq (no,$(DYNAMIC_MZSCHEME))
|
||||
ifeq (yes,$(MZSCHEME_PRECISE_GC))
|
||||
MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER)
|
||||
else
|
||||
MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
|
||||
endif
|
||||
# the modern MinGW can dynamically link to dlls directly.
|
||||
# point MZSCHEME_DLLS to where you put libmzschXXXXXXX.dll and libgcXXXXXXX.dll
|
||||
ifndef MZSCHEME_DLLS
|
||||
MZSCHEME_DLLS=$(MZSCHEME)
|
||||
endif
|
||||
MZSCHEME_LIBDIR=-L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)\lib
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
# Python support -- works with the ActiveState python 2.0 release (and others
|
||||
# too, probably)
|
||||
#
|
||||
# uncomment 'PYTHON' to make python-enabled version
|
||||
# uncomment 'PYTHON' if you want a python-enabled version
|
||||
# Put the path to the python distro here. If cross compiling from Linux, you
|
||||
# will also need to convert the header files to unix instead of dos format:
|
||||
# for fil in *.h ; do vim -e -c 'set ff=unix|w|q' $fil
|
||||
@@ -200,631 +34,16 @@ endif
|
||||
# on my NT box, it's here:
|
||||
#PYTHON=c:/python20
|
||||
|
||||
ifdef PYTHON
|
||||
ifndef DYNAMIC_PYTHON
|
||||
DYNAMIC_PYTHON=yes
|
||||
endif
|
||||
# uncomment 'PYTHON3' if you want a python3-enabled version
|
||||
#PYTHON3=c:/python31
|
||||
|
||||
ifndef PYTHON_VER
|
||||
PYTHON_VER=22
|
||||
endif
|
||||
|
||||
ifeq (no,$(DYNAMIC_PYTHON))
|
||||
PYTHONLIB=-L$(PYTHON)/libs -lpython$(PYTHON_VER)
|
||||
endif
|
||||
# my include files are in 'win32inc' on Linux, and 'include' in the standard
|
||||
# NT distro (ActiveState)
|
||||
ifeq ($(CROSS),no)
|
||||
PYTHONINC=-I $(PYTHON)/include
|
||||
else
|
||||
PYTHONINC=-I $(PYTHON)/win32inc
|
||||
endif
|
||||
endif
|
||||
|
||||
#PYTHON3: See comment for Python 2 above
|
||||
|
||||
ifdef PYTHON3
|
||||
ifndef DYNAMIC_PYTHON3
|
||||
DYNAMIC_PYTHON3=yes
|
||||
endif
|
||||
|
||||
ifndef PYTHON3_VER
|
||||
PYTHON3_VER=31
|
||||
endif
|
||||
|
||||
ifeq (no,$(DYNAMIC_PYTHON3))
|
||||
PYTHON3LIB=-L$(PYTHON3)/libs -lPYTHON$(PYTHON3_VER)
|
||||
endif
|
||||
|
||||
ifeq ($(CROSS),no)
|
||||
PYTHON3INC=-I $(PYTHON3)/include
|
||||
else
|
||||
PYTHON3INC=-I $(PYTHON3)/win32inc
|
||||
endif
|
||||
endif
|
||||
|
||||
# TCL interface:
|
||||
# TCL=[Path to TCL directory]
|
||||
# DYNAMIC_TCL=yes (to load the TCL DLL dynamically)
|
||||
# TCL_VER=[TCL version, eg 83, 84] (default is 83)
|
||||
# uncomment 'TCL' if you want a Tcl-enabled version
|
||||
#TCL=c:/tcl
|
||||
ifdef TCL
|
||||
ifndef DYNAMIC_TCL
|
||||
DYNAMIC_TCL=yes
|
||||
endif
|
||||
ifndef TCL_VER
|
||||
TCL_VER = 83
|
||||
endif
|
||||
TCLINC += -I$(TCL)/include
|
||||
endif
|
||||
|
||||
|
||||
# Ruby interface:
|
||||
# RUBY=[Path to Ruby directory]
|
||||
# DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically)
|
||||
# RUBY_VER=[Ruby version, eg 16, 17] (default is 16)
|
||||
# RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.6)
|
||||
# You must set RUBY_VER_LONG when changing RUBY_VER.
|
||||
# You must set RUBY_API_VER version to RUBY_VER_LONG.
|
||||
# Don't set ruby API version to RUBY_VER like 191.
|
||||
# uncomment 'RUBY' if you want a Ruby-enabled version
|
||||
#RUBY=c:/ruby
|
||||
ifdef RUBY
|
||||
ifndef DYNAMIC_RUBY
|
||||
DYNAMIC_RUBY=yes
|
||||
endif
|
||||
# Set default value
|
||||
ifndef RUBY_VER
|
||||
RUBY_VER = 16
|
||||
endif
|
||||
ifndef RUBY_VER_LONG
|
||||
RUBY_VER_LONG = 1.6
|
||||
endif
|
||||
ifndef RUBY_API_VER
|
||||
RUBY_API_VER = $(subst .,,$(RUBY_VER_LONG))
|
||||
endif
|
||||
|
||||
ifndef RUBY_PLATFORM
|
||||
ifeq ($(RUBY_VER), 16)
|
||||
RUBY_PLATFORM = i586-mswin32
|
||||
else
|
||||
ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/i386-mingw32),)
|
||||
RUBY_PLATFORM = i386-mingw32
|
||||
else
|
||||
ifneq ($(wildcard $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/x64-mingw32),)
|
||||
RUBY_PLATFORM = x64-mingw32
|
||||
else
|
||||
RUBY_PLATFORM = i386-mswin32
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifndef RUBY_INSTALL_NAME
|
||||
ifeq ($(RUBY_VER), 16)
|
||||
RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_API_VER)
|
||||
else
|
||||
ifeq ($(ARCH),x86-64)
|
||||
RUBY_INSTALL_NAME = x64-msvcrt-ruby$(RUBY_API_VER)
|
||||
else
|
||||
RUBY_INSTALL_NAME = msvcrt-ruby$(RUBY_API_VER)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq (19, $(word 1,$(sort 19 $(RUBY_VER))))
|
||||
RUBY_19_OR_LATER = 1
|
||||
endif
|
||||
|
||||
RUBYINC = -I $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM)
|
||||
ifdef RUBY_19_OR_LATER
|
||||
RUBYINC += -I $(RUBY)/include/ruby-$(RUBY_VER_LONG) -I $(RUBY)/include/ruby-$(RUBY_VER_LONG)/$(RUBY_PLATFORM)
|
||||
endif
|
||||
ifeq (no, $(DYNAMIC_RUBY))
|
||||
RUBYLIB = -L$(RUBY)/lib -l$(RUBY_INSTALL_NAME)
|
||||
endif
|
||||
|
||||
endif # RUBY
|
||||
|
||||
# See feature.h for a list of options.
|
||||
# Any other defines can be included here.
|
||||
DEF_GUI=-DFEAT_GUI_W32 -DFEAT_CLIPBOARD
|
||||
DEFINES=-DWIN32 -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) \
|
||||
-DHAVE_PATHDEF -DFEAT_$(FEATURES)
|
||||
ifeq ($(ARCH),x86-64)
|
||||
DEFINES+=-DMS_WIN64
|
||||
endif
|
||||
ifeq ($(CROSS),yes)
|
||||
# cross-compiler prefix:
|
||||
CROSS_COMPILE = i586-pc-mingw32msvc-
|
||||
DEL = rm
|
||||
MKDIR = mkdir -p
|
||||
DIRSLASH = /
|
||||
else
|
||||
# normal (Windows) compilation:
|
||||
CROSS_COMPILE =
|
||||
ifneq (sh.exe, $(SHELL))
|
||||
DEL = rm
|
||||
MKDIR = mkdir -p
|
||||
DIRSLASH = /
|
||||
else
|
||||
DEL = del
|
||||
MKDIR = mkdir
|
||||
DIRSLASH = \\
|
||||
endif
|
||||
endif
|
||||
CC := $(CROSS_COMPILE)gcc
|
||||
WINDRES := $(CROSS_COMPILE)windres
|
||||
WINDRES_CC = $(CC)
|
||||
|
||||
#>>>>> end of choices
|
||||
###########################################################################
|
||||
|
||||
CFLAGS = -Iproto $(DEFINES) -pipe -w -march=$(ARCH) -Wall
|
||||
WINDRES_FLAGS = --preprocessor="$(WINDRES_CC) -E -xc" -DRC_INVOKED
|
||||
EXTRA_LIBS =
|
||||
|
||||
ifdef GETTEXT
|
||||
DEFINES += -DHAVE_GETTEXT -DHAVE_LOCALE_H
|
||||
GETTEXTINCLUDE = $(GETTEXT)/include
|
||||
GETTEXTLIB = $(INTLPATH)
|
||||
ifeq (yes, $(GETTEXT))
|
||||
DEFINES += -DDYNAMIC_GETTEXT
|
||||
else
|
||||
ifdef DYNAMIC_GETTEXT
|
||||
DEFINES += -D$(DYNAMIC_GETTEXT)
|
||||
ifdef GETTEXT_DYNAMIC
|
||||
DEFINES += -DGETTEXT_DYNAMIC -DGETTEXT_DLL=\"$(GETTEXT_DYNAMIC)\"
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef PERL
|
||||
CFLAGS += -I$(PERLLIBS) -DFEAT_PERL
|
||||
ifeq (yes, $(DYNAMIC_PERL))
|
||||
CFLAGS += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\"
|
||||
EXTRA_LIBS += -L$(PERLLIBS) -lperl$(PERL_VER)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef LUA
|
||||
CFLAGS += -I$(LUA)/include -DFEAT_LUA
|
||||
ifeq (yes, $(DYNAMIC_LUA))
|
||||
CFLAGS += -DDYNAMIC_LUA -DDYNAMIC_LUA_DLL=\"lua$(LUA_VER).dll\"
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef MZSCHEME
|
||||
CFLAGS += -I$(MZSCHEME)/include -DFEAT_MZSCHEME -DMZSCHEME_COLLECTS=\"$(MZSCHEME)/collects\"
|
||||
ifeq (yes, $(DYNAMIC_MZSCHEME))
|
||||
CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
|
||||
endif
|
||||
ifeq (yes, "$(MZSCHEME_DEBUG)")
|
||||
CFLAGS += -DMZSCHEME_FORCE_GC
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef RUBY
|
||||
CFLAGS += -DFEAT_RUBY $(RUBYINC)
|
||||
ifeq (yes, $(DYNAMIC_RUBY))
|
||||
CFLAGS += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\"
|
||||
CFLAGS += -DDYNAMIC_RUBY_VER=$(RUBY_VER)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef PYTHON
|
||||
CFLAGS += -DFEAT_PYTHON
|
||||
ifeq (yes, $(DYNAMIC_PYTHON))
|
||||
CFLAGS += -DDYNAMIC_PYTHON
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef PYTHON3
|
||||
CFLAGS += -DFEAT_PYTHON3
|
||||
ifeq (yes, $(DYNAMIC_PYTHON3))
|
||||
CFLAGS += -DDYNAMIC_PYTHON3
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef TCL
|
||||
CFLAGS += -DFEAT_TCL $(TCLINC)
|
||||
ifeq (yes, $(DYNAMIC_TCL))
|
||||
CFLAGS += -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl$(TCL_VER).dll\"
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(POSTSCRIPT),yes)
|
||||
DEFINES += -DMSWINPS
|
||||
endif
|
||||
|
||||
ifeq (yes, $(OLE))
|
||||
DEFINES += -DFEAT_OLE
|
||||
endif
|
||||
|
||||
ifeq ($(CSCOPE),yes)
|
||||
DEFINES += -DFEAT_CSCOPE
|
||||
endif
|
||||
|
||||
ifeq ($(NETBEANS),yes)
|
||||
# Only allow NETBEANS for a GUI build.
|
||||
ifeq (yes, $(GUI))
|
||||
DEFINES += -DFEAT_NETBEANS_INTG
|
||||
|
||||
ifeq ($(NBDEBUG), yes)
|
||||
DEFINES += -DNBDEBUG
|
||||
NBDEBUG_INCL = nbdebug.h
|
||||
NBDEBUG_SRC = nbdebug.c
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# DirectWrite (DirectX)
|
||||
ifeq ($(DIRECTX),yes)
|
||||
# Only allow DirectWrite for a GUI build.
|
||||
ifeq (yes, $(GUI))
|
||||
DEFINES += -DFEAT_DIRECTX -DDYNAMIC_DIRECTX
|
||||
endif
|
||||
endif
|
||||
|
||||
# Only allow XPM for a GUI build.
|
||||
ifeq (yes, $(GUI))
|
||||
|
||||
ifndef XPM
|
||||
ifeq ($(ARCH),i386)
|
||||
XPM = xpm/x86
|
||||
endif
|
||||
ifeq ($(ARCH),i486)
|
||||
XPM = xpm/x86
|
||||
endif
|
||||
ifeq ($(ARCH),i586)
|
||||
XPM = xpm/x86
|
||||
endif
|
||||
ifeq ($(ARCH),i686)
|
||||
XPM = xpm/x86
|
||||
endif
|
||||
ifeq ($(ARCH),x86-64)
|
||||
XPM = xpm/x64
|
||||
endif
|
||||
endif
|
||||
ifdef XPM
|
||||
ifneq ($(XPM),no)
|
||||
CFLAGS += -DFEAT_XPM_W32 -I $(XPM)/include -I $(XPM)/../include
|
||||
endif
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
ifeq ($(DEBUG),yes)
|
||||
CFLAGS += -g -fstack-check
|
||||
DEBUG_SUFFIX=d
|
||||
else
|
||||
ifeq ($(OPTIMIZE), SIZE)
|
||||
CFLAGS += -Os
|
||||
else
|
||||
ifeq ($(OPTIMIZE), MAXSPEED)
|
||||
CFLAGS += -O3
|
||||
CFLAGS += -fomit-frame-pointer -freg-struct-return
|
||||
else # SPEED
|
||||
CFLAGS += -O2
|
||||
endif
|
||||
endif
|
||||
CFLAGS += -s
|
||||
endif
|
||||
|
||||
LIB = -lkernel32 -luser32 -lgdi32 -ladvapi32 -lcomdlg32 -lcomctl32 -lversion
|
||||
GUIOBJ = $(OUTDIR)/gui.o $(OUTDIR)/gui_w32.o $(OUTDIR)/gui_beval.o $(OUTDIR)/os_w32exe.o
|
||||
OBJ = \
|
||||
$(OUTDIR)/blowfish.o \
|
||||
$(OUTDIR)/buffer.o \
|
||||
$(OUTDIR)/charset.o \
|
||||
$(OUTDIR)/crypt.o \
|
||||
$(OUTDIR)/crypt_zip.o \
|
||||
$(OUTDIR)/diff.o \
|
||||
$(OUTDIR)/digraph.o \
|
||||
$(OUTDIR)/edit.o \
|
||||
$(OUTDIR)/eval.o \
|
||||
$(OUTDIR)/ex_cmds.o \
|
||||
$(OUTDIR)/ex_cmds2.o \
|
||||
$(OUTDIR)/ex_docmd.o \
|
||||
$(OUTDIR)/ex_eval.o \
|
||||
$(OUTDIR)/ex_getln.o \
|
||||
$(OUTDIR)/fileio.o \
|
||||
$(OUTDIR)/fold.o \
|
||||
$(OUTDIR)/getchar.o \
|
||||
$(OUTDIR)/hardcopy.o \
|
||||
$(OUTDIR)/hashtab.o \
|
||||
$(OUTDIR)/main.o \
|
||||
$(OUTDIR)/mark.o \
|
||||
$(OUTDIR)/memfile.o \
|
||||
$(OUTDIR)/memline.o \
|
||||
$(OUTDIR)/menu.o \
|
||||
$(OUTDIR)/message.o \
|
||||
$(OUTDIR)/misc1.o \
|
||||
$(OUTDIR)/misc2.o \
|
||||
$(OUTDIR)/move.o \
|
||||
$(OUTDIR)/mbyte.o \
|
||||
$(OUTDIR)/normal.o \
|
||||
$(OUTDIR)/ops.o \
|
||||
$(OUTDIR)/option.o \
|
||||
$(OUTDIR)/os_win32.o \
|
||||
$(OUTDIR)/os_mswin.o \
|
||||
$(OUTDIR)/winclip.o \
|
||||
$(OUTDIR)/pathdef.o \
|
||||
$(OUTDIR)/popupmnu.o \
|
||||
$(OUTDIR)/quickfix.o \
|
||||
$(OUTDIR)/regexp.o \
|
||||
$(OUTDIR)/screen.o \
|
||||
$(OUTDIR)/search.o \
|
||||
$(OUTDIR)/sha256.o \
|
||||
$(OUTDIR)/spell.o \
|
||||
$(OUTDIR)/syntax.o \
|
||||
$(OUTDIR)/tag.o \
|
||||
$(OUTDIR)/term.o \
|
||||
$(OUTDIR)/ui.o \
|
||||
$(OUTDIR)/undo.o \
|
||||
$(OUTDIR)/version.o \
|
||||
$(OUTDIR)/vimrc.o \
|
||||
$(OUTDIR)/window.o
|
||||
|
||||
ifdef PERL
|
||||
OBJ += $(OUTDIR)/if_perl.o
|
||||
endif
|
||||
ifdef LUA
|
||||
OBJ += $(OUTDIR)/if_lua.o
|
||||
endif
|
||||
ifdef MZSCHEME
|
||||
OBJ += $(OUTDIR)/if_mzsch.o
|
||||
MZSCHEME_INCL = if_mzsch.h
|
||||
ifeq (yes,$(MZSCHEME_GENERATE_BASE))
|
||||
CFLAGS += -DINCLUDE_MZSCHEME_BASE
|
||||
MZ_EXTRA_DEP += mzscheme_base.c
|
||||
endif
|
||||
ifeq (yes,$(MZSCHEME_PRECISE_GC))
|
||||
CFLAGS += -DMZ_PRECISE_GC
|
||||
endif
|
||||
endif
|
||||
ifdef PYTHON
|
||||
OBJ += $(OUTDIR)/if_python.o
|
||||
endif
|
||||
ifdef PYTHON3
|
||||
OBJ += $(OUTDIR)/if_python3.o
|
||||
endif
|
||||
ifdef RUBY
|
||||
OBJ += $(OUTDIR)/if_ruby.o
|
||||
endif
|
||||
ifdef TCL
|
||||
OBJ += $(OUTDIR)/if_tcl.o
|
||||
endif
|
||||
ifeq ($(CSCOPE),yes)
|
||||
OBJ += $(OUTDIR)/if_cscope.o
|
||||
endif
|
||||
ifeq ($(NETBEANS),yes)
|
||||
# Only allow NETBEANS for a GUI build.
|
||||
ifeq (yes, $(GUI))
|
||||
OBJ += $(OUTDIR)/netbeans.o
|
||||
LIB += -lwsock32
|
||||
endif
|
||||
endif
|
||||
ifeq ($(DIRECTX),yes)
|
||||
# Only allow DIRECTX for a GUI build.
|
||||
ifeq (yes, $(GUI))
|
||||
OBJ += $(OUTDIR)/gui_dwrite.o
|
||||
LIB += -ld2d1 -ldwrite
|
||||
USE_STDCPLUS = yes
|
||||
endif
|
||||
endif
|
||||
ifneq ($(XPM),no)
|
||||
# Only allow XPM for a GUI build.
|
||||
ifeq (yes, $(GUI))
|
||||
OBJ += $(OUTDIR)/xpm_w32.o
|
||||
# You'll need libXpm.a from http://gnuwin32.sf.net
|
||||
LIB += -L$(XPM)/lib -lXpm
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
ifdef MZSCHEME
|
||||
MZSCHEME_SUFFIX = Z
|
||||
endif
|
||||
|
||||
ifeq ($(GUI),yes)
|
||||
TARGET := gvim$(DEBUG_SUFFIX).exe
|
||||
DEFINES += $(DEF_GUI)
|
||||
OBJ += $(GUIOBJ)
|
||||
LFLAGS += -mwindows
|
||||
OUTDIR = gobj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH)
|
||||
else
|
||||
TARGET := vim$(DEBUG_SUFFIX).exe
|
||||
OUTDIR = obj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)$(ARCH)
|
||||
endif
|
||||
|
||||
ifdef GETTEXT
|
||||
ifneq (yes, $(GETTEXT))
|
||||
CFLAGS += -I$(GETTEXTINCLUDE)
|
||||
ifndef STATIC_GETTEXT
|
||||
LIB += -L$(GETTEXTLIB) -l$(INTLLIB)
|
||||
ifeq (USE_SAFE_GETTEXT_DLL, $(DYNAMIC_GETTEXT))
|
||||
OBJ+=$(SAFE_GETTEXT_DLL_OBJ)
|
||||
endif
|
||||
else
|
||||
LIB += -L$(GETTEXTLIB) -lintl
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef PERL
|
||||
ifeq (no, $(DYNAMIC_PERL))
|
||||
LIB += -L$(PERLLIBS) -lperl$(PERL_VER)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef TCL
|
||||
LIB += -L$(TCL)/lib
|
||||
ifeq (yes, $(DYNAMIC_TCL))
|
||||
LIB += -ltclstub$(TCL_VER)
|
||||
else
|
||||
LIB += -ltcl$(TCL_VER)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq (yes, $(OLE))
|
||||
LIB += -loleaut32
|
||||
OBJ += $(OUTDIR)/if_ole.o
|
||||
USE_STDCPLUS = yes
|
||||
endif
|
||||
|
||||
ifeq (yes, $(MBYTE))
|
||||
DEFINES += -DFEAT_MBYTE
|
||||
endif
|
||||
|
||||
ifeq (yes, $(IME))
|
||||
DEFINES += -DFEAT_MBYTE_IME
|
||||
ifeq (yes, $(DYNAMIC_IME))
|
||||
DEFINES += -DDYNAMIC_IME
|
||||
else
|
||||
LIB += -limm32
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef ICONV
|
||||
ifneq (yes, $(ICONV))
|
||||
LIB += -L$(ICONV)
|
||||
CFLAGS += -I$(ICONV)
|
||||
endif
|
||||
DEFINES+=-DDYNAMIC_ICONV
|
||||
endif
|
||||
|
||||
ifeq (yes, $(USE_STDCPLUS))
|
||||
ifeq (yes, $(STATIC_STDCPLUS))
|
||||
LIB += -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic
|
||||
else
|
||||
LIB += -lstdc++
|
||||
endif
|
||||
endif
|
||||
|
||||
all: $(TARGET) vimrun.exe xxd/xxd.exe install.exe uninstal.exe GvimExt/gvimext.dll
|
||||
|
||||
vimrun.exe: vimrun.c
|
||||
$(CC) $(CFLAGS) -o vimrun.exe vimrun.c $(LIB)
|
||||
|
||||
install.exe: dosinst.c
|
||||
$(CC) $(CFLAGS) -o install.exe dosinst.c $(LIB) -lole32 -luuid
|
||||
|
||||
uninstal.exe: uninstal.c
|
||||
$(CC) $(CFLAGS) -o uninstal.exe uninstal.c $(LIB)
|
||||
|
||||
$(TARGET): $(OUTDIR) $(OBJ)
|
||||
$(CC) $(CFLAGS) $(LFLAGS) -o $@ $(OBJ) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)
|
||||
|
||||
upx: exes
|
||||
upx gvim.exe
|
||||
upx vim.exe
|
||||
|
||||
mpress: exes
|
||||
mpress gvim.exe
|
||||
mpress vim.exe
|
||||
|
||||
xxd/xxd.exe: xxd/xxd.c
|
||||
$(MAKE) -C xxd -f Make_ming.mak CC=$(CC)
|
||||
|
||||
GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
|
||||
$(MAKE) -C GvimExt -f Make_ming.mak CROSS=$(CROSS) CROSS_COMPILE=$(CROSS_COMPILE)
|
||||
|
||||
clean:
|
||||
-$(DEL) $(OUTDIR)$(DIRSLASH)*.o
|
||||
-$(DEL) $(OUTDIR)$(DIRSLASH)*.res
|
||||
-rmdir $(OUTDIR)
|
||||
-$(DEL) *.exe
|
||||
-$(DEL) pathdef.c
|
||||
ifdef PERL
|
||||
-$(DEL) if_perl.c
|
||||
endif
|
||||
ifdef MZSCHEME
|
||||
-$(DEL) mzscheme_base.c
|
||||
endif
|
||||
$(MAKE) -C GvimExt -f Make_ming.mak clean
|
||||
$(MAKE) -C xxd -f Make_ming.mak clean
|
||||
|
||||
###########################################################################
|
||||
INCL = vim.h feature.h os_win32.h os_dos.h ascii.h keymap.h term.h macros.h \
|
||||
structs.h regexp.h option.h ex_cmds.h proto.h globals.h farsi.h \
|
||||
gui.h
|
||||
|
||||
$(OUTDIR)/if_python.o : if_python.c if_py_both.h $(INCL)
|
||||
$(CC) -c $(CFLAGS) $(PYTHONINC) -DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\" $< -o $@
|
||||
|
||||
$(OUTDIR)/if_python3.o : if_python3.c if_py_both.h $(INCL)
|
||||
$(CC) -c $(CFLAGS) $(PYTHON3INC) -DDYNAMIC_PYTHON3_DLL=\"PYTHON$(PYTHON3_VER).dll\" $< -o $@
|
||||
|
||||
$(OUTDIR)/%.o : %.c $(INCL)
|
||||
$(CC) -c $(CFLAGS) $< -o $@
|
||||
|
||||
$(OUTDIR)/vimrc.o: vim.rc version.h gui_w32_rc.h
|
||||
$(WINDRES) $(WINDRES_FLAGS) $(DEFINES) \
|
||||
--input-format=rc --output-format=coff -i vim.rc -o $@
|
||||
|
||||
$(OUTDIR):
|
||||
$(MKDIR) $(OUTDIR)
|
||||
|
||||
$(OUTDIR)/ex_docmd.o: ex_docmd.c $(INCL) ex_cmds.h
|
||||
$(CC) -c $(CFLAGS) ex_docmd.c -o $(OUTDIR)/ex_docmd.o
|
||||
|
||||
$(OUTDIR)/ex_eval.o: ex_eval.c $(INCL) ex_cmds.h
|
||||
$(CC) -c $(CFLAGS) ex_eval.c -o $(OUTDIR)/ex_eval.o
|
||||
|
||||
$(OUTDIR)/gui_w32.o: gui_w32.c gui_w48.c $(INCL)
|
||||
$(CC) -c $(CFLAGS) gui_w32.c -o $(OUTDIR)/gui_w32.o
|
||||
|
||||
$(OUTDIR)/gui_dwrite.o: gui_dwrite.cpp $(INCL) gui_dwrite.h
|
||||
$(CC) -c $(CFLAGS) gui_dwrite.cpp -o $(OUTDIR)/gui_dwrite.o
|
||||
|
||||
$(OUTDIR)/if_cscope.o: if_cscope.c $(INCL) if_cscope.h
|
||||
$(CC) -c $(CFLAGS) if_cscope.c -o $(OUTDIR)/if_cscope.o
|
||||
|
||||
# Remove -D__IID_DEFINED__ for newer versions of the w32api
|
||||
$(OUTDIR)/if_ole.o: if_ole.cpp $(INCL)
|
||||
$(CC) $(CFLAGS) -c -o $(OUTDIR)/if_ole.o if_ole.cpp
|
||||
|
||||
$(OUTDIR)/if_ruby.o: if_ruby.c $(INCL)
|
||||
ifeq (16, $(RUBY))
|
||||
$(CC) $(CFLAGS) -U_WIN32 -c -o $(OUTDIR)/if_ruby.o if_ruby.c
|
||||
endif
|
||||
|
||||
if_perl.c: if_perl.xs typemap
|
||||
$(XSUBPP) -prototypes -typemap \
|
||||
$(PERLLIB)/ExtUtils/typemap if_perl.xs > $@
|
||||
|
||||
$(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC)
|
||||
$(CC) -c $(CFLAGS) netbeans.c -o $(OUTDIR)/netbeans.o
|
||||
|
||||
$(OUTDIR)/regexp.o: regexp.c regexp_nfa.c $(INCL)
|
||||
$(CC) -c $(CFLAGS) regexp.c -o $(OUTDIR)/regexp.o
|
||||
|
||||
$(OUTDIR)/if_mzsch.o: if_mzsch.c $(INCL) if_mzsch.h $(MZ_EXTRA_DEP)
|
||||
$(CC) -c $(CFLAGS) if_mzsch.c -o $(OUTDIR)/if_mzsch.o
|
||||
|
||||
mzscheme_base.c:
|
||||
$(MZSCHEME)/mzc --c-mods mzscheme_base.c ++lib scheme/base
|
||||
|
||||
pathdef.c: $(INCL)
|
||||
ifneq (sh.exe, $(SHELL))
|
||||
@echo creating pathdef.c
|
||||
@echo '/* pathdef.c */' > pathdef.c
|
||||
@echo '#include "vim.h"' >> pathdef.c
|
||||
@echo 'char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)";' >> pathdef.c
|
||||
@echo 'char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)";' >> pathdef.c
|
||||
@echo 'char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)";' >> pathdef.c
|
||||
@echo 'char_u *all_lflags = (char_u *)"$(CC) $(CFLAGS) $(LFLAGS) -o $(TARGET) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)";' >> pathdef.c
|
||||
@echo 'char_u *compiled_user = (char_u *)"$(USERNAME)";' >> pathdef.c
|
||||
@echo 'char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";' >> pathdef.c
|
||||
else
|
||||
@echo creating pathdef.c
|
||||
@echo /* pathdef.c */ > pathdef.c
|
||||
@echo #include "vim.h" >> pathdef.c
|
||||
@echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)"; >> pathdef.c
|
||||
@echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)"; >> pathdef.c
|
||||
@echo char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)"; >> pathdef.c
|
||||
@echo char_u *all_lflags = (char_u *)"$(CC) $(CFLAGS) $(LFLAGS) -o $(TARGET) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)"; >> pathdef.c
|
||||
@echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> pathdef.c
|
||||
@echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> pathdef.c
|
||||
endif
|
||||
# Do not change this.
|
||||
UNDER_CYGWIN = no
|
||||
include Make_cyg_ming.mak
|
||||
|
||||
@@ -50,13 +50,14 @@
|
||||
# Perl interface:
|
||||
# PERL=[Path to Perl directory]
|
||||
# DYNAMIC_PERL=yes (to load the Perl DLL dynamically)
|
||||
# PERL_VER=[Perl version, in the form 55 (5.005), 56 (5.6.x), etc]
|
||||
# PERL_VER=[Perl version, in the form 55 (5.005), 56 (5.6.x),
|
||||
# 510 (5.10.x), etc]
|
||||
# (default is 56)
|
||||
#
|
||||
# Python interface:
|
||||
# PYTHON=[Path to Python directory]
|
||||
# DYNAMIC_PYTHON=yes (to load the Python DLL dynamically)
|
||||
# PYTHON_VER=[Python version, eg 15, 20] (default is 22)
|
||||
# PYTHON_VER=[Python version, eg 22, 23, ..., 27] (default is 22)
|
||||
#
|
||||
# Python3 interface:
|
||||
# PYTHON3=[Path to Python3 directory]
|
||||
@@ -66,11 +67,13 @@
|
||||
# Ruby interface:
|
||||
# RUBY=[Path to Ruby directory]
|
||||
# DYNAMIC_RUBY=yes (to load the Ruby DLL dynamically)
|
||||
# RUBY_VER=[Ruby version, eg 16, 17] (default is 18)
|
||||
# RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.8)
|
||||
# RUBY_VER=[Ruby version, eg 18, 19, 20] (default is 18)
|
||||
# RUBY_VER_LONG=[Ruby version, eg 1.8, 1.9.1, 2.0.0] (default is 1.8)
|
||||
# You must set RUBY_VER_LONG when change RUBY_VER.
|
||||
# You must set RUBY_API_VER to RUBY_VER_LONG.
|
||||
# Don't set ruby API version to RUBY_VER like 191.
|
||||
# RUBY_API_VER is derived from RUBY_VER_LONG.
|
||||
# Note: If you use Ruby 1.9.3, set as follows:
|
||||
# RUBY_VER=19
|
||||
# RUBY_VER_LONG=1.9.1 (not 1.9.3, because the API version is 1.9.1.)
|
||||
#
|
||||
# Tcl interface:
|
||||
# TCL=[Path to Tcl directory]
|
||||
|
||||
14
src/Makefile
14
src/Makefile
@@ -1779,13 +1779,12 @@ update-po:
|
||||
proto: $(PRO_AUTO) $(PRO_MANUAL)
|
||||
|
||||
# Filter out arguments that cproto doesn't support.
|
||||
# Don't pass "-pthread" to cproto, it sees it as a list of individual flags.
|
||||
# Don't pass "-fstack-protector" to cproto, for the same reason.
|
||||
# Don't pass "-g" to cproto.
|
||||
# Don't pass "-pthread", "-fwrapv" and similar arguments to cproto, it sees
|
||||
# them as a list of individual flags.
|
||||
# The -E"gcc -E" argument must be separate to avoid problems with shell
|
||||
# quoting.
|
||||
CPROTO = cproto $(PROTO_FLAGS) -DPROTO \
|
||||
`echo '$(LINT_CFLAGS)' | sed -e 's/-pthread//g' -e 's/-fstack-protector//g' -e 's/\ -g\ / /g'`
|
||||
`echo '$(LINT_CFLAGS)' | sed -e 's/ -[a-z-]\+//g'`
|
||||
|
||||
### Would be nice if this would work for "normal" make.
|
||||
### Currently it only works for (Free)BSD make.
|
||||
@@ -1879,6 +1878,9 @@ test check:
|
||||
cd testdir; $(MAKE) -f Makefile $(GUI_TESTTARGET) VIMPROG=../$(VIMTARGET) $(GUI_TESTARG) SCRIPTSOURCE=../$(SCRIPTSOURCE)
|
||||
$(MAKE) -f Makefile unittest
|
||||
|
||||
benchmark:
|
||||
cd testdir; $(MAKE) -f Makefile benchmark VIMPROG=../$(VIMTARGET) SCRIPTSOURCE=../$(SCRIPTSOURCE)
|
||||
|
||||
unittesttargets:
|
||||
$(MAKE) -f Makefile $(UNITTEST_TARGETS)
|
||||
|
||||
@@ -1896,8 +1898,12 @@ test1 test2 test3 test4 test5 test6 test7 test8 test9 \
|
||||
test_insertcount \
|
||||
test_listlbr \
|
||||
test_listlbr_utf8 \
|
||||
test_mapping \
|
||||
test_options \
|
||||
test_qf_title \
|
||||
test_signs \
|
||||
test_utf8 \
|
||||
test_writefile \
|
||||
test10 test11 test12 test13 test14 test15 test16 test17 test18 test19 \
|
||||
test20 test21 test22 test23 test24 test25 test26 test27 test28 test29 \
|
||||
test30 test31 test32 test33 test34 test35 test36 test37 test38 test39 \
|
||||
|
||||
@@ -1184,6 +1184,8 @@ win_lbr_chartabsize(wp, line, s, col, headp)
|
||||
{
|
||||
col -= W_WIDTH(wp);
|
||||
numberextra = W_WIDTH(wp) - (numberextra - win_col_off2(wp));
|
||||
if (numberextra > 0)
|
||||
col %= numberextra;
|
||||
if (*p_sbr != NUL)
|
||||
{
|
||||
colnr_T sbrlen = (colnr_T)MB_CHARLEN(p_sbr);
|
||||
|
||||
20
src/crypt.c
20
src/crypt.c
@@ -503,6 +503,26 @@ crypt_free_key(key)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Check the crypt method and give a warning if it's outdated.
|
||||
*/
|
||||
void
|
||||
crypt_check_method(method)
|
||||
int method;
|
||||
{
|
||||
if (method < CRYPT_M_BF2)
|
||||
{
|
||||
msg_scroll = TRUE;
|
||||
MSG(_("Warning: Using a weak encryption method; see :help 'cm'"));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
crypt_check_current_method()
|
||||
{
|
||||
crypt_check_method(crypt_get_method_nr(curbuf));
|
||||
}
|
||||
|
||||
/*
|
||||
* Ask the user for a crypt key.
|
||||
* When "store" is TRUE, the new key is stored in the 'key' option, and the
|
||||
|
||||
12
src/diff.c
12
src/diff.c
@@ -2107,12 +2107,20 @@ diff_infold(wp, lnum)
|
||||
* "dp" and "do" commands.
|
||||
*/
|
||||
void
|
||||
nv_diffgetput(put)
|
||||
nv_diffgetput(put, count)
|
||||
int put;
|
||||
long count;
|
||||
{
|
||||
exarg_T ea;
|
||||
char_u buf[30];
|
||||
|
||||
ea.arg = (char_u *)"";
|
||||
if (count == 0)
|
||||
ea.arg = (char_u *)"";
|
||||
else
|
||||
{
|
||||
vim_snprintf((char *)buf, 30, "%ld", count);
|
||||
ea.arg = buf;
|
||||
}
|
||||
if (put)
|
||||
ea.cmdidx = CMD_diffput;
|
||||
else
|
||||
|
||||
@@ -6916,8 +6916,12 @@ stop_insert(end_insert_pos, esc, nomove)
|
||||
}
|
||||
if (curwin->w_cursor.lnum != tpos.lnum)
|
||||
curwin->w_cursor = tpos;
|
||||
else if (cc != NUL)
|
||||
++curwin->w_cursor.col; /* put cursor back on the NUL */
|
||||
else
|
||||
{
|
||||
tpos.col++;
|
||||
if (cc != NUL && gchar_pos(&tpos) == NUL)
|
||||
++curwin->w_cursor.col; /* put cursor back on the NUL */
|
||||
}
|
||||
|
||||
/* <C-S-Right> may have started Visual mode, adjust the position for
|
||||
* deleted characters. */
|
||||
|
||||
20
src/eval.c
20
src/eval.c
@@ -19576,7 +19576,7 @@ f_winrestview(argvars, rettv)
|
||||
# endif
|
||||
changed_window_setting();
|
||||
|
||||
if (curwin->w_topline == 0)
|
||||
if (curwin->w_topline <= 0)
|
||||
curwin->w_topline = 1;
|
||||
if (curwin->w_topline > curbuf->b_ml.ml_line_count)
|
||||
curwin->w_topline = curbuf->b_ml.ml_line_count;
|
||||
@@ -19689,6 +19689,7 @@ f_writefile(argvars, rettv)
|
||||
typval_T *rettv;
|
||||
{
|
||||
int binary = FALSE;
|
||||
int append = FALSE;
|
||||
char_u *fname;
|
||||
FILE *fd;
|
||||
int ret = 0;
|
||||
@@ -19704,14 +19705,19 @@ f_writefile(argvars, rettv)
|
||||
if (argvars[0].vval.v_list == NULL)
|
||||
return;
|
||||
|
||||
if (argvars[2].v_type != VAR_UNKNOWN
|
||||
&& STRCMP(get_tv_string(&argvars[2]), "b") == 0)
|
||||
binary = TRUE;
|
||||
if (argvars[2].v_type != VAR_UNKNOWN)
|
||||
{
|
||||
if (vim_strchr(get_tv_string(&argvars[2]), 'b') != NULL)
|
||||
binary = TRUE;
|
||||
if (vim_strchr(get_tv_string(&argvars[2]), 'a') != NULL)
|
||||
append = TRUE;
|
||||
}
|
||||
|
||||
/* Always open the file in binary mode, library functions have a mind of
|
||||
* their own about CR-LF conversion. */
|
||||
fname = get_tv_string(&argvars[1]);
|
||||
if (*fname == NUL || (fd = mch_fopen((char *)fname, WRITEBIN)) == NULL)
|
||||
if (*fname == NUL || (fd = mch_fopen((char *)fname,
|
||||
append ? APPENDBIN : WRITEBIN)) == NULL)
|
||||
{
|
||||
EMSG2(_(e_notcreate), *fname == NUL ? (char_u *)_("<empty>") : fname);
|
||||
ret = -1;
|
||||
@@ -25076,6 +25082,7 @@ do_string_sub(str, pat, sub, flags)
|
||||
int i;
|
||||
int do_all;
|
||||
char_u *tail;
|
||||
char_u *end;
|
||||
garray_T ga;
|
||||
char_u *ret;
|
||||
char_u *save_cpo;
|
||||
@@ -25094,6 +25101,7 @@ do_string_sub(str, pat, sub, flags)
|
||||
if (regmatch.regprog != NULL)
|
||||
{
|
||||
tail = str;
|
||||
end = str + STRLEN(str);
|
||||
while (vim_regexec_nl(®match, str, (colnr_T)(tail - str)))
|
||||
{
|
||||
/* Skip empty match except for first match. */
|
||||
@@ -25120,7 +25128,7 @@ do_string_sub(str, pat, sub, flags)
|
||||
* - The text after the match.
|
||||
*/
|
||||
sublen = vim_regsub(®match, sub, tail, FALSE, TRUE, FALSE);
|
||||
if (ga_grow(&ga, (int)(STRLEN(tail) + sublen -
|
||||
if (ga_grow(&ga, (int)((end - tail) + sublen -
|
||||
(regmatch.endp[0] - regmatch.startp[0]))) == FAIL)
|
||||
{
|
||||
ga_clear(&ga);
|
||||
|
||||
@@ -9526,8 +9526,15 @@ ex_normal(eap)
|
||||
msg_didout |= save_msg_didout; /* don't reset msg_didout now */
|
||||
|
||||
/* Restore the state (needed when called from a function executed for
|
||||
* 'indentexpr'). */
|
||||
* 'indentexpr'). Update the mouse and cursor, they may have changed. */
|
||||
State = save_State;
|
||||
#ifdef FEAT_MOUSE
|
||||
setmouse();
|
||||
#endif
|
||||
#ifdef CURSOR_SHAPE
|
||||
ui_cursor_shape(); /* may show different cursor shape */
|
||||
#endif
|
||||
|
||||
#ifdef FEAT_MBYTE
|
||||
vim_free(arg);
|
||||
#endif
|
||||
@@ -11517,6 +11524,7 @@ ex_match(eap)
|
||||
ex_X(eap)
|
||||
exarg_T *eap UNUSED;
|
||||
{
|
||||
crypt_check_current_method();
|
||||
(void)crypt_get_key(TRUE, TRUE);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -2958,6 +2958,7 @@ check_for_cryptkey(cryptkey, ptr, sizep, filesizep, newfile, fname, did_ask)
|
||||
* Happens when retrying to detect encoding. */
|
||||
smsg((char_u *)_(need_key_msg), fname);
|
||||
msg_scroll = TRUE;
|
||||
crypt_check_method(method);
|
||||
cryptkey = crypt_get_key(newfile, FALSE);
|
||||
*did_ask = TRUE;
|
||||
|
||||
@@ -4877,6 +4878,13 @@ restore_backup:
|
||||
)
|
||||
{
|
||||
unchanged(buf, TRUE);
|
||||
#ifdef FEAT_AUTOCMD
|
||||
/* buf->b_changedtick is always incremented in unchanged() but that
|
||||
* should not trigger a TextChanged event. */
|
||||
if (last_changedtick + 1 == buf->b_changedtick
|
||||
&& last_changedtick_buf == buf)
|
||||
last_changedtick = buf->b_changedtick;
|
||||
#endif
|
||||
u_unchanged(buf);
|
||||
u_update_save_nr(buf);
|
||||
}
|
||||
|
||||
@@ -418,7 +418,8 @@ VALUE rb_num2ulong(VALUE x)
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# if defined(USE_RGENGC) && USE_RGENGC
|
||||
/* Do not generate a prototype here, VALUE isn't always defined. */
|
||||
# if defined(USE_RGENGC) && USE_RGENGC && !defined(PROTO)
|
||||
void rb_gc_writebarrier_unprotect_promoted_stub(VALUE obj)
|
||||
{
|
||||
return dll_rb_gc_writebarrier_unprotect_promoted(obj);
|
||||
|
||||
15
src/macros.h
15
src/macros.h
@@ -128,13 +128,18 @@
|
||||
* Adjust chars in a language according to 'langmap' option.
|
||||
* NOTE that there is no noticeable overhead if 'langmap' is not set.
|
||||
* When set the overhead for characters < 256 is small.
|
||||
* Don't apply 'langmap' if the character comes from the Stuff buffer.
|
||||
* Don't apply 'langmap' if the character comes from the Stuff buffer or from
|
||||
* a mapping and the langnoremap option was set.
|
||||
* The do-while is just to ignore a ';' after the macro.
|
||||
*/
|
||||
# ifdef FEAT_MBYTE
|
||||
# define LANGMAP_ADJUST(c, condition) \
|
||||
do { \
|
||||
if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0) \
|
||||
if (*p_langmap \
|
||||
&& (condition) \
|
||||
&& (!p_lnr || (p_lnr && typebuf_maplen() == 0)) \
|
||||
&& !KeyStuffed \
|
||||
&& (c) >= 0) \
|
||||
{ \
|
||||
if ((c) < 256) \
|
||||
c = langmap_mapchar[c]; \
|
||||
@@ -145,7 +150,11 @@
|
||||
# else
|
||||
# define LANGMAP_ADJUST(c, condition) \
|
||||
do { \
|
||||
if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0 && (c) < 256) \
|
||||
if (*p_langmap \
|
||||
&& (condition) \
|
||||
&& (!p_lnr || (p_lnr && typebuf_maplen() == 0)) \
|
||||
&& !KeyStuffed \
|
||||
&& (c) >= 0 && (c) < 256) \
|
||||
c = langmap_mapchar[c]; \
|
||||
} while (0)
|
||||
# endif
|
||||
|
||||
@@ -854,6 +854,7 @@ vim_main2(int argc UNUSED, char **argv UNUSED)
|
||||
#ifdef FEAT_CRYPT
|
||||
if (params.ask_for_key)
|
||||
{
|
||||
crypt_check_current_method();
|
||||
(void)crypt_get_key(TRUE, TRUE);
|
||||
TIME_MSG("getting crypt key");
|
||||
}
|
||||
|
||||
@@ -9284,7 +9284,7 @@ nv_put(cap)
|
||||
if (cap->oap->op_type == OP_DELETE && cap->cmdchar == 'p')
|
||||
{
|
||||
clearop(cap->oap);
|
||||
nv_diffgetput(TRUE);
|
||||
nv_diffgetput(TRUE, cap->opcount);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
@@ -9407,7 +9407,7 @@ nv_open(cap)
|
||||
if (cap->oap->op_type == OP_DELETE && cap->cmdchar == 'o')
|
||||
{
|
||||
clearop(cap->oap);
|
||||
nv_diffgetput(FALSE);
|
||||
nv_diffgetput(FALSE, cap->opcount);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
|
||||
@@ -1691,6 +1691,13 @@ static struct vimoption
|
||||
(char_u *)NULL, PV_NONE,
|
||||
#endif
|
||||
{(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
|
||||
{"langnoremap", "lnr", P_BOOL|P_VI_DEF,
|
||||
#ifdef FEAT_LANGMAP
|
||||
(char_u *)&p_lnr, PV_NONE,
|
||||
#else
|
||||
(char_u *)NULL, PV_NONE,
|
||||
#endif
|
||||
{(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
|
||||
{"laststatus", "ls", P_NUM|P_VI_DEF|P_RALL,
|
||||
#ifdef FEAT_WINDOWS
|
||||
(char_u *)&p_ls, PV_NONE,
|
||||
|
||||
@@ -576,6 +576,7 @@ EXTERN char_u *p_kp; /* 'keywordprg' */
|
||||
EXTERN char_u *p_km; /* 'keymodel' */
|
||||
#ifdef FEAT_LANGMAP
|
||||
EXTERN char_u *p_langmap; /* 'langmap'*/
|
||||
EXTERN int p_lnr; /* 'langnoremap' */
|
||||
#endif
|
||||
#if defined(FEAT_MENU) && defined(FEAT_MULTI_LANG)
|
||||
EXTERN char_u *p_lm; /* 'langmenu' */
|
||||
|
||||
@@ -411,7 +411,7 @@ mch_FullName(
|
||||
* - convert the result from UCS2 to 'encoding'.
|
||||
*/
|
||||
wname = enc_to_utf16(fname, NULL);
|
||||
if (wname != NULL && _wfullpath(wbuf, wname, MAX_PATH - 1) != NULL)
|
||||
if (wname != NULL && _wfullpath(wbuf, wname, MAX_PATH) != NULL)
|
||||
{
|
||||
cname = utf16_to_enc((short_u *)wbuf, NULL);
|
||||
if (cname != NULL)
|
||||
|
||||
@@ -6139,6 +6139,13 @@ mch_open(char *name, int flags, int mode)
|
||||
}
|
||||
# endif
|
||||
|
||||
/* open() can open a file which name is longer than _MAX_PATH bytes
|
||||
* and shorter than _MAX_PATH characters successfully, but sometimes it
|
||||
* causes unexpected error in another part. We make it an error explicitly
|
||||
* here. */
|
||||
if (strlen(name) >= _MAX_PATH)
|
||||
return -1;
|
||||
|
||||
return open(name, flags, mode);
|
||||
}
|
||||
|
||||
@@ -6188,6 +6195,13 @@ mch_fopen(char *name, char *mode)
|
||||
* the _wfopen() fails for missing wide functions. */
|
||||
}
|
||||
|
||||
/* fopen() can open a file which name is longer than _MAX_PATH bytes
|
||||
* and shorter than _MAX_PATH characters successfully, but sometimes it
|
||||
* causes unexpected error in another part. We make it an error explicitly
|
||||
* here. */
|
||||
if (strlen(name) >= _MAX_PATH)
|
||||
return NULL;
|
||||
|
||||
return fopen(name, mode);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -23,9 +23,8 @@ main(argc, argv)
|
||||
fputs("charset=cp932", stdout);
|
||||
p += 12;
|
||||
}
|
||||
else if (strncmp(p, "ja.po - Japanese message file", 29) == 0)
|
||||
else if (strncmp(p, "# Original translations", 23) == 0)
|
||||
{
|
||||
fputs("ja.sjis.po - Japanese message file for Vim (version 6.x)\n", stdout);
|
||||
fputs("# generated from ja.po, DO NOT EDIT", stdout);
|
||||
while (p[1] != '\n')
|
||||
++p;
|
||||
|
||||
@@ -19,6 +19,8 @@ void crypt_decode __ARGS((cryptstate_T *state, char_u *from, size_t len, char_u
|
||||
void crypt_encode_inplace __ARGS((cryptstate_T *state, char_u *buf, size_t len));
|
||||
void crypt_decode_inplace __ARGS((cryptstate_T *state, char_u *buf, size_t len));
|
||||
void crypt_free_key __ARGS((char_u *key));
|
||||
void crypt_check_method __ARGS((int method));
|
||||
void crypt_check_current_method __ARGS((void));
|
||||
char_u *crypt_get_key __ARGS((int store, int twice));
|
||||
void crypt_append_msg __ARGS((buf_T *buf));
|
||||
/* vim: set ft=c : */
|
||||
|
||||
@@ -18,7 +18,7 @@ int diffopt_changed __ARGS((void));
|
||||
int diffopt_horizontal __ARGS((void));
|
||||
int diff_find_change __ARGS((win_T *wp, linenr_T lnum, int *startp, int *endp));
|
||||
int diff_infold __ARGS((win_T *wp, linenr_T lnum));
|
||||
void nv_diffgetput __ARGS((int put));
|
||||
void nv_diffgetput __ARGS((int put, long count));
|
||||
void ex_diffgetput __ARGS((exarg_T *eap));
|
||||
int diff_mode_buf __ARGS((buf_T *buf));
|
||||
int diff_move_to __ARGS((int dir, long count));
|
||||
|
||||
138
src/regexp.c
138
src/regexp.c
@@ -8011,13 +8011,10 @@ static regengine_T bt_regengine =
|
||||
bt_regcomp,
|
||||
bt_regfree,
|
||||
bt_regexec_nl,
|
||||
bt_regexec_multi
|
||||
#ifdef DEBUG
|
||||
,(char_u *)""
|
||||
#endif
|
||||
bt_regexec_multi,
|
||||
(char_u *)""
|
||||
};
|
||||
|
||||
|
||||
#include "regexp_nfa.c"
|
||||
|
||||
static regengine_T nfa_regengine =
|
||||
@@ -8025,18 +8022,14 @@ static regengine_T nfa_regengine =
|
||||
nfa_regcomp,
|
||||
nfa_regfree,
|
||||
nfa_regexec_nl,
|
||||
nfa_regexec_multi
|
||||
#ifdef DEBUG
|
||||
,(char_u *)""
|
||||
#endif
|
||||
nfa_regexec_multi,
|
||||
(char_u *)""
|
||||
};
|
||||
|
||||
/* Which regexp engine to use? Needed for vim_regcomp().
|
||||
* Must match with 'regexpengine'. */
|
||||
static int regexp_engine = 0;
|
||||
#define AUTOMATIC_ENGINE 0
|
||||
#define BACKTRACKING_ENGINE 1
|
||||
#define NFA_ENGINE 2
|
||||
|
||||
#ifdef DEBUG
|
||||
static char_u regname[][30] = {
|
||||
"AUTOMATIC Regexp Engine",
|
||||
@@ -8083,10 +8076,8 @@ vim_regcomp(expr_arg, re_flags)
|
||||
regexp_engine = AUTOMATIC_ENGINE;
|
||||
}
|
||||
}
|
||||
#ifdef DEBUG
|
||||
bt_regengine.expr = expr;
|
||||
nfa_regengine.expr = expr;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* First try the NFA engine, unless backtracking was requested.
|
||||
@@ -8096,7 +8087,8 @@ vim_regcomp(expr_arg, re_flags)
|
||||
else
|
||||
prog = bt_regengine.regcomp(expr, re_flags);
|
||||
|
||||
if (prog == NULL) /* error compiling regexp with initial engine */
|
||||
/* Check for error compiling regexp with initial engine. */
|
||||
if (prog == NULL)
|
||||
{
|
||||
#ifdef BT_REGEXP_DEBUG_LOG
|
||||
if (regexp_engine != BACKTRACKING_ENGINE) /* debugging log for NFA */
|
||||
@@ -8114,13 +8106,27 @@ vim_regcomp(expr_arg, re_flags)
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
* If the NFA engine failed, the backtracking engine won't work either.
|
||||
* If the NFA engine failed, try the backtracking engine.
|
||||
* Disabled for now, both engines fail on the same patterns.
|
||||
* Re-enable when regcomp() fails when the pattern would work better
|
||||
* with the other engine.
|
||||
*
|
||||
if (regexp_engine == AUTOMATIC_ENGINE)
|
||||
{
|
||||
prog = bt_regengine.regcomp(expr, re_flags);
|
||||
regexp_engine == BACKTRACKING_ENGINE;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
if (prog != NULL)
|
||||
{
|
||||
/* Store the info needed to call regcomp() again when the engine turns
|
||||
* out to be very slow when executing it. */
|
||||
prog->re_engine = regexp_engine;
|
||||
prog->re_flags = re_flags;
|
||||
}
|
||||
|
||||
return prog;
|
||||
}
|
||||
|
||||
@@ -8135,20 +8141,75 @@ vim_regfree(prog)
|
||||
prog->engine->regfree(prog);
|
||||
}
|
||||
|
||||
#ifdef FEAT_EVAL
|
||||
static void report_re_switch __ARGS((char_u *pat));
|
||||
|
||||
static void
|
||||
report_re_switch(pat)
|
||||
char_u *pat;
|
||||
{
|
||||
if (p_verbose > 0)
|
||||
{
|
||||
verbose_enter();
|
||||
MSG_PUTS(_("Switching to backtracking RE engine for pattern: "));
|
||||
MSG_PUTS(pat);
|
||||
verbose_leave();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static int vim_regexec_both __ARGS((regmatch_T *rmp, char_u *line, colnr_T col, int nl));
|
||||
|
||||
/*
|
||||
* Match a regexp against a string.
|
||||
* "rmp->regprog" is a compiled regexp as returned by vim_regcomp().
|
||||
* Uses curbuf for line count and 'iskeyword'.
|
||||
* When "nl" is TRUE consider a "\n" in "line" to be a line break.
|
||||
*
|
||||
* Return TRUE if there is a match, FALSE if not.
|
||||
*/
|
||||
static int
|
||||
vim_regexec_both(rmp, line, col, nl)
|
||||
regmatch_T *rmp;
|
||||
char_u *line; /* string to match against */
|
||||
colnr_T col; /* column to start looking for match */
|
||||
int nl;
|
||||
{
|
||||
int result = rmp->regprog->engine->regexec_nl(rmp, line, col, nl);
|
||||
|
||||
/* NFA engine aborted because it's very slow. */
|
||||
if (rmp->regprog->re_engine == AUTOMATIC_ENGINE
|
||||
&& result == NFA_TOO_EXPENSIVE)
|
||||
{
|
||||
int save_p_re = p_re;
|
||||
int re_flags = rmp->regprog->re_flags;
|
||||
char_u *pat = vim_strsave(((nfa_regprog_T *)rmp->regprog)->pattern);
|
||||
|
||||
p_re = BACKTRACKING_ENGINE;
|
||||
vim_regfree(rmp->regprog);
|
||||
if (pat != NULL)
|
||||
{
|
||||
#ifdef FEAT_EVAL
|
||||
report_re_switch(pat);
|
||||
#endif
|
||||
rmp->regprog = vim_regcomp(pat, re_flags);
|
||||
if (rmp->regprog != NULL)
|
||||
result = rmp->regprog->engine->regexec_nl(rmp, line, col, nl);
|
||||
vim_free(pat);
|
||||
}
|
||||
|
||||
p_re = save_p_re;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
int
|
||||
vim_regexec(rmp, line, col)
|
||||
regmatch_T *rmp;
|
||||
char_u *line; /* string to match against */
|
||||
colnr_T col; /* column to start looking for match */
|
||||
regmatch_T *rmp;
|
||||
char_u *line;
|
||||
colnr_T col;
|
||||
{
|
||||
return rmp->regprog->engine->regexec_nl(rmp, line, col, FALSE);
|
||||
return vim_regexec_both(rmp, line, col, FALSE);
|
||||
}
|
||||
|
||||
#if defined(FEAT_MODIFY_FNAME) || defined(FEAT_EVAL) \
|
||||
@@ -8158,11 +8219,11 @@ vim_regexec(rmp, line, col)
|
||||
*/
|
||||
int
|
||||
vim_regexec_nl(rmp, line, col)
|
||||
regmatch_T *rmp;
|
||||
char_u *line;
|
||||
colnr_T col;
|
||||
regmatch_T *rmp;
|
||||
char_u *line;
|
||||
colnr_T col;
|
||||
{
|
||||
return rmp->regprog->engine->regexec_nl(rmp, line, col, TRUE);
|
||||
return vim_regexec_both(rmp, line, col, TRUE);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -8183,5 +8244,32 @@ vim_regexec_multi(rmp, win, buf, lnum, col, tm)
|
||||
colnr_T col; /* column to start looking for match */
|
||||
proftime_T *tm; /* timeout limit or NULL */
|
||||
{
|
||||
return rmp->regprog->engine->regexec_multi(rmp, win, buf, lnum, col, tm);
|
||||
int result = rmp->regprog->engine->regexec_multi(
|
||||
rmp, win, buf, lnum, col, tm);
|
||||
|
||||
/* NFA engine aborted because it's very slow. */
|
||||
if (rmp->regprog->re_engine == AUTOMATIC_ENGINE
|
||||
&& result == NFA_TOO_EXPENSIVE)
|
||||
{
|
||||
int save_p_re = p_re;
|
||||
int re_flags = rmp->regprog->re_flags;
|
||||
char_u *pat = vim_strsave(((nfa_regprog_T *)rmp->regprog)->pattern);
|
||||
|
||||
p_re = BACKTRACKING_ENGINE;
|
||||
vim_regfree(rmp->regprog);
|
||||
if (pat != NULL)
|
||||
{
|
||||
#ifdef FEAT_EVAL
|
||||
report_re_switch(pat);
|
||||
#endif
|
||||
rmp->regprog = vim_regcomp(pat, re_flags);
|
||||
if (rmp->regprog != NULL)
|
||||
result = rmp->regprog->engine->regexec_multi(
|
||||
rmp, win, buf, lnum, col, tm);
|
||||
vim_free(pat);
|
||||
}
|
||||
p_re = save_p_re;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
26
src/regexp.h
26
src/regexp.h
@@ -27,6 +27,18 @@
|
||||
*/
|
||||
#define NFA_MAX_BRACES 20
|
||||
|
||||
/*
|
||||
* In the NFA engine: how many states are allowed
|
||||
*/
|
||||
#define NFA_MAX_STATES 100000
|
||||
#define NFA_TOO_EXPENSIVE -1
|
||||
|
||||
/* Which regexp engine to use? Needed for vim_regcomp().
|
||||
* Must match with 'regexpengine'. */
|
||||
#define AUTOMATIC_ENGINE 0
|
||||
#define BACKTRACKING_ENGINE 1
|
||||
#define NFA_ENGINE 2
|
||||
|
||||
typedef struct regengine regengine_T;
|
||||
|
||||
/*
|
||||
@@ -38,6 +50,8 @@ typedef struct regprog
|
||||
{
|
||||
regengine_T *engine;
|
||||
unsigned regflags;
|
||||
unsigned re_engine; /* automatic, backtracking or nfa engine */
|
||||
unsigned re_flags; /* second argument for vim_regcomp() */
|
||||
} regprog_T;
|
||||
|
||||
/*
|
||||
@@ -47,9 +61,11 @@ typedef struct regprog
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
/* These two members implement regprog_T */
|
||||
/* These four members implement regprog_T */
|
||||
regengine_T *engine;
|
||||
unsigned regflags;
|
||||
unsigned re_engine;
|
||||
unsigned re_flags; /* second argument for vim_regcomp() */
|
||||
|
||||
int regstart;
|
||||
char_u reganch;
|
||||
@@ -81,9 +97,11 @@ struct nfa_state
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
/* These two members implement regprog_T */
|
||||
/* These three members implement regprog_T */
|
||||
regengine_T *engine;
|
||||
unsigned regflags;
|
||||
unsigned re_engine;
|
||||
unsigned re_flags; /* second argument for vim_regcomp() */
|
||||
|
||||
nfa_state_T *start; /* points into state[] */
|
||||
|
||||
@@ -96,9 +114,7 @@ typedef struct
|
||||
#ifdef FEAT_SYN_HL
|
||||
int reghasz;
|
||||
#endif
|
||||
#ifdef DEBUG
|
||||
char_u *pattern;
|
||||
#endif
|
||||
int nsubexp; /* number of () */
|
||||
int nstate;
|
||||
nfa_state_T state[1]; /* actually longer.. */
|
||||
@@ -151,9 +167,7 @@ struct regengine
|
||||
void (*regfree)(regprog_T *);
|
||||
int (*regexec_nl)(regmatch_T*, char_u*, colnr_T, int);
|
||||
long (*regexec_multi)(regmmatch_T*, win_T*, buf_T*, linenr_T, colnr_T, proftime_T*);
|
||||
#ifdef DEBUG
|
||||
char_u *expr;
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif /* _REGEXP_H */
|
||||
|
||||
@@ -5522,6 +5522,13 @@ nfa_regmatch(prog, start, submatch, m)
|
||||
nextlist->n = 0; /* clear nextlist */
|
||||
nextlist->has_pim = FALSE;
|
||||
++nfa_listid;
|
||||
if (prog->re_engine == AUTOMATIC_ENGINE && nfa_listid >= NFA_MAX_STATES)
|
||||
{
|
||||
/* too many states, retry with old engine */
|
||||
nfa_match = NFA_TOO_EXPENSIVE;
|
||||
goto theend;
|
||||
}
|
||||
|
||||
thislist->id = nfa_listid;
|
||||
nextlist->id = nfa_listid + 1;
|
||||
|
||||
@@ -5704,6 +5711,11 @@ nfa_regmatch(prog, start, submatch, m)
|
||||
*/
|
||||
result = recursive_regmatch(t->state, NULL, prog,
|
||||
submatch, m, &listids);
|
||||
if (result == NFA_TOO_EXPENSIVE)
|
||||
{
|
||||
nfa_match = result;
|
||||
goto theend;
|
||||
}
|
||||
|
||||
/* for \@! and \@<! it is a match when the result is
|
||||
* FALSE */
|
||||
@@ -5817,6 +5829,11 @@ nfa_regmatch(prog, start, submatch, m)
|
||||
/* First try matching the pattern. */
|
||||
result = recursive_regmatch(t->state, NULL, prog,
|
||||
submatch, m, &listids);
|
||||
if (result == NFA_TOO_EXPENSIVE)
|
||||
{
|
||||
nfa_match = result;
|
||||
goto theend;
|
||||
}
|
||||
if (result)
|
||||
{
|
||||
int bytelen;
|
||||
@@ -6760,6 +6777,7 @@ nfa_regtry(prog, col)
|
||||
int i;
|
||||
regsubs_T subs, m;
|
||||
nfa_state_T *start = prog->start;
|
||||
int result;
|
||||
#ifdef ENABLE_LOG
|
||||
FILE *f;
|
||||
#endif
|
||||
@@ -6791,8 +6809,11 @@ nfa_regtry(prog, col)
|
||||
clear_sub(&m.synt);
|
||||
#endif
|
||||
|
||||
if (nfa_regmatch(prog, start, &subs, &m) == FALSE)
|
||||
result = nfa_regmatch(prog, start, &subs, &m);
|
||||
if (result == FALSE)
|
||||
return 0;
|
||||
else if (result == NFA_TOO_EXPENSIVE)
|
||||
return result;
|
||||
|
||||
cleanup_subexpr();
|
||||
if (REG_MULTI)
|
||||
@@ -6929,9 +6950,7 @@ nfa_regexec_both(line, startcol)
|
||||
nfa_nsubexpr = prog->nsubexp;
|
||||
nfa_listid = 1;
|
||||
nfa_alt_listid = 2;
|
||||
#ifdef DEBUG
|
||||
nfa_regengine.expr = prog->pattern;
|
||||
#endif
|
||||
|
||||
if (prog->reganch && col > 0)
|
||||
return 0L;
|
||||
@@ -6979,9 +6998,7 @@ nfa_regexec_both(line, startcol)
|
||||
|
||||
retval = nfa_regtry(prog, col);
|
||||
|
||||
#ifdef DEBUG
|
||||
nfa_regengine.expr = NULL;
|
||||
#endif
|
||||
|
||||
theend:
|
||||
return retval;
|
||||
@@ -7003,9 +7020,7 @@ nfa_regcomp(expr, re_flags)
|
||||
if (expr == NULL)
|
||||
return NULL;
|
||||
|
||||
#ifdef DEBUG
|
||||
nfa_regengine.expr = expr;
|
||||
#endif
|
||||
|
||||
init_class_tab();
|
||||
|
||||
@@ -7082,10 +7097,8 @@ nfa_regcomp(expr, re_flags)
|
||||
/* Remember whether this pattern has any \z specials in it. */
|
||||
prog->reghasz = re_has_z;
|
||||
#endif
|
||||
#ifdef DEBUG
|
||||
prog->pattern = vim_strsave(expr);
|
||||
nfa_regengine.expr = NULL;
|
||||
#endif
|
||||
|
||||
out:
|
||||
vim_free(post_start);
|
||||
@@ -7099,9 +7112,7 @@ fail:
|
||||
#ifdef ENABLE_LOG
|
||||
nfa_postfix_dump(expr, FAIL);
|
||||
#endif
|
||||
#ifdef DEBUG
|
||||
nfa_regengine.expr = NULL;
|
||||
#endif
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -7115,9 +7126,7 @@ nfa_regfree(prog)
|
||||
if (prog != NULL)
|
||||
{
|
||||
vim_free(((nfa_regprog_T *)prog)->match_text);
|
||||
#ifdef DEBUG
|
||||
vim_free(((nfa_regprog_T *)prog)->pattern);
|
||||
#endif
|
||||
vim_free(prog);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,6 +87,7 @@ clean:
|
||||
-if exist Xfind rd /s /q Xfind
|
||||
-if exist viminfo del viminfo
|
||||
-del test.log
|
||||
-if exist benchmark.out del benchmark.out
|
||||
|
||||
.in.out:
|
||||
-if exist $*.failed del $*.failed
|
||||
@@ -103,3 +104,11 @@ clean:
|
||||
|
||||
nolog:
|
||||
-del test.log
|
||||
|
||||
benchmark:
|
||||
bench_re_freeze.out
|
||||
|
||||
bench_re_freeze.out: bench_re_freeze.vim
|
||||
-if exist benchmark.out del benchmark.out
|
||||
$(VIMPROG) -u dos.vim -U NONE --noplugin $*.in
|
||||
@IF EXIST benchmark.out ( type benchmark.out )
|
||||
|
||||
@@ -12,11 +12,13 @@ ifneq (sh.exe, $(SHELL))
|
||||
DEL = rm -f
|
||||
MV = mv
|
||||
CP = cp
|
||||
CAT = cat
|
||||
DIRSLASH = /
|
||||
else
|
||||
DEL = del
|
||||
MV = rename
|
||||
CP = copy
|
||||
CAT = type
|
||||
DIRSLASH = \\
|
||||
endif
|
||||
|
||||
@@ -72,6 +74,8 @@ SCRIPTS32 = test50.out test70.out
|
||||
|
||||
SCRIPTS_GUI = test16.out
|
||||
|
||||
SCRIPTS_BENCH = bench_re_freeze.out
|
||||
|
||||
.SUFFIXES: .in .out
|
||||
|
||||
vimall: fixff $(SCRIPTS16) $(SCRIPTS) $(SCRIPTS_GUI) $(SCRIPTS32)
|
||||
@@ -80,6 +84,8 @@ vimall: fixff $(SCRIPTS16) $(SCRIPTS) $(SCRIPTS_GUI) $(SCRIPTS32)
|
||||
nongui: fixff $(SCRIPTS16) $(SCRIPTS)
|
||||
echo ALL DONE
|
||||
|
||||
benchmark: $(SCRIPTS_BENCH)
|
||||
|
||||
small:
|
||||
echo ALL DONE
|
||||
|
||||
@@ -114,3 +120,8 @@ clean:
|
||||
-$(DEL) X*
|
||||
-$(DEL) test.ok
|
||||
-$(DEL) viminfo
|
||||
|
||||
bench_re_freeze.out: bench_re_freeze.vim
|
||||
-$(DEL) benchmark.out
|
||||
$(VIMPROG) -u dos.vim -U NONE --noplugin $*.in
|
||||
$(CAT) benchmark.out
|
||||
|
||||
@@ -50,6 +50,8 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
|
||||
test_signs.out \
|
||||
test_utf8.out
|
||||
|
||||
SCRIPTS_BENCH = bench_re_freeze.out
|
||||
|
||||
.SUFFIXES: .in .out
|
||||
|
||||
all: /tmp $(SCRIPTS)
|
||||
@@ -57,6 +59,8 @@ all: /tmp $(SCRIPTS)
|
||||
|
||||
$(SCRIPTS): $(VIMPROG)
|
||||
|
||||
benchmark: $(SCRIPTS_BENCH)
|
||||
|
||||
clean:
|
||||
-rm -rf *.out Xdotest test.ok tiny.vim small.vim mbyte.vim viminfo
|
||||
|
||||
@@ -75,3 +79,10 @@ clean:
|
||||
# Create a directory for temp files
|
||||
/tmp:
|
||||
-mkdir /tmp
|
||||
|
||||
bench_re_freeze.out: bench_re_freeze.vim
|
||||
-del $*.failed test.ok benchmark.out
|
||||
copy $*.ok test.ok
|
||||
$(VIMPROG) -u os2.vim --noplugin -s dotest.in $*.in
|
||||
type benchmark.out
|
||||
|
||||
|
||||
@@ -48,12 +48,16 @@ SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
|
||||
|
||||
SCRIPTS_GUI = test16.out
|
||||
|
||||
SCRIPTS_BENCH = bench_re_freeze.out
|
||||
|
||||
.SUFFIXES: .in .out
|
||||
|
||||
nongui: nolog $(SCRIPTS) report
|
||||
|
||||
gui: nolog $(SCRIPTS) $(SCRIPTS_GUI) report
|
||||
|
||||
benchmark: $(SCRIPTS_BENCH)
|
||||
|
||||
report:
|
||||
@echo
|
||||
@echo 'Test results:'
|
||||
@@ -65,7 +69,7 @@ report:
|
||||
$(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG)
|
||||
|
||||
RM_ON_RUN = test.out X* viminfo
|
||||
RM_ON_START = tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok
|
||||
RM_ON_START = tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok benchmark.out
|
||||
RUN_VIM = VIMRUNTIME=$(SCRIPTSOURCE); export VIMRUNTIME; $(VALGRIND) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in
|
||||
|
||||
clean:
|
||||
@@ -120,5 +124,14 @@ test49.out: test49.vim
|
||||
|
||||
test60.out: test60.vim
|
||||
|
||||
bench_re_freeze.out: bench_re_freeze.vim
|
||||
-rm -rf benchmark.out $(RM_ON_RUN)
|
||||
# Sleep a moment to avoid that the xterm title is messed up.
|
||||
# 200 msec is sufficient, but only modern sleep supports a fraction of
|
||||
# a second, fall back to a second if it fails.
|
||||
@-/bin/sh -c "sleep .2 > /dev/null 2>&1 || sleep 1"
|
||||
-$(RUN_VIM) $*.in
|
||||
@/bin/sh -c "if test -f benchmark.out; then cat benchmark.out; fi"
|
||||
|
||||
nolog:
|
||||
-rm -f test.log
|
||||
|
||||
13
src/testdir/bench_re_freeze.in
Normal file
13
src/testdir/bench_re_freeze.in
Normal file
@@ -0,0 +1,13 @@
|
||||
Test for Benchmarking RE engine
|
||||
|
||||
STARTTEST
|
||||
:so small.vim
|
||||
:if !has("reltime") | qa! | endif
|
||||
:set nocp cpo&vim
|
||||
:so bench_re_freeze.vim
|
||||
:call Measure('samples/re.freeze.txt', '\s\+\%#\@<!$', '+5')
|
||||
:/^" Benchmark/,$w! benchmark.out
|
||||
:qa!
|
||||
ENDTEST
|
||||
|
||||
" Benchmark_results:
|
||||
13
src/testdir/bench_re_freeze.vim
Normal file
13
src/testdir/bench_re_freeze.vim
Normal file
@@ -0,0 +1,13 @@
|
||||
"Test for benchmarking the RE engine
|
||||
|
||||
so small.vim
|
||||
if !has("reltime") | finish | endif
|
||||
func! Measure(file, pattern, arg)
|
||||
for re in range(3)
|
||||
let sstart=reltime()
|
||||
let cmd=printf("../vim -u NONE -N --cmd ':set re=%d'".
|
||||
\ " -c 'call search(\"%s\", \"\", \"\", 10000)' -c ':q!' %s", re, escape(a:pattern, '\\'), empty(a:arg) ? '' : a:arg)
|
||||
call system(cmd. ' '. a:file)
|
||||
$put =printf('file: %s, re: %d, time: %s', a:file, re, reltimestr(reltime(sstart)))
|
||||
endfor
|
||||
endfunc
|
||||
6
src/testdir/samples/re.freeze.txt
Normal file
6
src/testdir/samples/re.freeze.txt
Normal file
File diff suppressed because one or more lines are too long
@@ -17,6 +17,9 @@ othis should be auto-indented
|
||||
G?this is a
|
||||
othis should be in column 1:wq " append text without autoindent to Xxx
|
||||
G:r Xxx " include Xxx in the current file
|
||||
:set fo+=r " issue #57 do not move cursor on <c-o> when autoindent is set
|
||||
Go# abcdef2hi
|
||||
d0o# abcdef2hid0
|
||||
:?startstart?,$w! test.out
|
||||
:qa!
|
||||
ENDTEST
|
||||
|
||||
@@ -15,3 +15,6 @@ vim: set noai :
|
||||
this is a test
|
||||
this should be in column 1
|
||||
end of test file Xxx
|
||||
# abc
|
||||
def
|
||||
def
|
||||
|
||||
@@ -8,7 +8,6 @@ STARTTEST
|
||||
:" Test 'undofile': first a simple one-line change.
|
||||
:set nocompatible viminfo+=nviminfo visualbell
|
||||
:set ul=100 undofile nomore
|
||||
:set ff=unix
|
||||
:e! Xtestfile
|
||||
ggdGithis is one line:set ul=100
|
||||
:s/one/ONE/
|
||||
@@ -83,7 +82,7 @@ uu:w >>test.out
|
||||
:" With encryption, cryptmethod=blowfish
|
||||
:e! Xtestfile
|
||||
rubbish
|
||||
:set undofile cm=blowfish
|
||||
:set undofile cm=blowfish ff&
|
||||
ggdGijan
|
||||
feb
|
||||
mar
|
||||
@@ -109,7 +108,7 @@ u:.w >>test.out
|
||||
:" With encryption, cryptmethod=blowfish2
|
||||
:e! Xtestfile
|
||||
rubbish
|
||||
:set undofile cm=blowfish2
|
||||
:set undofile cm=blowfish2 ff&
|
||||
ggdGijan
|
||||
feb
|
||||
mar
|
||||
|
||||
18
src/testdir/test_writefile.in
Normal file
18
src/testdir/test_writefile.in
Normal file
@@ -0,0 +1,18 @@
|
||||
Tests for writefile()
|
||||
|
||||
STARTTEST
|
||||
:source small.vim
|
||||
:%delete _
|
||||
:let f = tempname()
|
||||
:call writefile(["over","written"], f, "b")
|
||||
:call writefile(["hello","world"], f, "b")
|
||||
:call writefile(["!", "good"], f, "a")
|
||||
:call writefile(["morning"], f, "ab")
|
||||
:call writefile(["", "vimmers"], f, "ab")
|
||||
:bwipeout!
|
||||
:$put =readfile(f)
|
||||
:1 delete _
|
||||
:w! test.out
|
||||
:qa!
|
||||
ENDTEST
|
||||
|
||||
5
src/testdir/test_writefile.ok
Normal file
5
src/testdir/test_writefile.ok
Normal file
@@ -0,0 +1,5 @@
|
||||
hello
|
||||
world!
|
||||
good
|
||||
morning
|
||||
vimmers
|
||||
@@ -741,6 +741,52 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
511,
|
||||
/**/
|
||||
510,
|
||||
/**/
|
||||
509,
|
||||
/**/
|
||||
508,
|
||||
/**/
|
||||
507,
|
||||
/**/
|
||||
506,
|
||||
/**/
|
||||
505,
|
||||
/**/
|
||||
504,
|
||||
/**/
|
||||
503,
|
||||
/**/
|
||||
502,
|
||||
/**/
|
||||
501,
|
||||
/**/
|
||||
500,
|
||||
/**/
|
||||
499,
|
||||
/**/
|
||||
498,
|
||||
/**/
|
||||
497,
|
||||
/**/
|
||||
496,
|
||||
/**/
|
||||
495,
|
||||
/**/
|
||||
494,
|
||||
/**/
|
||||
493,
|
||||
/**/
|
||||
492,
|
||||
/**/
|
||||
491,
|
||||
/**/
|
||||
490,
|
||||
/**/
|
||||
489,
|
||||
/**/
|
||||
488,
|
||||
/**/
|
||||
|
||||
Reference in New Issue
Block a user