私はの意味を理解しています
obj-$(CONFIG_USB) += usb.o
CONFIG_USBがyの場合、usb.oがコンパイルされます。だから今これを理解する方法
obj-y += something/
私はの意味を理解しています
obj-$(CONFIG_USB) += usb.o
CONFIG_USBがyの場合、usb.oがコンパイルされます。だから今これを理解する方法
obj-y += something/
カーネルMakefileはkbuild
システムの一部であり、Web上のさまざまな場所(http://lwn.net/Articles/21835/など)に文書化されています。関連する抜粋はここにあります:
--- 3.1 Goal definitions
目標の定義は、kbuild Makefileの主要部分(中心)です。これらの行は、ビルドされるファイル、特別なコンパイルオプション、および再帰的に入力されるサブディレクトリを定義します。
最も単純なkbuildmakefileには、次の1行が含まれています。
例:obj-y + = foo.o
これにより、そのディレクトリにfoo.oという名前のオブジェクトが1つあることがkbuildに通知されます。foo.oはfoo.cまたはfoo.Sからビルドされます。
foo.oをモジュールとして構築する場合は、変数obj-mが使用されます。したがって、次のパターンがよく使用されます。
例:obj-$(CONFIG_FOO)+ = foo.o
$(CONFIG_FOO)は、y(組み込みの場合)またはm(モジュールの場合)のいずれかに評価されます。CONFIG_FOOがyでもmでもない場合、ファイルはコンパイルもリンクもされません。
つまりm
、モジュールをy
意味し、組み込み(カーネル構成プロセスでyesを表す)を意味し、$(CONFIG_FOO)は通常の構成プロセスから正しい答えを引き出します。
obj-y+=何か/
これは、kbuildがディレクトリ「something」に移動する必要があることを意味します。このディレクトリに移動すると、「何か」のMakefileを調べて、構築するオブジェクトを決定します。
これは、「something」ディレクトリに移動して「make」を実行すると言うのと似ています。
あなたの質問は、ディレクトリ全体が目標として追加される理由のようです。KConfigドキュメントの関連部分は次のとおりです。
--- 3.6 Descending down in directories
A Makefile is only responsible for building objects in its own
directory. Files in subdirectories should be taken care of by
Makefiles in these subdirs. The build system will automatically
invoke make recursively in subdirectories, provided you let it know of
them.
To do so obj-y and obj-m are used.
ext2 lives in a separate directory, and the Makefile present in fs/
tells kbuild to descend down using the following assignment.
Example:
#fs/Makefile
obj-$(CONfIG_EXT2_FS) += ext2/
If CONFIG_EXT2_FS is set to either 'y' (built-in) or 'm' (modular)
the corresponding obj- variable will be set, and kbuild will descend
down in the ext2 directory.
Kbuild only uses this information to decide that it needs to visit
the directory, it is the Makefile in the subdirectory that
specifies what is modules and what is built-in.
It is good practice to use a CONFIG_ variable when assigning directory
names. This allows kbuild to totally skip the directory if the
corresponding CONFIG_ option is neither 'y' nor 'm'.