mitsut / cfg Goto Github PK
View Code? Open in Web Editor NEWTOPPERS 2nd Gen configurator
Home Page: https://www.toppers.jp/cfg.html
TOPPERS 2nd Gen configurator
Home Page: https://www.toppers.jp/cfg.html
TOPPERS新世代カーネル用コンフィギュレータ(Release 1.9.7) TOPPERS新世代カーネル用コンフィギュレータは、カーネルやソフトウェア部品 の構成や初期状態を定義したシステムコンフィギュレーションファイルを解釈し、 システムを構築する上で必要なファイル類を生成するTOPPERS新世代カーネル用 のツールです。 コンフィギュレータは、コンパイラやアセンブラを初めとする開発ツールと同様、 PC等の開発用コンピュータ上で動作するコマンドラインプログラムです。したが って、コンフィギュレータそのものが最終的な製品に組み込まれることは、原則 としてありません。コンフィギュレータはコマンドラインツールなので、コンパ イラを初めとした他のコマンドラインツールと組み合わせて使用することを前提 としています。しかし、ユーザーが適切に設定を行うことで、多くの統合開発環 境から呼び出せます。 【コンフィギュレータの構築方法(ITRON系)】 カーネルを構築する前に、まず、コンフィギュレータをコンパイルする必要が あります(コンフィギュレータをバイナリで入手した場合には、このステップ は必要はありません)。 コンフィギュレータの構築にはBoost C++ Libraries 1.48.0以上が必要です。 開発時点でのBoost C++ Librariesの最新版は1.58.0、であり、それ以降のバー ジョンについては動作確認を行っていません。 Boost C++ Librariesは、下記URLから入手することができます。 http://www.boost.org/ ・動作確認済みの環境 Windows 7 (x64) SP1 + Cygwin 1.7.17 + GCC 4.5.3 + Boost 1.48.0 Windows XP SP3 + MinGW 1.0.17 + GCC 4.6.2 + Boost 1.48.0 Windows 7 (x64) SP1 + MinGW 1.0.17 + GCC 4.6.1 + Boost 1.52.0 === GNU開発環境を用いた構築方法 === コンフィギュレータ(cfgプログラム)を構築するには、cfgディレクトリに移動 し、configureおよびmakeコマンドを実行します。 % cd cfg % ./configure % make ただし、Boostをインストールしたディレクトリおよび名称が、標準で想定して いるものと違う場合には、configureに--with-headersおよび--with-libraries オプションによりインクルードおよびライブラリのディレクトリを指定してくだ さい。 また、ホストシステムによっては、最適化レベルを上げると正しくコンパイルで きないことが知られています。そのような場合には、最適化レベルを下げるか、 最適化を抑止するように、Makefileを修正する必要があります。 複数のバージョンのBoost C++ Librariesがインストールされている場合(中途 半端にアンインストールされた場合を含む)、configureに失敗する可能性があ ります。その場合は手作業でMakefile.configを修正してください。 また、一度コンフィギュレータの構築を行った後、コンパイラやライブラリの アップデートを行った場合には、make realcleanを実行し、configureからやり 直してください。 【コンフィギュレータの構築方法(AUTOSAR系)】 カーネルを構築する前に、まず、コンフィギュレータをコンパイルする必要が あります(コンフィギュレータをバイナリで入手した場合には、このステップ は必要はありません)。 コンフィギュレータの構築にはBoost C++ Libraries 1.48.0以上およびXerces C++ 3.1.1以上が必要です。 開発時点でのBoost C++ Librariesの最新版は1.52.0、Xerces C++の最新版は3.1.1 であり、それ以降のバージョンについては動作確認を行っていません。 Boost C++ Librariesは、下記URLから入手することができます。 http://www.boost.org/ Xerces C++は、下記URLから入手することができます。 http://xerces.apache.org/xerces-c/ ・動作確認済みの環境 Windows 7 (x64) SP1 + Cygwin 1.7.17 + GCC 4.5.3 + Boost 1.48.0 + Xerces C++ 3.1.1 + ICU 4.8.1 Windows XP SP3 + MinGW 1.0.17 + GCC 4.6.2 + Boost 1.48.0 + Xerces C++ 3.1.1 + ICU 49.1 Windows 7 (x64) SP1 + MinGW 1.0.17 + GCC 4.6.1 + Boost 1.52.0 + Xerces C++ 3.1.1 + ICU 50.1 === GNU開発環境を用いた構築方法 === コンフィギュレータ(cfgプログラム)を構築するには、cfgディレクトリに移動 し、configureおよびmakeコマンドを実行します。 configureに--with-xmlを指定することで、AUTOSAR XML対応機能を追加する ことができます。 % cd cfg % ./configure --with-xml % make ただし、Boostをインストールしたディレクトリおよび名称が、標準で想定して いるものと違う場合には、configureに--with-headersおよび--with-libraries オプションによりインクルードおよびライブラリのディレクトリを指定してくだ さい。 また、ホストシステムによっては、最適化レベルを上げると正しくコンパイルで きないことが知られています。そのような場合には、最適化レベルを下げるか、 最適化を抑止するように、Makefileを修正する必要があります。 複数のバージョンのBoost C++ Librariesがインストールされている場合(中途 半端にアンインストールされた場合を含む)、configureに失敗する可能性があ ります。その場合は手作業でMakefile.configを修正してください。 また、一度コンフィギュレータの構築を行った後、コンパイラやライブラリの アップデートを行った場合には、make realcleanを実行し、configureからやり 直してください。 【Mekefile.configの説明】 configureコマンドによって生成されるMakefile.configでは次のパラメータが 定義されます。 ・LIBBOOST_SUFFIX Boost C+ Librariesのライブラリファイルのサフィックス たとえば、ライブラリファイルがlibboost_system-mt.aのような形式であれば、 LIBBOOST_SUFFIXには-mtが設定されます。 ・BOOST_VERSION Boost C++ Librariesのバージョン バージョン1.48.0であれば、BOOST_VERSIONには1_48が設定されます。 ・BOOST_DIR=/usr/include Boost C++ Librariesのヘッダファイルがあるディレクトリ 自分でBoost C++ Librariesをインストールした場合、通常/usr/local/include が設定されます。 ・LIBBOOST_DIR Boost C++ Librariesのライブラリファイルがあるディレクトリ 自分でBoost C++ Librariesをインストールした場合、通常/usr/local/libが設定 されます。 ・XERCES_DIR Xerces C++のヘッダファイルがあるディレクトリ ・LIBXERCES_DIR Xerces C++のライブラリファイルがあるディレクトリ ・OPTIONS コンパイラの追加オプション 普通は何も設定されません。 ・HAS_CFG_XML AUTOSAR XML対応の有無 configureに--with-xmlを指定した場合は1に定義されます。 【コンフィギュレータの使い方】 コンフィギュレータ(cfg)は、TOPPERS新世代カーネル統合仕様書の2.12.5節 の記述の通り、3つ(または4つ)のパスで構成されます。 コンフィギュレータは、システムコンフィギュレーションファイル名をパラメー タに取り、以下のオプションを持ちます(重要なもののみ)。 --help オプションのリストと説明を表示する。 -v[--version] コンフィギュレータのバージョンを表示する。 -k[--kernel]<カーネル名> カーネルの名称を指定する。デフォルトはasp。 -p[--pass]<パス番号> パス番号を指定する。1〜3のいずれか。 -I[--include-path]<インクルードパス名> INCLUDEディレクティブにおいて、インクルードするコンフィギュレー ションファイルを探すパス名を指定する。 -T[--template-file]<テンプレートファイル名> テンプレートファイルの名称を指定する。パス2とパス3で有効。 --api-table <静的APIテーブルファイル名> 静的APIテーブルのファイル名を指定する。 --cfg1-def-table <値取得シンボルテーブルファイル名> 値取得シンボルテーブルのファイル名を指定する。 -r[--rom-image]<ロードモジュール名> ロードモジュールをSレコードフォーマットの形に変換したファイルの 名称を指定する。パス3でのみ有効。 -s [--symbol-table] <シンボルファイル名> ロードモジュール中の各シンボルとアドレスの対応表を含むシンボル ファイルの名称を指定する。パス3でのみ有効。 --id-output-file <ID番号出力ファイル名> オブジェクトのID番号の割付け結果を、指定した名前のファイルに書 き出す。パス2でのみ有効。 --id-input-file <ID番号入力ファイル名> オブジェクトのID番号の割付けを、指定した名前のファイルから取り 込む。パス2でのみ有効。 --external-id オブジェクトのID番号を保持する変数の定義を生成する。パス2でのみ 有効。 -M[--print-dependencies]<ターゲットシンボル> システムコンフィギュレーションファイルの依存関係を出力する。 Makefile中の依存関係を生成する際に用いる。 --ini-file <設定ファイル名> AUTOSAR XML対応時において、設定ファイルを指定する。 コンフィギュレータの詳細仕様については、別途PDFファイルの形で配布してい る「TOPPERS新世代カーネル用コンフィギュレータ仕様」を参照してください。 テンプレートファイルの作成にあたっては、「TOPPERS新世代カーネル用コンフ ィギュレータ内蔵マクロプロセッサ仕様書」を参照してください。 ○変更履歴 2023/01/22 ・M1 Mac(+Homebrew)版向けの対応 2020/07/26 ・Linux 64版向けの対応 以上
GitHubのホストランナーでビルドを行う
https://docs.github.com/ja/actions/using-workflows/workflow-syntax-for-github-actions#
セルフビルドして、ビルドしたPC上で利用する場合は問題ないが再配布したい場合には、
ライブラリのXerces-cのスタティックリンクビルドが必要になります。
xerces-cのスタティックリンクのビルド方法をREADMEに追記したい
スキーマを設定しないと、スキーマが使われてない旨のワーニングが出力される。
しかしそのまま実行されてしまうので、ARXMLの文法が問題の場合は、cfg.exeが落ちる場合がある。
スキーマ利用は必須にして、スキーマが見つからない場合は実行しないで終了するようにしてほしい。
またどうしてもスキーマチェックをして欲しくない場合は、オプションファイル(.ini)でスキーマチェックをしない設定を追加して、明示的にスキーマ利用をしない設定ができるようにしてほしい
cfgをビルドするとstd::auto_ptr
は非推奨となったようなので置き換える
参考 sakura-editor/sakura#389
いくつか PR を送らせていただきましたが、私のビルド環境は以下の通りです。
ubuntu:bionic
を使用)現状 Travis のビルドが失敗しているようですし、
「この環境でビルドできることを確認してくれ」といった条件があればお教えください。
workaround.hpp#L66 のようです。
この行を削除したところ、セグメンテーションフォルトが解消されました。
BOOST_SP_DISABLE_THREADSの参考ページ: shared_ptr の排他制御を抑止する。 | 株式会社きじねこ
xerces-c のビルドオプションで、スレッドを無効にすることでも解消できるかもしれません。
(https://xerces.apache.org/xerces-c/build-3.html) (未検証)
それとは別に、PR #3 のコメントにて、 5 系を使うようにすると話していたので、このワークアラウンドの根本的な見直しをすることも必要そうです。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.