  ǤϡMCPP Υ򥳥ѥ뤷Ƽ¹ԥץˡ
ޤܺ٤Ϥ mcpp-porting.html 򸫤Ƥ

1¹ԥץμ

  MCPP μ¹ԥץ build ˡ˱ƲफޤBuild
ˡˤϼΣĤμޤ

    1. stand-alone-build vs subroutine-build
    2. compiler-independent-build vs compiler-specific-build

stand-alone-build: ĤΥޥɤȤñΤưץץåǤ
    ϤΥѥ顦ɥ饤ФƤӽФΤ⤢ޤ
subroutine-build: ¾Υᥤץ椫饵֥롼Ȥơɬפ
    鷫֤˸ƤӽФΤǤ

compiler-independent-build: ϤΩưץץåǤ
    ¹ԻץʤɤλͤϽϤΤˤ餺Ǥץץ
    뤳ȤǤޤϤΰȤư뤳ȤϤǤ
    
     V.2.6, V.2.6.1 Ǥ stand-alone-build ȸƤǤޤV.2.6.
    2  subroutine-build ǤΤȼäơƾΤѹޤ
compiler-specific-build: νϤΥץץåʤ⤷ǽʤ
    ؤ뤿ΤΤǤνϤѤλͤνϤ
    ѤΥǥ쥯ȥ˥󥹥ȡ뤵ޤ

  Subroutine-build ˤĤƤϤǤάޤmcpp-porting.html 3.
12 򸫤ƤʲϤ٤ stand-alone-build ˤĤƤǤ

2configure  make

  MCPP 򥳥ѥ뤹ˤϡUNIX ϤΥƥप CygWIN, MinGW Ǥ
configure ץȤȤȤǤޤconfigure  make ǤդΥǥ
쥯ȥǼ¹ԤǤޤʲǤ mcpp-2.6.4 ǥ쥯ȥΤ
path  ${mcpp-dir} ɽޤ

21compiler-independent-build

    ${mcpp-dir}/configure; make; make install

Ȥȡcompiler-independent Ǥμ¹ԥץबƥ󥹥ȡ
뤵ޤΥɥȤ⥤󥹥ȡ뤵ޤ

    ${mcpp-dir}/configure --prefix=/usr; make; make install

Ȥϡprefix ǻꤵ줿ǥ쥯ȥ bin ǥ쥯ȥ
󥹥ȡ뤵ޤꤷʤ /usr/local ꤷΤƱ
Ȥˤʤޤ
  make install ˤ̾ root ¤ɬפʤΤǡ

    sudo make install

Ȥޤ뤤 su Ƥ configure; make; make install Ȥޤ
ʤFreeBSD Ǥ make ǤϤʤ gmake ȤäƤ
  ¹ԥץ strip ˤϡmake install Τ

    make install-strip

Ȥޤ

    make uninstall

Ȥȡmcpp μ¹ԥץϺޤ

  make (un)install Ǥ DESTDIR=DIR ȤץꤹȡDIR 
Υǥ쥯ȥ˥󥹥ȡ뤵ޤ㤨С

    make DESTDIR=/tmp/mcpp install

Ȥȡ/tmp/mcpp/usr/local/bin/  mcpp 󥹥ȡ뤵ޤ¸
ʤǥ쥯ȥϺ롣configure  --prefix=DIR ץ
ꤷƤ '/usr/local' ʬ 'DIR' ֤ˡХʥꡦѥ
ˤϤˡȤޤ

  GCC 4.1 ʹߤˤ -fstack-protector (-fstack-protector-all) Ȥ
󤬤ޤconfigure ޤ make  CFLAGS+=-fstack-protector
Ȥץꤹ뤳ȤǤͭˤ뤳ȤǤޤ
GCC-specific-build ǤƱͤǤ

  ʤMCPP V.2.6.2 ޤǤ make ˤ install-data, uninstall-data Ȥ
åȤޤV.2.6.3 ѻߤޤ饤󥹥
뤹ϡɥȤȸڥåȤ虜虜̥ǥ쥯ȥ˥ԡ
ɬפϤʤȻפ뤫Ǥcompiler-independent-build 
 make install ǺǾ¤ΥɥȤ󥹥ȡ뤵褦ˤޤ
ϥХʥꡦѥåĤ˹碌ΤǤ

  Linux  CygWIN Ǥϥƥɸإå˷٤Τǡcompiler-
independent-build  mcpp ǤϤкɬפǤˤĤƤ
mcpp-manual.html 3.9.9 򸫤Ƥ

22compiler-specific-build

    ${mcpp-dir}/configure --enable-replace-cpp; make; make install

