e2stusio

asmファイルのみで構成されるプロジェクトをe2studioでビルド

かふぇルネに投稿しました。

本件はRL78のタイマサンプルプロジェクト(an_r01an1052jj0200_rl78_timer:asmファイルのみでソースが構成されている)をe2studioでビルドした場合、V2.2とV3.0で挙動が異なるというものでした(V2.2ではビルドできるのに、V3.0ではプロジェクトを構成するファイルが無いと言われビルドできない)。

V3.0でもダミーのCファイルをソースに加えるとビルドが行えるというもの特徴です。

使用しているツールチェインはKPITのRL78用Cコンパイラ13.02であり、e2studioのバージョンに依存しません。また、インポート元のプロジェクトも共通であるためビルド条件も除外されます。となると、考えられるのは上位のCDTバージョンによるものなのか、makeファイルビルドに問題があるか…です。

まずはCDT(c/c++ development tooling)からチェックしました。e2studio V2.2に採用されているCDTは8.2.1、一方e2studio V3.0に採用されているのはCDTは8.3.0です。CDT8.3.0のリリースノートを見ましたがバグフィックスこそあれ、ビルド条件に関する項目は見つけられませんでした(英語表記なので完全によめているわけではありません)。

とりあえずで対策が打てるのはビルド(make)関連ファイルの生成についてです。調べたところ、ビルド条件に「自動Makefileを作成」を含めるとうまくビルドできないことが分かりました。どうやら、自動生成ではasmのみのフォルダをプロジェクトフォルダとして認識してくれないようです。

修正は以下の手順で行います。

<

ol>

  • 「自動Makefileを作成」のチェックを外す
  • プロジェクトのプロパティを開き、ビルドの項目に自動Makefileを作成についてチェックボックスがあるので、こちらを解除します。
    timer2

  • ビルド対象を指定する
  • makefileの自動作成を解除したので正しいビルド対象ファイルを登録する必要があります。面倒な場合は一度自動生成でビルドした後、自動生成を解除して修正します。

    ################################################################################
    # Automatically-generated file. Do not edit!
    ################################################################################
    
    # Add inputs and outputs from these tool invocations to the build variables 
    ASM_SRCS += \
    ..\src/opt.asm \
    ..\src/r_init_multi.asm \
    ..\src/r_main.asm 
    
    OBJS += \
    ./src/opt.o \
    ./src/r_init_multi.o \
    ./src/r_main.o 
    
    ASM_DEPS += \
    ./src/opt.d \
    ./src/r_init_multi.d \
    ./src/r_main.d 
    
    # Each subdirectory must supply rules for building sources it contributes
    src/%.o: ../src/%.asm
        @echo 'Scanning and building file: $<'
        @echo 'Invoking: Scanner and Compiler'
        @rl78-elf-gcc -MM -MP -MF ""$(@:%.o=%.d)"" -MT"$(@:%.o=%.o)" -MT""$(@:%.o=%.d)"" @"src/asm.depsub" -o"$@" "$<"
        @echo   rl78-elf-gcc -MM -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -MT"$(@:%.o=%.d)"  -nostdinc -I"D:\Renesas\E2_STU~1\GNURL7~1.02-\rl78-ELF/rl78-elf/optlibinc" -g2 -g -Wa,-gdwarf2 -x assembler-with-cpp -o"$@" "$<"
        @rl78-elf-gcc @"src/asm.sub" -c -x assembler-with-cpp  -o "$(@:%.d=%.o)" "$<"
        @echo rl78-elf-gcc -Wa,-adlhn="$(basename $(notdir $<)).lst" -nostdinc -I"D:\Renesas\E2_STU~1\GNURL7~1.02-\rl78-ELF/rl78-elf/optlibinc" -g2 -g -Wa,-gdwarf2 -c -x assembler-with-cpp  -o "$(@:%.d=%.o)" "$<"
        @echo 'Finished scanning and building: $<'
        @echo.
    
    INPUT ("./src/opt.o")
    INPUT ("./src/r_init_multi.o")
    INPUT ("./src/r_main.o")

    <

    pre class=”nums:false lang:default decode:true title=”asm.sub” > -Wa,-adlhn=”opt.lst” -nostdinc -I”D:\Renesas\E2_STU~1\GNURL7~1.02-\rl78-ELF/rl78-elf/optlibinc” -g2 -g -Wa,-gdwarf2

      -nostdinc -I"D:\\Renesas\\E2_STU~1\\GNURL7~1.02-\\rl78-ELF/rl78-elf/optlibinc" -g2 -g -Wa,-gdwarf2 -x assembler-with-cpp 

    (※makefileに修正を加えていません)

    以上のことを処理した後、Makefileの自動生成を解除してビルドすると下記のようになりました。
    timer4

    以後、ファイルを追加・削除した場合は手動でプロジェクトファイルの設定が必要となります。
    そもそも、どうしてasmファイルだけだと認識されないのか?という疑問は解消できていません。

    スタッフさんが「拡張子をasmからsに変更するとプロジェクトファイルとして認識する」とコメントされました。結構重要な事項なので、こういった情報はリリースノートにあると嬉しいですね。

    ABOUT ME
    Nozomu.Kon
    トータルソフトウェアコーディネーターがあなたのお困りを即時に解決!