Mercurial > octave-antonio
annotate scripts/miscellaneous/mkoctfile.m @ 19833:9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Try to trim long lines to < 80 chars.
Use '##' for single line comments.
Use '(...)' around tests for if/elseif/switch/while.
Abut cell indexing operator '{' next to variable.
Abut array indexing operator '(' next to variable.
Use space between negation operator '!' and following expression.
Use two newlines between endfunction and start of %!test or %!demo code.
Remove unnecessary parens grouping between short-circuit operators.
Remove stray extra spaces (typos) between variables and assignment operators.
Remove stray extra spaces from ends of lines.
author | Rik <rik@octave.org> |
---|---|
date | Mon, 23 Feb 2015 14:54:39 -0800 |
parents | 4197fc428c7d |
children | df437a52bcaf |
rev | line source |
---|---|
19697
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
18359
diff
changeset
|
1 ## Copyright (C) 2006-2015 Keith Goodman |
5671 | 2 ## |
3 ## This file is part of Octave. | |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
6 ## under the terms of the GNU General Public License as published by | |
7016 | 7 ## the Free Software Foundation; either version 3 of the License, or (at |
8 ## your option) any later version. | |
5671 | 9 ## |
10 ## Octave is distributed in the hope that it will be useful, but | |
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 ## General Public License for more details. | |
14 ## | |
15 ## You should have received a copy of the GNU General Public License | |
7016 | 16 ## along with Octave; see the file COPYING. If not, see |
17 ## <http://www.gnu.org/licenses/>. | |
5671 | 18 |
19 ## -*- texinfo -*- | |
14366
b76f0740940e
doc: Periodic grammar check of documentation.
Rik <octave@nomad.inbox5.com>
parents:
14327
diff
changeset
|
20 ## @deftypefn {Command} {} mkoctfile [-options] file @dots{} |
18356
cc0ea287d0c7
mkoctfile.m: Add missing bracket to @deftypefn declaration.
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
21 ## @deftypefnx {Function File} {[@var{output}, @var{status}] =} mkoctfile (@dots{}) |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11575
diff
changeset
|
22 ## |
5695 | 23 ## The @code{mkoctfile} function compiles source code written in C, |
24 ## C++, or Fortran. Depending on the options used with @code{mkoctfile}, the | |
25 ## compiled code can be called within Octave or can be used as a stand-alone | |
26 ## application. | |
27 ## | |
28 ## @code{mkoctfile} can be called from the shell prompt or from the Octave | |
14121
6a59b271cd91
mkoctfile.m: Return the output and exit status from the mkoctfile shell command
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13025
diff
changeset
|
29 ## prompt. Calling it from the Octave prompt simply delegates the |
6a59b271cd91
mkoctfile.m: Return the output and exit status from the mkoctfile shell command
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13025
diff
changeset
|
30 ## call to the shell prompt. The output is stored in the @var{output} |
6a59b271cd91
mkoctfile.m: Return the output and exit status from the mkoctfile shell command
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13025
diff
changeset
|
31 ## variable and the exit status in the @var{status} variable. |
5695 | 32 ## |
33 ## @code{mkoctfile} accepts the following options, all of which are optional | |
34 ## except for the file name of the code you wish to compile: | |
35 ## | |
36 ## @table @samp | |
37 ## @item -I DIR | |
38 ## Add the include directory DIR to compile commands. | |
39 ## | |
40 ## @item -D DEF | |
41 ## Add the definition DEF to the compiler call. | |
42 ## | |
43 ## @item -l LIB | |
44 ## Add the library LIB to the link command. | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11575
diff
changeset
|
45 ## |
5695 | 46 ## @item -L DIR |
47 ## Add the library directory DIR to the link command. | |
48 ## | |
17170
d6499c14021c
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
49 ## @item -M |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11575
diff
changeset
|
50 ## @itemx --depend |
5695 | 51 ## Generate dependency files (.d) for C and C++ source files. |
10996
72640afb02b9
mkoctfile.m: Change help text to be consistent with the shell version.
Ben Abbott <bpabbott@mac.com>
parents:
10793
diff
changeset
|
52 ## |
72640afb02b9
mkoctfile.m: Change help text to be consistent with the shell version.
Ben Abbott <bpabbott@mac.com>
parents:
10793
diff
changeset
|
53 ## @item -R DIR |
11575
d6619410e79c
Spellcheck documentation before 3.4 release.
Rik <octave@nomad.inbox5.com>
parents:
11563
diff
changeset
|
54 ## Add the run-time path to the link command. |
10996
72640afb02b9
mkoctfile.m: Change help text to be consistent with the shell version.
Ben Abbott <bpabbott@mac.com>
parents:
10793
diff
changeset
|
55 ## |
16826
a4969508008e
doc: Periodic spellcheck of the documentation.
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
56 ## @item @nospell{-Wl,@dots{}} |
a4969508008e
doc: Periodic spellcheck of the documentation.
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
57 ## Pass flags though the linker like @nospell{"-Wl,-rpath=@dots{}"}. |
10996
72640afb02b9
mkoctfile.m: Change help text to be consistent with the shell version.
Ben Abbott <bpabbott@mac.com>
parents:
10793
diff
changeset
|
58 ## The quotes are needed since commas are interpreted as command |
72640afb02b9
mkoctfile.m: Change help text to be consistent with the shell version.
Ben Abbott <bpabbott@mac.com>
parents:
10793
diff
changeset
|
59 ## separators. |
72640afb02b9
mkoctfile.m: Change help text to be consistent with the shell version.
Ben Abbott <bpabbott@mac.com>
parents:
10793
diff
changeset
|
60 ## |
12753
00fbb05f099c
Backout 2c54fde0f397 on stable; broke Octave-Forge packages
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
12662
diff
changeset
|
61 ## @item -W@dots{} |
16826
a4969508008e
doc: Periodic spellcheck of the documentation.
Rik <rik@octave.org>
parents:
15467
diff
changeset
|
62 ## Pass flags though the compiler like @nospell{"-Wa,OPTION"}. |
10996
72640afb02b9
mkoctfile.m: Change help text to be consistent with the shell version.
Ben Abbott <bpabbott@mac.com>
parents:
10793
diff
changeset
|
63 ## |
5695 | 64 ## @item -c |
65 ## Compile but do not link. | |
66 ## | |
5904 | 67 ## @item -g |
68 ## Enable debugging options for compilers. | |
69 ## | |
17170
d6499c14021c
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
70 ## @item -o FILE |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11575
diff
changeset
|
71 ## @itemx --output FILE |
5904 | 72 ## Output file name. Default extension is .oct |
12175
2090995ca588
Correct en-dash,em-dash instances in docstrings.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
73 ## (or .mex if @samp{--mex} is specified) unless linking |
5904 | 74 ## a stand-alone executable. |
5695 | 75 ## |
17170
d6499c14021c
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
76 ## @item -p VAR |
6573 | 77 ## @itemx --print VAR |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11575
diff
changeset
|
78 ## Print the configuration variable VAR@. Recognized variables are: |
5671 | 79 ## |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11575
diff
changeset
|
80 ## @example |
18359
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
81 ## ALL_CFLAGS INCFLAGS |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
82 ## ALL_CXXFLAGS INCLUDEDIR |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
83 ## ALL_FFLAGS LAPACK_LIBS |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
84 ## ALL_LDFLAGS LD_CXX |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
85 ## AR LDFLAGS |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
86 ## BLAS_LIBS LD_STATIC_FLAG |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
87 ## CC LFLAGS |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
88 ## CFLAGS LIBDIR |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
89 ## CPICFLAG LIBOCTAVE |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
90 ## CPPFLAGS LIBOCTINTERP |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
91 ## CXX LIBS |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
92 ## CXXFLAGS OCTAVE_HOME |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
93 ## CXXPICFLAG OCTAVE_LIBS |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
94 ## DEPEND_EXTRA_SED_PATTERN OCTAVE_LINK_DEPS |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
95 ## DEPEND_FLAGS OCTAVE_LINK_OPTS |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
96 ## DL_LD OCTAVE_PREFIX |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
97 ## DL_LDFLAGS OCTINCLUDEDIR |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
98 ## F77 OCTLIBDIR |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
99 ## F77_INTEGER8_FLAG OCT_LINK_DEPS |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
100 ## FFLAGS OCT_LINK_OPTS |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
101 ## FFTW3F_LDFLAGS RANLIB |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
102 ## FFTW3F_LIBS RDYNAMIC_FLAG |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
103 ## FFTW3_LDFLAGS READLINE_LIBS |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
104 ## FFTW3_LIBS SED |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
105 ## FFTW_LIBS SPECIAL_MATH_LIB |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
106 ## FLIBS XTRA_CFLAGS |
d9f706dd78df
make mkoctfile.m list of variables consistent with mkoctfile.cc (bug #41296)
John W. Eaton <jwe@octave.org>
parents:
18356
diff
changeset
|
107 ## FPICFLAG XTRA_CXXFLAGS |
5695 | 108 ## @end example |
5671 | 109 ## |
5745 | 110 ## @item --link-stand-alone |
111 ## Link a stand-alone executable file. | |
112 ## | |
5904 | 113 ## @item --mex |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11575
diff
changeset
|
114 ## Assume we are creating a MEX file. Set the default output extension |
5904 | 115 ## to ".mex". |
116 ## | |
17170
d6499c14021c
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
117 ## @item -s |
6573 | 118 ## @itemx --strip |
5695 | 119 ## Strip the output file. |
120 ## | |
17170
d6499c14021c
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
16994
diff
changeset
|
121 ## @item -v |
6573 | 122 ## @itemx --verbose |
5695 | 123 ## Echo commands as they are executed. |
124 ## | |
125 ## @item file | |
9080
ec41eabf4499
Cleanup documentation files dynamic.texi, testfun.texi, tips.texi
Rik <rdrider0-list@yahoo.com>
parents:
9051
diff
changeset
|
126 ## The file to compile or link. Recognized file types are |
5695 | 127 ## |
128 ## @example | |
9051
1bf0ce0930be
Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
129 ## @group |
14327
4d917a6a858b
doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
130 ## .c C source |
4d917a6a858b
doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
131 ## .cc C++ source |
4d917a6a858b
doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
132 ## .C C++ source |
4d917a6a858b
doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
133 ## .cpp C++ source |
4d917a6a858b
doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
134 ## .f Fortran source (fixed form) |
4d917a6a858b
doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
135 ## .F Fortran source (fixed form) |
4d917a6a858b
doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
136 ## .f90 Fortran source (free form) |
4d917a6a858b
doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
137 ## .F90 Fortran source (free form) |
4d917a6a858b
doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
138 ## .o object file |
4d917a6a858b
doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
139 ## .a library file |
9051
1bf0ce0930be
Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
140 ## @end group |
5695 | 141 ## @end example |
142 ## | |
143 ## @end table | |
5671 | 144 ## @end deftypefn |
145 | |
14121
6a59b271cd91
mkoctfile.m: Return the output and exit status from the mkoctfile shell command
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13025
diff
changeset
|
146 function [output, status] = mkoctfile (varargin) |
5671 | 147 |
5696 | 148 bindir = octave_config_info ("bindir"); |
17613
6b8df90c8806
Add executable extension to program paths for Windows (bug #40180)
Mike Miller <mtmiller@ieee.org>
parents:
17516
diff
changeset
|
149 ext = octave_config_info ("EXEEXT"); |
5696 | 150 |
19833
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
151 shell_script = fullfile (bindir, |
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
152 sprintf ("mkoctfile-%s%s", OCTAVE_VERSION, ext)); |
5696 | 153 |
17516
21656a949661
Add hook function to handle missing Octave components
Mike Miller <mtmiller@ieee.org>
parents:
17338
diff
changeset
|
154 if (! exist (shell_script, "file")) |
21656a949661
Add hook function to handle missing Octave components
Mike Miller <mtmiller@ieee.org>
parents:
17338
diff
changeset
|
155 __gripe_missing_component__ ("mkoctfile", "mkoctfile"); |
21656a949661
Add hook function to handle missing Octave components
Mike Miller <mtmiller@ieee.org>
parents:
17338
diff
changeset
|
156 endif |
21656a949661
Add hook function to handle missing Octave components
Mike Miller <mtmiller@ieee.org>
parents:
17338
diff
changeset
|
157 |
16994
333243133364
Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents:
16826
diff
changeset
|
158 cmd = ['"' shell_script '"']; |
5695 | 159 for i = 1:nargin |
16994
333243133364
Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents:
16826
diff
changeset
|
160 cmd = [cmd ' "' varargin{i} '"']; |
5695 | 161 endfor |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11575
diff
changeset
|
162 |
14121
6a59b271cd91
mkoctfile.m: Return the output and exit status from the mkoctfile shell command
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13025
diff
changeset
|
163 [sys, out] = system (cmd); |
5695 | 164 |
14121
6a59b271cd91
mkoctfile.m: Return the output and exit status from the mkoctfile shell command
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13025
diff
changeset
|
165 if (nargout > 0) |
6a59b271cd91
mkoctfile.m: Return the output and exit status from the mkoctfile shell command
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13025
diff
changeset
|
166 [output, status] = deal (out, sys); |
6a59b271cd91
mkoctfile.m: Return the output and exit status from the mkoctfile shell command
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13025
diff
changeset
|
167 else |
6a59b271cd91
mkoctfile.m: Return the output and exit status from the mkoctfile shell command
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13025
diff
changeset
|
168 printf ("%s", out); |
6a59b271cd91
mkoctfile.m: Return the output and exit status from the mkoctfile shell command
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13025
diff
changeset
|
169 endif |
6a59b271cd91
mkoctfile.m: Return the output and exit status from the mkoctfile shell command
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
13025
diff
changeset
|
170 |
17516
21656a949661
Add hook function to handle missing Octave components
Mike Miller <mtmiller@ieee.org>
parents:
17338
diff
changeset
|
171 if (sys != 0) |
5695 | 172 warning ("mkoctfile exited with failure status"); |
173 endif | |
5671 | 174 |
175 endfunction | |
17338
1c89599167a6
maint: End m-files with 1 blank line.
Rik <rik@octave.org>
parents:
17281
diff
changeset
|
176 |