bugfixes to make pascal compiler work.
This commit is contained in:
		
							parent
							
								
									f2c8e42f95
								
							
						
					
					
						commit
						1ec55dfc6e
					
				
					 1 changed files with 31 additions and 16 deletions
				
			
		|  | @ -152,7 +152,7 @@ const struct system_information machine_info[2] = | ||||||
| 		}} | 		}} | ||||||
| #else | #else | ||||||
| #ifdef FM2 | #ifdef FM2 | ||||||
| 		/* pc Flags */ | 		/* modula-2 Flags */ | ||||||
| 		{1, { | 		{1, { | ||||||
| 		   "-Vw2.2i2.2l4.2p2.2f8.2S2.2" | 		   "-Vw2.2i2.2l4.2p2.2f8.2S2.2" | ||||||
| 		}} | 		}} | ||||||
|  | @ -207,7 +207,7 @@ const struct system_information machine_info[2] = | ||||||
| 		}} | 		}} | ||||||
| #else | #else | ||||||
| #ifdef FM2 | #ifdef FM2 | ||||||
| 		/* pc Flags */ | 		/* modula-2 Flags */ | ||||||
| 		{1, { | 		{1, { | ||||||
| 		   "-Vw2.2i2.2l4.2p4.2f8.2S2.2" | 		   "-Vw2.2i2.2l4.2p4.2f8.2S2.2" | ||||||
| 		}} | 		}} | ||||||
|  | @ -221,7 +221,6 @@ const struct system_information machine_info[2] = | ||||||
| struct arglist CPP_FLAGS = {0,{NULL}}; | struct arglist CPP_FLAGS = {0,{NULL}}; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| struct arglist LD_HEAD = | struct arglist LD_HEAD = | ||||||
| { 2, | { 2, | ||||||
| { "$H/lib/$S/head_em", | { "$H/lib/$S/head_em", | ||||||
|  | @ -298,12 +297,12 @@ static int cv_flag = 0; | ||||||
| char *mkstr(char *, ...); | char *mkstr(char *, ...); | ||||||
| static char *alloc(unsigned int); | static char *alloc(unsigned int); | ||||||
| static char *extension(char *); | static char *extension(char *); | ||||||
| static char *expand_string(char *); | static char *expand_string(char *s, struct system_information *); | ||||||
| static void error(char *, char *, char *); | static void error(char *, char *, char *); | ||||||
| static void warning(char *, char *, char *); | static void warning(char *, char *, char *); | ||||||
| static void panic(char *); | static void panic(char *); | ||||||
| static void append(register struct arglist *, char *); | static void append(register struct arglist *, char *); | ||||||
| static void expand(register struct arglist *); | static void expand(register struct arglist *, struct system_information *); | ||||||
| static void concat(struct arglist *, struct arglist *); | static void concat(struct arglist *, struct arglist *); | ||||||
| static int runvec(struct arglist *, char *); | static int runvec(struct arglist *, char *); | ||||||
| static int needsprep(char *); | static int needsprep(char *); | ||||||
|  | @ -345,6 +344,12 @@ void trapcc(int sig) | ||||||
| #define comp_name()	"$H/lib/ack/em_pc" | #define comp_name()	"$H/lib/ack/em_pc" | ||||||
| #endif /* FPC */ | #endif /* FPC */ | ||||||
| 
 | 
 | ||||||
|  | /** Default library directories to search in. */ | ||||||
|  | 
 | ||||||
|  | #define LIB_DIR_1		"$H/share/ack/$S" | ||||||
|  | #define LIB_DIR_2		"$H/lib/ack/plat/$S" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| #ifdef FCC | #ifdef FCC | ||||||
| int lang_opt(char *str) | int lang_opt(char *str) | ||||||
| { | { | ||||||
|  | @ -524,6 +529,8 @@ char* search_library_path(struct stringlist *dirs, char* lib) | ||||||
| 	return NULL; | 	return NULL; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| int main(int argc, char *argv[]) | int main(int argc, char *argv[]) | ||||||
| { | { | ||||||
| 	/* Contains the directories being searched for libraries */ | 	/* Contains the directories being searched for libraries */ | ||||||
|  | @ -574,11 +581,16 @@ int main(int argc, char *argv[]) | ||||||
| 	sys_basename(*argv++, ProgCall); | 	sys_basename(*argv++, ProgCall); | ||||||
| 
 | 
 | ||||||
| 	/* get compiler to use. */ | 	/* get compiler to use. */ | ||||||
| 	COMP = expand_string(comp_name()); | 	COMP = expand_string(comp_name(),sys_info); | ||||||
| 	/* get c pre-processor to use */ | 	/* get c pre-processor to use */ | ||||||
| 	CPP = expand_string(CPP_NAME); | 	CPP = expand_string(CPP_NAME,sys_info); | ||||||
| 	/** get linker to use */ | 	/** get linker to use */ | ||||||
| 	LD = expand_string(sys_info->linker); | 	LD = expand_string(sys_info->linker,sys_info); | ||||||
|  | 
 | ||||||
|  | 	/* Add system directory path. */ | ||||||
|  | 	stringlist_add(&library_dirs,expand_string(LIB_DIR_1,sys_info)); | ||||||
|  | 	stringlist_add(&library_dirs,expand_string(LIB_DIR_2,sys_info)); | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 	if (signal(SIGINT, SIG_IGN) != SIG_IGN) | 	if (signal(SIGINT, SIG_IGN) != SIG_IGN) | ||||||
|  | @ -682,6 +694,9 @@ int main(int argc, char *argv[]) | ||||||
| 	{ | 	{ | ||||||
| 		append(&COMP_FLAGS, sys_info->compiler_flags.al_argv[count]); | 		append(&COMP_FLAGS, sys_info->compiler_flags.al_argv[count]); | ||||||
| 	} | 	} | ||||||
|  | #ifdef FPC | ||||||
|  | 	append(&COMP_FLAGS, "-d"); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| 	/* Now for each srcfile, if it starts with -l then replace it with the correct real
 | 	/* Now for each srcfile, if it starts with -l then replace it with the correct real
 | ||||||
| 	 * path immediately. | 	 * path immediately. | ||||||
|  | @ -734,12 +749,12 @@ int main(int argc, char *argv[]) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| #ifdef FM2 | #ifdef FM2 | ||||||
| 	INCLUDE = expand_string("-I$H/lib/m2"); | 	INCLUDE = expand_string("-I$H/lib/m2",sys_info); | ||||||
| #endif /* FM2 */ | #endif /* FM2 */ | ||||||
| #ifdef FCC | #ifdef FCC | ||||||
| /*	INCLUDE = expand_string(
 | /*	INCLUDE = expand_string(
 | ||||||
| 			ansi_c ? "-I$H/include/tail_ac" : "-I$H/include/_tail_cc"); */ | 			ansi_c ? "-I$H/include/tail_ac" : "-I$H/include/_tail_cc"); */ | ||||||
| 	INCLUDE = expand_string("-I$H/share/ack/include"); | 	INCLUDE = expand_string("-I$H/share/ack/include",sys_info); | ||||||
| /*	append(&COMP_FLAGS, "-L");*/ | /*	append(&COMP_FLAGS, "-L");*/ | ||||||
| #endif /* FCC */ | #endif /* FCC */ | ||||||
| 	count = SRCFILES.al_argc; | 	count = SRCFILES.al_argc; | ||||||
|  | @ -912,7 +927,7 @@ int main(int argc, char *argv[]) | ||||||
| 		if (cv_flag) | 		if (cv_flag) | ||||||
| 		{ | 		{ | ||||||
| 			init(call); | 			init(call); | ||||||
| 			append(call, expand_string(sys_info->cv)); | 			append(call, expand_string(sys_info->cv, sys_info)); | ||||||
| 			append(call, tmp_file); | 			append(call, tmp_file); | ||||||
| 			append(call, o_FILE); | 			append(call, o_FILE); | ||||||
| 			if (runvec(call, (char *) 0)==EXIT_FAILURE) | 			if (runvec(call, (char *) 0)==EXIT_FAILURE) | ||||||
|  | @ -959,7 +974,7 @@ static char * alloc(unsigned int u) | ||||||
| 	return p; | 	return p; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static char * expand_string(char *s) | static char * expand_string(char *s, struct system_information *sysinfo) | ||||||
| { | { | ||||||
| 	char buf[1024]; | 	char buf[1024]; | ||||||
| 	register char *p = s; | 	register char *p = s; | ||||||
|  | @ -986,10 +1001,10 @@ static char * expand_string(char *s) | ||||||
| 				strcpy(q, ackhome); | 				strcpy(q, ackhome); | ||||||
| 				break; | 				break; | ||||||
| 			case 'M': | 			case 'M': | ||||||
| 				strcpy(q, MACHNAME); | 				strcpy(q, sysinfo->arch); | ||||||
| 				break; | 				break; | ||||||
| 			case 'S': | 			case 'S': | ||||||
| 				strcpy(q, SYSNAME); | 				strcpy(q, sysinfo->platform); | ||||||
| 				break; | 				break; | ||||||
| 			default: | 			default: | ||||||
| 				panic("internal error"); | 				panic("internal error"); | ||||||
|  | @ -1018,14 +1033,14 @@ static void append(register struct arglist *al, char *arg) | ||||||
| 	al->al_argv[(al->al_argc)++] = arg; | 	al->al_argv[(al->al_argc)++] = arg; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void expand(register struct arglist *al) | static void expand(register struct arglist *al, struct system_information *sysinfo) | ||||||
| { | { | ||||||
| 	register int i = al->al_argc; | 	register int i = al->al_argc; | ||||||
| 	register char **p = &(al->al_argv[0]); | 	register char **p = &(al->al_argv[0]); | ||||||
| 
 | 
 | ||||||
| 	while (i-- > 0) | 	while (i-- > 0) | ||||||
| 	{ | 	{ | ||||||
| 		*p = expand_string(*p); | 		*p = expand_string(*p,sysinfo); | ||||||
| 		p++; | 		p++; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue