Skip to content
Snippets Groups Projects
Commit e06c188b authored by Bram Moolenaar's avatar Bram Moolenaar
Browse files

Make it possible to load Perl dynamically on Unix. (James Vega)

parent cdda8fe1
No related merge requests found
*if_perl.txt* For Vim version 7.3b. Last change: 2010 Jul 20 *if_perl.txt* For Vim version 7.3b. Last change: 2010 Jul 21
VIM REFERENCE MANUAL by Sven Verdoolaege VIM REFERENCE MANUAL by Sven Verdoolaege
...@@ -265,12 +265,15 @@ Note that "EOF" must be at the start of the line. ...@@ -265,12 +265,15 @@ Note that "EOF" must be at the start of the line.
============================================================================== ==============================================================================
4. Dynamic loading *perl-dynamic* 4. Dynamic loading *perl-dynamic*
On MS-Windows the Perl library can be loaded dynamically. The |:version| On MS-Windows and Unix the Perl library can be loaded dynamically. The
output then includes |+perl/dyn|. |:version| output then includes |+perl/dyn|.
This means that Vim will search for the Perl DLL file only when needed. When This means that Vim will search for the Perl DLL or shared library file only
you don't use the Perl interface you don't need it, thus you can use Vim when needed. When you don't use the Perl interface you don't need it, thus
without this DLL file. you can use Vim without this file.
MS-Windows ~
You can download Perl from http://www.perl.org. The one from ActiveState was You can download Perl from http://www.perl.org. The one from ActiveState was
used for building Vim. used for building Vim.
......
*syntax.txt* For Vim version 7.3b. Last change: 2010 Jul 20 *syntax.txt* For Vim version 7.3b. Last change: 2010 Jul 21
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
...@@ -1083,7 +1083,9 @@ FORTRAN *fortran.vim* *ft-fortran-syntax* ...@@ -1083,7 +1083,9 @@ FORTRAN *fortran.vim* *ft-fortran-syntax*
Default highlighting and dialect ~ Default highlighting and dialect ~
Highlighting appropriate for f95 (Fortran 95) is used by default. This choice Highlighting appropriate for f95 (Fortran 95) is used by default. This choice
should be appropriate for most users most of the time because Fortran 95 is a should be appropriate for most users most of the time because Fortran 95 is a
superset of Fortran 90 and almost a superset of Fortran 77. superset of Fortran 90 and almost a superset of Fortran 77. Preliminary
support for Fortran 2003 and Fortran 2008 features has been introduced and is
automatically available in the default (f95) highlighting.
Fortran source code form ~ Fortran source code form ~
Fortran 9x code can be in either fixed or free source form. Note that the Fortran 9x code can be in either fixed or free source form. Note that the
......
*todo.txt* For Vim version 7.3b. Last change: 2010 Jul 20 *todo.txt* For Vim version 7.3b. Last change: 2010 Jul 21
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
...@@ -31,6 +31,7 @@ be worked on, but only if you sponsor Vim development. See |sponsor|. ...@@ -31,6 +31,7 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
-------------------- Known bugs and current work ----------------------- -------------------- Known bugs and current work -----------------------
Include patch for horizontal scoll wheel? (Bjorn Winckler, 2010 Jul 20) Include patch for horizontal scoll wheel? (Bjorn Winckler, 2010 Jul 20)
Asked for a few changes.
Patch for Dynamic loading for Perl. (James Vega, 2010 Jul 20) Patch for Dynamic loading for Perl. (James Vega, 2010 Jul 20)
...@@ -1124,8 +1125,6 @@ More patches: ...@@ -1124,8 +1125,6 @@ More patches:
Sep 13) Sep 13)
- Patch for adding "space" item in 'listchars'. (Jérémie Roquet, 2009 Oct 29, - Patch for adding "space" item in 'listchars'. (Jérémie Roquet, 2009 Oct 29,
Docs patch Oct 30) Docs patch Oct 30)
- Patch for supporting #rrggbb in color terminals. (Matt Wozniski)
Where is a recent version of this patch? Or use CSApprox plugin?
- Replace ccomplete.vim by cppcomplete.vim from www.vim.org? script 1520 by - Replace ccomplete.vim by cppcomplete.vim from www.vim.org? script 1520 by
Vissale Neang. (Martin Stubenschrott) Asked Vissale to make the scripts Vissale Neang. (Martin Stubenschrott) Asked Vissale to make the scripts
more friendly for the Vim distribution. more friendly for the Vim distribution.
......
...@@ -3,9 +3,9 @@ ...@@ -3,9 +3,9 @@
" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org> " Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
" Former Maintainers: Michael Piefel <piefel@informatik.hu-berlin.de> " Former Maintainers: Michael Piefel <piefel@informatik.hu-berlin.de>
" Stefano Zacchiroli <zack@debian.org> " Stefano Zacchiroli <zack@debian.org>
" Last Change: 2010-04-29 " Last Change: 2010-07-11
" License: GNU GPL, version 2.0 or later " License: GNU GPL, version 2.0 or later
" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/ftplugin/debchangelog.vim " URL: http://hg.debian.org/hg/pkg-vim/vim/file/unstable/runtime/ftplugin/debchangelog.vim
" Bug completion requires apt-listbugs installed for Debian packages or " Bug completion requires apt-listbugs installed for Debian packages or
" python-launchpadlib installed for Ubuntu packages " python-launchpadlib installed for Ubuntu packages
...@@ -228,7 +228,7 @@ endfunction ...@@ -228,7 +228,7 @@ endfunction
augroup changelogMenu augroup changelogMenu
au BufEnter * if &filetype == "debchangelog" | call <SID>MakeMenu() | endif au BufEnter * if &filetype == "debchangelog" | call <SID>MakeMenu() | endif
au BufLeave * if &filetype == "debchangelog" | aunmenu Changelog | endif au BufLeave * if &filetype == "debchangelog" | silent! aunmenu Changelog | endif
augroup END augroup END
" }}} " }}}
......
" Vim syntax file " Vim syntax file
" Language: Fortran95 (and Fortran90, Fortran77, F and elf90) " Language: Fortran95 (and Fortran90, Fortran77, F and elf90)
" Version: 0.88 " Version: 0.89
" URL: http://www.unb.ca/chem/ajit/syntax/fortran.vim " URL: http://www.unb.ca/chem/ajit/syntax/fortran.vim
" Last Change: 2008 Nov 01 " Last Change: 2010 July 21
" Maintainer: Ajit J. Thakkar (ajit AT unb.ca); <http://www.unb.ca/chem/ajit/> " Maintainer: Ajit J. Thakkar (ajit AT unb.ca); <http://www.unb.ca/chem/ajit/>
" Usage: Do :help fortran-syntax from Vim " Usage: For instructions, do :help fortran-syntax from Vim
" Credits: " Credits:
" Version 0.1 was based on the fortran 77 syntax file by Mario Eusebio and " Version 0.1 was based on the fortran 77 syntax file by Mario Eusebio and
" Preben Guldberg. Useful suggestions were made by: Andrej Panjkov, " Preben Guldberg. Useful suggestions were made by: Andrej Panjkov,
" Bram Moolenaar, Thomas Olsen, Michael Sternberg, Christian Reile, " Bram Moolenaar, Thomas Olsen, Michael Sternberg, Christian Reile,
" Walter Dieudonn, Alexander Wagner, Roman Bertle, Charles Rendleman, " Walter Dieudonn, Alexander Wagner, Roman Bertle, Charles Rendleman,
" and Andrew Griffiths. For instructions on use, do :help fortran from vim " Andrew Griffiths, Joe Krahn, and Hendrik Merx.
" For version 5.x: Clear all syntax items " For version 5.x: Clear all syntax items
" For version 6.x: Quit if a syntax file is already loaded " For version 6.x: Quit if a syntax file is already loaded
...@@ -74,7 +74,7 @@ if !exists("b:fortran_fixed_source") ...@@ -74,7 +74,7 @@ if !exists("b:fortran_fixed_source")
" Detection becomes more accurate and time-consuming if more lines " Detection becomes more accurate and time-consuming if more lines
" are checked. Increase the limit below if you keep lots of comments at " are checked. Increase the limit below if you keep lots of comments at
" the very top of each file and you have a fast computer. " the very top of each file and you have a fast computer.
let b:lmax = 250 let b:lmax = 500
if ( b:lmax > line("$") ) if ( b:lmax > line("$") )
let b:lmax = line("$") let b:lmax = line("$")
endif endif
...@@ -82,7 +82,7 @@ if !exists("b:fortran_fixed_source") ...@@ -82,7 +82,7 @@ if !exists("b:fortran_fixed_source")
let b:ln=1 let b:ln=1
while b:ln <= b:lmax while b:ln <= b:lmax
let b:test = strpart(getline(b:ln),0,5) let b:test = strpart(getline(b:ln),0,5)
if b:test[0] !~ '[Cc*!#]' && b:test !~ '^ \+[!#]' && b:test =~ '[^ 0-9\t]' if b:test !~ '^[Cc*]' && b:test !~ '^ *[!#]' && b:test =~ '[^ 0-9\t]' && b:test !~ '^[ 0-9]*\t'
let b:fortran_fixed_source = 0 let b:fortran_fixed_source = 0
break break
endif endif
...@@ -207,7 +207,8 @@ endif ...@@ -207,7 +207,8 @@ endif
syn keyword fortranTypeEx external syn keyword fortranTypeEx external
syn keyword fortranIOEx format syn keyword fortranIOEx format
syn keyword fortranKeywordEx continue syn match fortranKeywordEx "\<continue\>"
syn match fortranKeyword "^\s*\d\+\s\+continue\>"
syn match fortranKeywordEx "\<go\s*to\>" syn match fortranKeywordEx "\<go\s*to\>"
syn region fortranStringEx start=+'+ end=+'+ contains=fortranContinueMark,fortranLeftMargin,fortranSerialNumber syn region fortranStringEx start=+'+ end=+'+ contains=fortranContinueMark,fortranLeftMargin,fortranSerialNumber
syn keyword fortran77IntrinsicEx dim lge lgt lle llt mod syn keyword fortran77IntrinsicEx dim lge lgt lle llt mod
...@@ -290,6 +291,40 @@ if b:fortran_dialect == "f95" || b:fortran_dialect == "F" ...@@ -290,6 +291,40 @@ if b:fortran_dialect == "f95" || b:fortran_dialect == "F"
endif endif
endif endif
if b:fortran_dialect == "f95"
" F2003
syn keyword fortran03Intrinsic command_argument_count get_command get_command_argument get_environment_variable is_iostat_end is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of
" ISO_C_binding
syn keyword fortran03Constant c_null_char c_alert c_backspace c_form_feed c_new_line c_carriage_return c_horizontal_tab c_vertical_tab
syn keyword fortran03Constant c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr
syn keyword fortran03Intrinsic iso_c_binding c_loc c_funloc c_associated c_f_pointer c_f_procpointer
syn keyword fortran03Type c_ptr c_funptr
" ISO_Fortran_env
syn keyword fortran03Constant iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit
" IEEE_arithmetic
syn keyword fortran03Intrinsic ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode
syn keyword fortran03ReadWrite flush wait
syn keyword fortran03IO decimal round iomsg
syn keyword fortran03Type asynchronous nopass non_overridable pass protected volatile abstract extends import
syn keyword fortran03Type non_intrinsic value bind deferred generic final enumerator class
syn match fortran03Type "\<associate\>"
syn match fortran03Type "\<end\s*associate"
syn match fortran03Type "\<enum\s*,\s*bind\s*(\s*c\s*)"
syn match fortran03Type "\<end\s*enum"
syn match fortran03Conditional "\<select\s*type"
syn match fortran03Conditional "\<type\s*is\>"
syn match fortran03UnitHeader "\<abstract\s*interface\>"
syn match fortran03Operator "\([\|]\)"
" F2008
syn keyword fortran08Intrinsic acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2
syn keyword fortran08Intrinsic atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits
syn keyword fortran08Intrinsic bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image
syn keyword fortran08IO newunit
syn keyword fortran08Type contiguous
endif
syn cluster fortranCommentGroup contains=fortranTodo syn cluster fortranCommentGroup contains=fortranTodo
if (b:fortran_fixed_source == 1) if (b:fortran_fixed_source == 1)
...@@ -324,9 +359,9 @@ syn match cInclude "^\s*#\s*include\>\s*["<]" contains=cIncluded ...@@ -324,9 +359,9 @@ syn match cInclude "^\s*#\s*include\>\s*["<]" contains=cIncluded
if exists("fortran_fold") || exists("fortran_more_precise") if exists("fortran_fold") || exists("fortran_more_precise")
syn sync fromstart syn sync fromstart
elseif (b:fortran_fixed_source == 0) elseif (b:fortran_fixed_source == 0)
syn sync linecont "&" minlines=20 syn sync linecont "&" minlines=30
else else
syn sync minlines=20 syn sync minlines=30
endif endif
if version >= 600 && exists("fortran_fold") if version >= 600 && exists("fortran_fold")
...@@ -336,15 +371,17 @@ if version >= 600 && exists("fortran_fold") ...@@ -336,15 +371,17 @@ if version >= 600 && exists("fortran_fold")
syn region fortranModule transparent fold keepend start="^\s*module\s\+\(procedure\)\@!\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\(module\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram syn region fortranModule transparent fold keepend start="^\s*module\s\+\(procedure\)\@!\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\(module\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram
syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*\(\(\(real \|integer \|logical \|complex \|double \s*precision \)\s*\((\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\|type\s\+(\s*\w\+\s*) \|character \((\(\s*len\s*=\)\=\s*\d\+\s*)\|(\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\=\s*function\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|function\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*\(\(\(real \|integer \|logical \|complex \|double \s*precision \)\s*\((\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\|type\s\+(\s*\w\+\s*) \|character \((\(\s*len\s*=\)\=\s*\d\+\s*)\|(\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\=\s*function\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|function\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
syn region fortranSubroutine transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*subroutine\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|subroutine\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule syn region fortranSubroutine transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*subroutine\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|subroutine\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
syn region fortranBlockData transparent fold keepend start="\<block\s*data\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|block\s*data\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock syn region fortranBlockData transparent fold keepend start="\<block\s*data\(\s\+\z(\a\w*\)\)\=" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|block\s*data\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
syn region fortranInterface transparent fold keepend extend start="^\s*interface\>" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*interface\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock syn region fortranInterface transparent fold keepend extend start="^\s*interface\>" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*interface\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
syn region fortranTypeDef transparent fold keepend extend start="^\s*type\s*\(,\s*\(public\|private\)\)\=\s*::" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*type\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
else else
syn region fortranProgram transparent fold keepend start="^\s*program\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\(program\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranModule syn region fortranProgram transparent fold keepend start="^\s*program\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\(program\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranModule
syn region fortranModule transparent fold keepend start="^\s*module\s\+\(procedure\)\@!\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\(module\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram syn region fortranModule transparent fold keepend start="^\s*module\s\+\(procedure\)\@!\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\(module\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram
syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*\(\(\(real \|integer \|logical \|complex \|double \s*precision \)\s*\((\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\|type\s\+(\s*\w\+\s*) \|character \((\(\s*len\s*=\)\=\s*\d\+\s*)\|(\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\=\s*function\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|function\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*\(\(\(real \|integer \|logical \|complex \|double \s*precision \)\s*\((\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\|type\s\+(\s*\w\+\s*) \|character \((\(\s*len\s*=\)\=\s*\d\+\s*)\|(\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\=\s*function\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|function\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
syn region fortranSubroutine transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*subroutine\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|subroutine\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule syn region fortranSubroutine transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*subroutine\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|subroutine\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
syn region fortranBlockData transparent fold keepend start="\<block\s*data\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|block\s*data\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock syn region fortranBlockData transparent fold keepend start="\<block\s*data\(\s\+\z(\a\w*\)\)\=" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|block\s*data\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
syn region fortranInterface transparent fold keepend extend start="^\s*interface\>" skip="^\s*[!#].*$" excludenl end="\<end\s*interface\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock syn region fortranInterface transparent fold keepend extend start="^\s*interface\>" skip="^\s*[!#].*$" excludenl end="\<end\s*interface\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
syn region fortranTypeDef transparent fold keepend extend start="^\s*type\s*\(,\s*\(public\|private\)\)\=\s*::" skip="^\s*[!#].*$" excludenl end="\<end\s*type\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
endif endif
if exists("fortran_fold_conditionals") if exists("fortran_fold_conditionals")
...@@ -390,26 +427,41 @@ if version >= 508 || !exists("did_fortran_syn_inits") ...@@ -390,26 +427,41 @@ if version >= 508 || !exists("did_fortran_syn_inits")
" fortranMultiCommentLines " fortranMultiCommentLines
HiLink fortranKeyword Keyword HiLink fortranKeyword Keyword
HiLink fortranConstructName Identifier HiLink fortranConstructName Identifier
HiLink fortran03Conditional fortranConditional
HiLink fortranConditional Conditional HiLink fortranConditional Conditional
HiLink fortranRepeat Repeat HiLink fortranRepeat Repeat
HiLink fortranTodo Todo HiLink fortranTodo Todo
HiLink fortranContinueMark Todo if (b:fortran_fixed_source == 1)
HiLink fortranContinueMark Todo
else
HiLink fortranContinueMark Keyword
endif
HiLink fortranString String HiLink fortranString String
HiLink fortranNumber Number HiLink fortranNumber Number
HiLink fortran03Operator fortranOperator
HiLink fortranOperator Operator HiLink fortranOperator Operator
HiLink fortranBoolean Boolean HiLink fortranBoolean Boolean
HiLink fortranLabelError Error HiLink fortranLabelError Error
HiLink fortranObsolete Todo HiLink fortranObsolete Todo
HiLink fortran03Type fortranType
HiLink fortran08Type fortranType
HiLink fortranType Type HiLink fortranType Type
HiLink fortranStructure Type HiLink fortranStructure Type
HiLink fortranStorageClass StorageClass HiLink fortranStorageClass StorageClass
HiLink fortranCall fortranUnitHeader HiLink fortranCall Function
HiLink fortran03UnitHeader fortranUnitHeader
HiLink fortranUnitHeader fortranPreCondit HiLink fortranUnitHeader fortranPreCondit
HiLink fortran03ReadWrite fortranReadWrite
HiLink fortranReadWrite Keyword HiLink fortranReadWrite Keyword
HiLink fortran03IO fortranIO
HiLink fortran08IO fortranIO
HiLink fortranIO Keyword HiLink fortranIO Keyword
HiLink fortran95Intrinsic fortran90Intrinsic HiLink fortran95Intrinsic fortran90Intrinsic
HiLink fortran77Intrinsic fortran90Intrinsic HiLink fortran77Intrinsic fortran90Intrinsic
HiLink fortran90Intrinsic Function HiLink fortran90Intrinsic Function
HiLink fortran03Intrinsic Function
HiLink fortran08Intrinsic Function
HiLink fortran03Constant Function
if ( b:fortran_dialect == "elf" || b:fortran_dialect == "F" ) if ( b:fortran_dialect == "elf" || b:fortran_dialect == "F" )
HiLink fortranKeywordOb fortranObsolete HiLink fortranKeywordOb fortranObsolete
......
...@@ -384,8 +384,10 @@ CClink = $(CC) ...@@ -384,8 +384,10 @@ CClink = $(CC)
#CONF_OPT_PLTHOME = --with-plthome=/home/me/mz #CONF_OPT_PLTHOME = --with-plthome=/home/me/mz
# PERL # PERL
# Uncomment this when you want to include the Perl interface. # Uncomment one of these when you want to include the Perl interface.
# First one is for static linking, second one for dynamic loading.
# The Perl option sometimes causes problems, because it adds extra flags # The Perl option sometimes causes problems, because it adds extra flags
#
# to the command line. If you see strange flags during compilation, check in # to the command line. If you see strange flags during compilation, check in
# auto/config.mk where they come from. If it's PERL_CFLAGS, try commenting # auto/config.mk where they come from. If it's PERL_CFLAGS, try commenting
# the next line. # the next line.
...@@ -393,6 +395,7 @@ CClink = $(CC) ...@@ -393,6 +395,7 @@ CClink = $(CC)
# one: "touch perl.exp". # one: "touch perl.exp".
# This requires at least "small" features, "tiny" doesn't work. # This requires at least "small" features, "tiny" doesn't work.
#CONF_OPT_PERL = --enable-perlinterp #CONF_OPT_PERL = --enable-perlinterp
#CONF_OPT_PERL = --enable-perlinterp=dynamic
# PYTHON # PYTHON
# Uncomment this when you want to include the Python interface. # Uncomment this when you want to include the Python interface.
...@@ -1311,7 +1314,7 @@ SHELL = /bin/sh ...@@ -1311,7 +1314,7 @@ SHELL = /bin/sh
.SUFFIXES: .c .o .pro .SUFFIXES: .c .o .pro
PRE_DEFS = -Iproto $(DEFS) $(GUI_DEFS) $(GUI_IPATH) $(CPPFLAGS) $(EXTRA_IPATHS) PRE_DEFS = -Iproto $(DEFS) $(GUI_DEFS) $(GUI_IPATH) $(CPPFLAGS) $(EXTRA_IPATHS)
POST_DEFS = $(X_CFLAGS) $(LUA_CFLAGS) $(MZSCHEME_CFLAGS) $(PERL_CFLAGS) $(ECL_CFLAGS) $(TCL_CFLAGS) $(RUBY_CFLAGS) $(EXTRA_DEFS) POST_DEFS = $(X_CFLAGS) $(LUA_CFLAGS) $(MZSCHEME_CFLAGS) $(TCL_CFLAGS) $(RUBY_CFLAGS) $(EXTRA_DEFS)
ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(POST_DEFS) ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(POST_DEFS)
...@@ -2494,10 +2497,10 @@ mzscheme_base.c: ...@@ -2494,10 +2497,10 @@ mzscheme_base.c:
$(MZSCHEME_MZC) --c-mods mzscheme_base.c ++lib scheme/base $(MZSCHEME_MZC) --c-mods mzscheme_base.c ++lib scheme/base
objects/if_perl.o: auto/if_perl.c objects/if_perl.o: auto/if_perl.c
$(CCC) -o $@ auto/if_perl.c $(CCC) $(PERL_CFLAGS) -o $@ auto/if_perl.c
objects/if_perlsfio.o: if_perlsfio.c objects/if_perlsfio.o: if_perlsfio.c
$(CCC) -o $@ if_perlsfio.c $(CCC) $(PERL_CFLAGS) -o $@ if_perlsfio.c
objects/py_config.o: $(PYTHON_CONFDIR)/config.c objects/py_config.o: $(PYTHON_CONFDIR)/config.c
$(CCC) $(PYTHON_CFLAGS) -o $@ $(PYTHON_CONFDIR)/config.c \ $(CCC) $(PYTHON_CFLAGS) -o $@ $(PYTHON_CONFDIR)/config.c \
......
...@@ -1423,7 +1423,7 @@ Optional Features: ...@@ -1423,7 +1423,7 @@ Optional Features:
--disable-xsmp-interact Disable XSMP interaction --disable-xsmp-interact Disable XSMP interaction
--enable-luainterp Include Lua interpreter. --enable-luainterp Include Lua interpreter.
--enable-mzschemeinterp Include MzScheme interpreter. --enable-mzschemeinterp Include MzScheme interpreter.
--enable-perlinterp Include Perl interpreter. --enable-perlinterp=OPTS Include Perl interpreter. default=no OPTS=no/yes/dynamic
--enable-pythoninterp Include Python interpreter. --enable-pythoninterp Include Python interpreter.
--enable-python3interp Include Python3 interpreter. --enable-python3interp Include Python3 interpreter.
--enable-tclinterp Include Tcl interpreter. --enable-tclinterp Include Tcl interpreter.
...@@ -4241,7 +4241,7 @@ if test "${with_local_dir+set}" = set; then : ...@@ -4241,7 +4241,7 @@ if test "${with_local_dir+set}" = set; then :
*/*) ;; */*) ;;
no) no)
# avoid adding local dir to LDFLAGS and CPPFLAGS # avoid adding local dir to LDFLAGS and CPPFLAGS
have_local_dir=yes have_local_include=yes
have_local_lib=yes have_local_lib=yes
;; ;;
*) as_fn_error "must pass path argument to --with-local-dir" "$LINENO" 5 ;; *) as_fn_error "must pass path argument to --with-local-dir" "$LINENO" 5 ;;
...@@ -4924,7 +4924,7 @@ fi ...@@ -4924,7 +4924,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_perlinterp" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_perlinterp" >&5
$as_echo "$enable_perlinterp" >&6; } $as_echo "$enable_perlinterp" >&6; }
if test "$enable_perlinterp" = "yes"; then if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
# Extract the first word of "perl", so it can be a program name with args. # Extract the first word of "perl", so it can be a program name with args.
set dummy perl; ac_word=$2 set dummy perl; ac_word=$2
...@@ -4971,6 +4971,7 @@ fi ...@@ -4971,6 +4971,7 @@ fi
$as_echo_n "checking Perl version... " >&6; } $as_echo_n "checking Perl version... " >&6; }
if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
eval `$vi_cv_path_perl -V:usethreads` eval `$vi_cv_path_perl -V:usethreads`
eval `$vi_cv_path_perl -V:libperl`
if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
badthreads=no badthreads=no
else else
...@@ -5077,6 +5078,13 @@ $as_echo ">>> too old; need Perl version 5.003_01 or later <<<" >&6; } ...@@ -5077,6 +5078,13 @@ $as_echo ">>> too old; need Perl version 5.003_01 or later <<<" >&6; }
PERL_LIBS="-L$darwindir/CORE -lperl" PERL_LIBS="-L$darwindir/CORE -lperl"
fi fi
fi fi
if test "$enable_perlinterp" = "dynamic"; then
if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
$as_echo "#define DYNAMIC_PERL 1" >>confdefs.h
PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
fi
fi
fi fi
......
...@@ -325,6 +325,9 @@ ...@@ -325,6 +325,9 @@
/* Define if you want to include the Perl interpreter. */ /* Define if you want to include the Perl interpreter. */
#undef FEAT_PERL #undef FEAT_PERL
/* Define for linking via dlopen() or LoadLibrary() */
#undef DYNAMIC_PERL
/* Define if you want to include the Python interpreter. */ /* Define if you want to include the Python interpreter. */
#undef FEAT_PYTHON #undef FEAT_PYTHON
......
...@@ -213,7 +213,7 @@ if test "$cross_compiling" = no; then ...@@ -213,7 +213,7 @@ if test "$cross_compiling" = no; then
*/*) ;; */*) ;;
no) no)
# avoid adding local dir to LDFLAGS and CPPFLAGS # avoid adding local dir to LDFLAGS and CPPFLAGS
have_local_dir=yes have_local_include=yes
have_local_lib=yes have_local_lib=yes
;; ;;
*) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;; *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
...@@ -620,16 +620,17 @@ fi ...@@ -620,16 +620,17 @@ fi
AC_MSG_CHECKING(--enable-perlinterp argument) AC_MSG_CHECKING(--enable-perlinterp argument)
AC_ARG_ENABLE(perlinterp, AC_ARG_ENABLE(perlinterp,
[ --enable-perlinterp Include Perl interpreter.], , [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
[enable_perlinterp="no"]) [enable_perlinterp="no"])
AC_MSG_RESULT($enable_perlinterp) AC_MSG_RESULT($enable_perlinterp)
if test "$enable_perlinterp" = "yes"; then if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
AC_SUBST(vi_cv_path_perl) AC_SUBST(vi_cv_path_perl)
AC_PATH_PROG(vi_cv_path_perl, perl) AC_PATH_PROG(vi_cv_path_perl, perl)
if test "X$vi_cv_path_perl" != "X"; then if test "X$vi_cv_path_perl" != "X"; then
AC_MSG_CHECKING(Perl version) AC_MSG_CHECKING(Perl version)
if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
eval `$vi_cv_path_perl -V:usethreads` eval `$vi_cv_path_perl -V:usethreads`
eval `$vi_cv_path_perl -V:libperl`
if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
badthreads=no badthreads=no
else else
...@@ -722,6 +723,12 @@ if test "$enable_perlinterp" = "yes"; then ...@@ -722,6 +723,12 @@ if test "$enable_perlinterp" = "yes"; then
PERL_LIBS="-L$darwindir/CORE -lperl" PERL_LIBS="-L$darwindir/CORE -lperl"
fi fi
fi fi
if test "$enable_perlinterp" = "dynamic"; then
if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
AC_DEFINE(DYNAMIC_PERL)
PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
fi
fi
fi fi
AC_SUBST(shrpenv) AC_SUBST(shrpenv)
AC_SUBST(PERL_SRC) AC_SUBST(PERL_SRC)
......
...@@ -84,9 +84,32 @@ static void VIM_init __ARGS((void)); ...@@ -84,9 +84,32 @@ static void VIM_init __ARGS((void));
EXTERN_C void boot_DynaLoader __ARGS((pTHX_ CV*)); EXTERN_C void boot_DynaLoader __ARGS((pTHX_ CV*));
/* /*
* For dynamic linked perl. (Windows) * For dynamic linked perl.
*/ */
#if defined(DYNAMIC_PERL) || defined(PROTO) #if defined(DYNAMIC_PERL) || defined(PROTO)
#ifndef DYNAMIC_PERL /* just generating prototypes */
#ifdef _MSWIN
typedef int HANDLE;
#endif
typedef int XSINIT_t;
typedef int XSUBADDR_t;
typedef int perl_key;
#endif
#ifndef _MSWIN
#include <dlfcn.h>
#define HANDLE void*
#define PERL_PROC void*
#define load_dll(n) dlopen((n), RTLD_LAZY|RTLD_GLOBAL)
#define symbol_from_dll dlsym
#define close_dll dlclose
#else
#define PERL_PROC FARPROC
#define load_dll LoadLibrary
#define symbol_from_dll GetProcAddress
#define close_dll FreeLibrary
#endif
/* /*
* Wrapper defines * Wrapper defines
*/ */
...@@ -173,6 +196,7 @@ EXTERN_C void boot_DynaLoader __ARGS((pTHX_ CV*)); ...@@ -173,6 +196,7 @@ EXTERN_C void boot_DynaLoader __ARGS((pTHX_ CV*));
# define Perl_Ierrgv_ptr dll_Perl_Ierrgv_ptr # define Perl_Ierrgv_ptr dll_Perl_Ierrgv_ptr
# define Perl_Isv_yes_ptr dll_Perl_Isv_yes_ptr # define Perl_Isv_yes_ptr dll_Perl_Isv_yes_ptr
# define boot_DynaLoader dll_boot_DynaLoader # define boot_DynaLoader dll_boot_DynaLoader
# define Perl_Gthr_key_ptr dll_Perl_Gthr_key_ptr
# define Perl_sys_init dll_Perl_sys_init # define Perl_sys_init dll_Perl_sys_init
# define Perl_sys_term dll_Perl_sys_term # define Perl_sys_term dll_Perl_sys_term
...@@ -191,12 +215,6 @@ EXTERN_C void boot_DynaLoader __ARGS((pTHX_ CV*)); ...@@ -191,12 +215,6 @@ EXTERN_C void boot_DynaLoader __ARGS((pTHX_ CV*));
# define Perl_Iscopestack_ix_ptr dll_Perl_Iscopestack_ix_ptr # define Perl_Iscopestack_ix_ptr dll_Perl_Iscopestack_ix_ptr
# define Perl_Iunitcheckav_ptr dll_Perl_Iunitcheckav_ptr # define Perl_Iunitcheckav_ptr dll_Perl_Iunitcheckav_ptr
#ifndef DYNAMIC_PERL /* just generating prototypes */
typedef int HANDLE;
typedef int XSINIT_t;
typedef int XSUBADDR_t;
#endif
/* /*
* Declare HANDLE for perl.dll and function pointers. * Declare HANDLE for perl.dll and function pointers.
*/ */
...@@ -265,6 +283,7 @@ static void (*Perl_sv_setsv_flags)(pTHX_ SV*, SV*, I32); ...@@ -265,6 +283,7 @@ static void (*Perl_sv_setsv_flags)(pTHX_ SV*, SV*, I32);
static void (*Perl_sv_setsv)(pTHX_ SV*, SV*); static void (*Perl_sv_setsv)(pTHX_ SV*, SV*);
#endif #endif
static bool (*Perl_sv_upgrade)(pTHX_ SV*, U32); static bool (*Perl_sv_upgrade)(pTHX_ SV*, U32);
#if (PERL_REVISION == 5) && (PERL_VERSION < 10)
static SV*** (*Perl_Tstack_sp_ptr)(register PerlInterpreter*); static SV*** (*Perl_Tstack_sp_ptr)(register PerlInterpreter*);
static OP** (*Perl_Top_ptr)(register PerlInterpreter*); static OP** (*Perl_Top_ptr)(register PerlInterpreter*);
static SV*** (*Perl_Tstack_base_ptr)(register PerlInterpreter*); static SV*** (*Perl_Tstack_base_ptr)(register PerlInterpreter*);
...@@ -276,12 +295,7 @@ static I32** (*Perl_Tmarkstack_max_ptr)(register PerlInterpreter*); ...@@ -276,12 +295,7 @@ static I32** (*Perl_Tmarkstack_max_ptr)(register PerlInterpreter*);
static SV** (*Perl_TSv_ptr)(register PerlInterpreter*); static SV** (*Perl_TSv_ptr)(register PerlInterpreter*);
static XPV** (*Perl_TXpv_ptr)(register PerlInterpreter*); static XPV** (*Perl_TXpv_ptr)(register PerlInterpreter*);
static STRLEN* (*Perl_Tna_ptr)(register PerlInterpreter*); static STRLEN* (*Perl_Tna_ptr)(register PerlInterpreter*);
static GV** (*Perl_Idefgv_ptr)(register PerlInterpreter*); #else
static GV** (*Perl_Ierrgv_ptr)(register PerlInterpreter*);
static SV* (*Perl_Isv_yes_ptr)(register PerlInterpreter*);
static void (*boot_DynaLoader)_((pTHX_ CV*));
#if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
static void (*Perl_sv_free2)(pTHX_ SV*); static void (*Perl_sv_free2)(pTHX_ SV*);
static void (*Perl_sys_init)(int* argc, char*** argv); static void (*Perl_sys_init)(int* argc, char*** argv);
static void (*Perl_sys_term)(void); static void (*Perl_sys_term)(void);
...@@ -301,10 +315,15 @@ static I32* (*Perl_Iscopestack_ix_ptr)(register PerlInterpreter*); ...@@ -301,10 +315,15 @@ static I32* (*Perl_Iscopestack_ix_ptr)(register PerlInterpreter*);
static AV** (*Perl_Iunitcheckav_ptr)(register PerlInterpreter*); static AV** (*Perl_Iunitcheckav_ptr)(register PerlInterpreter*);
#endif #endif
static GV** (*Perl_Idefgv_ptr)(register PerlInterpreter*);
static GV** (*Perl_Ierrgv_ptr)(register PerlInterpreter*);
static SV* (*Perl_Isv_yes_ptr)(register PerlInterpreter*);
static void (*boot_DynaLoader)_((pTHX_ CV*));
static perl_key* (*Perl_Gthr_key_ptr)_((pTHX));
/* /*
* Table of name to function pointer of perl. * Table of name to function pointer of perl.
*/ */
#define PERL_PROC FARPROC
static struct { static struct {
char* name; char* name;
PERL_PROC* ptr; PERL_PROC* ptr;
...@@ -389,17 +408,16 @@ static struct { ...@@ -389,17 +408,16 @@ static struct {
{"Perl_sys_init", (PERL_PROC*)&Perl_sys_init}, {"Perl_sys_init", (PERL_PROC*)&Perl_sys_init},
{"Perl_sys_term", (PERL_PROC*)&Perl_sys_term}, {"Perl_sys_term", (PERL_PROC*)&Perl_sys_term},
{"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr}, {"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr},
{"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr},
{"Perl_Iop_ptr", (PERL_PROC*)&Perl_Iop_ptr},
{"Perl_Istack_base_ptr", (PERL_PROC*)&Perl_Istack_base_ptr},
{"Perl_Istack_max_ptr", (PERL_PROC*)&Perl_Istack_max_ptr}, {"Perl_Istack_max_ptr", (PERL_PROC*)&Perl_Istack_max_ptr},
{"Perl_Istack_base_ptr", (PERL_PROC*)&Perl_Istack_base_ptr},
{"Perl_IXpv_ptr", (PERL_PROC*)&Perl_IXpv_ptr},
{"Perl_Itmps_ix_ptr", (PERL_PROC*)&Perl_Itmps_ix_ptr}, {"Perl_Itmps_ix_ptr", (PERL_PROC*)&Perl_Itmps_ix_ptr},
{"Perl_Itmps_floor_ptr", (PERL_PROC*)&Perl_Itmps_floor_ptr}, {"Perl_Itmps_floor_ptr", (PERL_PROC*)&Perl_Itmps_floor_ptr},
{"Perl_Ina_ptr", (PERL_PROC*)&Perl_Ina_ptr},
{"Perl_Imarkstack_ptr_ptr", (PERL_PROC*)&Perl_Imarkstack_ptr_ptr}, {"Perl_Imarkstack_ptr_ptr", (PERL_PROC*)&Perl_Imarkstack_ptr_ptr},
{"Perl_Imarkstack_max_ptr", (PERL_PROC*)&Perl_Imarkstack_max_ptr}, {"Perl_Imarkstack_max_ptr", (PERL_PROC*)&Perl_Imarkstack_max_ptr},
{"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr}, {"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr},
{"Perl_IXpv_ptr", (PERL_PROC*)&Perl_IXpv_ptr}, {"Perl_Iop_ptr", (PERL_PROC*)&Perl_Iop_ptr},
{"Perl_Ina_ptr", (PERL_PROC*)&Perl_Ina_ptr},
{"Perl_call_list", (PERL_PROC*)&Perl_call_list}, {"Perl_call_list", (PERL_PROC*)&Perl_call_list},
{"Perl_Iscopestack_ix_ptr", (PERL_PROC*)&Perl_Iscopestack_ix_ptr}, {"Perl_Iscopestack_ix_ptr", (PERL_PROC*)&Perl_Iscopestack_ix_ptr},
{"Perl_Iunitcheckav_ptr", (PERL_PROC*)&Perl_Iunitcheckav_ptr}, {"Perl_Iunitcheckav_ptr", (PERL_PROC*)&Perl_Iunitcheckav_ptr},
...@@ -408,6 +426,7 @@ static struct { ...@@ -408,6 +426,7 @@ static struct {
{"Perl_Ierrgv_ptr", (PERL_PROC*)&Perl_Ierrgv_ptr}, {"Perl_Ierrgv_ptr", (PERL_PROC*)&Perl_Ierrgv_ptr},
{"Perl_Isv_yes_ptr", (PERL_PROC*)&Perl_Isv_yes_ptr}, {"Perl_Isv_yes_ptr", (PERL_PROC*)&Perl_Isv_yes_ptr},
{"boot_DynaLoader", (PERL_PROC*)&boot_DynaLoader}, {"boot_DynaLoader", (PERL_PROC*)&boot_DynaLoader},
{"Perl_Gthr_key_ptr", (PERL_PROC*)&Perl_Gthr_key_ptr},
{"", NULL}, {"", NULL},
}; };
...@@ -428,7 +447,7 @@ perl_runtime_link_init(char *libname, int verbose) ...@@ -428,7 +447,7 @@ perl_runtime_link_init(char *libname, int verbose)
if (hPerlLib != NULL) if (hPerlLib != NULL)
return OK; return OK;
if (!(hPerlLib = LoadLibraryEx(libname, NULL, 0))) if ((hPerlLib = load_dll(libname)) == NULL)
{ {
if (verbose) if (verbose)
EMSG2(_("E370: Could not load library %s"), libname); EMSG2(_("E370: Could not load library %s"), libname);
...@@ -436,10 +455,10 @@ perl_runtime_link_init(char *libname, int verbose) ...@@ -436,10 +455,10 @@ perl_runtime_link_init(char *libname, int verbose)
} }
for (i = 0; perl_funcname_table[i].ptr; ++i) for (i = 0; perl_funcname_table[i].ptr; ++i)
{ {
if (!(*perl_funcname_table[i].ptr = GetProcAddress(hPerlLib, if (!(*perl_funcname_table[i].ptr = symbol_from_dll(hPerlLib,
perl_funcname_table[i].name))) perl_funcname_table[i].name)))
{ {
FreeLibrary(hPerlLib); close_dll(hPerlLib);
hPerlLib = NULL; hPerlLib = NULL;
if (verbose) if (verbose)
EMSG2(_(e_loadfunc), perl_funcname_table[i].name); EMSG2(_(e_loadfunc), perl_funcname_table[i].name);
...@@ -508,7 +527,7 @@ perl_end() ...@@ -508,7 +527,7 @@ perl_end()
#ifdef DYNAMIC_PERL #ifdef DYNAMIC_PERL
if (hPerlLib) if (hPerlLib)
{ {
FreeLibrary(hPerlLib); close_dll(hPerlLib);
hPerlLib = NULL; hPerlLib = NULL;
} }
#endif #endif
......
...@@ -41,7 +41,7 @@ else ...@@ -41,7 +41,7 @@ else
if sh link.cmd; then if sh link.cmd; then
touch auto/link.sed touch auto/link.sed
cp link.cmd linkit.sh cp link.cmd linkit.sh
for libname in SM ICE nsl dnet dnet_stub inet socket dir elf iconv Xt Xmu Xp Xpm X11 Xdmcp x w dl pthread thread readline m perl crypt attr; do for libname in SM ICE nsl dnet dnet_stub inet socket dir elf iconv Xt Xmu Xp Xpm X11 Xdmcp x w perl dl pthread thread readline m crypt attr; do
cont=yes cont=yes
while test -n "$cont"; do while test -n "$cont"; do
if grep "l$libname " linkit.sh >/dev/null; then if grep "l$libname " linkit.sh >/dev/null; then
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment