2 * udibuild - UDI Compilation Utility
3 * - By John Hodge (thePowersGang)
10 #include <unistd.h> // getopt
13 #include "include/build.h"
14 #include "include/inifile.h"
15 #include "include/udiprops.h"
18 #define CONFIG_FILE "/Acess/Conf/UDI/udibuild.ini"
20 #define CONFIG_FILE "/etc/udi/udibuild.ini"
24 int main(int argc, char *argv[]);
25 int ParseArguments(int argc, char *argv[]);
26 void Usage(const char *progname);
29 const char *gsOpt_ConfigFile;
30 const char *gsOpt_WorkingDir;
31 const char *gsOpt_UdipropsFile;
32 const char *gsOpt_ABIName = "ia32";
34 tUdiprops *gpUdipropsBuild;
37 int main(int argc, char *argv[])
39 if( ParseArguments(argc, argv) ) {
43 // Locate udibuild.ini
44 if( NULL == gsOpt_ConfigFile )
47 //if( file_exists("./udibuild.ini") )
49 // gsOpt_ConfigFile = "udibuild.ini";
51 // 2. Check program dir (if not invoked from PATH)
52 // 3. Check ~/.config/udi/udibuild.ini
53 // 4. Check CONFIGNAME
57 gpOptions = IniFile_Load(gsOpt_ConfigFile);
60 // Change to working directory (-C <dir>)
61 if( gsOpt_WorkingDir )
63 chdir(gsOpt_WorkingDir);
67 gpUdipropsBuild = Udiprops_LoadBuild( gsOpt_UdipropsFile ? gsOpt_UdipropsFile : "udiprops.txt" );
68 assert(gpUdipropsBuild);
69 assert(gpUdipropsBuild->SourceFiles);
72 for( int i = 0; gpUdipropsBuild->SourceFiles[i]; i ++ )
74 int rv = Build_CompileFile(gpOptions, gsOpt_ABIName, gpUdipropsBuild,
75 gpUdipropsBuild->SourceFiles[i]);
77 fprintf(stderr, "*** Exit status: %i\n", rv);
81 Build_LinkObjects(gpOptions, gsOpt_ABIName, gpUdipropsBuild);
86 int ParseArguments(int argc, char *argv[])
89 while( (opt = getopt(argc, argv, "hC:c:f:a:")) != -1 )
97 gsOpt_WorkingDir = optarg;
100 gsOpt_ConfigFile = optarg;
103 gsOpt_UdipropsFile = optarg;
106 gsOpt_ABIName = optarg;
112 fprintf(stderr, "BUG: Unhandled optarg %i '%c'\n", opt, opt);
119 void Usage(const char *progname)
121 fprintf(stderr, "Usage: %s [-C workingdir] [-c udibuild.ini] [-f udiprops.txt] [-a abiname]\n",
124 "-C workingdir : Change to the specified directory before looking for udiprops.txt\n"
125 "-c udibuild.ini : Override the default udibuild config file\n"
126 "-f udiprops.txt : Override the default udiprops file\n"
127 "-a abiname : Select a different ABI\n"