[Lazurite 920J #6] Lazurite IDEのビルドを高速化 その２

Lazurite IDEのフォルダを舐めるように徘徊していたところ、ライブラリファイルを作るコマンドが入っているではありませんか（！）
というわけで、[先回](http://qiita.com/matsujirushi/items/76c1c6e916caebf668a8)は（若干無理矢理感はありましたが）lazurite_mini_2nd.bldを作って、C Compiler(CCU8)とRelocatable Assembler(RASU8)をスルーする手段を取りましたが、今回は（よりスマートな）ライブラリファイルを使う手段で、ビルドを高速化したいと思います。

> 本手順の前に、[先回の手順](http://qiita.com/matsujirushi/items/76c1c6e916caebf668a8)を実施しておく必要はありません。

#ライブラリファイルを作るとは？
複数の.objファイルを、1つのライブラリファイルというものにまとめることです。
詳しくはググるとか、C:\LazuriteIDE\bin\U8Dev\Doc\FJXTMACU8_UM-07.pdfの「8.1.2 LIBU8 を使う利点」を読んでください。

#ビルド時間の短縮方法
##レスポンスファイルを作成
C:\LazuriteIDE\hardware\lazurite_mini\buildフォルダに、lazurite_mini.resファイルを作成します。

```lazurite_mini.res
+ml620504f
+main
+lazurite_system
+flash
+analogio
+print
+digitalio
+serial
+tone
+WInterrupts
+wiring_shift
+WMath
+driver_adc
+driver_extirq
+driver_gpio
+driver_i2c
+driver_irq
+driver_timer
+driver_ftm_timer
+driver_tmout
+driver_uart
+driver_flash
+lp_manage
+wdt
+subghz_api
+bp3596
+ml7396
+hal_lazurite
+ml7396_hwif_hal
+spi0
+wire0
```

##.objファイルを作成
Lazurite IDEでC:\LazuriteIDE\examples\01.Basics\blue_led\blue_led.cを開いて、マイコンボードをLAZURITE mini、オプションをLAZURITE mini seriesにしてからビルドします。
すると、C:\LazuriteIDE\examples\01.Basics\blue_led\objフォルダに.objファイルが作られます。

##.libファイルを作成
コマンドプロンプトで、下記を実行します。

```
set PATH=%PATH%;C:\LazuriteIDE\bin\U8Dev\Bin
cd C:\LazuriteIDE\examples\01.Basics\blue_led\obj
libu8 C:\LazuriteIDE\hardware\lazurite_mini\build\lazurite_mini @C:\LazuriteIDE\hardware\lazurite_mini\build\lazurite_mini.res, C:\LazuriteIDE\hardware\lazurite_mini\build\lazurite_mini
```

すると、C:\LazuriteIDE\hardware\lazurite_mini\buildフォルダに、lazurite_mini.libファイルとlazurite_mini.lstファイルが出来上がります。

##ビルドの設定を作成
C:\LazuriteIDE\hardware\lazurite_mini\buildフォルダに、lazurite_mini_lib.bldファイルを作成します。
> "PRJSRC="と書かれている行を全て削除、最下行に"PRJLIB=hardware\\lazurite_mini\\build\\lazurite_mini.lib"を追加しています。

```lazurite_mini_lib.bld
# Build option file
# INCPATH: file path of include file
# PRJSRC:  Source file
# CMPOPT:  Compile option
# ASMOPT:  ASM option
# PRNDIR:  PRN file output directories
# LNKOPT:  Link options
# PRJLIB:  Project libraries

###### Include Path
INCPATH=hardware\\lazurite_subghz
INCPATH=hardware\\lazurite_subghz\\lazurite
INCPATH=hardware\\lazurite_subghz\\lazurite
INCPATH=hardware\\lazurite_subghz\\ml620q504
INCPATH=hardware\\lazurite_subghz\\ml620q504\\clock
INCPATH=hardware\\lazurite_subghz\\ml620q504\\common
INCPATH=hardware\\lazurite_subghz\\ml620q504\\irq
INCPATH=hardware\\lazurite_subghz\\ml620q504\\lp
INCPATH=hardware\\lazurite_subghz\\ml620q504\\mcu_small
INCPATH=hardware\\lazurite_subghz\\ml620q504\\wdt
INCPATH=hardware\\lazurite_subghz\\SUB_GHZ\\
INCPATH=hardware\\lazurite_subghz\\SUB_GHZ\\CTI\\api
INCPATH=hardware\\lazurite_subghz\\SUB_GHZ\\CTI\\core
INCPATH=hardware\\lazurite_subghz\\SUB_GHZ\\CTI\\hwif
INCPATH=hardware\\lazurite_subghz\\SUB_GHZ\\CTI\\others

###### Compiling source files
#PRJSRC=bin\\U8Dev\\Startup\\Src\\\ml620504f.asm
#PRJSRC=hardware\\lazurite_subghz\\main.c
#PRJSRC=hardware\\lazurite_subghz\\lazurite\\lazurite_system.c
#PRJSRC=hardware\\lazurite_subghz\\lazurite\\flash.c
#PRJSRC=hardware\\lazurite_subghz\\lazurite\\analogio.c
#PRJSRC=hardware\\lazurite_subghz\\lazurite\\print.c
#PRJSRC=hardware\\lazurite_subghz\\lazurite\\digitalio.c
#PRJSRC=hardware\\lazurite_subghz\\lazurite\\serial.c
#PRJSRC=hardware\\lazurite_subghz\\lazurite\\tone.c
#PRJSRC=hardware\\lazurite_subghz\\lazurite\\WInterrupts.c
#PRJSRC=hardware\\lazurite_subghz\\lazurite\\wiring_shift.c
#PRJSRC=hardware\\lazurite_subghz\\lazurite\\WMath.c
#PRJSRC=hardware\\lazurite_subghz\\ml620q504\\driver_adc.c
#PRJSRC=hardware\\lazurite_subghz\\ml620q504\\driver_extirq.c
#PRJSRC=hardware\\lazurite_subghz\\ml620q504\\driver_gpio.c
#PRJSRC=hardware\\lazurite_subghz\\ml620q504\\driver_i2c.c
#PRJSRC=hardware\\lazurite_subghz\\ml620q504\\driver_irq.c
#PRJSRC=hardware\\lazurite_subghz\\ml620q504\\driver_timer.c
#PRJSRC=hardware\\lazurite_subghz\\ml620q504\\driver_ftm_timer.c
#PRJSRC=hardware\\lazurite_subghz\\ml620q504\\driver_tmout.c
#PRJSRC=hardware\\lazurite_subghz\\ml620q504\\driver_uart.c
#PRJSRC=hardware\\lazurite_subghz\\ml620q504\\driver_flash.c
#PRJSRC=hardware\\lazurite_subghz\\ml620q504\\lp\\lp_manage.c
#PRJSRC=hardware\\lazurite_subghz\\ml620q504\\wdt\\wdt.c
#PRJSRC=hardware\\lazurite_subghz\\SUB_GHZ\\subghz_api.c
#PRJSRC=hardware\\lazurite_subghz\\SUB_GHZ\\CTI\\api\\bp3596.c
#PRJSRC=hardware\\lazurite_subghz\\SUB_GHZ\\CTI\\core\\ml7396.c
#PRJSRC=hardware\\lazurite_subghz\\SUB_GHZ\\CTI\\hwif\\hal_lazurite.c
#PRJSRC=hardware\\lazurite_subghz\\SUB_GHZ\\CTI\\hwif\\ml7396_hwif_hal.c
#PRJSRC=hardware\\lazurite_subghz\\SUB_GHZ\\CTI\\hwif\\spi0.c
#PRJSRC=hardware\\lazurite_subghz\\SUB_GHZ\\CTI\\hwif\\wire0.c

###### Compiling option
CMPOPT=/TML620504F
CMPOPT=/MS
CMPOPT=/near
CMPOPT=/SD
CMPOPT=/SL65
CMPOPT=/Ot
CMPOPT=/Oa
CMPOPT=/SS512
CMPOPT=/W3
CMPOPT=/Lv
CMPOPT=/D_ML620Q504
CMPOPT=/DSUBGHZ
CMPOPT=/DLAZURITE_MINI
CMPOPT=/DLAZURITE_IDE
#POWER LED Control for Lazurite Mini
CMPOPT=/DPWR_LED
#LDO power mode control for Lazurite Mini
CMPOPT=/DLDO_CNT

OBJDIR=obj\\

ASMOPT=/MS
ASMOPT=/DN
ASMOPT=/CD
ASMOPT=/SD
ASMOPT=/SL66
ASMOPT=/WRPEAST
ASMOPT=/L
ASMOPT=/S
ASMOPT=/R
ASMOPT=/SF
ASMOPT=/PL60
ASMOPT=/PW79
ASMOPT=/T8
ASMOPT=/NE

PRNDIR=_prn\\

LNKOPT=/STACK(512)
LNKOPT=/D
LNKOPT=/SD
LNKOPT=/S
LNKOPT=/CC

PRJLIB=bin\\u8dev\\Lib\\LU8100SW.lib
PRJLIB=bin\\u8dev\\Lib\\LONGU8.lib
PRJLIB=bin\\u8dev\\Lib\\DOUBLEU8.LIB
PRJLIB=bin\\u8dev\\Lib\\FLOATU8.LIB
PRJLIB=bin\\u8dev\\Lib\\LU8100LW.lib
PRJLIB=bin\\u8dev\\Lib\\muldivu8.lib
PRJLIB=hardware\\lazurite_mini\\build\\lazurite_mini.lib
```

##マイコンボードのオプションを追加
C:\LazuriteIDE\hardware\lazurite_mini.bpfファイルを編集します。
> **LAZURITE mini series(use library)**というオプションを追加するために、ファイルの最後に3行追加しています。

```lazurite_mini.bpf
# MCU BOARD PROJECT FILE
# FILE NAME:  lazurite.pref

MCUBOARD_NAME=LAZURITE mini

MANUFACTURER_NAME=LAPIS
DESCRIPTION_NAME=LAZURITE mini series
CTRL_DRIVER=bin\\lazurite_ft232_ctrl.exe


OPTION_NAME=LAZURITE mini series
OPTION_BUILD=hardware\\lazurite_mini\\build\\lazurite_mini.bld
OPTION_HEADER=hardware\\lazurite_subghz\\lazurite\\lazurite.h

OPTION_NAME=LAZURITE mini series(use library)
OPTION_BUILD=hardware\\lazurite_mini\\build\\lazurite_mini_lib.bld
OPTION_HEADER=hardware\\lazurite_subghz\\lazurite\\lazurite.h
```