Ȥȡcompiler-specific Ǥμ¹ԥץबơνϤ
ѤΥǥ쥯ȥ˥󥹥ȡ뤵ޤ
  make install-strip, make uninstall  compiler-independent-build Ʊ
Ǥconfigure  --prefix ץƱǤϼ¹ԥץ
Υ󥹥ȡǥ쥯ȥˤϴطޤ󡣤ޤmake Ǥ DESTDIR 
ץ⡢¹ԥץΥ󥹥ȡˤϴطޤ

  GCC ʳνϤǤ˰ܿȤԤconfigure Ǥˤ
ĤΥץꤷʤȡŬڤʥѥȥ󥹥ȡ뤬ޤ


221Ϥ GCC ξ

2211make install
  --enable-replace-cpp ץ configure 硢make install 
ϥѥ֤ǥ쥯ȥ/usr/libexec, /usr/lib/gcc-lib/i686-
pc-linux-gnu/VERSION ˤ˼¹ԥץब󥹥ȡ뤵ޤ
gcc θƤӽФ cpp0 (cc1) ֤Ƥǥ쥯ȥǤmake install
 GCC / cpp0 (cc1) ¸ǡgcc, g++  mcpp ƤӽФ
Ŭڤ򤷤ޤ GCC  V.2.* Ǥ뤫 V.3.*, 4.* Ǥ
뤫ˤäưäƤޤmcpp-manual.html 3.9.5, 3.9.7 򻲾ȤΤȡˡ

2212make check
  MCPP θڥåȤˤ GCC  testsuite б edition ޤ
GCC / testsuite 󥹥ȡ뤵Ƥϡmake check ˤäƤ
testsuite ǸڥåȤ mcpp  Standard ⡼ɤΥƥȤ򤹤뤳ȤǤ
ޤTestsuite ǸڥåȤ GCC / testsuite ΰȤƻȤ褦ˤ
äƤΤǡ餫 GCC / testsuite 󥹥ȡ뤵¹ԤǤ
֤ˤʤäƤ뤳ȤɬפǤGCC / testsuite ̾ GCC Υΰ
ȤʤäƤޤ̤ΥѥåȤʤäƤ⤢ˡ
  ޤconfigure  GCC / testsuite ֤Ƥǥ쥯ȥ
ꤷƤɬפޤΤˤϼΤ褦ˤޤ

    ${mcpp-dir}/configure --with-gcc-testsuite-dir=DIR  \
            --enable-replace-cpp

 'DIR'  GCC Υ֤Ƥǥ쥯ȥ ${gcc-source} 
ȡ

    ${gcc-source}/gcc/testsuite

ȤʤϤǤ
   configure Ƥơmake; make install 

    make check

ȤȡڥåȤ testsuite Ǥ GCC / testsuite ˥ԡ졢
GCC  V.2.* Ǥ뤫Ȥ V.3.*, 4.* Ǥ뤫˱ɬפ꤬
졢 testsuite ¹Ԥޤ̾ΥեȥǤ make install
 make check ޤMCPP ξϽդˤʤޤgcc 
mcpp ƤӽФ褦ˤƤʤ testsuite  mcpp ŬѤǤʤ
ǤޤΤ --enable-replace-cpp ץɬפǤ
  Testsuite ǸڥåȤ MCPP ǤʤGCC V.2.95 ʹߤ cpp0 (cc1)
ˤŬѤ뤳ȤǤޤcpp-test.html 3.2.3 ȡˡ

2213make uninstall
  make uninstall ȤȡMCPP μ¹ԥץϺޤgcc,
cpp0 (cc1) Ͻ֤ޤmake install 줿
mcpp_g*.h ȤեޤΤĤ make install 
 configure Ƽ¹Ԥϡ make uninstall ʤФ
ޤConfigure Ĵ٤ʤΤ GCC Ǥ MCPP ǤϤʤǤ
  GCC / testsuite ˸ڥåȤ󥹥ȡ뤵ƤС
make uninstall ǺޤGCC ˸ڥåȤŬѤˤϡưǸ
ڥåȤ򥳥ԡƤ
  GCC-specific-build  configure 줿ܤ Makefile  MCPP
 uninstall ȤɬפʤΤǡΤޤ޻ĤƤƤmake
distclean ϡ make uninstall ¹ԤƤư
uninstall ΤϾ֤뤫Ǥ

222Ϥ GCC Ǥʤ

  Ϥ GCC Ǥʤ configure ǤĤΥץꤷʤ
Фʤޤ󡣤ޤνϤΥץץåִǤ褦ˡ
ɤ­ְܿ׺ȤɬפǤԼȤ Linux, FreeBSD,
CygWIN  GCC ȤäƤΤǰܿǤꡢconfigure Ǿ
뤳ȤǤΤǤUNIX ϥƥ¾νϤˤĤƤΤʤ
ΤǡܿϤ configure ǲɤĴ٤ɤΤ狼ʤ
Ǥ
  UNIX ϥƥ GCC ʳνϤǤϡΤ褦ʼǥѥ
