Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

$description = "The following test tests that if you specify greater \n"
              ."than one '-f makefilename' on the command line, \n"
              ."that make concatenates them.  This test creates three \n"
              ."makefiles and specifies all of them with the -f option \n"
              ."on the command line.  To make sure they were concatenated, \n"
              ."we then call make with the rules from the concatenated \n"
              ."makefiles one at a time.  Finally, it calls all three \n"
              ."rules in one call to make and checks that the output\n"
              ."is in the correct order.";

$makefile2 = &get_tmpfile;
$makefile3 = &get_tmpfile;

open(MAKEFILE,"> $makefile");

# The Contents of the MAKEFILE ...

print MAKEFILE "all: \n";
print MAKEFILE "\t\@echo This is the output from the original makefile\n";

# END of Contents of MAKEFILE

close(MAKEFILE);

# Create a second makefile
open(MAKEFILE,"> $makefile2");
print MAKEFILE "TWO: \n";
print MAKEFILE "\t\@echo This is the output from makefile 2\n";
close(MAKEFILE);

# Create a third makefile
open(MAKEFILE,"> $makefile3");
print MAKEFILE "THREE: \n";
print MAKEFILE "\t\@echo This is the output from makefile 3\n";
close(MAKEFILE);


# Create the answer to what should be produced by this Makefile
$answer = "This is the output from the original makefile\n";

# Run make to catch the default rule
&run_make_with_options($makefile,"-f $makefile2 -f $makefile3",&get_logfile,0);

&compare_output($answer,&get_logfile(1));


# Run Make again with the rule from the second makefile: TWO
$answer = "This is the output from makefile 2\n";

&run_make_with_options($makefile,"-f $makefile2 -f $makefile3 TWO",&get_logfile,0);

&compare_output($answer,&get_logfile(1));
     

# Run Make again with the rule from the third makefile: THREE

$answer = "This is the output from makefile 3\n";
&run_make_with_options($makefile,
                       "-f $makefile2 -f $makefile3 THREE",
                       &get_logfile,
                       0);
&compare_output($answer,&get_logfile(1));


# Run Make again with ALL three rules in the order 2 1 3 to make sure
# that all rules are executed in the proper order

$answer = "This is the output from makefile 2\n";
$answer .= "This is the output from the original makefile\n";
$answer .= "This is the output from makefile 3\n";
&run_make_with_options($makefile,
                       "-f $makefile2 -f $makefile3 TWO all THREE",
		       &get_logfile,
                       0);
&compare_output($answer,&get_logfile(1));