Re: 2 modules from 1 source ?

jim.cromie
2022-12-19T17:03:22Z

On Mon, Dec 19, 2022 at 9:37 AM <jim.cromie@gmail.com> wrote:
>
> Id like to build 2 modules (with different names)
> from a single source file, with 2nd being dependent
> on the 1st.
>
> Specifically, Ive got:
> lib/test_dynamic_debug.c
>
> I want
> A: lib/test_dynamic_debug.ko
> B: lib/test_dynamic_debug_submod.ko
>
> I expect that the code just needs an #ifdef #else #endif
> block to clearly put the dependor & dependee elements
> next to each other.
>
> My question is how to do this in the Makefile ?
> this does most of it
>
> --- a/lib/Makefile
> +++ b/lib/Makefile
> @@ -78,7 +78,8 @@ obj-$(CONFIG_TEST_SORT) += test_sort.o
> obj-$(CONFIG_TEST_USER_COPY) += test_user_copy.o
> obj-$(CONFIG_TEST_STATIC_KEYS) += test_static_keys.o
> obj-$(CONFIG_TEST_STATIC_KEYS) += test_static_key_base.o
> -obj-$(CONFIG_TEST_DYNAMIC_DEBUG) += test_dynamic_debug.o
> +obj-$(CONFIG_TEST_DYNAMIC_DEBUG) += test_dynamic_debug.o
> test_dynamic_debug_submod.o
> +CFLAGS_test_dynamic_debug_submod.o += -DTEST_DYNAMIC_DEBUG_SUBMOD
> obj-$(CONFIG_TEST_PRINTF) += test_printf.o
>
> but how do I tell it the 2nd target ?

more to the point, this doesnt work (nor do permutations), I miss something:

+($obj)/test_dynamic_debug_submod.o: ($obj)/test_dynamic_debug.c

> make[2]: *** No rule to make target 'lib/test_dynamic_debug_submod.o',
> needed by 'lib/modules.order'. Stop.
> make[1]: *** [/home/jimc/projects/lx/wk-test/scripts/Makefile.build:500:
> lib] Error 2