Question 1:
Note: each target name must be on its own line and followed with a colon (:) character. Next, each command line must start with a tab character. Run the first target in the makefile by typing make at a terminal command prompt.
App.class: javac *.java java App clean: \rm *.class
Question 2:
The first target depends upon two files List.class and App.java. The List.class file has its own target in this make file and that target will be executed before the all target.
all: List.class App.java javac App.java java App List.class: List.java javac List.java clean: \rm *.class
Question 3:
The first target is named all and it depends upon the target named run_diff which depends upon the target named tests which depends upon the target named copy_files. So, first the copy_files target is run, which copies the test input files named in*.txt to the current directory. Then, it copies the out*.txt files. Then, the tests target is executed and the java files are compiled and the program is run with a single command line argument for each test run. Next, it runs the Linux diff command to compare the output from each test run with expected output in the out*.txt files.
handin: scp MyProgram.java /p/course/cs400-deppeler/handin/201801/make/[csloginhere]/MyProgram.java