Alessandro Bonazzi
e075990ed3
Files correlati : Commento : Aggiunto il preprocessore c++ mcpp per sostituire il compilatore nella compilazione delle maschere.
542 lines
24 KiB
Plaintext
542 lines
24 KiB
Plaintext
This file explains how to generate executables by compiling the MCPP
|
|
source. For further details, please refer to mcpp-porting.html.
|
|
|
|
1. Types of MCPP executables
|
|
|
|
There are several types of MCPP executable corresponding to its building
|
|
methods. The building methods of MCPP have following two axis:
|
|
|
|
1. stand-alone-build vs subroutine-build
|
|
2. compiler-independent-build vs compiler-specific-build
|
|
|
|
stand-alone-build: The preprocessor which is invoked as a command.
|
|
Some of this type is invoked by compiler-driver.
|
|
subroutine-build: The preprocessor to be called as a subroutine
|
|
(repeatedly, if required) from other main program.
|
|
|
|
compiler-independent-build: The preprocessor which behaves on its own
|
|
not depending on any compiler system. The invocation options, for
|
|
example, are the same across the compilers with which MCPP is
|
|
compiled. Although it can preprocess source files, it cannot behave
|
|
as an integrated part of a compiler system.
|
|
compiler-specific-build: The preprocessor to replace (if possible) the
|
|
resident preprocessor of certain compiler system. It has some
|
|
specifications for the compiler system only and is installed into
|
|
the compiler-system-specific directory.
|
|
|
|
This document does not explain subroutine-build. As for it, please
|
|
refer to mcpp-porting.html 3.12. All the explanations below are of
|
|
stand-alone-build.
|
|
|
|
2. Configure and make
|
|
|
|
To compile MCPP, the configure script can be used on UNIX-like systems
|
|
and CygWIN, MinGW. You can do configure and make in any directory. In
|
|
this document ${mcpp-dir} represents the path of 'mcpp-${VERSION}'
|
|
directory. The ${VERSION} represents the version of MCPP such as 2.6.4
|
|
or 2.7.1.
|
|
|
|
The configure script searches for compilers by name of 'cc' ('c++') and
|
|
'gcc' ('g++') according to the path list set in the environment variable
|
|
$PATH. So, if you use compilers named like 'gcc-4.3.0' and 'g++-4.3.0',
|
|
you have to specify them by CC and CXX environment variables, or link
|
|
them to 'gcc' and 'g++', prior to do configure. If you use a pair of
|
|
compilers other than the one first found in the path list, you have to
|
|
change the $PATH such as:
|
|
|
|
export PATH=/my/gcc/bin:$PATH
|
|
|
|
The setting should be kept the same while you do 'configure' and 'make'.
|
|
Do not specify a compiler by CC or CXX variable with any directory part,
|
|
even in an absolute path, when it is not the first one found in the
|
|
$PATH, because $PATH influences everything of configure.
|
|
|
|
2.1. The compiler-independent-build
|
|
|
|
If you type the commands as:
|
|
|
|
${mcpp-dir}/configure; make; make install
|
|
|
|
the compiler-independent executable will be generated and installed by
|
|
name of 'mcpp'. Also a few document files will be installed.
|
|
|
|
${mcpp-dir}/configure --prefix=/usr; make; make install
|
|
|
|
will install the executable into 'bin' directory in the directory
|
|
specified by '--prefix' option. If this option is omitted, the
|
|
directory defaults to '/usr/local'.
|
|
|
|
'make install' usually requires root privilege, and you can do it by:
|
|
|
|
sudo make install
|
|
|
|
or by first 'su', then 'configure; make; make install'.
|
|
On FreeBSD, you'd better to use 'gmake' instead of 'make'.
|
|
To strip the executable, do:
|
|
|
|
make install-strip
|
|
|
|
instead of 'make install'.
|
|
|
|
To uninstall the executable, do:
|
|
|
|
make uninstall
|
|
|
|
If you specify 'DESTDIR=DIR' option with make (un)install, all the files
|
|
will be installed under (or uninstalled from) the 'DIR' directory. For
|
|
example,
|
|
|
|
make DESTDIR=/tmp/mcpp install
|
|
|
|
will install MCPP into '/tmp/mcpp/usr/local/bin/', (Non-existent
|
|
directories will be generated. If '--prefix=DIR' option was specified
|
|
in configure, '/usr/local' part will be replaced by 'DIR'). This option
|
|
is used to make a binary package.
|
|
|
|
GCC 4.1 or later has the option '-fstack-protector' ('-fstack-protector-
|
|
all'). You can enable it by adding "CFLAGS+='-fstack-protector'" option
|
|
to make command. The same can be said on GCC-specific-build. Also, you
|
|
can use "CFLAGS+='-ggdb -O0'" option to debug mcpp by gdb.
|
|
|
|
'make install' of compiler-independent-build installs a few documents as
|
|
well as the executable. This is for the convenience of making a binary
|
|
package.
|
|
|
|
Note that on Linux, Mac OS X, CygWIN and MinGW, the system's standard
|
|
headers have certain defects, and some workarounds are necessary for the
|
|
compiler-independent-build of MCPP. See mcpp-manual.html 3.9.9 for this
|
|
problem.
|
|
|
|
2.2. The compiler-specific-build
|
|
|
|
This line of commands will generate a compiler-specific executable and
|
|
will install it into the compiler-specific directory.
|
|
|
|
${mcpp-dir}/configure --enable-replace-cpp; make; make install
|
|
|
|
'make install', 'make install-strip', 'make uninstall' are the same as
|
|
compiler-independent-build.
|
|
|
|
The prefix directory is automatocally set from the path of GCC: for
|
|
example, '/usr/local' of '/usr/local/bin/gcc'. If you specify --prefix
|
|
option for configure and it conflicts with the GCC path, the --prefix
|
|
option will be ignored. 'DESTDIR' option of make has also no relevance
|
|
to the executable's installation.
|
|
|
|
For the compiler systems other than GCC, however, it may not be compiled
|
|
or installed properly if some porting work has not been done beforehand
|
|
and if some of the options are not specified with configure.
|
|
|
|
2.2.1 When the compiler system is GCC
|
|
|
|
When the compiler system is GCC, the appropriate settings will be set by
|
|
the configure without any options other than '--enable-replace-cpp'.
|
|
After configuring, do 'make'.
|
|
|
|
2.2.1.1. make install
|
|
|
|
After configuring and 'make', the 'make install' command installs MCPP
|
|
into the compiler's directory (e.g. /usr/libexec or /usr/lib/gcc-lib/
|
|
SYSTEM/VERSION). This is the directory where cc1 (cpp0), which is
|
|
called by gcc, is located. 'make install' saves GCC / cc1, cc1plus
|
|
(cpp0) and setups gcc and g++ command appropriately to call MCPP. This
|
|
setting is different depending on GCC being V.2.* or V.3.*-4.*. (Refer
|
|
section 3.9.5 and 3.9.7 of mcpp-manual.html). In addition, it generates
|
|
some GCC-version-dependent header files under 'mcpp-gcc*' directory in
|
|
compiler-specific include directory.
|
|
|
|
2.2.1.2. make check
|
|
|
|
In the MCPP Validation Suite, there is an edition which can be used as
|
|
testsuite of GCC. If GCC / testsuite has been installed, 'make check'
|
|
can test MCPP using the testsuite edition of Validation Suite. Because
|
|
this edition is to be used as a part of GCC / testsuite, the testsuite
|
|
should be installed and ready to execute in advance. GCC / testsuite is
|
|
usually a part of the source code of GCC. (It can be a separate package
|
|
in some cases.) You can use any version of testsuite from GCC V.2.95.*
|
|
to V.4.2.*.
|
|
|
|
Also, 'configure' needs an option to specify the directory where GCC /
|
|
testsuite is located, as:
|
|
|
|
${mcpp-dir}/configure --with-gcc-testsuite-dir=DIR \
|
|
--enable-replace-cpp
|
|
|
|
If the directory where GCC source is located is ${gcc-source}, this
|
|
'DIR' should become:
|
|
|
|
${gcc-source}/gcc/testsuite
|
|
|
|
Configured as above, 'make check' after 'make; make install' copies the
|
|
testsuite edition of Validation Suite into GCC / testsuite, and applies
|
|
required settings according to whether GCC is V.2.* or V.3.*-4.*. When
|
|
the name of the gcc command is not 'gcc', for example 'gcc-4.1.2' or
|
|
'powerpc-apple-darwin9-gcc-4.0.1', 'make check' links 'gcc' to that name
|
|
temporarily, because GCC testsuite expects literal 'gcc' for the name.
|
|
Then, the testsuite will be executed. Usually, 'make check' would be
|
|
run before 'make install' in the normal software, but this order is
|
|
reversed in MCPP. This is because testsuite cannot be applied to MCPP
|
|
unless MCPP is called from gcc. Due to this, the option '--enable-
|
|
replace-cpp' is also required.
|
|
|
|
Depending on the location of ${gcc-source} directory, you should do
|
|
'sudo make check' instead of 'make check'. In this case, make sure that
|
|
gcc is the same between root and the current user.
|
|
|
|
The testsuite edition of Validation Suite can also be applied to cc1,
|
|
cc1plus (cpp0) of GCC V.2.95 and later, not only for MCPP. (Refer cpp-
|
|
test.html 3.2.3).
|
|
|
|
2.2.1.3. make uninstall
|
|
|
|
When you type 'make uninstall', the executables of MCPP will get deleted.
|
|
The header files in mcpp-gcc* directory will be deleted, too. The
|
|
settings of gcc and cc1, cc1plus (cpp0) will be reset to the initial
|
|
state. When the re-execution of configure is required after completing
|
|
'make install' for some reason, 'make uninstall' needs to be done
|
|
beforehand. This is because the configure should check GCC, not MCPP.
|
|
|
|
If you have done 'make check', the 'make uninstall' will also remove the
|
|
testsuite edition of Validation Suite. If you want to use Validation
|
|
Suite for GCC, copy it manually.
|
|
|
|
The Makefiles generated by configure are necessary to do 'make
|
|
uninstall', so you should not remove them. When you do 'make distclean',
|
|
first do 'make uninstall', because it is a little troublesome to
|
|
uninstall GCC-specific-MCPP manually. Also you should do 'make
|
|
uninstall; make distclean' even before updating configure or Makefile.in,
|
|
when you update MCPP.
|
|
|
|
2.2.2. When the compiler system is Apple-GCC on Mac OS X
|
|
|
|
Although Mac OS X is one of the UNIX-like systems, it has some
|
|
peculiarities such as "framework" directories. Its system compiler is a
|
|
GCC with many extensions added by Apple. Moreover, since the appearance
|
|
of Intel-Mac, both of the compiler system for x86 and the compiler
|
|
system for powerpc, one is a native compiler and the other is a cross
|
|
compiler, begun to co-exist in a same machine. And even a so-called
|
|
"universal binary", which is a bundle of binaries for x86 and powerpc,
|
|
hence is able to work on either machine, has become popular. The
|
|
structure of compiler systems is rather complex.
|
|
|
|
To install MCPP for this complex system, the command sequence of 2.2.1
|
|
is not sufficient. Here, I explain the case of Mac OS X / Apple-GCCs
|
|
apart from other UNIX. I am using Mac OS X Leopard on Intel-Mac, so I
|
|
take the examples of the system. If you use Powerpc-Mac, read the
|
|
section below swapping 'i686' and 'powerpc'. On Tiger, read 'darwin9'
|
|
as 'darwin8'.
|
|
|
|
Apple provides GCC 4.0.1, and also provides GCC 3.3 as an addition. I
|
|
explain only GCC 4.0.1, and omit GCC 3.3, because it has not been
|
|
properly compiled at least on Leopard.
|
|
|
|
2.2.2.1. Native compiler versus cross compiler
|
|
|
|
It is simple to compile and install MCPP for a native compiler, i.e. for
|
|
x86 on Intel-Mac. The command sequence in 2.2.1 is sufficient for it.
|
|
|
|
Making of MCPP with a cross compiler, however, is not so easy.
|
|
Generally, the configure script of MCPP does not support cross compiling,
|
|
because it contains a few tests to be compiled and executed. A binary
|
|
for a target environment cannot be run on a build environment usually.
|
|
If we test the build environment instead, the results are not
|
|
necessarily the same with the target.
|
|
|
|
Nevertheless, on Mac OS X, we can exceptionally configure cross-
|
|
compiling for different CPUs in most cases. First, Intel-Mac
|
|
automatically executes a ppc binary with an emulator. Second, if the
|
|
build environment and the target differ only in CPU and its related
|
|
settings, and OS, its version and GCC's version are all the same between
|
|
them, we can substitute most of the tests of the target with that of the
|
|
build.
|
|
|
|
On Intel-Mac, for a compiler-independent-build, you should specify the C
|
|
compiler (the name of compiler driver) and C++ compiler by the
|
|
environment-variables CC and CXX. There are many gccs and g++s in /usr/
|
|
bin of Mac OS X. In Mac OS X Leopard on Intel-Mac, powerpc-apple-
|
|
darwin9-gcc-4.0.1 and powerpc-apple-darwin9-g++-4.0.1 are the C compiler
|
|
and the C++ compiler for powerpc. (Actually, all the gccs and g++s in
|
|
/usr/bin are universal binaries of i386 and ppc.) In addition, you
|
|
should specify the target system by --target option. In this case, you
|
|
should use the compiler's name removing '-gcc-4.0.1', i.e. powerpc-apple-
|
|
darwin9. This is the configure command to make compiler-independent-
|
|
build:
|
|
|
|
${mcpp-dir}/configure --target=powerpc-apple-darwin9 \
|
|
CC=powerpc-apple-darwin9-gcc-4.0.1 \
|
|
CXX=powerpc-apple-darwin9-g++-4.0.1
|
|
|
|
On the other hand, ppc-Mac cannot execute an x86 binary, so you cannot
|
|
make the compiler-independent-build with this method. Instead, you can
|
|
cross-compile it manually, using the difference file and mac_osx.mak.
|
|
See mcpp-porting.html#3.1.4 and #3.11, if needed. You can also make a
|
|
universal binary on ppc-Mac with its native compiler using the configure,
|
|
as explained in the next section.
|
|
|
|
To make a GCC-specific-build, you should specify the C compiler by
|
|
--with-target-cc= option instead of CC and CXX as: (the configure deduce
|
|
the name of C++ compiler from the name of C compiler, replacing 'gcc'
|
|
with 'g++'.)
|
|
|
|
${mcpp-dir}/configure --target=powerpc-apple-darwin9 \
|
|
--with-target-cc=powerpc-apple-darwin9-gcc-4.0.1 \
|
|
--enable-replace-cpp
|
|
|
|
This configuration does not contain any running test of the target, so
|
|
it can be used on ppc-Mac too, changing 'powerpc' with 'i686'.
|
|
|
|
When the version of the default native compiler (gcc and g++) greatly
|
|
differs from that of the cross compiler specified by --with-target-cc=
|
|
option, you should specify a native compiler of a version as close as
|
|
possible to the target by the environment-variables CC and CXX. The
|
|
compiler specified by CC (CXX) is to be used to build MCPP, while the
|
|
compiler specified by --with-target-cc= is the target compiler into
|
|
which MCPP is installed.
|
|
|
|
The cross compiler differs from the native compiler in libexec directory,
|
|
compiler-specific include directory and predefined macros. The
|
|
configure with these options appropriately sets them. These options
|
|
should be used for configure, not for make command.
|
|
|
|
Note that a cross compiler itself runs on a host system, so does a
|
|
compiler-specific-build MCPP installed "to a cross compiler". On the
|
|
other hand, a compiler-independent-build MCPP compiled "with a cross
|
|
compiler" runs on a target system. Also note that both of the GCC-
|
|
specific-build for the native compiler and for the cross compiler are
|
|
compiled by the native compiler, therefore, if you install both, you
|
|
should first install the one for the cross compiler.
|
|
|
|
2.2.2.2. Making a universal binary
|
|
|
|
To make a universal binary, specify the CPUs by -arch options and add
|
|
them to the 'make' command as "CFLAGS+='-arch i386 -arch ppc'". The
|
|
valid CPU types are 'i386', 'x86_64', 'ppc' and 'ppc64'. For example,
|
|
this command generates a bundled binary for 4 CPU types.
|
|
|
|
make CFLAGS+='-arch i386 -arch x86_64 -arch ppc -arch ppc64'
|
|
|
|
The configure needs no special option for universal binary, it needs
|
|
only options for non-universal binary, if any.
|
|
|
|
GCC has '-isysroot DIR' or '--sysroot=DIR' options, which change root of
|
|
system include directories to DIR. These options are not limited to Mac
|
|
OS, but are commonly used on Mac OS to compile a universal binary in
|
|
order to widen compatibility with older version of Mac OS. For example,
|
|
if '-isysroot /Developer/SDKs/MacOSX10.4u.sdk' is specified, /usr/
|
|
include becomes /Developer/SDKs/MacOSX10.4u.sdk/usr/include. This is an
|
|
example to compile a universal binary compatible with Mac OS X 10.4
|
|
(Tiger) on 10.5 (Leopard). When you use this option in making MCPP, you
|
|
should also specify the version of SDK by -mmacosx-version-min= option.
|
|
|
|
Any universal binary of MCPP can be generated with a combination of the
|
|
above configure options and these make options, on either of compiler-
|
|
independent-build or GCC-specific-build, and on either of native
|
|
compiler or cross compiler. This example shows the sequence to generate
|
|
a universal binary of compiler-independent-build compatible with Tiger
|
|
for i386 and ppc. (Actually, you should write the '*' in one line.)
|
|
|
|
${mcpp-dir}/configure
|
|
make CFLAGS+='-isysroot /Developer/SDKs/MacOSX10.4u.sdk \
|
|
-mmacosx-version-min=10.4 -arch i386 -arch ppc'
|
|
sudo make install
|
|
|
|
2.2.3. When the compiler system is not GCC
|
|
|
|
When the compiler system is not GCC, some options need to be specified
|
|
in the configure. Also, to use MCPP replacing the preprocessor of the
|
|
compiler system, the "porting" or adding source code is required. MCPP
|
|
have already been ported to GCC, because the author is using GCC on
|
|
Linux, FreeBSD, Mac OS X, CygWIN and MinGW systems, and so the
|
|
informations can be collected by the configure. However, as he does not
|
|
know any compiler systems on UNIX-like systems other than GCC, he does
|
|
not even know what or how it needs to be checked by the configure, let
|
|
alone the porting.
|
|
|
|
For compiler systems other than GCC on UNIX systems, please compile with
|
|
the following procedures.
|
|
|
|
2.2.3.1. Configure by specifying options
|
|
|
|
First, do configure by specifying some options, for example:
|
|
|
|
${mcpp-dir}/configure --enable-replace-cpp --bindir=DIR \
|
|
--with-cxx-include-dir=CXXDIR \
|
|
--enable-SYSTEM-STD-macro=_MACRO=val
|
|
|
|
Specify the directory where the preprocessor, which is called from the
|
|
compiler-driver, is located with --bindir, specify the C++ specific
|
|
include directory with --with-cxx-include-dir and specify the predefined
|
|
macro of the resident preprocessor with --enable-SYSTEM-STD-macro or
|
|
other options.
|
|
|
|
If you type
|
|
|
|
${mcpp-dir}/configure --help
|
|
|
|
some options will be displayed.
|
|
|
|
Then, after doing 'make; make install', some work for making MCPP
|
|
callable from the compiler driver is required. Please see the setup on
|
|
GCC for how to do this.
|
|
|
|
2.2.3.2. "Porting" work
|
|
|
|
To be able to use the MCPP replacing the preprocessor of the compiler
|
|
system, it is required to do "porting" work by adding source code.
|
|
These are the execution options for the compiler system or the
|
|
implementation of #pragma directives. Especially, when there are some
|
|
execution time options which are used frequently but different from MCPP,
|
|
they at least need to be implemented. In order to do that, define the
|
|
macro to designate the compiler in configed.H, and write some codes in
|
|
system.c. (Refer mcpp-porting.html 4.2).
|
|
|
|
2.2.3.3. Re-configure by adding an option
|
|
|
|
Once porting of source is completed, re-configure by adding the option
|
|
--with-compiler-name=COMPILER. 'COMPILER' is the macro for the compiler
|
|
defined in configed.H.
|
|
|
|
After 'make; make install' is done successfully, do 'make clean; make'
|
|
which recompiles MCPP using the installed MCPP. If it passes, it can be
|
|
said that basic porting has been done successfully.
|
|
|
|
2.2.4. The limitations of the configure
|
|
|
|
In the compilation of compiler-specific-build of MCPP, the
|
|
specifications of the target system (the compiler system which will use
|
|
MCPP as a preprocessor) must be understood in detail. At the same time
|
|
the host system (the compiler system with which MCPP is compiled) need
|
|
to be understood. In case these two are not the same, the source code
|
|
of MCPP is written with the settings of both systems separately in the
|
|
header file (configed.H). However, the configure cannot detect both of
|
|
them at the same time. Therefore, it assumes the target system is the
|
|
same as the host system.
|
|
|
|
If these two systems are not the same, Part 2 of the configed.H needs to
|
|
be modified.
|
|
|
|
Cross-compiling is not supported by the configure of MCPP, either. Some
|
|
tests which cannot be executed by the cross-compiler are included as
|
|
well. In case of cross-compiling, the default values will be set, but
|
|
this may not work.
|
|
|
|
3. 'make' on the Windows compiler systems
|
|
|
|
Since all compiler systems on Windows other than CygWIN and MinGW are
|
|
not subject to the 'configure', they need a bit of modification of the
|
|
source in order to do 'make'. As there are difference files for already
|
|
ported systems, a patch can be applied by using them. The procedure for
|
|
the use of the difference files is explained below.
|
|
|
|
Even the systems subject to the 'configure' can also be controlled in
|
|
detail by editing the makefile and header files directly.
|
|
|
|
3.1. Applying a patch
|
|
|
|
The difference files and makefiles for various compiler systems are
|
|
available in 'noconfig' directory. The source of MCPP is defaulted to
|
|
FreeBSD / GCC 3.4 setting. The difference files are used in order to
|
|
modify this source for the particular compiler systems. The makefile is
|
|
written for using the make command attached to each compiler system.
|
|
|
|
In the 'src' directory, run as below. All of the following process
|
|
should be done within the 'src' directory.
|
|
|
|
patch -c < ..\noconfig\which-compiler.dif
|
|
copy ..\noconfig\which-compiler.mak Makefile
|
|
|
|
'patch' is a UNIX command, but it can be used in Windows as it has been
|
|
ported. Of course, you can directly edit the noconfig.H file referring
|
|
the difference file.
|
|
|
|
3.2. Modifying noconfig.H and Makefile if required
|
|
|
|
The settings of various directories in the difference files are based on
|
|
the environment of the author, hence you have to modify them.
|
|
|
|
If the version of the compiler system is different from that of the
|
|
difference file, modify the header file noconfig.H. (See noconfig.H
|
|
itself and mcpp-porting.html 3.1). Similarly, if the multi-byte
|
|
character for normal use is not Japanese, change the macro definition
|
|
MBCHAR in noconfig.H.
|
|
|
|
Also, define BINDIR in the Makefile to the directory in which MCPP
|
|
executable should be installed. As for the Makefile for Visual C,
|
|
remove '#' of this line and make 'install' target effective.
|
|
|
|
#install :
|
|
|
|
3.3. Compiler-independent-build
|
|
|
|
Now, you can do 'make' and 'make install' successfully for the compiler-
|
|
independent executable. (For Visual C, use 'nmake' instead of 'make').
|
|
|
|
3.4. Compiler-specific-build
|
|
|
|
To make the compiler-specific-build, rewrite BINDIR in the Makefile to
|
|
the directory in which the executables of the compiler system are
|
|
located. Then, rewrite this line in noconfig.H:
|
|
|
|
#define COMPILER INDEPENDENT
|
|
|
|
Replace 'INDEPENDENT' with the macro to designate the compiler. Then do
|
|
'make' and 'make install'. 'COMPILER' can be overwritten also by make
|
|
option, hence the file can be left as it is. For example, in Visual C,
|
|
'nmake COMPLIER=MSC' and 'nmake COMPILER=MSC install' or in Borland C,
|
|
'make -DCOMPILER=BORLANDC' and 'make -DCOMPILER=BORLANDC install'.
|
|
|
|
If the target system and the compiling system are different, noconfig.H
|
|
/ Part 1 should be set to the specifications of the target system and
|
|
Part 2 should be set for the compiling system. The Makefile that should
|
|
be used is the compiling system's one, and modify the installation
|
|
directory to the target system's one.
|
|
|
|
Since most compiler systems on Windows integrate preprocessor into its
|
|
compiler, it is impossible to replace the preprocessor of such a one-
|
|
path compiler with MCPP. To use MCPP, a source program should be first
|
|
preprocessed with MCPP and then the output should be passed to the
|
|
compiler. To use MCPP with a one-path compiler, the procedure should be
|
|
written in makefile. For sample procedures, refer to the makefile's
|
|
settings used to recompile MCPP using MCPP itself.
|
|
|
|
In Visual C++, if you create "makefile project" by IDE using the
|
|
attached makefile, all the functions of IDE, such as source level debug,
|
|
become available. (Refer mcpp-manual.html 2.10)
|
|
|
|
3.5. Test
|
|
|
|
On Windows, any include directory is not preset except MinGW/GCC-
|
|
specific-build and GygWIN, hence you should specify them by the
|
|
environment variable INCLUDE (and CPLUS_INCLUDE, if necessary).
|
|
|
|
GCC / testsuite cannot be used in Windows, MCPP needs to be checked
|
|
directly by preprocessing the test samples in test-t, test-c and test-l
|
|
directories. If you use tool/cpp_test.c, it can test some parts
|
|
automatically. (Refer cpp-test.html 3.2.2).
|
|
|
|
For the compiler-specific-build of MCPP, if you re-compile MCPP with the
|
|
"pre-preprocess" functionality of MCPP, by using MCPP itself as the
|
|
preprocessor of the compiler system, you can check whether it has been
|
|
ported successfully for the compiler system. (Refer mcpp-porting.html 3.
|
|
7)
|
|
|
|
4. Please send me the information for porting.
|
|
|
|
To port to the compiler systems which have not been ported yet, lots of
|
|
information is required. It will be great to hear from many people.
|
|
|
|
Please let me know if you know the values for options of the 'configure',
|
|
for compiler systems other than GCC. I would like to work on configure.
|
|
ac.
|
|
|
|
5. Validation Suite
|
|
|
|
MCPP provides "Validation Suite" which tests and evaluates C/C++
|
|
preprocessor comprehensively. Validation Suite has 265 items and can be
|
|
applied to any preprocessor as well as MCPP. Refer to 3.1 and 3.2 of
|
|
cpp-test.html.
|
|
|
|
November, 2008
|
|
Kiyoshi Matsui <kmatsui@t3.rim.or.jp>
|
|
|