Ƥ

2221ץꤷ configure
  ޤĤΥץꤷ configure Ƥߤޤ㤨м
褦ˤޤ

    ${mcpp-dir}/configure --enable-replace-cpp --bindir=DIR \
            --with-cxx-include-dir=CXXDIR   \
            --enable-SYSTEM-STD-macro=_MACRO=val

  --bindir ǻꤹΤϡѥɥ饤ФƤӽФץץ
å֤ǥ쥯ȥǤ C++ ͭΥ󥯥롼ɥǥ쥯
 --with-cxx-include-dir ǡޤϸͭλޥ
--enable-SYSTEM-STD-macro ¾Υץǻꤷޤ

    ${mcpp-dir}/configure --help

Ȥȥץɽޤ
   make; make install ơ˥ѥɥ饤Ф mcpp 
ӽФ褦˺ٹ򤷤ޤˡˤĤƤϡGCC Ǥˡ򻲹
ˤƤ

2222ְܿ׺
  ϤΥץץå MCPP ֤ƻȤˤϡɤ
­ְܿ׺ȤɬפǤϸͭμ¹Իץ #pragma
μǤǤ⤷ФлȤ¹Իץ MCPP Ȱۤʤ
С¡μɬפǤΤˤϡconfiged.H ǤΥ
ѥɽޥǡsystem.c ˥ɤ񤭲äޤ
mcpp-porting.html ΤȤ 4.2 򻲾ȡˡ

2223ץɲä configure ʤ
  ΰܿǤ顢--with-compiler-name=COMPILER Ȥץ
ɲä configure ľޤCOMPILER  configed.H Υ
ѥɽޥǤ
  make; make install Ǥ顢 make clean; make ȤȡMCPP
Ȥä MCPP Υꥳѥ뤬Ԥޤ줬̤С¤ΰܿϤ
Ƥޤ

223configure 

  compiler-specific-build  MCPP ΥѥǤϥåȽϡMCPP
ץץåȤƻȤͽνϡˤλͤܤΤɬפޤ
Ʊˡѥ뤹ϤˤĤƤ̤¦̤λͤΤɬפޤ
MCPP ΥϤξԤνϤäƤƤ⤫ޤʤ褦ˡξԤ
ʬƥإåե (configed.H) 񤤤Ƥޤ
configure ǤϤξԤƱĴ٤뤳ȤǤޤ󡣤Τᡢ
ȤȤϤȥѥ뤹ϤƱǤȤĴ򤷤ޤ
  ⤷ξԤνϤ㤦ϡconfiged.H  Part 2 Խ뤳
ɬפǤ
  MCPP  configure Ʊͤ˥ѥˤбƤޤ󡣤ޤ
ѥǤϼ¹ԤǤʤƥȤ⤤ĤޤޤƤޤ
ѥǤϤξϥǥեͤ򥻥åȤޤޤ椫ʤ⤷
ޤ󡣤ɤˤƤԼȤϥѥȤäиʤΤǡ
褯狼ޤ

3Windows νϤǤ make

  Windows νϤ CygWIN, MinGW ʳ configure оݤˤʤʤ
ǡ make 뤳ȤɬפǤǤ˰ܿߤνϤˤ
ƤϺʬեѰդƤΤǡȤäƥѥå򤢤Ƥ뤳Ȥ
ޤʬեȤμʲޤ
  ޤconfigure оݤˤʤϤǤ⡢إåե makefile ľ
ܡԽ뤳ȤǤΤޤ򤹤뤳ȤǤޤ

31ѥå򤢤Ƥ
  noconfig Ȥǥ쥯ȥ˳ƼѤκʬե makefile 
ѰդƤޤMCPP ΥϥǥեȤǤ FreeBSD / GCC 3.4 Ѥ
ˤʤäƤޤʬեϤ̤νѤ˽ΤǤ
Makefile ϳƽϤ° make Ȥ褦˽񤫤Ƥޤ
  src ǥ쥯ȥäƼΤ褦ˤޤʲκȤϤ٤ src ǥ
쥯ȥǹԤޤ

    patch -c < ..\noconfig\which-compiler.dif
    copy ..\noconfig\which-compiler.mak Makefile

  patch  UNIX ϥƥΥޥɤǤWindows ˤܿƤ
ǡȤޤ󡢺ʬե򸫤ơǥǽƤ⤫
ޤޤ

