e2 studioでCMakeでビルドする、というアプリケーションノートがあるのですがスマートコンフィグレータは使えるのでしょうか?

こんにちは。NoMaYです。

Visual Studio 2022を触っていて、これからVisual Studio上でCC-RX/CC-RL/CC-RHを使うならCMakeを使うのが良いのかな?と思い始めたところ、ルネサスさんから以下のアプリケーションノートが発行されていたことを思い出したので目を通してみたのですが、どうもこれではスマートコンフィグレータどころかコンパイルオプションの設定すらe2 studio上では出来ないのでは?という気がしてきました。実際、どうなのでしょう?御存知の方はいらっしゃいますでしょうか?

アプリケーションノート 統合開発環境 e² studio CMakeプロジェクトを作成してビルドする
R20AN0613JJ0200 Rev.2.00 Pages 10 Jun.30.21
www.renesas.com/jp/ja/document/apn/e-studio-creating-and-executing-build-cmake-project
 
[追記] 2021/12/31 11:00

ひとつ調査漏れに気付きました。こういうアプリケーションノートも出ていたのですね。

アプリケーションノート 統合開発環境 e² studio CMakeを使用してCC-RX用ソース・ファイルをビルドする
R20AN0569JJ0201 Rev.2.01 Pages 12 Sep.15.21

PDF
www.renesas.com/jp/ja/document/apn/integrated-development-environment-e-studio-using-cmake-renesas-cc-rx-compiler-rev201

ZIP
www.renesas.com/jp/ja/document/scd/integrated-development-environment-e-studio-using-cmake-renesas-cc-rx-compiler-rev201-sample-code
 

Parents
  • こんにちは。NoMaYです。

    この後、こんな感じの順で調べていくことになるかなぁ、と思ってます、、、(後半は取らぬ狸の皮算用かも?、、、)

    (1) CC-RLでは?CC-RHでは?(あと、CC-RX V3.04の-type_size_access_to_volatileを追加)
    (2) 追加/削除されたソースファイルやインクルードフォルダを自動認識するようにするには?
    (3) (単体)スマートコンフィグレータと良い塩梅に組み合わせて使えるようにならないものか?
    (4) コンパイラが生成した依存関係情報ファイルを使うようにするには?(それとも使えない?)
    (5) Ninjaというツールと組み合わせられるようにするには?(それとも組み合わせられない?)
    (6) 簡単なライブラリをビルド出来るようにする
    (7) Azure RTOSやAmazon FreeRTOSに関連したCMakeを使う大きなプロジェクトでは?
    (8) こまごまとした調整など

    [追記]

    あと、どこかで発作的に、、、

    (A) CMakeがコンパイラを自動認識する処理をちゃんと動かせなかったので無効にしてあるけれども何とかする

    あと、別系列で、、、

    (a) Visual Studio 2022で使うには?
    (b) VSCodeやVisual Studio 2022のエラーパーサー向けの小細工(別スレッド版は行頭の[build]のせいで機能しない筈)

  • NoMaYさん

    こんにちは、シェルティです。

    本件社内調整を進めております。

    CMake対応(本家へのプルリクエスト含む)をコンパイラチームとして公式に検討開始することができそうです。

    引き続き情報交換させていただけますと幸いです。

    以上です

Reply
  • NoMaYさん

    こんにちは、シェルティです。

    本件社内調整を進めております。

    CMake対応(本家へのプルリクエスト含む)をコンパイラチームとして公式に検討開始することができそうです。

    引き続き情報交換させていただけますと幸いです。

    以上です

