00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "config.h"
00027 #include "system.h"
00028 #include "mkdeps.h"
00029
00030 #include <assert.h>
00031
00032 #include "jcf.h"
00033
00034
00035
00036
00037 struct deps *dependencies;
00038
00039
00040 static FILE *dep_out = NULL;
00041
00042
00043 static int system_files;
00044
00045
00046 static int print_dummies;
00047
00048
00049
00050
00051
00052
00053
00054 void
00055 jcf_dependency_reset ()
00056 {
00057 if (dep_out != NULL)
00058 {
00059 if (dep_out != stdout)
00060 fclose (dep_out);
00061 dep_out = NULL;
00062 }
00063
00064 if (dependencies != NULL)
00065 {
00066 deps_free (dependencies);
00067 dependencies = NULL;
00068 }
00069 }
00070
00071 void
00072 jcf_dependency_set_target (name)
00073 const char *name;
00074 {
00075
00076 if (dependencies != NULL && name != NULL)
00077 deps_add_target (dependencies, name, 1);
00078 }
00079
00080 void
00081 jcf_dependency_add_target (name)
00082 const char *name;
00083 {
00084 if (dependencies != NULL)
00085 deps_add_target (dependencies, name, 1);
00086 }
00087
00088 void
00089 jcf_dependency_set_dep_file (name)
00090 const char *name;
00091 {
00092 assert (dep_out != stdout);
00093 if (dep_out)
00094 fclose (dep_out);
00095 if (! strcmp (name, "-"))
00096 dep_out = stdout;
00097 else
00098 dep_out = fopen (name, "w");
00099 }
00100
00101 void
00102 jcf_dependency_add_file (filename, system_p)
00103 const char *filename;
00104 int system_p;
00105 {
00106 if (! dependencies)
00107 return;
00108
00109
00110 if (system_p && ! system_files)
00111 return;
00112
00113 deps_add_dep (dependencies, filename);
00114 }
00115
00116 void
00117 jcf_dependency_init (system_p)
00118 int system_p;
00119 {
00120 assert (! dependencies);
00121 system_files = system_p;
00122 dependencies = deps_init ();
00123 }
00124
00125 void
00126 jcf_dependency_print_dummies ()
00127 {
00128 print_dummies = 1;
00129 }
00130
00131 void
00132 jcf_dependency_write ()
00133 {
00134 if (! dep_out)
00135 return;
00136
00137 assert (dependencies);
00138
00139 deps_write (dependencies, dep_out, 72);
00140 if (print_dummies)
00141 deps_phony_targets (dependencies, dep_out);
00142 fflush (dep_out);
00143 }