annotate src/mkoctfile.in.cc @ 30920:47cbc69e66cd

eliminate direct access to call stack from evaluator The call stack is an internal implementation detail of the evaluator. Direct access to it outside of the evlauator should not be needed. * pt-eval.h (tree_evaluator::get_call_stack): Delete.
author John W. Eaton <jwe@octave.org>
date Fri, 08 Apr 2022 15:19:22 -0400
parents 83f9f8bda883
children 0c48b7e6f3cf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18360
f1ee47866e6b use common code to get OCTAVE_HOME in main, octave-config and mkoctfile
John W. Eaton <jwe@octave.org>
parents: 18349
diff changeset
1 // %NO_EDIT_WARNING%
8920
eb63fbe60fab update copyright notices
John W. Eaton <jwe@octave.org>
parents: 8332
diff changeset
2
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
3 ////////////////////////////////////////////////////////////////////////
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
4 //
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 30533
diff changeset
5 // Copyright (C) 2008-2022 The Octave Project Developers
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
7 // See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
8 // distribution or <https://octave.org/copyright/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
9 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
10 // This file is part of Octave.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
11 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
12 // Octave is free software: you can redistribute it and/or modify it
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
13 // under the terms of the GNU General Public License as published by
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
14 // the Free Software Foundation, either version 3 of the License, or
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
15 // (at your option) any later version.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
16 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
17 // Octave is distributed in the hope that it will be useful, but
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
18 // WITHOUT ANY WARRANTY; without even the implied warranty of
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
19 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
20 // GNU General Public License for more details.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
21 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
22 // You should have received a copy of the GNU General Public License
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 // along with Octave; see the file COPYING. If not, see
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 // <https://www.gnu.org/licenses/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
25 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
26 ////////////////////////////////////////////////////////////////////////
8920
eb63fbe60fab update copyright notices
John W. Eaton <jwe@octave.org>
parents: 8332
diff changeset
27
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
28 #if defined (HAVE_CONFIG_H)
21301
40de9f8f23a6 Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents: 21202
diff changeset
29 # include "config.h"
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
30 #endif
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
31
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
32 #include <string>
15299
8bd5c490b787 Fix mex compilation with subdirs on Windows platforms (bug #37122)
Rik <rik@octave.org>
parents: 15271
diff changeset
33 #include <cstring>
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
34 #include <map>
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
35 #include <list>
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
36 #include <algorithm>
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
37 #include <iostream>
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
38 #include <fstream>
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
39 #include <sstream>
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
40 #include <vector>
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
41 #include <cstdlib>
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
42
29540
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
43 #if defined (OCTAVE_USE_WINDOWS_API)
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
44 # include <locale>
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
45 # include <codecvt>
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
46 #endif
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
47
25504
ace13ff63b90 undo previous change; use 0 instead of O_BINARY
John W. Eaton <jwe@octave.org>
parents: 25503
diff changeset
48 // Programming note: The CROSS macro here refers to building a
ace13ff63b90 undo previous change; use 0 instead of O_BINARY
John W. Eaton <jwe@octave.org>
parents: 25503
diff changeset
49 // cross-compiler aware version of mkoctfile that can be used to cross
ace13ff63b90 undo previous change; use 0 instead of O_BINARY
John W. Eaton <jwe@octave.org>
parents: 25503
diff changeset
50 // compile .oct file for Windows builds of Octave, not that mkoctfile
ace13ff63b90 undo previous change; use 0 instead of O_BINARY
John W. Eaton <jwe@octave.org>
parents: 25503
diff changeset
51 // itself is being cross compiled.
ace13ff63b90 undo previous change; use 0 instead of O_BINARY
John W. Eaton <jwe@octave.org>
parents: 25503
diff changeset
52 //
ace13ff63b90 undo previous change; use 0 instead of O_BINARY
John W. Eaton <jwe@octave.org>
parents: 25503
diff changeset
53 // We don't use the wrapper and gnulib functions when we are building
ace13ff63b90 undo previous change; use 0 instead of O_BINARY
John W. Eaton <jwe@octave.org>
parents: 25503
diff changeset
54 // with CROSS defined. This configuration is only expected to work on
ace13ff63b90 undo previous change; use 0 instead of O_BINARY
John W. Eaton <jwe@octave.org>
parents: 25503
diff changeset
55 // modern systems that should not need to have gnulib to fix POSIX
ace13ff63b90 undo previous change; use 0 instead of O_BINARY
John W. Eaton <jwe@octave.org>
parents: 25503
diff changeset
56 // portability problems. So we just assume a working POSIX system when
ace13ff63b90 undo previous change; use 0 instead of O_BINARY
John W. Eaton <jwe@octave.org>
parents: 25503
diff changeset
57 // CROSS is defined.
ace13ff63b90 undo previous change; use 0 instead of O_BINARY
John W. Eaton <jwe@octave.org>
parents: 25503
diff changeset
58
21961
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
59 #if defined (CROSS)
25503
ec2492a2af6a * mkoctfile.in.cc [CROSS]: Include <fcntl.h> for O_BINARY.
John W. Eaton <jwe@octave.org>
parents: 25497
diff changeset
60 # include <stdlib.h>
21961
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
61 # include <sys/types.h>
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
62 # include <sys/wait.h>
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
63 # include <unistd.h>
23801
9d67bd90681b cross tools: define OCTAVE_UNUSED if not defined
John D <john.donoghue@ieee.org>
parents: 23757
diff changeset
64 # ifndef OCTAVE_UNUSED
9d67bd90681b cross tools: define OCTAVE_UNUSED if not defined
John D <john.donoghue@ieee.org>
parents: 23757
diff changeset
65 # define OCTAVE_UNUSED
9d67bd90681b cross tools: define OCTAVE_UNUSED if not defined
John D <john.donoghue@ieee.org>
parents: 23757
diff changeset
66 # endif
21961
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
67 #else
29237
1af06a145d40 Un-set API flags when using functions without linking to shared library (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29141
diff changeset
68 // We are linking against static libs so do not decorate with dllimport.
1af06a145d40 Un-set API flags when using functions without linking to shared library (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29141
diff changeset
69 // FIXME: This should be done by the build system.
1af06a145d40 Un-set API flags when using functions without linking to shared library (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29141
diff changeset
70 # undef OCTAVE_API
1af06a145d40 Un-set API flags when using functions without linking to shared library (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29141
diff changeset
71 # define OCTAVE_API
25497
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
72 # include "mkostemps-wrapper.h"
29006
139df373c107 Use wide character overload to open file streams on Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 28882
diff changeset
73 # include "uniconv-wrappers.h"
21961
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
74 # include "unistd-wrappers.h"
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
75 # include "wait-wrappers.h"
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
76 #endif
18916
5999e654f256 WIFEXITED and WEXITSTATUS macros for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 18915
diff changeset
77
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
78 #if ! defined (OCTAVE_VERSION)
21202
f7121e111991 maint: indent #ifdef blocks in liboctave and src directories.
Rik <rik@octave.org>
parents: 20955
diff changeset
79 # define OCTAVE_VERSION %OCTAVE_CONF_VERSION%
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
80 #endif
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
81
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
82 #if ! defined (OCTAVE_PREFIX)
21202
f7121e111991 maint: indent #ifdef blocks in liboctave and src directories.
Rik <rik@octave.org>
parents: 20955
diff changeset
83 # define OCTAVE_PREFIX %OCTAVE_CONF_PREFIX%
18360
f1ee47866e6b use common code to get OCTAVE_HOME in main, octave-config and mkoctfile
John W. Eaton <jwe@octave.org>
parents: 18349
diff changeset
84 #endif
f1ee47866e6b use common code to get OCTAVE_HOME in main, octave-config and mkoctfile
John W. Eaton <jwe@octave.org>
parents: 18349
diff changeset
85
23712
b95c430c0649 revamp insertion of config variables into binaries and eliminate some macros
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
86 #if ! defined (OCTAVE_EXEC_PREFIX)
b95c430c0649 revamp insertion of config variables into binaries and eliminate some macros
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
87 # define OCTAVE_EXEC_PREFIX %OCTAVE_CONF_EXEC_PREFIX%
b95c430c0649 revamp insertion of config variables into binaries and eliminate some macros
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
88 #endif
b95c430c0649 revamp insertion of config variables into binaries and eliminate some macros
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
89
18360
f1ee47866e6b use common code to get OCTAVE_HOME in main, octave-config and mkoctfile
John W. Eaton <jwe@octave.org>
parents: 18349
diff changeset
90 #include "shared-fcns.h"
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
91
21961
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
92 #if defined (CROSS)
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
93
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
94 static int
25497
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
95 octave_mkostemps_wrapper (char *tmpl, int suffixlen)
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
96 {
25504
ace13ff63b90 undo previous change; use 0 instead of O_BINARY
John W. Eaton <jwe@octave.org>
parents: 25503
diff changeset
97 return mkostemps (tmpl, suffixlen, 0);
25497
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
98 }
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
99
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
100 static int
21961
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
101 octave_unlink_wrapper (const char *nm)
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
102 {
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
103 return unlink (nm);
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
104 }
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
105
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
106 static bool
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
107 octave_wifexited_wrapper (int status)
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
108 {
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
109 return WIFEXITED (status);
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
110 }
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
111
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
112 static int
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
113 octave_wexitstatus_wrapper (int status)
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
114 {
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
115 return WEXITSTATUS (status);
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
116 }
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
117
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
118 #endif
307a2d7ff29b fix cross build of mkoctfile
John W. Eaton <jwe@octave.org>
parents: 21942
diff changeset
119
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
120 static std::string
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
121 get_line (FILE *fp)
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
122 {
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
123 std::ostringstream buf;
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
124
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
125 while (true)
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
126 {
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
127 int c = std::fgetc (fp);
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
128
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
129 if (c == '\n' || c == EOF)
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
130 break;
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
131
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
132 buf << static_cast<char> (c);
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
133 }
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
134
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
135 return buf.str ();
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
136 }
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
137
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
138 static std::string
25475
245de4f12ca3 link .oct files with liboctave and libinterp on Windows systems (bug #53627)
John W. Eaton <jwe@octave.org>
parents: 25447
diff changeset
139 get_variable (const char *name, const std::string& defval)
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
140 {
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
141 const char *val = getenv (name);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
142
17898
8c33abdd2f9a maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents: 17789
diff changeset
143 if (val && *val)
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
144 return std::string (val);
17898
8c33abdd2f9a maint: Avoid using NULL in C++ code.
John W. Eaton <jwe@octave.org>
parents: 17789
diff changeset
145 else
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
146 return defval;
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
147 }
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
148
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
149 static std::string
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
150 quote_path (const std::string& s)
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
151 {
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
152 if (s.find (' ') != std::string::npos && s[0] != '"')
23803
90689bdbe048 Use C++11 raw string literals to avoid escaping double quotes.
Rik <rik@octave.org>
parents: 23801
diff changeset
153 return '"' + s + '"';
8332
34fde4755a0f style fixes
John W. Eaton <jwe@octave.org>
parents: 8092
diff changeset
154 else
34fde4755a0f style fixes
John W. Eaton <jwe@octave.org>
parents: 8092
diff changeset
155 return s;
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
156 }
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
157
28882
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
158 static std::string
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
159 replace_prefix (std::string s)
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
160 {
29554
99e3912441ec build: Make relocation of dependencies with Octave optional (bug #60413).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29358
diff changeset
161 #if defined (OCTAVE_REPLACE_PREFIX)
28882
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
162 const std::string match = "${prefix}";
30368
15ae4d97a632 mkoctfile: Correctly handle relocation in cross-compiler.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29699
diff changeset
163 const std::string repl = Voctave_exec_home;
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29554
diff changeset
164 std::size_t pos = s.find (match);
28882
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
165 while (pos != std::string::npos )
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
166 {
30368
15ae4d97a632 mkoctfile: Correctly handle relocation in cross-compiler.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29699
diff changeset
167 s.replace (pos, match.length (), repl);
28882
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
168 pos = s.find (match);
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
169 }
29554
99e3912441ec build: Make relocation of dependencies with Octave optional (bug #60413).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29358
diff changeset
170 #endif
28882
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
171
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
172 return s;
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
173 }
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
174
28964
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
175 static std::map<std::string, std::string>
28965
d24e34e179ab mkoctfile: don't add DL_LDFLAGS to LDFLAGS if linking stand alone program
John W. Eaton <jwe@octave.org>
parents: 28964
diff changeset
176 make_vars_map (bool link_stand_alone, bool verbose, bool debug)
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
177 {
23712
b95c430c0649 revamp insertion of config variables into binaries and eliminate some macros
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
178 set_octave_home ();
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
179
28964
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
180 std::map<std::string, std::string> vars;
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
181
23712
b95c430c0649 revamp insertion of config variables into binaries and eliminate some macros
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
182 vars["OCTAVE_HOME"] = Voctave_home;
b95c430c0649 revamp insertion of config variables into binaries and eliminate some macros
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
183 vars["OCTAVE_EXEC_HOME"] = Voctave_exec_home;
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
184
25556
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
185 vars["API_VERSION"] = %OCTAVE_API_VERSION%;
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
186 vars["CANONICAL_HOST_TYPE"] = %OCTAVE_CANONICAL_HOST_TYPE%;
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
187 vars["DEFAULT_PAGER"] = %OCTAVE_DEFAULT_PAGER%;
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
188 vars["EXEEXT"] = %OCTAVE_EXEEXT%;
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
189 vars["MAN1EXT"] = %OCTAVE_MAN1EXT%;
26472
86bcab2e371e mkoctfile: use OCTAVE_VERSION instead of VERSION for API consistency
Mike Miller <mtmiller@octave.org>
parents: 26431
diff changeset
190 vars["OCTAVE_VERSION"] = %OCTAVE_VERSION%;
25556
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
191
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
192 vars["ARCHLIBDIR"] = prepend_octave_exec_home (%OCTAVE_ARCHLIBDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
193 vars["BINDIR"] = prepend_octave_exec_home (%OCTAVE_BINDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
194 vars["DATADIR"] = prepend_octave_home (%OCTAVE_DATADIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
195 vars["DATAROOTDIR"] = prepend_octave_home (%OCTAVE_DATAROOTDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
196 vars["FCNFILEDIR"] = prepend_octave_home (%OCTAVE_FCNFILEDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
197 vars["IMAGEDIR"] = prepend_octave_home (%OCTAVE_IMAGEDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
198 vars["INFODIR"] = prepend_octave_home (%OCTAVE_INFODIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
199 vars["INFOFILE"] = prepend_octave_home (%OCTAVE_INFOFILE%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
200 vars["LIBEXECDIR"] = prepend_octave_exec_home (%OCTAVE_LIBEXECDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
201 vars["LOCALAPIARCHLIBDIR"] = prepend_octave_exec_home (%OCTAVE_LOCALAPIARCHLIBDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
202 vars["LOCALAPIFCNFILEDIR"] = prepend_octave_home (%OCTAVE_LOCALAPIFCNFILEDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
203 vars["LOCALAPIOCTFILEDIR"] = prepend_octave_exec_home (%OCTAVE_LOCALAPIOCTFILEDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
204 vars["LOCALARCHLIBDIR"] = prepend_octave_exec_home (%OCTAVE_LOCALARCHLIBDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
205 vars["LOCALFCNFILEDIR"] = prepend_octave_home (%OCTAVE_LOCALFCNFILEDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
206 vars["LOCALOCTFILEDIR"] = prepend_octave_exec_home (%OCTAVE_LOCALOCTFILEDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
207 vars["LOCALSTARTUPFILEDIR"] = prepend_octave_home (%OCTAVE_LOCALSTARTUPFILEDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
208 vars["LOCALVERARCHLIBDIR"] = prepend_octave_exec_home (%OCTAVE_LOCALVERARCHLIBDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
209 vars["LOCALVERFCNFILEDIR"] = prepend_octave_home (%OCTAVE_LOCALVERFCNFILEDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
210 vars["LOCALVEROCTFILEDIR"] = prepend_octave_exec_home (%OCTAVE_LOCALVEROCTFILEDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
211 vars["MAN1DIR"] = prepend_octave_home (%OCTAVE_MAN1DIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
212 vars["MANDIR"] = prepend_octave_home (%OCTAVE_MANDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
213 vars["OCTDATADIR"] = prepend_octave_home (%OCTAVE_OCTDATADIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
214 vars["OCTDOCDIR"] = prepend_octave_home (%OCTAVE_OCTDOCDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
215 vars["OCTFILEDIR"] = prepend_octave_exec_home (%OCTAVE_OCTFILEDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
216 vars["OCTFONTSDIR"] = prepend_octave_home (%OCTAVE_OCTFONTSDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
217 vars["STARTUPFILEDIR"] = prepend_octave_home (%OCTAVE_STARTUPFILEDIR%);
cbef9fc53fef include all octave-config vars in mkoctfile (bug #54260)
John W. Eaton <jwe@octave.org>
parents: 25511
diff changeset
218
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
219 vars["OCTINCLUDEDIR"]
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
220 = get_variable ("OCTINCLUDEDIR",
23712
b95c430c0649 revamp insertion of config variables into binaries and eliminate some macros
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
221 prepend_octave_home (%OCTAVE_CONF_OCTINCLUDEDIR%));
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
222
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
223 vars["INCLUDEDIR"]
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
224 = get_variable ("INCLUDEDIR",
23712
b95c430c0649 revamp insertion of config variables into binaries and eliminate some macros
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
225 prepend_octave_home (%OCTAVE_CONF_INCLUDEDIR%));
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
226
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
227 vars["LIBDIR"]
23712
b95c430c0649 revamp insertion of config variables into binaries and eliminate some macros
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
228 = get_variable ("LIBDIR", prepend_octave_exec_home (%OCTAVE_CONF_LIBDIR%));
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
229
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
230 vars["OCTLIBDIR"]
27934
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
231 = get_variable ("OCTLIBDIR",
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
232 prepend_octave_exec_home (%OCTAVE_CONF_OCTLIBDIR%));
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
233
28831
bf427855cc9a Change mkoctfile to print a usable default LDFLAGS on Windows platforms (bug #59173).
Rik <rik@octave.org>
parents: 28830
diff changeset
234 std::string DEFAULT_INCFLAGS;
bf427855cc9a Change mkoctfile to print a usable default LDFLAGS on Windows platforms (bug #59173).
Rik <rik@octave.org>
parents: 28830
diff changeset
235
21979
d04da18a407a use OCTAVE_USE_WINDOWS_API more consistently
John W. Eaton <jwe@octave.org>
parents: 21961
diff changeset
236 #if defined (OCTAVE_USE_WINDOWS_API)
28831
bf427855cc9a Change mkoctfile to print a usable default LDFLAGS on Windows platforms (bug #59173).
Rik <rik@octave.org>
parents: 28830
diff changeset
237 DEFAULT_INCFLAGS = "-I" + quote_path (vars["OCTINCLUDEDIR"] + R"(\..)")
bf427855cc9a Change mkoctfile to print a usable default LDFLAGS on Windows platforms (bug #59173).
Rik <rik@octave.org>
parents: 28830
diff changeset
238 + " -I" + quote_path (vars["OCTINCLUDEDIR"]);
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
239 #else
28831
bf427855cc9a Change mkoctfile to print a usable default LDFLAGS on Windows platforms (bug #59173).
Rik <rik@octave.org>
parents: 28830
diff changeset
240 DEFAULT_INCFLAGS = "-I" + quote_path (vars["OCTINCLUDEDIR"] + "/..")
bf427855cc9a Change mkoctfile to print a usable default LDFLAGS on Windows platforms (bug #59173).
Rik <rik@octave.org>
parents: 28830
diff changeset
241 + " -I" + quote_path (vars["OCTINCLUDEDIR"]);
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
242 #endif
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
243
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
244 if (vars["INCLUDEDIR"] != "/usr/include")
8332
34fde4755a0f style fixes
John W. Eaton <jwe@octave.org>
parents: 8092
diff changeset
245 DEFAULT_INCFLAGS += " -I" + quote_path (vars["INCLUDEDIR"]);
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
246
26422
26be3dc2900f Use LDFLAGS for mkoctfile linker flags (bug #48678).
Rik <rik@octave.org>
parents: 26376
diff changeset
247 std::string DEFAULT_LDFLAGS;
25475
245de4f12ca3 link .oct files with liboctave and libinterp on Windows systems (bug #53627)
John W. Eaton <jwe@octave.org>
parents: 25447
diff changeset
248
29588
b4cb9d04f3cf build: Use dynamic symbol lookup for functions in libraries on macOS (bug #53627).
Andrew Janke <andrew@apjanke.net>
parents: 29572
diff changeset
249 #if (defined (OCTAVE_USE_WINDOWS_API) || defined (CROSS) || defined (OCTAVE_LINK_ALL_DEPS))
26431
ff6c90eb6f2d mkoctfile.in.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26422
diff changeset
250 // We'll be linking the files we compile with -loctinterp and -loctave,
ff6c90eb6f2d mkoctfile.in.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26422
diff changeset
251 // so we need to know where to find them.
26422
26be3dc2900f Use LDFLAGS for mkoctfile linker flags (bug #48678).
Rik <rik@octave.org>
parents: 26376
diff changeset
252 DEFAULT_LDFLAGS += "-L" + quote_path (vars["OCTLIBDIR"]);
25475
245de4f12ca3 link .oct files with liboctave and libinterp on Windows systems (bug #53627)
John W. Eaton <jwe@octave.org>
parents: 25447
diff changeset
253 #endif
245de4f12ca3 link .oct files with liboctave and libinterp on Windows systems (bug #53627)
John W. Eaton <jwe@octave.org>
parents: 25447
diff changeset
254
245de4f12ca3 link .oct files with liboctave and libinterp on Windows systems (bug #53627)
John W. Eaton <jwe@octave.org>
parents: 25447
diff changeset
255 if (vars["LIBDIR"] != "/usr/lib")
26422
26be3dc2900f Use LDFLAGS for mkoctfile linker flags (bug #48678).
Rik <rik@octave.org>
parents: 26376
diff changeset
256 DEFAULT_LDFLAGS += " -L" + quote_path (vars["LIBDIR"]);
25475
245de4f12ca3 link .oct files with liboctave and libinterp on Windows systems (bug #53627)
John W. Eaton <jwe@octave.org>
parents: 25447
diff changeset
257
28882
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
258 vars["CPPFLAGS"] = get_variable ("CPPFLAGS",
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
259 replace_prefix (%OCTAVE_CONF_CPPFLAGS%));
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
260
8332
34fde4755a0f style fixes
John W. Eaton <jwe@octave.org>
parents: 8092
diff changeset
261 vars["INCFLAGS"] = get_variable ("INCFLAGS", DEFAULT_INCFLAGS);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
262
15929
16418ff39a72 strip cross tool prefix from CC, CXX, etc. definitions used in mkoctfile
John W. Eaton <jwe@octave.org>
parents: 15458
diff changeset
263 vars["F77"] = get_variable ("F77", %OCTAVE_CONF_MKOCTFILE_F77%);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
264
8332
34fde4755a0f style fixes
John W. Eaton <jwe@octave.org>
parents: 8092
diff changeset
265 vars["FFLAGS"] = get_variable ("FFLAGS", %OCTAVE_CONF_FFLAGS%);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
266
8332
34fde4755a0f style fixes
John W. Eaton <jwe@octave.org>
parents: 8092
diff changeset
267 vars["FPICFLAG"] = get_variable ("FPICFLAG", %OCTAVE_CONF_FPICFLAG%);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
268
15929
16418ff39a72 strip cross tool prefix from CC, CXX, etc. definitions used in mkoctfile
John W. Eaton <jwe@octave.org>
parents: 15458
diff changeset
269 vars["CC"] = get_variable ("CC", %OCTAVE_CONF_MKOCTFILE_CC%);
28964
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
270 if (verbose && vars["CC"] == "cc-msvc")
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
271 vars["CC"] += " -d";
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
272
8332
34fde4755a0f style fixes
John W. Eaton <jwe@octave.org>
parents: 8092
diff changeset
273 vars["CFLAGS"] = get_variable ("CFLAGS", %OCTAVE_CONF_CFLAGS%);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
274
8332
34fde4755a0f style fixes
John W. Eaton <jwe@octave.org>
parents: 8092
diff changeset
275 vars["CPICFLAG"] = get_variable ("CPICFLAG", %OCTAVE_CONF_CPICFLAG%);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
276
15929
16418ff39a72 strip cross tool prefix from CC, CXX, etc. definitions used in mkoctfile
John W. Eaton <jwe@octave.org>
parents: 15458
diff changeset
277 vars["CXX"] = get_variable ("CXX", %OCTAVE_CONF_MKOCTFILE_CXX%);
28964
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
278 if (verbose && vars["CXX"] == "cc-msvc")
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
279 vars["CXX"] += " -d";
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
280
8332
34fde4755a0f style fixes
John W. Eaton <jwe@octave.org>
parents: 8092
diff changeset
281 vars["CXXFLAGS"] = get_variable ("CXXFLAGS", %OCTAVE_CONF_CXXFLAGS%);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
282
27425
633f7a8347c8 Clean up implementation of CXXLD in build scripts (bug #56505).
Rik <rik@octave.org>
parents: 27277
diff changeset
283 vars["CXXLD"] = get_variable ("CXXLD", vars["CXX"]);
28964
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
284 if (verbose && vars["CXXLD"] == "cc-msvc")
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
285 vars["CXXLD"] += " -d";
27425
633f7a8347c8 Clean up implementation of CXXLD in build scripts (bug #56505).
Rik <rik@octave.org>
parents: 27277
diff changeset
286
8332
34fde4755a0f style fixes
John W. Eaton <jwe@octave.org>
parents: 8092
diff changeset
287 vars["CXXPICFLAG"] = get_variable ("CXXPICFLAG", %OCTAVE_CONF_CXXPICFLAG%);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
288
8332
34fde4755a0f style fixes
John W. Eaton <jwe@octave.org>
parents: 8092
diff changeset
289 vars["XTRA_CFLAGS"] = get_variable ("XTRA_CFLAGS", %OCTAVE_CONF_XTRA_CFLAGS%);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
290
17789
f2b047f9b605 Use GNU style coding conventions for code in src/.
Rik <rik@octave.org>
parents: 17744
diff changeset
291 vars["XTRA_CXXFLAGS"] = get_variable ("XTRA_CXXFLAGS",
f2b047f9b605 Use GNU style coding conventions for code in src/.
Rik <rik@octave.org>
parents: 17744
diff changeset
292 %OCTAVE_CONF_XTRA_CXXFLAGS%);
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
293
15944
4803b8c138e3 use mkoctfile, not octave_config_info to get default pkg compiler tools
John W. Eaton <jwe@octave.org>
parents: 15933
diff changeset
294 vars["AR"] = get_variable ("AR", %OCTAVE_CONF_MKOCTFILE_AR%);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
295
15944
4803b8c138e3 use mkoctfile, not octave_config_info to get default pkg compiler tools
John W. Eaton <jwe@octave.org>
parents: 15933
diff changeset
296 vars["RANLIB"] = get_variable ("RANLIB", %OCTAVE_CONF_MKOCTFILE_RANLIB%);
4803b8c138e3 use mkoctfile, not octave_config_info to get default pkg compiler tools
John W. Eaton <jwe@octave.org>
parents: 15933
diff changeset
297
17789
f2b047f9b605 Use GNU style coding conventions for code in src/.
Rik <rik@octave.org>
parents: 17744
diff changeset
298 vars["DEPEND_FLAGS"] = get_variable ("DEPEND_FLAGS",
f2b047f9b605 Use GNU style coding conventions for code in src/.
Rik <rik@octave.org>
parents: 17744
diff changeset
299 %OCTAVE_CONF_DEPEND_FLAGS%);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
300
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
301 vars["DEPEND_EXTRA_SED_PATTERN"]
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
302 = get_variable ("DEPEND_EXTRA_SED_PATTERN",
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
303 %OCTAVE_CONF_DEPEND_EXTRA_SED_PATTERN%);
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
304
17789
f2b047f9b605 Use GNU style coding conventions for code in src/.
Rik <rik@octave.org>
parents: 17744
diff changeset
305 vars["DL_LDFLAGS"] = get_variable ("DL_LDFLAGS",
f2b047f9b605 Use GNU style coding conventions for code in src/.
Rik <rik@octave.org>
parents: 17744
diff changeset
306 %OCTAVE_CONF_MKOCTFILE_DL_LDFLAGS%);
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
307
28965
d24e34e179ab mkoctfile: don't add DL_LDFLAGS to LDFLAGS if linking stand alone program
John W. Eaton <jwe@octave.org>
parents: 28964
diff changeset
308 if (! link_stand_alone)
d24e34e179ab mkoctfile: don't add DL_LDFLAGS to LDFLAGS if linking stand alone program
John W. Eaton <jwe@octave.org>
parents: 28964
diff changeset
309 DEFAULT_LDFLAGS += ' ' + vars["DL_LDFLAGS"];
28832
6d50f931e810 mkoctfile.in.cc: Add DL_LDFLAGS to DEFAULT_LDFLAGS (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28831
diff changeset
310
17789
f2b047f9b605 Use GNU style coding conventions for code in src/.
Rik <rik@octave.org>
parents: 17744
diff changeset
311 vars["RDYNAMIC_FLAG"] = get_variable ("RDYNAMIC_FLAG",
f2b047f9b605 Use GNU style coding conventions for code in src/.
Rik <rik@octave.org>
parents: 17744
diff changeset
312 %OCTAVE_CONF_RDYNAMIC_FLAG%);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
313
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
314 vars["LIBOCTAVE"] = "-loctave";
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
315
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
316 vars["LIBOCTINTERP"] = "-loctinterp";
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
317
9515
eee9b3150446 more configure tweaks
John W. Eaton <jwe@octave.org>
parents: 9303
diff changeset
318 vars["READLINE_LIBS"] = "-lreadline";
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
319
11450
5eb10763069f substitute and use LAPACK_LIBS in mkoctfile script
John W. Eaton <jwe@octave.org>
parents: 11251
diff changeset
320 vars["LAPACK_LIBS"] = get_variable ("LAPACK_LIBS", %OCTAVE_CONF_LAPACK_LIBS%);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
321
8332
34fde4755a0f style fixes
John W. Eaton <jwe@octave.org>
parents: 8092
diff changeset
322 vars["BLAS_LIBS"] = get_variable ("BLAS_LIBS", %OCTAVE_CONF_BLAS_LIBS%);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
323
28882
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
324 vars["FFTW3_LDFLAGS"]
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
325 = get_variable ("FFTW3_LDFLAGS",
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
326 replace_prefix (%OCTAVE_CONF_FFTW3_LDFLAGS%));
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
327
9538
d0239bddf621 use OCTAVE_CHECK_LIB to check for zlib
John W. Eaton <jwe@octave.org>
parents: 9515
diff changeset
328 vars["FFTW3_LIBS"] = get_variable ("FFTW3_LIBS", %OCTAVE_CONF_FFTW3_LIBS%);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
329
28882
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
330 vars["FFTW3F_LDFLAGS"]
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
331 = get_variable ("FFTW3F_LDFLAGS",
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
332 replace_prefix (%OCTAVE_CONF_FFTW3F_LDFLAGS%));
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
333
9538
d0239bddf621 use OCTAVE_CHECK_LIB to check for zlib
John W. Eaton <jwe@octave.org>
parents: 9515
diff changeset
334 vars["FFTW3F_LIBS"] = get_variable ("FFTW3F_LIBS", %OCTAVE_CONF_FFTW3F_LIBS%);
22909
7b368d85e86c don't include sundials libraries or options in mkoctfile flags
John W. Eaton <jwe@octave.org>
parents: 22899
diff changeset
335
8332
34fde4755a0f style fixes
John W. Eaton <jwe@octave.org>
parents: 8092
diff changeset
336 vars["LIBS"] = get_variable ("LIBS", %OCTAVE_CONF_LIBS%);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
337
28882
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
338 vars["FLIBS"] = get_variable ("FLIBS",
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
339 replace_prefix (%OCTAVE_CONF_FLIBS%));
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
340
18349
50505bf88b82 make octave-config and mkoctfile consistent with last shell script versions
John W. Eaton <jwe@octave.org>
parents: 18342
diff changeset
341 vars["OCTAVE_LINK_DEPS"] = get_variable ("OCTAVE_LINK_DEPS",
23757
bba752b37f8e use different definition for mkoctfile link deps
John W. Eaton <jwe@octave.org>
parents: 23712
diff changeset
342 %OCTAVE_CONF_MKOCTFILE_OCTAVE_LINK_DEPS%);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
343
18349
50505bf88b82 make octave-config and mkoctfile consistent with last shell script versions
John W. Eaton <jwe@octave.org>
parents: 18342
diff changeset
344 vars["OCTAVE_LINK_OPTS"] = get_variable ("OCTAVE_LINK_OPTS",
50505bf88b82 make octave-config and mkoctfile consistent with last shell script versions
John W. Eaton <jwe@octave.org>
parents: 18342
diff changeset
345 %OCTAVE_CONF_OCTAVE_LINK_OPTS%);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
346
18349
50505bf88b82 make octave-config and mkoctfile consistent with last shell script versions
John W. Eaton <jwe@octave.org>
parents: 18342
diff changeset
347 vars["OCT_LINK_DEPS"] = get_variable ("OCT_LINK_DEPS",
23757
bba752b37f8e use different definition for mkoctfile link deps
John W. Eaton <jwe@octave.org>
parents: 23712
diff changeset
348 %OCTAVE_CONF_MKOCTFILE_OCT_LINK_DEPS%);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
349
28882
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
350 vars["OCT_LINK_OPTS"]
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
351 = get_variable ("OCT_LINK_OPTS",
d7169f012ee1 mkoctfile: Account for different prefix on build and host system (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28860
diff changeset
352 replace_prefix (%OCTAVE_CONF_OCT_LINK_OPTS%));
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
353
28831
bf427855cc9a Change mkoctfile to print a usable default LDFLAGS on Windows platforms (bug #59173).
Rik <rik@octave.org>
parents: 28830
diff changeset
354 vars["LDFLAGS"] = get_variable ("LDFLAGS", DEFAULT_LDFLAGS);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
355
17789
f2b047f9b605 Use GNU style coding conventions for code in src/.
Rik <rik@octave.org>
parents: 17744
diff changeset
356 vars["LD_STATIC_FLAG"] = get_variable ("LD_STATIC_FLAG",
f2b047f9b605 Use GNU style coding conventions for code in src/.
Rik <rik@octave.org>
parents: 17744
diff changeset
357 %OCTAVE_CONF_LD_STATIC_FLAG%);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
358
30386
fc9b98382ea7 mkoctfile: Add command line `-l` flags before LDFLAGS in linker command (bug #61571).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30368
diff changeset
359 // FIXME: Remove LFLAGS in Octave 9
26422
26be3dc2900f Use LDFLAGS for mkoctfile linker flags (bug #48678).
Rik <rik@octave.org>
parents: 26376
diff changeset
360 vars["LFLAGS"] = get_variable ("LFLAGS", DEFAULT_LDFLAGS);
26612
ab5cc8da283c mkoctfile: restore LDFLAGS, warn only when LFLAGS used directly (bug #55447)
Mike Miller <mtmiller@octave.org>
parents: 26487
diff changeset
361 if (vars["LFLAGS"] != DEFAULT_LDFLAGS)
28966
b02d9109fb6e mkoctfile: prefix warning messages with program name
John W. Eaton <jwe@octave.org>
parents: 28965
diff changeset
362 std::cerr << "mkoctfile: warning: LFLAGS is deprecated and will be removed in a future version of Octave, use LDFLAGS instead" << std::endl;
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
363
17789
f2b047f9b605 Use GNU style coding conventions for code in src/.
Rik <rik@octave.org>
parents: 17744
diff changeset
364 vars["F77_INTEGER8_FLAG"] = get_variable ("F77_INTEGER8_FLAG",
f2b047f9b605 Use GNU style coding conventions for code in src/.
Rik <rik@octave.org>
parents: 17744
diff changeset
365 %OCTAVE_CONF_F77_INTEGER_8_FLAG%);
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
366 vars["ALL_FFLAGS"] = vars["FFLAGS"] + ' ' + vars["F77_INTEGER8_FLAG"];
28964
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
367 if (debug)
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
368 vars["ALL_FFLAGS"] += " -g";
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
369
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
370 vars["ALL_CFLAGS"]
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
371 = vars["INCFLAGS"] + ' ' + vars["XTRA_CFLAGS"] + ' ' + vars["CFLAGS"];
28964
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
372 if (debug)
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
373 vars["ALL_CFLAGS"] += " -g";
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
374
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
375 vars["ALL_CXXFLAGS"]
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
376 = vars["INCFLAGS"] + ' ' + vars["XTRA_CXXFLAGS"] + ' ' + vars["CXXFLAGS"];
28964
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
377 if (debug)
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
378 vars["ALL_CXXFLAGS"] += " -g";
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
379
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
380 vars["ALL_LDFLAGS"]
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
381 = vars["LD_STATIC_FLAG"] + ' ' + vars["CPICFLAG"] + ' ' + vars["LDFLAGS"];
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
382
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
383 vars["OCTAVE_LIBS"]
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
384 = (vars["LIBOCTINTERP"] + ' ' + vars["LIBOCTAVE"] + ' '
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
385 + vars["SPECIAL_MATH_LIB"]);
9538
d0239bddf621 use OCTAVE_CHECK_LIB to check for zlib
John W. Eaton <jwe@octave.org>
parents: 9515
diff changeset
386
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
387 vars["FFTW_LIBS"] = vars["FFTW3_LDFLAGS"] + ' ' + vars["FFTW3_LIBS"] + ' '
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
388 + vars["FFTW3F_LDFLAGS"] + ' ' + vars["FFTW3F_LIBS"];
28964
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
389
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
390 return vars;
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
391 }
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
392
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
393 static std::string usage_msg = "usage: mkoctfile [options] file ...";
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
394
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
395 static std::string version_msg = "mkoctfile, version " OCTAVE_VERSION;
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
396
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
397 static std::string help_msg =
27934
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
398 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
399 "Options:\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
400 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
401 " -h, -?, --help Print this message.\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
402 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
403 " -IDIR Add -IDIR to compile commands.\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
404 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
405 " -idirafter DIR Add -idirafter DIR to compile commands.\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
406 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
407 " -DDEF Add -DDEF to compile commands.\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
408 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
409 " -lLIB Add library LIB to link command.\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
410 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
411 " -LDIR Add -LDIR to link command.\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
412 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
413 " -M, --depend Generate dependency files (.d) for C and C++\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
414 " source files.\n"
21979
d04da18a407a use OCTAVE_USE_WINDOWS_API more consistently
John W. Eaton <jwe@octave.org>
parents: 21961
diff changeset
415 #if ! defined (OCTAVE_USE_WINDOWS_API)
27934
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
416 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
417 " -pthread Add -pthread to link command.\n"
18349
50505bf88b82 make octave-config and mkoctfile consistent with last shell script versions
John W. Eaton <jwe@octave.org>
parents: 18342
diff changeset
418 #endif
27934
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
419 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
420 " -RDIR Add -RDIR to link command.\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
421 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
422 " -Wl,... Pass flags though the linker like -Wl,-rpath=...\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
423 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
424 " -W... Pass flags though the compiler like -Wa,OPTION.\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
425 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
426 " -c, --compile Compile, but do not link.\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
427 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
428 " -o FILE, --output FILE Output filename. Default extension is .oct\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
429 " (or .mex if --mex is specified) unless linking\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
430 " a stand-alone executable.\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
431 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
432 " -g Enable debugging options for compilers.\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
433 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
434 " -p VAR, --print VAR Print configuration variable VAR. There are\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
435 " three categories of variables:\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
436 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
437 " Octave configuration variables that users may\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
438 " override with environment variables. These are\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
439 " used in commands that mkoctfile executes.\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
440 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
441 " ALL_CFLAGS INCLUDEDIR\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
442 " ALL_CXXFLAGS LAPACK_LIBS\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
443 " ALL_FFLAGS LDFLAGS\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
444 " ALL_LDFLAGS LD_STATIC_FLAG\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
445 " BLAS_LIBS LIBDIR\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
446 " CC LIBOCTAVE\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
447 " CFLAGS LIBOCTINTERP\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
448 " CPICFLAG OCTAVE_LINK_OPTS\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
449 " CPPFLAGS OCTINCLUDEDIR\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
450 " CXX OCTAVE_LIBS\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
451 " CXXFLAGS OCTAVE_LINK_DEPS\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
452 " CXXLD OCTLIBDIR\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
453 " CXXPICFLAG OCT_LINK_DEPS\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
454 " DL_LDFLAGS OCT_LINK_OPTS\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
455 " F77 RDYNAMIC_FLAG\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
456 " F77_INTEGER8_FLAG SPECIAL_MATH_LIB\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
457 " FFLAGS XTRA_CFLAGS\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
458 " FPICFLAG XTRA_CXXFLAGS\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
459 " INCFLAGS\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
460 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
461 " Octave configuration variables as above, but\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
462 " currently unused by mkoctfile.\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
463 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
464 " AR\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
465 " DEPEND_EXTRA_SED_PATTERN\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
466 " DEPEND_FLAGS\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
467 " FFTW3F_LDFLAGS\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
468 " FFTW3F_LIBS\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
469 " FFTW3_LDFLAGS\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
470 " FFTW3_LIBS\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
471 " FFTW_LIBS\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
472 " FLIBS\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
473 " LIBS\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
474 " RANLIB\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
475 " READLINE_LIBS\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
476 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
477 " Octave configuration variables that are provided\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
478 " for informational purposes only. Except for\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
479 " OCTAVE_HOME and OCTAVE_EXEC_HOME, users may not\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
480 " override these variables.\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
481 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
482 " If OCTAVE_HOME or OCTAVE_EXEC_HOME are set in\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
483 " the environment, then other variables are adjusted\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
484 " accordingly with OCTAVE_HOME or OCTAVE_EXEC_HOME\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
485 " substituted for the original value of the directory\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
486 " specified by the --prefix or --exec-prefix options\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
487 " that were used when Octave was configured.\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
488 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
489 " API_VERSION LOCALFCNFILEDIR\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
490 " ARCHLIBDIR LOCALOCTFILEDIR\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
491 " BINDIR LOCALSTARTUPFILEDIR\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
492 " CANONICAL_HOST_TYPE LOCALVERARCHLIBDIR\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
493 " DATADIR LOCALVERFCNFILEDIR\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
494 " DATAROOTDIR LOCALVEROCTFILEDIR\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
495 " DEFAULT_PAGER MAN1DIR\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
496 " EXEC_PREFIX MAN1EXT\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
497 " EXEEXT MANDIR\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
498 " FCNFILEDIR OCTAVE_EXEC_HOME\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
499 " IMAGEDIR OCTAVE_HOME\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
500 " INFODIR OCTAVE_VERSION\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
501 " INFOFILE OCTDATADIR\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
502 " LIBEXECDIR OCTDOCDIR\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
503 " LOCALAPIARCHLIBDIR OCTFILEDIR\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
504 " LOCALAPIFCNFILEDIR OCTFONTSDIR\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
505 " LOCALAPIOCTFILEDIR STARTUPFILEDIR\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
506 " LOCALARCHLIBDIR\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
507 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
508 " --link-stand-alone Link a stand-alone executable file.\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
509 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
510 " --mex Assume we are creating a MEX file. Set the\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
511 " default output extension to \".mex\".\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
512 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
513 " -s, --strip Strip output file.\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
514 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
515 " -n, --just-print, --dry-run\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
516 " Print commands, but do not execute them.\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
517 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
518 " -v, --verbose Echo commands as they are executed.\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
519 "\n"
28058
cf59b503db2a * mkoctfile.in.cc (main): Accept --silent option.
John W. Eaton <jwe@octave.org>
parents: 28048
diff changeset
520 " --silent Ignored. Intended to suppress output from\n"
cf59b503db2a * mkoctfile.in.cc (main): Accept --silent option.
John W. Eaton <jwe@octave.org>
parents: 28048
diff changeset
521 " compiler steps.\n"
cf59b503db2a * mkoctfile.in.cc (main): Accept --silent option.
John W. Eaton <jwe@octave.org>
parents: 28048
diff changeset
522 "\n"
27934
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
523 " FILE Compile or link FILE. Recognized file types are:\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
524 "\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
525 " .c C source\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
526 " .cc C++ source\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
527 " .cp C++ source\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
528 " .cpp C++ source\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
529 " .CPP C++ source\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
530 " .cxx C++ source\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
531 " .c++ C++ source\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
532 " .C C++ source\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
533 " .f Fortran source (fixed form)\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
534 " .F Fortran source (fixed form)\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
535 " .f90 Fortran source (free form)\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
536 " .F90 Fortran source (free form)\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
537 " .o object file\n"
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
538 " .a library file\n"
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
539 #if defined (_MSC_VER)
27934
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
540 " .lib library file\n"
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
541 #endif
27934
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
542 "\n";
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
543
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
544 static std::string
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
545 basename (const std::string& s, bool strip_path = false)
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
546 {
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
547 std::string retval;
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
548
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29554
diff changeset
549 std::size_t pos = s.rfind ('.');
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
550
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
551 if (pos == std::string::npos)
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
552 retval = s;
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
553 else
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
554 retval = s.substr (0, pos);
15299
8bd5c490b787 Fix mex compilation with subdirs on Windows platforms (bug #37122)
Rik <rik@octave.org>
parents: 15271
diff changeset
555
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
556 if (strip_path)
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
557 {
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29554
diff changeset
558 std::size_t p1 = retval.rfind ('/'), p2 = retval.rfind ('\\');
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
559
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
560 pos = (p1 != std::string::npos && p2 != std::string::npos
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
561 ? std::max (p1, p2) : (p2 != std::string::npos ? p2 : p1));
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
562
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
563 if (pos != std::string::npos)
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
564 retval = retval.substr (++pos, std::string::npos);
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
565 }
15299
8bd5c490b787 Fix mex compilation with subdirs on Windows platforms (bug #37122)
Rik <rik@octave.org>
parents: 15271
diff changeset
566
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
567 return retval;
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
568 }
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
569
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
570 inline bool
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
571 starts_with (const std::string& s, const std::string& prefix)
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
572 {
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
573 return (s.length () >= prefix.length () && s.find (prefix) == 0);
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
574 }
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
575
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
576 inline bool
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
577 ends_with (const std::string& s, const std::string& suffix)
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
578 {
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
579 return (s.length () >= suffix.length ()
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
580 && s.rfind (suffix) == s.length () - suffix.length ());
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
581 }
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
582
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
583 static int
28963
f29e4791a792 mkoctfile: eliminate global debug variable
John W. Eaton <jwe@octave.org>
parents: 28883
diff changeset
584 run_command (const std::string& cmd, bool verbose, bool printonly = false)
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
585 {
22472
76f2b0436423 Add -n option to print, not execute, mkoctfile commands.
Rik <rik@octave.org>
parents: 22461
diff changeset
586 if (printonly)
76f2b0436423 Add -n option to print, not execute, mkoctfile commands.
Rik <rik@octave.org>
parents: 22461
diff changeset
587 {
76f2b0436423 Add -n option to print, not execute, mkoctfile commands.
Rik <rik@octave.org>
parents: 22461
diff changeset
588 std::cout << cmd << std::endl;
76f2b0436423 Add -n option to print, not execute, mkoctfile commands.
Rik <rik@octave.org>
parents: 22461
diff changeset
589 return 0;
76f2b0436423 Add -n option to print, not execute, mkoctfile commands.
Rik <rik@octave.org>
parents: 22461
diff changeset
590 }
76f2b0436423 Add -n option to print, not execute, mkoctfile commands.
Rik <rik@octave.org>
parents: 22461
diff changeset
591
28963
f29e4791a792 mkoctfile: eliminate global debug variable
John W. Eaton <jwe@octave.org>
parents: 28883
diff changeset
592 if (verbose)
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
593 std::cout << cmd << std::endl;
18916
5999e654f256 WIFEXITED and WEXITSTATUS macros for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 18915
diff changeset
594
29141
f873857f5f86 system: Support executing commands with non-ASCII characters on Windows (bug #59572).
Markus Mützel <markus.muetzel@gmx.de>
parents: 29007
diff changeset
595 // FIXME: Call _wsystem on Windows or octave::sys::system.
18916
5999e654f256 WIFEXITED and WEXITSTATUS macros for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 18915
diff changeset
596 int result = system (cmd.c_str ());
5999e654f256 WIFEXITED and WEXITSTATUS macros for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 18915
diff changeset
597
21927
6f62bd248919 use wrapper functions for mkoctfile and main
John W. Eaton <jwe@octave.org>
parents: 21852
diff changeset
598 if (octave_wifexited_wrapper (result))
6f62bd248919 use wrapper functions for mkoctfile and main
John W. Eaton <jwe@octave.org>
parents: 21852
diff changeset
599 result = octave_wexitstatus_wrapper (result);
18916
5999e654f256 WIFEXITED and WEXITSTATUS macros for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 18915
diff changeset
600
5999e654f256 WIFEXITED and WEXITSTATUS macros for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 18915
diff changeset
601 return result;
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
602 }
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
603
16624
96d02808a881 Support "true" or "yes" for %NO_OCT_FILE_STRIP% in mkoctfile.in.cc.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 15946
diff changeset
604 bool
96d02808a881 Support "true" or "yes" for %NO_OCT_FILE_STRIP% in mkoctfile.in.cc.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 15946
diff changeset
605 is_true (const std::string& s)
96d02808a881 Support "true" or "yes" for %NO_OCT_FILE_STRIP% in mkoctfile.in.cc.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 15946
diff changeset
606 {
18360
f1ee47866e6b use common code to get OCTAVE_HOME in main, octave-config and mkoctfile
John W. Eaton <jwe@octave.org>
parents: 18349
diff changeset
607 return (s == "yes" || s == "true");
16624
96d02808a881 Support "true" or "yes" for %NO_OCT_FILE_STRIP% in mkoctfile.in.cc.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 15946
diff changeset
608 }
96d02808a881 Support "true" or "yes" for %NO_OCT_FILE_STRIP% in mkoctfile.in.cc.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 15946
diff changeset
609
25497
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
610 static std::string
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
611 get_temp_directory (void)
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
612 {
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
613 std::string tempd;
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
614
26853
b0f359a5ad35 mkoctfile: use the TMPDIR environment variable if set (bug #55814)
Mike Miller <mtmiller@octave.org>
parents: 26612
diff changeset
615 tempd = octave_getenv ("TMPDIR");
b0f359a5ad35 mkoctfile: use the TMPDIR environment variable if set (bug #55814)
Mike Miller <mtmiller@octave.org>
parents: 26612
diff changeset
616
25497
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
617 #if defined (__MINGW32__) || defined (_MSC_VER)
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
618
26853
b0f359a5ad35 mkoctfile: use the TMPDIR environment variable if set (bug #55814)
Mike Miller <mtmiller@octave.org>
parents: 26612
diff changeset
619 if (tempd.empty ())
b0f359a5ad35 mkoctfile: use the TMPDIR environment variable if set (bug #55814)
Mike Miller <mtmiller@octave.org>
parents: 26612
diff changeset
620 tempd = octave_getenv ("TEMP");
25497
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
621
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
622 if (tempd.empty ())
26370
190702f4a075 mkoctfile.in.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26363
diff changeset
623 tempd = octave_getenv ("TMP");
25497
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
624
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
625 #if defined (P_tmpdir)
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
626 if (tempd.empty ())
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
627 tempd = P_tmpdir;
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
628 #endif
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
629
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
630 // Some versions of MinGW and MSVC either don't define P_tmpdir, or
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
631 // define it to a single backslash. In such cases just use C:\temp.
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
632 if (tempd.empty () || tempd == R"(\)")
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
633 tempd = R"(c:\temp)";
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
634
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
635 #else
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
636
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
637 #if defined (P_tmpdir)
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
638 if (tempd.empty ())
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
639 tempd = P_tmpdir;
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
640 #else
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
641 if (tempd.empty ())
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
642 tempd = "/tmp";
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
643 #endif
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
644
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
645 #endif
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
646
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
647 return tempd;
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
648 }
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
649
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
650 static std::string
28124
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
651 create_interleaved_complex_file (void)
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
652 {
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
653 std::string tmpl = get_temp_directory () + "/oct-XXXXXX.c";
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
654
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
655 char *ctmpl = new char [tmpl.length () + 1];
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
656
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
657 ctmpl = strcpy (ctmpl, tmpl.c_str ());
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
658
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
659 // mkostemps will open the file and return a file descriptor. We
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
660 // won't worry about closing it because we will need the file until we
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
661 // are done and then the file will be closed when mkoctfile exits.
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
662 int fd = octave_mkostemps_wrapper (ctmpl, 2);
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
663
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
664 // Make C++ string from filled-in template.
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
665 std::string retval (ctmpl);
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
666 delete [] ctmpl;
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
667
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
668 // Write symbol definition to file.
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
669 FILE *fid = fdopen (fd, "w");
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
670 fputs ("const int __mx_has_interleaved_complex__ = 1;\n", fid);
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
671 fclose (fid);
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
672
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
673 return retval;
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
674 }
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
675
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
676 static std::string
25497
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
677 tmp_objfile_name (void)
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
678 {
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
679 std::string tmpl = get_temp_directory () + "/oct-XXXXXX.o";
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
680
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
681 char *ctmpl = new char [tmpl.length () + 1];
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
682
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
683 ctmpl = strcpy (ctmpl, tmpl.c_str ());
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
684
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
685 // mkostemps will open the file and return a file descriptor. We
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
686 // won't worry about closing it because we will need the file until we
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
687 // are done and then the file will be closed when mkoctfile exits.
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
688 octave_mkostemps_wrapper (ctmpl, 2);
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
689
26487
6aa84dc27d01 Fix memory leak in mkoctfile.
Rik <rik@octave.org>
parents: 26472
diff changeset
690 std::string retval (ctmpl); // make C++ string from filled-in template
6aa84dc27d01 Fix memory leak in mkoctfile.
Rik <rik@octave.org>
parents: 26472
diff changeset
691 delete [] ctmpl;
6aa84dc27d01 Fix memory leak in mkoctfile.
Rik <rik@octave.org>
parents: 26472
diff changeset
692
6aa84dc27d01 Fix memory leak in mkoctfile.
Rik <rik@octave.org>
parents: 26472
diff changeset
693 return retval;
25497
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
694 }
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
695
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
696 static void
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
697 clean_up_tmp_files (const std::list<std::string>& tmp_files)
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
698 {
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
699 for (const auto& file : tmp_files)
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
700 octave_unlink_wrapper (file.c_str ());
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
701 }
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
702
29540
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
703 #if defined (OCTAVE_USE_WINDOWS_API) && defined (_UNICODE)
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
704 extern "C"
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
705 int
29699
b98ae05c6b7e avoid possible buffer corruption introduced in b6f80b1d448f
John W. Eaton <jwe@octave.org>
parents: 29657
diff changeset
706 wmain (int argc, wchar_t **sys_argv)
29540
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
707 {
29699
b98ae05c6b7e avoid possible buffer corruption introduced in b6f80b1d448f
John W. Eaton <jwe@octave.org>
parents: 29657
diff changeset
708 std::vector<std::string> argv;
29540
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
709
29699
b98ae05c6b7e avoid possible buffer corruption introduced in b6f80b1d448f
John W. Eaton <jwe@octave.org>
parents: 29657
diff changeset
710 // Convert wide character strings to multibyte UTF-8 strings and save
b98ae05c6b7e avoid possible buffer corruption introduced in b6f80b1d448f
John W. Eaton <jwe@octave.org>
parents: 29657
diff changeset
711 // them in a vector of std::string objects for later processing.
b98ae05c6b7e avoid possible buffer corruption introduced in b6f80b1d448f
John W. Eaton <jwe@octave.org>
parents: 29657
diff changeset
712
29540
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
713 std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> wchar_conv;
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
714 for (int i_arg = 0; i_arg < argc; i_arg++)
29699
b98ae05c6b7e avoid possible buffer corruption introduced in b6f80b1d448f
John W. Eaton <jwe@octave.org>
parents: 29657
diff changeset
715 argv.push_back (wchar_conv.to_bytes (sys_argv[i_arg]));
29540
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
716 #else
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
717 int
29699
b98ae05c6b7e avoid possible buffer corruption introduced in b6f80b1d448f
John W. Eaton <jwe@octave.org>
parents: 29657
diff changeset
718 main (int argc, char **sys_argv)
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
719 {
29699
b98ae05c6b7e avoid possible buffer corruption introduced in b6f80b1d448f
John W. Eaton <jwe@octave.org>
parents: 29657
diff changeset
720 std::vector<std::string> argv;
b98ae05c6b7e avoid possible buffer corruption introduced in b6f80b1d448f
John W. Eaton <jwe@octave.org>
parents: 29657
diff changeset
721
b98ae05c6b7e avoid possible buffer corruption introduced in b6f80b1d448f
John W. Eaton <jwe@octave.org>
parents: 29657
diff changeset
722 // Save args as vector of std::string objects for later processing.
b98ae05c6b7e avoid possible buffer corruption introduced in b6f80b1d448f
John W. Eaton <jwe@octave.org>
parents: 29657
diff changeset
723 for (int i_arg = 0; i_arg < argc; i_arg++)
b98ae05c6b7e avoid possible buffer corruption introduced in b6f80b1d448f
John W. Eaton <jwe@octave.org>
parents: 29657
diff changeset
724 argv.push_back (sys_argv[i_arg]);
29540
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
725 #endif
29699
b98ae05c6b7e avoid possible buffer corruption introduced in b6f80b1d448f
John W. Eaton <jwe@octave.org>
parents: 29657
diff changeset
726
30398
d4d83344d653 maint: style check C++ files in src/ and libgui/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30386
diff changeset
727 if (argc == 1)
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
728 {
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
729 std::cout << usage_msg << std::endl;
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
730 return 1;
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
731 }
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
732
29699
b98ae05c6b7e avoid possible buffer corruption introduced in b6f80b1d448f
John W. Eaton <jwe@octave.org>
parents: 29657
diff changeset
733 if (argc == 2 && (argv[1] == "-v" || argv[1] == "-version"
b98ae05c6b7e avoid possible buffer corruption introduced in b6f80b1d448f
John W. Eaton <jwe@octave.org>
parents: 29657
diff changeset
734 || argv[1] == "--version"))
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
735 {
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
736 std::cout << version_msg << std::endl;
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
737 return 0;
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
738 }
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
739
25497
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
740 std::list<std::string> cfiles, ccfiles, f77files, tmp_objfiles;
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
741 std::string output_ext = ".oct";
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
742 std::string objfiles, libfiles, octfile, outputfile;
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
743 std::string incflags, defs, ldflags, pass_on_options;
28964
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
744 std::string var_to_print;
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
745 bool debug = false;
28963
f29e4791a792 mkoctfile: eliminate global debug variable
John W. Eaton <jwe@octave.org>
parents: 28883
diff changeset
746 bool verbose = false;
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
747 bool strip = false;
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
748 bool no_oct_file_strip_on_this_platform = is_true ("%NO_OCT_FILE_STRIP%");
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
749 bool compile_only = false;
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
750 bool link_stand_alone = false;
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
751 bool depend = false;
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
752 bool printonly = false;
25507
b61f3500651f mkoctfile: fix check for using -o and -c with multiple source files (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25504
diff changeset
753 bool output_file_option = false;
28124
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
754 bool creating_mex_file = false;
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
755 bool r2017b_option = false;
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
756 bool r2018a_option = false;
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
757 // The default for this may change in the future.
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
758 bool mx_has_interleaved_complex = false;
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
759
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
760 for (int i = 1; i < argc; i++)
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
761 {
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
762 std::string arg = argv[i];
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
763
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
764 std::string file;
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
765
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
766 if (ends_with (arg, ".c"))
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
767 {
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
768 file = arg;
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
769 cfiles.push_back (file);
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
770 }
22031
2cfbb6b25428 mkoctfile: support more file extensions for C++ sources (bug #48381)
Mike Miller <mtmiller@octave.org>
parents: 22022
diff changeset
771 else if (ends_with (arg, ".cc") || ends_with (arg, ".cp")
2cfbb6b25428 mkoctfile: support more file extensions for C++ sources (bug #48381)
Mike Miller <mtmiller@octave.org>
parents: 22022
diff changeset
772 || ends_with (arg, ".cpp") || ends_with (arg, ".CPP")
2cfbb6b25428 mkoctfile: support more file extensions for C++ sources (bug #48381)
Mike Miller <mtmiller@octave.org>
parents: 22022
diff changeset
773 || ends_with (arg, ".cxx") || ends_with (arg, ".c++")
2cfbb6b25428 mkoctfile: support more file extensions for C++ sources (bug #48381)
Mike Miller <mtmiller@octave.org>
parents: 22022
diff changeset
774 || ends_with (arg, ".C"))
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
775 {
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
776 file = arg;
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
777 ccfiles.push_back (file);
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
778 }
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
779 else if (ends_with (arg, ".f") || ends_with (arg, ".F")
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
780 || ends_with (arg, "f90") || ends_with (arg, ".F90"))
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
781 {
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
782 file = arg;
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
783 f77files.push_back (file);
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
784 }
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
785 else if (ends_with (arg, ".o") || ends_with (arg, ".obj"))
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
786 {
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
787 file = arg;
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
788 objfiles += (' ' + quote_path (arg));
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
789 }
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
790 else if (ends_with (arg, ".lib") || ends_with (arg, ".a"))
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
791 {
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
792 file = arg;
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
793 libfiles += (' ' + quote_path (arg));
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
794 }
9955
33537a4d223f mkoctfile.cc.in: accept long options with single -
John W. Eaton <jwe@octave.org>
parents: 9794
diff changeset
795 else if (arg == "-d" || arg == "-debug" || arg == "--debug"
33537a4d223f mkoctfile.cc.in: accept long options with single -
John W. Eaton <jwe@octave.org>
parents: 9794
diff changeset
796 || arg == "-v" || arg == "-verbose" || arg == "--verbose")
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
797 {
28963
f29e4791a792 mkoctfile: eliminate global debug variable
John W. Eaton <jwe@octave.org>
parents: 28883
diff changeset
798 verbose = true;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
799 }
28058
cf59b503db2a * mkoctfile.in.cc (main): Accept --silent option.
John W. Eaton <jwe@octave.org>
parents: 28048
diff changeset
800 else if (arg == "-silent" || arg == "--silent")
cf59b503db2a * mkoctfile.in.cc (main): Accept --silent option.
John W. Eaton <jwe@octave.org>
parents: 28048
diff changeset
801 {
cf59b503db2a * mkoctfile.in.cc (main): Accept --silent option.
John W. Eaton <jwe@octave.org>
parents: 28048
diff changeset
802 // Ignored for now.
cf59b503db2a * mkoctfile.in.cc (main): Accept --silent option.
John W. Eaton <jwe@octave.org>
parents: 28048
diff changeset
803 }
9955
33537a4d223f mkoctfile.cc.in: accept long options with single -
John W. Eaton <jwe@octave.org>
parents: 9794
diff changeset
804 else if (arg == "-h" || arg == "-?" || arg == "-help" || arg == "--help")
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
805 {
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
806 std::cout << usage_msg << std::endl;
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
807 std::cout << help_msg << std::endl;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
808 return 0;
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
809 }
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
810 else if (starts_with (arg, "-I"))
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
811 {
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
812 incflags += (' ' + quote_path (arg));
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
813 }
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
814 else if (arg == "-idirafter")
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
815 {
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
816 if (i < argc-1)
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
817 {
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
818 arg = argv[++i];
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
819 incflags += (" -idirafter " + arg);
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
820 }
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
821 else
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
822 std::cerr << "mkoctfile: include directory name missing"
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
823 << std::endl;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
824 }
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
825 else if (starts_with (arg, "-D"))
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
826 {
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
827 defs += (' ' + arg);
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
828 }
22461
cc4f31e8477f Accept, but ignore, mex argument -largeArrayDims, -compatibleArrayDims (bug #39984).
Rik <rik@octave.org>
parents: 22459
diff changeset
829 else if (arg == "-largeArrayDims" || arg == "-compatibleArrayDims")
cc4f31e8477f Accept, but ignore, mex argument -largeArrayDims, -compatibleArrayDims (bug #39984).
Rik <rik@octave.org>
parents: 22459
diff changeset
830 {
28966
b02d9109fb6e mkoctfile: prefix warning messages with program name
John W. Eaton <jwe@octave.org>
parents: 28965
diff changeset
831 std::cerr << "mkoctfile: warning: -largeArrayDims and -compatibleArrayDims are accepted for compatibility, but ignored" << std::endl;
22461
cc4f31e8477f Accept, but ignore, mex argument -largeArrayDims, -compatibleArrayDims (bug #39984).
Rik <rik@octave.org>
parents: 22459
diff changeset
832 }
28124
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
833 else if (arg == "-R2017b")
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
834 {
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
835 if (r2018a_option)
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
836 {
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
837 std::cerr << "mkoctfile: only one of -R2017b and -R2018a may be used" << std::endl;
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
838 return 1;
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
839 }
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
840
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
841 r2017b_option = true;
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
842 }
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
843 else if (arg == "-R2018a")
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
844 {
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
845 if (r2017b_option)
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
846 {
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
847 std::cerr << "mkoctfile: only one of -R2017b and -R2018a may be used" << std::endl;
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
848 return 1;
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
849 }
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
850
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
851 r2018a_option = true;
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
852 mx_has_interleaved_complex = true;
22461
cc4f31e8477f Accept, but ignore, mex argument -largeArrayDims, -compatibleArrayDims (bug #39984).
Rik <rik@octave.org>
parents: 22459
diff changeset
853 }
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
854 else if (starts_with (arg, "-Wl,") || starts_with (arg, "-l")
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
855 || starts_with (arg, "-L") || starts_with (arg, "-R"))
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
856 {
28129
16ccaebe250a mkoctfile: quote linker arguments that may contain spaces (bug #57878)
Mike Miller <mtmiller@octave.org>
parents: 28058
diff changeset
857 ldflags += (' ' + quote_path (arg));
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
858 }
21979
d04da18a407a use OCTAVE_USE_WINDOWS_API more consistently
John W. Eaton <jwe@octave.org>
parents: 21961
diff changeset
859 #if ! defined (OCTAVE_USE_WINDOWS_API)
18349
50505bf88b82 make octave-config and mkoctfile consistent with last shell script versions
John W. Eaton <jwe@octave.org>
parents: 18342
diff changeset
860 else if (arg == "-pthread")
50505bf88b82 make octave-config and mkoctfile consistent with last shell script versions
John W. Eaton <jwe@octave.org>
parents: 18342
diff changeset
861 {
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
862 ldflags += (' ' + arg);
18349
50505bf88b82 make octave-config and mkoctfile consistent with last shell script versions
John W. Eaton <jwe@octave.org>
parents: 18342
diff changeset
863 }
50505bf88b82 make octave-config and mkoctfile consistent with last shell script versions
John W. Eaton <jwe@octave.org>
parents: 18342
diff changeset
864 #endif
9955
33537a4d223f mkoctfile.cc.in: accept long options with single -
John W. Eaton <jwe@octave.org>
parents: 9794
diff changeset
865 else if (arg == "-M" || arg == "-depend" || arg == "--depend")
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
866 {
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
867 depend = true;
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
868 }
9955
33537a4d223f mkoctfile.cc.in: accept long options with single -
John W. Eaton <jwe@octave.org>
parents: 9794
diff changeset
869 else if (arg == "-o" || arg == "-output" || arg == "--output")
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
870 {
25507
b61f3500651f mkoctfile: fix check for using -o and -c with multiple source files (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25504
diff changeset
871 output_file_option = true;
b61f3500651f mkoctfile: fix check for using -o and -c with multiple source files (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25504
diff changeset
872
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
873 if (i < argc-1)
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
874 {
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
875 arg = argv[++i];
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
876 outputfile = arg;
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
877 }
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
878 else
20713
2469d78a1d8b Consistently use 'filename' rather than 'file name' throughout code base.
Rik <rik@octave.org>
parents: 20507
diff changeset
879 std::cerr << "mkoctfile: output filename missing" << std::endl;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
880 }
22481
541a20a4961c mkoctfile: alias --dry-run option to --just-print because it's very common.
Carnë Draug <carandraug@octave.org>
parents: 22472
diff changeset
881 else if (arg == "-n" || arg == "--dry-run" || arg == "--just-print")
22472
76f2b0436423 Add -n option to print, not execute, mkoctfile commands.
Rik <rik@octave.org>
parents: 22461
diff changeset
882 {
76f2b0436423 Add -n option to print, not execute, mkoctfile commands.
Rik <rik@octave.org>
parents: 22461
diff changeset
883 printonly = true;
76f2b0436423 Add -n option to print, not execute, mkoctfile commands.
Rik <rik@octave.org>
parents: 22461
diff changeset
884 }
9955
33537a4d223f mkoctfile.cc.in: accept long options with single -
John W. Eaton <jwe@octave.org>
parents: 9794
diff changeset
885 else if (arg == "-p" || arg == "-print" || arg == "--print")
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
886 {
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
887 if (i < argc-1)
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
888 {
28964
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
889 ++i;
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
890
30386
fc9b98382ea7 mkoctfile: Add command line `-l` flags before LDFLAGS in linker command (bug #61571).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30368
diff changeset
891 // FIXME: Remove LFLAGS checking in Octave 9
29699
b98ae05c6b7e avoid possible buffer corruption introduced in b6f80b1d448f
John W. Eaton <jwe@octave.org>
parents: 29657
diff changeset
892 if (argv[i] == "LFLAGS")
28966
b02d9109fb6e mkoctfile: prefix warning messages with program name
John W. Eaton <jwe@octave.org>
parents: 28965
diff changeset
893 std::cerr << "mkoctfile: warning: LFLAGS is deprecated and will be removed in a future version of Octave, use LDFLAGS instead" << std::endl;
26422
26be3dc2900f Use LDFLAGS for mkoctfile linker flags (bug #48678).
Rik <rik@octave.org>
parents: 26376
diff changeset
894
28964
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
895 if (! var_to_print.empty ())
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
896 std::cerr << "mkoctfile: warning: only one '" << arg
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
897 << "' option will be processed" << std::endl;
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
898 else
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
899 var_to_print = argv[i];
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
900 }
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
901 else
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
902 std::cerr << "mkoctfile: --print requires argument" << std::endl;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
903 }
9955
33537a4d223f mkoctfile.cc.in: accept long options with single -
John W. Eaton <jwe@octave.org>
parents: 9794
diff changeset
904 else if (arg == "-s" || arg == "-strip" || arg == "--strip")
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
905 {
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
906 if (no_oct_file_strip_on_this_platform)
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
907 std::cerr << "mkoctfile: stripping disabled on this platform"
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
908 << std::endl;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
909 else
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
910 strip = true;
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
911 }
9955
33537a4d223f mkoctfile.cc.in: accept long options with single -
John W. Eaton <jwe@octave.org>
parents: 9794
diff changeset
912 else if (arg == "-c" || arg == "-compile" || arg == "--compile")
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
913 {
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
914 compile_only = true;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
915 }
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
916 else if (arg == "-g")
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
917 {
28964
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
918 debug = true;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
919 }
9955
33537a4d223f mkoctfile.cc.in: accept long options with single -
John W. Eaton <jwe@octave.org>
parents: 9794
diff changeset
920 else if (arg == "-link-stand-alone" || arg == "--link-stand-alone")
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
921 {
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
922 link_stand_alone = true;
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
923 }
9955
33537a4d223f mkoctfile.cc.in: accept long options with single -
John W. Eaton <jwe@octave.org>
parents: 9794
diff changeset
924 else if (arg == "-mex" || arg == "--mex")
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
925 {
28124
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
926 creating_mex_file = true;
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
927
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
928 incflags += " -I.";
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
929 #if defined (_MSC_VER)
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
930 ldflags += " -Wl,-export:mexFunction";
9303
adf676387922 properly #ifdef MSVC linker specific flags
Benjamin Lindner <lindnerb@users.sourceforge.net>
parents: 9245
diff changeset
931 #endif
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
932 output_ext = ".mex";
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
933 }
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
934 else if (starts_with (arg, "-W"))
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
935 {
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
936 pass_on_options += (' ' + arg);
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
937 }
24742
9db2f757c7c0 Accept -O as an argument to mkoctfile (bug #53099).
Rik <rik@octave.org>
parents: 24634
diff changeset
938 else if (starts_with (arg, "-O"))
9db2f757c7c0 Accept -O as an argument to mkoctfile (bug #53099).
Rik <rik@octave.org>
parents: 24634
diff changeset
939 {
9db2f757c7c0 Accept -O as an argument to mkoctfile (bug #53099).
Rik <rik@octave.org>
parents: 24634
diff changeset
940 pass_on_options += (' ' + arg);
9db2f757c7c0 Accept -O as an argument to mkoctfile (bug #53099).
Rik <rik@octave.org>
parents: 24634
diff changeset
941 }
19711
b59aabc08e63 Pass unrecognized '-' arguments through mkoctfile to compiler (bug #34169).
Rik <rik@octave.org>
parents: 19697
diff changeset
942 else if (starts_with (arg, "-"))
b59aabc08e63 Pass unrecognized '-' arguments through mkoctfile to compiler (bug #34169).
Rik <rik@octave.org>
parents: 19697
diff changeset
943 {
24634
ab2321d4ba03 maint: strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 24622
diff changeset
944 // Pass through any unrecognized options.
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
945 pass_on_options += (' ' + arg);
24634
ab2321d4ba03 maint: strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 24622
diff changeset
946 // Check for an additional argument following the option.
24742
9db2f757c7c0 Accept -O as an argument to mkoctfile (bug #53099).
Rik <rik@octave.org>
parents: 24634
diff changeset
947 // However, don't check the final position which is typically a file
9db2f757c7c0 Accept -O as an argument to mkoctfile (bug #53099).
Rik <rik@octave.org>
parents: 24634
diff changeset
948 if (i < argc-2)
24622
298c6a6bd869 Accept compound unrecognized arguments to mkoctfile (bug #52928).
Rik <rik@octave.org>
parents: 24534
diff changeset
949 {
298c6a6bd869 Accept compound unrecognized arguments to mkoctfile (bug #52928).
Rik <rik@octave.org>
parents: 24534
diff changeset
950 arg = argv[i+1];
298c6a6bd869 Accept compound unrecognized arguments to mkoctfile (bug #52928).
Rik <rik@octave.org>
parents: 24534
diff changeset
951 if (arg[0] != '-')
298c6a6bd869 Accept compound unrecognized arguments to mkoctfile (bug #52928).
Rik <rik@octave.org>
parents: 24534
diff changeset
952 {
298c6a6bd869 Accept compound unrecognized arguments to mkoctfile (bug #52928).
Rik <rik@octave.org>
parents: 24534
diff changeset
953 pass_on_options += (' ' + arg);
298c6a6bd869 Accept compound unrecognized arguments to mkoctfile (bug #52928).
Rik <rik@octave.org>
parents: 24534
diff changeset
954 i++;
298c6a6bd869 Accept compound unrecognized arguments to mkoctfile (bug #52928).
Rik <rik@octave.org>
parents: 24534
diff changeset
955 }
298c6a6bd869 Accept compound unrecognized arguments to mkoctfile (bug #52928).
Rik <rik@octave.org>
parents: 24534
diff changeset
956 }
19711
b59aabc08e63 Pass unrecognized '-' arguments through mkoctfile to compiler (bug #34169).
Rik <rik@octave.org>
parents: 19697
diff changeset
957 }
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
958 else
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
959 {
18796
dd57ca9ef7e4 Add missing newline to error message from mkoctfile.
Rik <rik@octave.org>
parents: 18364
diff changeset
960 std::cerr << "mkoctfile: unrecognized argument " << arg << std::endl;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
961 return 1;
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
962 }
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
963
20955
77f5591878bf maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents: 20713
diff changeset
964 if (! file.empty () && octfile.empty ())
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
965 octfile = file;
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
966 }
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
967
28965
d24e34e179ab mkoctfile: don't add DL_LDFLAGS to LDFLAGS if linking stand alone program
John W. Eaton <jwe@octave.org>
parents: 28964
diff changeset
968 std::map<std::string, std::string> vars
d24e34e179ab mkoctfile: don't add DL_LDFLAGS to LDFLAGS if linking stand alone program
John W. Eaton <jwe@octave.org>
parents: 28964
diff changeset
969 = make_vars_map (link_stand_alone, verbose, debug);
28964
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
970
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
971 if (! var_to_print.empty ())
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
972 {
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
973 if (vars.find (var_to_print) == vars.end ())
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
974 {
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
975 std::cerr << "mkoctfile: unknown variable '" << var_to_print << "'"
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
976 << std::endl;
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
977 return 1;
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
978 }
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
979
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
980 std::cout << vars[var_to_print] << std::endl;
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
981
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
982 return 0;
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
983 }
091aeae73b60 mkoctfile: revamp argument parsing
John W. Eaton <jwe@octave.org>
parents: 28963
diff changeset
984
28124
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
985 if (creating_mex_file)
22459
6af82fc041a4 Implement Matlab-compatible MEX functions mxAssert and mxAssertS.
Rik <rik@octave.org>
parents: 22412
diff changeset
986 {
28124
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
987 if (vars["ALL_CFLAGS"].find ("-g") != std::string::npos)
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
988 defs += " -DMEX_DEBUG";
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
989
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
990 if (mx_has_interleaved_complex)
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
991 {
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
992 defs += " -DMX_HAS_INTERLEAVED_COMPLEX=1";
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
993
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
994 if (! compile_only)
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
995 {
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
996 // Create tmp C source file that defines an extern symbol
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
997 // that can be checked when loading the mex file to
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
998 // determine that the file was compiled expecting
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
999 // interleaved complex values.
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
1000
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
1001 std::string tmp_file = create_interleaved_complex_file ();
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
1002
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
1003 cfiles.push_back (tmp_file);
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
1004 }
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
1005 }
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
1006 }
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
1007 else
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
1008 {
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
1009 if (r2017b_option)
28966
b02d9109fb6e mkoctfile: prefix warning messages with program name
John W. Eaton <jwe@octave.org>
parents: 28965
diff changeset
1010 std::cerr << "mkoctfile: warning: -R2017b option ignored unless creating mex file"
28124
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
1011 << std::endl;
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
1012
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
1013 if (r2018a_option)
28966
b02d9109fb6e mkoctfile: prefix warning messages with program name
John W. Eaton <jwe@octave.org>
parents: 28965
diff changeset
1014 std::cerr << "mkoctfile: warning: -R2018a option ignored unless creating mex file"
28124
5b37e5e03bb5 mkoctfile.cc: accept -R2017b and -R2018a mex options
John W. Eaton <jwe@octave.org>
parents: 28058
diff changeset
1015 << std::endl;
22459
6af82fc041a4 Implement Matlab-compatible MEX functions mxAssert and mxAssertS.
Rik <rik@octave.org>
parents: 22412
diff changeset
1016 }
6af82fc041a4 Implement Matlab-compatible MEX functions mxAssert and mxAssertS.
Rik <rik@octave.org>
parents: 22412
diff changeset
1017
25507
b61f3500651f mkoctfile: fix check for using -o and -c with multiple source files (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25504
diff changeset
1018 if (compile_only && output_file_option
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1019 && (cfiles.size () + ccfiles.size () + f77files.size ()) > 1)
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1020 {
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1021 std::cerr << "mkoctfile: may not use -c and -o with multiple source files"
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1022 << std::endl;
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1023 return 1;
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1024 }
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1025
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1026 std::string output_option;
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1027
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1028 if (link_stand_alone)
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1029 {
20955
77f5591878bf maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents: 20713
diff changeset
1030 if (! outputfile.empty ())
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1031 output_option = "-o " + outputfile;
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1032 }
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1033 else
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1034 {
20955
77f5591878bf maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents: 20713
diff changeset
1035 if (! outputfile.empty ())
9957
59ed11557715 mkoctfile: if output file is specified and it does not end in output_ext, append output_ext
John W. Eaton <jwe@octave.org>
parents: 9956
diff changeset
1036 {
25495
92a64cb5e475 mkoctfile: Prevent invalid string indexing crash.
John W. Eaton <jwe@octave.org>
parents: 25494
diff changeset
1037 // FIXME: should probably do a better job of finding the
92a64cb5e475 mkoctfile: Prevent invalid string indexing crash.
John W. Eaton <jwe@octave.org>
parents: 25494
diff changeset
1038 // filename extension instead of just looking at the filename
92a64cb5e475 mkoctfile: Prevent invalid string indexing crash.
John W. Eaton <jwe@octave.org>
parents: 25494
diff changeset
1039 // length.
92a64cb5e475 mkoctfile: Prevent invalid string indexing crash.
John W. Eaton <jwe@octave.org>
parents: 25494
diff changeset
1040
9957
59ed11557715 mkoctfile: if output file is specified and it does not end in output_ext, append output_ext
John W. Eaton <jwe@octave.org>
parents: 9956
diff changeset
1041 octfile = outputfile;
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29554
diff changeset
1042 std::size_t len = octfile.length ();
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29554
diff changeset
1043 std::size_t len_ext = output_ext.length ();
25495
92a64cb5e475 mkoctfile: Prevent invalid string indexing crash.
John W. Eaton <jwe@octave.org>
parents: 25494
diff changeset
1044 if (len <= len_ext || octfile.substr (len-len_ext) != output_ext)
9957
59ed11557715 mkoctfile: if output file is specified and it does not end in output_ext, append output_ext
John W. Eaton <jwe@octave.org>
parents: 9956
diff changeset
1045 octfile += output_ext;
59ed11557715 mkoctfile: if output file is specified and it does not end in output_ext, append output_ext
John W. Eaton <jwe@octave.org>
parents: 9956
diff changeset
1046 }
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1047 else
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1048 octfile = basename (octfile, true) + output_ext;
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1049 }
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1050
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1051 if (depend)
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1052 {
29540
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1053 #if defined (OCTAVE_USE_WINDOWS_API) && ! defined (_UNICODE)
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1054 std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> wchar_conv;
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1055 #endif
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1056
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1057 for (const auto& f : cfiles)
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1058 {
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1059 std::string dfile = basename (f, true) + ".d", line;
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1060
21927
6f62bd248919 use wrapper functions for mkoctfile and main
John W. Eaton <jwe@octave.org>
parents: 21852
diff changeset
1061 octave_unlink_wrapper (dfile.c_str ());
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1062
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1063 std::string cmd
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
1064 = (vars["CC"] + ' ' + vars["DEPEND_FLAGS"] + ' '
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
1065 + vars["CPPFLAGS"] + ' ' + vars["ALL_CFLAGS"] + ' '
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
1066 + incflags + ' ' + defs + ' ' + quote_path (f));
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1067
29540
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1068 #if defined (OCTAVE_USE_WINDOWS_API)
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1069 FILE *fd;
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1070 try
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1071 {
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1072 std::wstring wcmd = wchar_conv.from_bytes (cmd);
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1073 fd = ::_wpopen (wcmd.c_str (), L"r");
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1074 }
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1075 catch (const std::range_error& e)
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1076 {
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1077 fd = ::popen (cmd.c_str (), "r");
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1078 }
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1079
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1080 std::ofstream fo;
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1081 try
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1082 {
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1083 std::wstring wfile = wchar_conv.from_bytes (dfile);
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1084 fo.open (wfile.c_str ());
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1085 }
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1086 catch (const std::range_error& e)
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1087 {
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1088 fo.open (dfile.c_str ());
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1089 }
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1090 #else
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1091 FILE *fd = popen (cmd.c_str (), "r");
29006
139df373c107 Use wide character overload to open file streams on Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 28882
diff changeset
1092
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
1093 std::ofstream fo (dfile.c_str ());
29006
139df373c107 Use wide character overload to open file streams on Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 28882
diff changeset
1094 #endif
29540
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1095
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29554
diff changeset
1096 std::size_t pos;
20955
77f5591878bf maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents: 20713
diff changeset
1097 while (! feof (fd))
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1098 {
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1099 line = get_line (fd);
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
1100 if ((pos = line.rfind (".o:")) != std::string::npos)
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1101 {
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29554
diff changeset
1102 std::size_t spos = line.rfind ('/', pos);
27277
db687716fed6 style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents: 26853
diff changeset
1103 std::string ofile
db687716fed6 style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents: 26853
diff changeset
1104 = (spos == std::string::npos
db687716fed6 style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents: 26853
diff changeset
1105 ? line.substr (0, pos+2)
db687716fed6 style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents: 26853
diff changeset
1106 : line.substr (spos+1, pos-spos+1));
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
1107 fo << "pic/" << ofile << ' ' << ofile << ' '
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
1108 << dfile << line.substr (pos) << std::endl;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1109 }
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1110 else
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
1111 fo << line << std::endl;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1112 }
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1113 pclose (fd);
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1114 fo.close ();
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1115 }
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
1116
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1117 for (const auto& f : ccfiles)
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1118 {
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1119 std::string dfile = basename (f, true) + ".d", line;
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1120
21927
6f62bd248919 use wrapper functions for mkoctfile and main
John W. Eaton <jwe@octave.org>
parents: 21852
diff changeset
1121 octave_unlink_wrapper (dfile.c_str ());
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1122
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1123 std::string cmd
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
1124 = (vars["CXX"] + ' ' + vars["DEPEND_FLAGS"] + ' '
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
1125 + vars["CPPFLAGS"] + ' ' + vars["ALL_CXXFLAGS"] + ' '
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
1126 + incflags + ' ' + defs + ' ' + quote_path (f));
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1127
29540
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1128 #if defined (OCTAVE_USE_WINDOWS_API)
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1129 FILE *fd;
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1130 try
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1131 {
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1132 std::wstring wcmd = wchar_conv.from_bytes (cmd);
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1133 fd = ::_wpopen (wcmd.c_str (), L"r");
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1134 }
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1135 catch (const std::range_error& e)
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1136 {
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1137 fd = ::popen (cmd.c_str (), "r");
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1138 }
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1139
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1140 std::ofstream fo;
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1141 try
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1142 {
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1143 std::wstring wfile = wchar_conv.from_bytes (dfile);
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1144 fo.open (wfile.c_str ());
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1145 }
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1146 catch (const std::range_error& e)
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1147 {
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1148 fo.open (dfile.c_str ());
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1149 }
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1150 #else
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1151 FILE *fd = popen (cmd.c_str (), "r");
29006
139df373c107 Use wide character overload to open file streams on Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 28882
diff changeset
1152
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
1153 std::ofstream fo (dfile.c_str ());
29006
139df373c107 Use wide character overload to open file streams on Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents: 28882
diff changeset
1154 #endif
29540
b6f80b1d448f Windows: Support non-ASCII characters in command line arguments.
Markus Mützel <markus.muetzel@gmx.de>
parents: 29359
diff changeset
1155
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29554
diff changeset
1156 std::size_t pos;
20955
77f5591878bf maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents: 20713
diff changeset
1157 while (! feof (fd))
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1158 {
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1159 line = get_line (fd);
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
1160 if ((pos = line.rfind (".o:")) != std::string::npos)
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1161 {
29654
d13d090cb03a use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents: 29554
diff changeset
1162 std::size_t spos = line.rfind ('/', pos);
27277
db687716fed6 style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents: 26853
diff changeset
1163 std::string ofile
db687716fed6 style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents: 26853
diff changeset
1164 = (spos == std::string::npos
db687716fed6 style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents: 26853
diff changeset
1165 ? line.substr (0, pos+2)
db687716fed6 style fixes: generally aim to break long lines before operators, not after
John W. Eaton <jwe@octave.org>
parents: 26853
diff changeset
1166 : line.substr (spos+1, pos-spos+1));
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
1167 fo << "pic/" << ofile << ' ' << ofile << ' '
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
1168 << dfile << line.substr (pos+2) << std::endl;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1169 }
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1170 else
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
1171 fo << line << std::endl;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1172 }
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1173 pclose (fd);
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1174 fo.close ();
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1175 }
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
1176
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1177 return 0;
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1178 }
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
1179
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1180 for (const auto& f : f77files)
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1181 {
20955
77f5591878bf maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents: 20713
diff changeset
1182 if (! vars["F77"].empty ())
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1183 {
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
1184 std::string o;
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1185 if (compile_only)
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1186 {
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1187 if (! outputfile.empty ())
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1188 o = outputfile;
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1189 else
25497
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
1190 o = basename (f, true) + ".o";
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1191 }
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1192 else
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1193 {
25497
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
1194 o = tmp_objfile_name ();
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
1195
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
1196 tmp_objfiles.push_back (o);
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
1197
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1198 objfiles += (' ' + o);
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1199 }
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1200
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1201 std::string cmd
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
1202 = (vars["F77"] + " -c " + vars["FPICFLAG"] + ' '
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
1203 + vars["ALL_FFLAGS"] + ' ' + incflags + ' ' + defs + ' '
30533
022747aca7fe mkoctfile.in.cc: Quote file names in Fortran compiler command.
Gene Harvey <gharveymn@gmail.com>
parents: 30398
diff changeset
1204 + pass_on_options + ' ' + quote_path (f)
022747aca7fe mkoctfile.in.cc: Quote file names in Fortran compiler command.
Gene Harvey <gharveymn@gmail.com>
parents: 30398
diff changeset
1205 + " -o " + quote_path (o));
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1206
28963
f29e4791a792 mkoctfile: eliminate global debug variable
John W. Eaton <jwe@octave.org>
parents: 28883
diff changeset
1207 int status = run_command (cmd, verbose, printonly);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1208
25510
2710440ea566 mkoctfile: fix logic error with handling of -c option (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25507
diff changeset
1209 if (status)
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1210 return status;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1211 }
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1212 else
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1213 {
18796
dd57ca9ef7e4 Add missing newline to error message from mkoctfile.
Rik <rik@octave.org>
parents: 18364
diff changeset
1214 std::cerr << "mkoctfile: no way to compile Fortran file " << f
dd57ca9ef7e4 Add missing newline to error message from mkoctfile.
Rik <rik@octave.org>
parents: 18364
diff changeset
1215 << std::endl;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1216 return 1;
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1217 }
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1218 }
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
1219
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1220 for (const auto& f : cfiles)
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1221 {
20955
77f5591878bf maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents: 20713
diff changeset
1222 if (! vars["CC"].empty ())
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1223 {
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1224 std::string o;
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1225 if (compile_only)
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1226 {
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1227 if (! outputfile.empty ())
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1228 o = outputfile;
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1229 else
25497
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
1230 o = basename (f, true) + ".o";
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1231 }
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1232 else
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1233 {
25497
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
1234 o = tmp_objfile_name ();
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
1235
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
1236 tmp_objfiles.push_back (o);
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
1237
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1238 objfiles += (' ' + o);
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1239 }
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1240
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1241 std::string cmd
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
1242 = (vars["CC"] + " -c " + vars["CPPFLAGS"] + ' '
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
1243 + vars["CPICFLAG"] + ' ' + vars["ALL_CFLAGS"] + ' '
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
1244 + pass_on_options + ' ' + incflags + ' ' + defs + ' '
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1245 + quote_path (f) + " -o " + quote_path (o));
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1246
28963
f29e4791a792 mkoctfile: eliminate global debug variable
John W. Eaton <jwe@octave.org>
parents: 28883
diff changeset
1247 int status = run_command (cmd, verbose, printonly);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1248
25510
2710440ea566 mkoctfile: fix logic error with handling of -c option (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25507
diff changeset
1249 if (status)
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1250 return status;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1251 }
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1252 else
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1253 {
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
1254 std::cerr << "mkoctfile: no way to compile C file " << f
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
1255 << std::endl;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1256 return 1;
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1257 }
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1258 }
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1259
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1260 for (const auto& f : ccfiles)
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1261 {
20955
77f5591878bf maint: Use '! expr' rather than '!expr' to conform to coding guidelines.
Rik <rik@octave.org>
parents: 20713
diff changeset
1262 if (! vars["CXX"].empty ())
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1263 {
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1264 std::string o;
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1265 if (compile_only)
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1266 {
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1267 if (! outputfile.empty ())
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1268 o = outputfile;
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1269 else
25497
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
1270 o = basename (f, true) + ".o";
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1271 }
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1272 else
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1273 {
25497
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
1274 o = tmp_objfile_name ();
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
1275
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
1276 tmp_objfiles.push_back (o);
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
1277
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1278 objfiles += (' ' + o);
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1279 }
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1280
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1281 std::string cmd
23807
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
1282 = (vars["CXX"] + " -c " + vars["CPPFLAGS"] + ' '
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
1283 + vars["CXXPICFLAG"] + ' ' + vars["ALL_CXXFLAGS"] + ' '
336f89b6208b Use character literals 'c' rather than string literals "c" when possible.
Rik <rik@octave.org>
parents: 23804
diff changeset
1284 + pass_on_options + ' ' + incflags + ' ' + defs + ' '
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1285 + quote_path (f) + " -o " + quote_path (o));
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1286
28963
f29e4791a792 mkoctfile: eliminate global debug variable
John W. Eaton <jwe@octave.org>
parents: 28883
diff changeset
1287 int status = run_command (cmd, verbose, printonly);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1288
25510
2710440ea566 mkoctfile: fix logic error with handling of -c option (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25507
diff changeset
1289 if (status)
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1290 return status;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1291 }
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1292 else
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1293 {
18364
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
1294 std::cerr << "mkoctfile: no way to compile C++ file " << f
2e62b1f01bfe * mkoctfile.in.cc: Use std:: instead of using declarartion.
John W. Eaton <jwe@octave.org>
parents: 18363
diff changeset
1295 << std::endl;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1296 return 1;
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1297 }
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1298 }
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
1299
26422
26be3dc2900f Use LDFLAGS for mkoctfile linker flags (bug #48678).
Rik <rik@octave.org>
parents: 26376
diff changeset
1300 // If we are only compiling, we are done.
25511
49d3c6344afe mkoctfile: fix one more logic error
John W. Eaton <jwe@octave.org>
parents: 25510
diff changeset
1301
49d3c6344afe mkoctfile: fix one more logic error
John W. Eaton <jwe@octave.org>
parents: 25510
diff changeset
1302 if (compile_only)
49d3c6344afe mkoctfile: fix one more logic error
John W. Eaton <jwe@octave.org>
parents: 25510
diff changeset
1303 return 0;
49d3c6344afe mkoctfile: fix one more logic error
John W. Eaton <jwe@octave.org>
parents: 25510
diff changeset
1304
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1305 if (objfiles.empty ())
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1306 {
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1307 std::cerr << "mkoctfile: no objects to link" << std::endl;
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1308 return 1;
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1309 }
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1310
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1311 std::string octave_libs;
25475
245de4f12ca3 link .oct files with liboctave and libinterp on Windows systems (bug #53627)
John W. Eaton <jwe@octave.org>
parents: 25447
diff changeset
1312
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1313 if (link_stand_alone)
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1314 {
27425
633f7a8347c8 Clean up implementation of CXXLD in build scripts (bug #56505).
Rik <rik@octave.org>
parents: 27277
diff changeset
1315 if (! vars["CXXLD"].empty ())
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1316 {
26612
ab5cc8da283c mkoctfile: restore LDFLAGS, warn only when LFLAGS used directly (bug #55447)
Mike Miller <mtmiller@octave.org>
parents: 26487
diff changeset
1317 octave_libs = "-L" + quote_path (vars["OCTLIBDIR"])
27934
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
1318 + ' ' + vars["OCTAVE_LIBS"];
26431
ff6c90eb6f2d mkoctfile.in.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26422
diff changeset
1319
30386
fc9b98382ea7 mkoctfile: Add command line `-l` flags before LDFLAGS in linker command (bug #61571).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30368
diff changeset
1320 // FIXME: Remove LFLAGS in Octave 9
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1321 std::string cmd
27425
633f7a8347c8 Clean up implementation of CXXLD in build scripts (bug #56505).
Rik <rik@octave.org>
parents: 27277
diff changeset
1322 = (vars["CXXLD"] + ' ' + vars["CPPFLAGS"] + ' '
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1323 + vars["ALL_CXXFLAGS"] + ' ' + vars["RDYNAMIC_FLAG"] + ' '
28833
27df9b38391d mkoctfile.in.cc: Pass linker flags last (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28129
diff changeset
1324 + pass_on_options + ' ' + output_option + ' ' + objfiles + ' '
30386
fc9b98382ea7 mkoctfile: Add command line `-l` flags before LDFLAGS in linker command (bug #61571).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30368
diff changeset
1325 + libfiles + ' ' + ldflags + ' ' + vars["ALL_LDFLAGS"] + ' '
28833
27df9b38391d mkoctfile.in.cc: Pass linker flags last (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28129
diff changeset
1326 + vars["LFLAGS"] + ' ' + octave_libs + ' '
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1327 + vars["OCTAVE_LINK_OPTS"] + ' ' + vars["OCTAVE_LINK_DEPS"]);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1328
28963
f29e4791a792 mkoctfile: eliminate global debug variable
John W. Eaton <jwe@octave.org>
parents: 28883
diff changeset
1329 int status = run_command (cmd, verbose, printonly);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1330
25497
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
1331 clean_up_tmp_files (tmp_objfiles);
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
1332
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1333 if (status)
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1334 return status;
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1335 }
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1336 else
12174
db1f49eaba6b whitespace fixes
John W. Eaton <jwe@octave.org>
parents: 11561
diff changeset
1337 {
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1338 std::cerr
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1339 << "mkoctfile: no way to link stand-alone executable file"
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1340 << std::endl;
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1341 return 1;
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1342 }
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1343 }
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1344 else
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1345 {
26431
ff6c90eb6f2d mkoctfile.in.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26422
diff changeset
1346 #if defined (OCTAVE_USE_WINDOWS_API) || defined(CROSS)
26612
ab5cc8da283c mkoctfile: restore LDFLAGS, warn only when LFLAGS used directly (bug #55447)
Mike Miller <mtmiller@octave.org>
parents: 26487
diff changeset
1347 octave_libs = "-L" + quote_path (vars["OCTLIBDIR"])
27934
49a0d90cd2a3 maint: Use Octave coding conventions in src/ directory.
Rik <rik@octave.org>
parents: 27923
diff changeset
1348 + ' ' + vars["OCTAVE_LIBS"];
26431
ff6c90eb6f2d mkoctfile.in.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26422
diff changeset
1349 #endif
ff6c90eb6f2d mkoctfile.in.cc: Fix static analyzer detected issues (bug #55347).
Rik <rik@octave.org>
parents: 26422
diff changeset
1350
30386
fc9b98382ea7 mkoctfile: Add command line `-l` flags before LDFLAGS in linker command (bug #61571).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30368
diff changeset
1351 // FIXME: Remove LFLAGS in Octave 9
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1352 std::string cmd
27425
633f7a8347c8 Clean up implementation of CXXLD in build scripts (bug #56505).
Rik <rik@octave.org>
parents: 27277
diff changeset
1353 = (vars["CXXLD"] + ' ' + vars["ALL_CXXFLAGS"] + ' '
28833
27df9b38391d mkoctfile.in.cc: Pass linker flags last (bug #59173).
Markus Mützel <markus.muetzel@gmx.de>
parents: 28129
diff changeset
1354 + pass_on_options + " -o " + octfile + ' ' + objfiles + ' '
30386
fc9b98382ea7 mkoctfile: Add command line `-l` flags before LDFLAGS in linker command (bug #61571).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30368
diff changeset
1355 + libfiles + ' ' + ldflags + ' ' + vars["DL_LDFLAGS"] + ' '
fc9b98382ea7 mkoctfile: Add command line `-l` flags before LDFLAGS in linker command (bug #61571).
Markus Mützel <markus.muetzel@gmx.de>
parents: 30368
diff changeset
1356 + vars["LDFLAGS"] + ' ' + vars["LFLAGS"] + ' ' + octave_libs + ' '
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1357 + vars["OCT_LINK_OPTS"] + ' ' + vars["OCT_LINK_DEPS"]);
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1358
28048
42921bff241a Fix mkoctfile on Windows platforms when compiling Fortran sources (bug #49548).
Mike Miller <mtmiller@octave.org>
parents: 27934
diff changeset
1359 #if defined (OCTAVE_USE_WINDOWS_API) || defined(CROSS)
42921bff241a Fix mkoctfile on Windows platforms when compiling Fortran sources (bug #49548).
Mike Miller <mtmiller@octave.org>
parents: 27934
diff changeset
1360 if (! f77files.empty () && ! vars["FLIBS"].empty ())
42921bff241a Fix mkoctfile on Windows platforms when compiling Fortran sources (bug #49548).
Mike Miller <mtmiller@octave.org>
parents: 27934
diff changeset
1361 cmd += ' ' + vars["FLIBS"];
42921bff241a Fix mkoctfile on Windows platforms when compiling Fortran sources (bug #49548).
Mike Miller <mtmiller@octave.org>
parents: 27934
diff changeset
1362 #endif
42921bff241a Fix mkoctfile on Windows platforms when compiling Fortran sources (bug #49548).
Mike Miller <mtmiller@octave.org>
parents: 27934
diff changeset
1363
28963
f29e4791a792 mkoctfile: eliminate global debug variable
John W. Eaton <jwe@octave.org>
parents: 28883
diff changeset
1364 int status = run_command (cmd, verbose, printonly);
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1365
25497
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
1366 clean_up_tmp_files (tmp_objfiles);
18f5f91f7348 mkoctfile: use tmp store tmp .o files in tmp directory (bug #54182)
John W. Eaton <jwe@octave.org>
parents: 25495
diff changeset
1367
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1368 if (status)
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1369 return status;
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1370 }
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1371
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1372 if (strip)
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1373 {
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1374 std::string cmd = "strip " + octfile;
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1375
28963
f29e4791a792 mkoctfile: eliminate global debug variable
John W. Eaton <jwe@octave.org>
parents: 28883
diff changeset
1376 int status = run_command (cmd, verbose, printonly);
25494
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1377
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1378 if (status)
f35bd5cddedd mkoctfile: disallow -c and -o with multiple source files
John W. Eaton <jwe@octave.org>
parents: 25491
diff changeset
1379 return status;
8092
6a292b0fa88c mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: style fixes
John W. Eaton <jwe@octave.org>
parents: 8091
diff changeset
1380 }
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
1381
22866
b5cf18f8c18b style fixes for mkoctfile.cc
John W. Eaton <jwe@octave.org>
parents: 22755
diff changeset
1382 return 0;
8091
4e7527a7b3f9 mkoctfile.cc.in, octave-config.cc.in, octave-bug.cc.in: new files
Michael Goffioul
parents:
diff changeset
1383 }