Children
  • シェルティさん、こんにちは。NoMaYです。

    連絡ありがとうございます。もう暫く調べてみます。それから、1つ前のリプライありがとうございました。

    それで、リプライの中で、コンパイラ定義ファイル、といったようなたぐいの言葉がありませんでしたので、たぶん、toolsフォルダのcc-rx.cmake等のファイルは、内容を整理しただけでは、CMakeのリポジトリにコミットするものにはならない、かなぁ、と今までに調べて来たり試行錯誤して来たりしたことからは推測されるのです。CMakeから見れば、あくまでそれはユーザ側にて記述する部分のもの、という位置付けにとどまってしまう、かなぁ、と思われるのです。

    ですので、今後ルネサスさんの中で作業をされる方の作業の内容を検討する時には、その点は確認した方が良さそうな気がします。

    とは言え、GHSコンパイラ向けのコンパイラ定義ファイルが、あまりにもあっさりとした内容だった例がありますので、CMakeのリポジトリにコミットするのに、そういった内容でも良いのかも知れませんけど、例えば、Amazon FreeRTOSのリポジトリで以下のように無理矢理コメントアウトされている記述が通るようになっていて欲しいものではあります。(もっとも、ただ単にコメントアウトを解除するだけで良いようにする、という話でも無く、くだんのコンパイラ定義ファイルの内容との辻褄合わせもやらなければいけない、あるいは更に、STM32とかESP32とかの記述に似せた方が良いのかも知れない、という話になるとは思いますけど。)

    github.com/renesas/amazon-freertos/blob/5e4d219/vendors/renesas/boards/rx65n-rsk/CMakeLists.txt#L38

    # -------------------------------------------------------------------------------------------------
    # Compiler settings
    #
    # Note1: Cmake doesn't support cc-rx compiler. The settings are commented out.
    # Note2: The settings below are NOT test yet. Some flags might be wrong and some might be missing.
    # -------------------------------------------------------------------------------------------------
    afr_mcu_port(compiler)

    #set(compiler_flags
    #    -isa=rxv2 -fpu -branch=32 -preinclude="implicitlyinclude.h"
    #    -nomessage=11174,21644,20010,23034,23035,20177,23033 -output=obj  -debug -nologo
    #    -obj_path=${workspace_loc:/${ProjName}/${ConfigName}}
    #)

    # Compiler flags.
    target_compile_options(
        AFR::compiler::mcu_port
        INTERFACE
            $<$<COMPILE_LANGUAGE:C>:${compiler_flags}>
    )

    #set(assembler_flags
    #    -isa=rxv2 -fpu -debug -nologo
    #    -output=${workspace_loc:/${ProjName}/${ConfigName}}
    #)

    # Assembler flags
    target_compile_options(
        AFR::compiler::mcu_port
        INTERFACE
            $<$<COMPILE_LANGUAGE:ASM>:${assembler_flags}>
    )

    #set(linker_flags
    #    -noprelink -form=absolute -nomessage -vect=_undefined_interrupt_source_isr -list=${exe_target}.map
    #    -nooptimize -rom=D=R,D_1=R_1,D_2=R_2 -nologo
    #)

    target_link_options(
        AFR::compiler::mcu_port
        INTERFACE
            ${linker_flags}
    )

     

  • NoMaYさん

    シェルティです、こんにちは。

    ご指摘通りで、まさに社内折衝時に以下コードを実課題(CC-RXがCMake対応していないので、Amazon FreeRTOSのカーネルに以下注意文とともに3年も放置されている) として提起しました。

    https://github.com/aws/amazon-freertos/blob/f86418a59a640f2602aefd0d2b748c55bd437bf0/tools/cmake/toolchains/cc-rx.cmake#L1

    # Note, Cmake doesn't support cc-rx compiler.

    # Even it finds the executable, it doesn't know its identificatioin.
    # TODO: create a patch to Cmake

    今後、活動の行き着く先は、Amazon FreeRTOS、Azure RTOSのRX用ディストリビューションがCMakeで正しくビルドできるようになる、というのが最小要件になります。その際にNoMaYさんがおっしゃるように他マイコンベンダやコンパイラ環境の*.cmakeの書きぶりをベンチマークするなども必要と思います。

    以上です

  • シェルティさん、こんにちは。NoMaYです。

    > CC-RXがCMake対応していない

    些細な書き間違いかもとも思うのですが、そうではなくて本当にこのニュアンスで打ち合わせがあったとすると、後のことが多大な後戻り工数を必要とすることになるかも知れない不安がしましたので念の為に書いておきますけれども、文面としては逆であって、状況をより正確に表すのは以下の文面になりますね。

    ● CMakeがCC-RX対応していない

    もっと言ってしまうと、こうですね。

    ● CMakeがCC-RX/CC-RL/CC-RH対応していない

    別の書き方では、こうでもよいのかも、とも思います。

    ● CMakeのインストールフォルダの中にCC-RX/CC-RL/CC-RH向けコンパイラ定義ファイルが用意されていない
    (ゆえに、かなり無理矢理なことをしてCMakeLists.txtやクロスコンパイル用ユーザ責任○△□Toolchain◎▽◇.cmakeを記述しないといけない) (もしくは、それこそ最低限のことしか出来ない) (あるいは、手に負えずにギブアップせざるを得ない)

    [追記]

    なお、幾つか前の投稿に書いたように、(単にコマンドラインオプションがGCC/Clang/MSVCと異なること以上に)CC-RXが他のコンパイラと違った“クセ”があることや、CC-RXが生成するヘッダファイル依存関係情報ファイルが(GCCともMSVCとも異なるフォーマットであるが故に)CMakeやNinjaが受け付けないようだ(後日また調べますけれども)といったこともありますので、上のように言ってサラッとおしまい、というわけにも行きませんけれども。

  • NoMaYさん

    シェルティです。こんにちは。

    ありがとうございます。助かります。シェルティの悪癖 (頭の中で自明だと思っていることを文言に起こさない)が出たようです。

    シェルティの頭の中はこうなってました。

    ・ CMakeがCC-RX対応していない(のならば、当然同様のシチュエーション(独自CPU)にあるCC-RL、CC-RHもCMake対応の検討範疇であろう)

    #あとすみません、最初に書いた「CC-RXがCMake対応していない」はご指摘通り完全に逆に書いており単なる書き間違いです。会議中等に内職で書き込むとこの手の書き間違いが多くなりますね。

    コンパイラチームには同時にCC-RL、CC-RHのことも考える必要がある旨改めて伝えておきます。

    また、本スレッドに書いてあるNoMaYさんの検証内容をおさらいすることも伝えてあります。

    以上です