#import <stdio.h>
#import <string.h>
#define PROGRAM_NAME "arch_tool"
#define MAX_ARCH_LIST_SIZE 16
typedef int compareFunc(const void *, const void *);
static int compare_strings(const char **a, const char **b) {
return strcmp(*a, *b);
}
void usage(const char * program)
{
fprintf(stderr,"Usage: %s -archify_list arch1 arch2 ...\n",program);
fprintf(stderr," %s -dearchify flags ...\n",program);
fprintf(stderr," %s -choose_obj_dir arch1 arch2 ...\n",program);
exit(1);
}
int main(int argc, char *argv[])
{
char ** archNames;
int i, numArchs;
if (argc <= 1) {
usage(PROGRAM_NAME);
}
numArchs = argc - 2;
if (!strcmp(argv[1],"-archify_list")) {
for (i = 2 ; i < argc; i++) {
printf("-arch %s ",argv[i]);
}
} else if (!strcmp(argv[1],"-dearchify")) {
for (i = 2 ; i < argc; i++) {
if (!strcmp(argv[i],"-arch"))
i++;
else
printf("%s ",argv[i]);
}
} else if (!strcmp(argv[1],"-choose_obj_dir")) {
archNames = (char**) malloc((numArchs)*sizeof(char*));
for (i = 2 ; i < argc; i++) {
archNames[i-2] = argv[i];
}
qsort((void*) archNames, argc-2, sizeof(char*),
(compareFunc*)compare_strings);
for (i = 0; i < numArchs; i++) {
printf("%s",archNames[i]);
if (i+1 < numArchs) putc('_',stdout);
}
} else {
usage(PROGRAM_NAME);
}
putc('\n',stdout);
exit(0);
}