32ɬפʤ餵 noconfig.H, Makefile 
  ʬեǤϳƼǥ쥯ȥ꤬ɮԤδĶ򸵤ˤƤΤǡ
ʬδĶ˹碌ƽޤ
  ȤϤʬեΤΤȤϥС󤬰äƤϡإå
ե noconfig.H ˤ˽äޤnoconfig.H ΤΤ
mcpp-porting.html 3.1 򻲾ȡˡ̾Ȥ multi-byte character ܸ
ϤʤƱͤˡnocongig.H  MBCHAR Ȥޥ񤭴

  ޤ¹ԥץ򥤥󥹥ȡ뤹ǥ쥯ȥ Makefile 
BINDIR Ȥѿ˽񤭤ޤVisual C Ѥ Makefile ǤϼιԤ # 
ơinstall åȤͭˤƤ

    #install :

33compiler-independent-build
    make  make install ȡcompiler-independent Ǥμ¹ԥ
बƥ󥹥ȡ뤵ޤVisual C++ Ǥ make ǤϤʤ
nmake Ȥˡ

34compiler-specific-build
  compiler-specific Ǥ뤿ˤϡޤ Makefile  BINDIR 򤽤
Ϥμ¹ԥץ֤Ƥǥ쥯ȥ˽񤭴ޤơ
noconfig.H μιԤ 'INDEPENDENT' 򤽤Υѥɽޥ˽񤭴
ơ'make'  'make install' ޤ

    #define COMPILER    INDEPENDENT

'COMPILER'  make ΥץǾ񤭤뤳ȤǤΤǡnoconfig.H
ɬ񤭴ɬפϤޤ㤨СVisual C Ǥ 'nmake
COMPILER=MSC' Ȥ 'nmake COMPILER=MSC install' ޤBorland C Ǥ
'make -DCOMPILER=BORLANDC' Ȥ 'make -DCOMPILER=BORLANDC install' 
ޤ

  ⤷åȽϤȥѥ뤹ϤȤäƤϡ
noconfig.H / Part 1 򥿡åȽϤλͤ˹碌Part 2 򥳥ѥ
뤹Ϥλͤ˹碌ޤMakefile ϥѥ뤹ѤΤ
Ȥ󥹥ȡ뤹ǥ쥯ȥ򥿡åȽѤѹޤ

  Windows νϤ¿ϥץץåѥΤȰΤ
ʤäƤΤǡMCPP 򥤥󥹥ȡ뤷Ƥץץåִ뤳Ȥ
Ǥޤ󡣤Ϥ MCPP ȤˤϡΤ褦 makefile 
ɬפޤnoconfig ǥ쥯ȥγ makefile ˤϡMCPP Ȥ
 MCPP ꥳѥ뤹꤬񤤤ƤΤǡ򻲹ͤˤƤ
  Visual C++ ǤϤ makefile ȤäơIDE ǡ֥ᥤեץ
ȡפȡIDE Υ٥ǥХåεǽ٤ƻȤ
mcpp-manual.html 2.10 ȡˡ

35ƥ
  Windows Ǥ MinGW / GCC-specific-build  CygWIN ʳǤ include
directory ꤵʤΤǡINCLUDE ȤĶѿꤷޤɬפ
 CPLUS_INCLUDE ˡ
  Windows Ǥ GCC / testsuite ϻȤʤΤǡtest-t, test-c, test-l 
쥯ȥˤƥѥץľܡץץƳΤޤtool
/cpp_test.c ȤȡΥƥȤǤưŪ˼¹ԤǤޤcpp-
test.html 3.2.2 ȡˡ
  compiler-specific-build ǤϡMCPP ȤץץåȤƻȤäơ
MCPP  "pre-preprocess" ȤǽȤä MCPP ꥳѥ뤷Ƥߤ
ȡνϤǤȤꤢȤ褦ˤʤäɤΤ뤳ȤǤ
ޤmcpp-porting.html 3.7 ȡˡ

4ܿΤξ򤪴󤻤

  MCPP ޤܿƤʤϤ˰ܿ뤿ˤϡ¿ξɬפ
ߤʤξԤƤޤ
  GCC ʳνϤˤĤ configure Υץǻꤹͤ狼
Τ϶Ƥconfigure.ac ˼Ǥ椭Ȼפޤ

5ָڥåȡפȤ

  MCPP ˤϡָڥåȡפȤΤ°Ƥޤ C/C++ ץ
åˤĤ 265 ܤˤ錄ŰŪʥƥȤɾ򤹤ΤǤ
MCPP ǤʤǤդΥץץåŬѤ뤳ȤǤޤλȤ
ˤĤƤϡcpp-test.html 3.1, 3.2 򻲾ȤƤ

2007/05
                                         桡 <kmatsui@t3.rim.or.jp>

