mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	Makefile.frag as a Makefile filename (#2969)
This commit is contained in:
		
				
					committed by
					
						 Arfon Smith
						Arfon Smith
					
				
			
			
				
	
			
			
			
						parent
						
							8ea9632ccf
						
					
				
				
					commit
					9a0ac4a477
				
			| @@ -2085,6 +2085,7 @@ Makefile: | ||||
|   - Kbuild | ||||
|   - Makefile | ||||
|   - Makefile.am | ||||
|   - Makefile.frag | ||||
|   - Makefile.in | ||||
|   - Makefile.inc | ||||
|   - makefile | ||||
|   | ||||
							
								
								
									
										77
									
								
								samples/Makefile/filenames/Makefile.frag
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								samples/Makefile/filenames/Makefile.frag
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,77 @@ | ||||
| all: link-php-objects index-php-objects $(all_targets) | ||||
| 	@echo | ||||
| 	@echo "Build complete." | ||||
| 	@echo "Don't forget to run 'make test'." | ||||
| 	@echo | ||||
|  | ||||
| generate-php-objects: | ||||
| 	@echo "Generating PHP objects in $(PHP_DIR)" | ||||
| 	@for f in `ls $(PHP_DIR)/*.php`; do \ | ||||
| 		objcopy --input binary --output elf64-x86-64 --binary-architecture i386 $$f $$f.o; \ | ||||
| 	done; | ||||
|  | ||||
| link-php-objects: generate-php-objects | ||||
| 	@echo "Linking PHP objects in $(PHP_DIR)" | ||||
| 	@for f in `ls $(PHP_DIR)/*.php`; do \ | ||||
| 		ar rcs $(PHP_DIR)/lib$(PHP_LIB).a $$f.o; \ | ||||
| 	done; | ||||
|  | ||||
| index-php-objects: link-php-objects | ||||
| 	@echo "Indexing PHP objects in $(PHP_DIR)" | ||||
| 	@echo "#ifndef HAVE_PHP_$(PHP_LIB)_H" 																	> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "#define HAVE_PHP_$(PHP_LIB)_H" 																	>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "/* I AM GENERATED | DO NOT EDIT | I AM GENERATED */"												>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@for f in `ls $(PHP_DIR)/*.php`; do \ | ||||
| 		name=`echo $$f | sed 's/[^a-z]/_/g'`; \ | ||||
| 		echo "extern char _binary_"$$name"_start;" 															>> $(PHP_DIR)/$(PHP_LIB).h; \ | ||||
| 		echo "static inline char* php_index_$(PHP_LIB)_"$$name"() {" 										>> $(PHP_DIR)/$(PHP_LIB).h; \ | ||||
| 		echo "	return (char*) &_binary_"$$name"_start;"													>> $(PHP_DIR)/$(PHP_LIB).h; \ | ||||
| 		echo "}"																							>> $(PHP_DIR)/$(PHP_LIB).h; \ | ||||
| 		echo "extern char _binary_"$$name"_end;" 															>> $(PHP_DIR)/$(PHP_LIB).h; \ | ||||
| 		echo "static inline char* php_index_$(PHP_LIB)_"$$name"_end() {" 									>> $(PHP_DIR)/$(PHP_LIB).h; \ | ||||
| 		echo "	return (char*) &_binary_"$$name"_end;"														>> $(PHP_DIR)/$(PHP_LIB).h; \ | ||||
| 		echo "}"																							>> $(PHP_DIR)/$(PHP_LIB).h; \ | ||||
| 		echo "static inline size_t php_index_$(PHP_LIB)_"$$name"_size() {" 									>> $(PHP_DIR)/$(PHP_LIB).h; \ | ||||
| 		echo "	return (size_t) (php_index_$(PHP_LIB)_"$$name"_end() - php_index_$(PHP_LIB)_"$$name"());"	>> $(PHP_DIR)/$(PHP_LIB).h; \ | ||||
| 		echo "}"																							>> $(PHP_DIR)/$(PHP_LIB).h; \ | ||||
| 	done; | ||||
| 	@echo "static inline php_$(PHP_LIB)_init(HashTable *index, HashTable *includes) {"						>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "	zval val;"																						>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "	zend_hash_init(index, 8, NULL, ZVAL_PTR_DTOR, 0);"												>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "	zend_hash_init(includes, 8, NULL, NULL, 0);"													>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@for f in `ls $(PHP_DIR)/*.php`; do \ | ||||
| 		name=`echo $$f | sed 's/[^a-z]/_/g'`; \ | ||||
| 		echo "	ZVAL_NEW_STR(&val, zend_string_init(\ | ||||
| 					php_index_$(PHP_LIB)_"$$name"(), \ | ||||
| 						php_index_$(PHP_LIB)_"$$name"_size(), 0));"											>> $(PHP_DIR)/$(PHP_LIB).h; \ | ||||
| 		echo "	zend_hash_str_add(index, \""$$f"\", sizeof(\""$$f"\")-1, &val);"							>> $(PHP_DIR)/$(PHP_LIB).h; \ | ||||
| 	done; | ||||
| 	@echo "}"																								>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "static inline void php_$(PHP_LIB)_include(HashTable *index, HashTable *includes, \ | ||||
| 					char *path, size_t len, zval *retval) {"												>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "	zend_string *key = zend_string_init(path, len, 0);"												>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "	zval *code = zend_hash_find(index, key);"														>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "	if (code && !zend_hash_exists(includes, key)) {"												>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "		zend_string *prepared = zend_string_alloc(Z_STRLEN_P(code) + (sizeof(\";\")-1), 0);"		>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo																									>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "		memcpy(&ZSTR_VAL(prepared)[0], \";\", sizeof(\";\")-1);"									>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "		if (Z_STRLEN_P(code) > (sizeof(\"<?php\") -1) && "											>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "			memcmp(Z_STRVAL_P(code), \"<?php\", sizeof(\"<?php\")-1) == SUCCESS) {"					>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "				memcpy(&ZSTR_VAL(prepared)[1], &Z_STRVAL_P(code)[5], \ | ||||
| 							Z_STRLEN_P(code) - (sizeof(\"<?php\") - 1));"									>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "				ZSTR_LEN(prepared) -= (sizeof(\"<?php\") - 1);"										>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "				ZSTR_VAL(prepared)[ZSTR_LEN(prepared)] = 0;"										>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "		} else {"																					>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "			memcpy(&ZSTR_VAL(prepared)[1], Z_STRVAL_P(code), Z_STRLEN_P(code));"					>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "		}"																							>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "		zend_eval_stringl(ZSTR_VAL(prepared), ZSTR_LEN(prepared), retval, path);"					>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "		zend_hash_add_empty_element(includes, key);"												>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "		zend_string_release(prepared);"																>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "	}"																								>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "	zend_string_release(key);"																		>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "}"																								>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "static inline void php_$(PHP_LIB)_shutdown(HashTable *index, HashTable *includes) {"				>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "	zend_hash_destroy(index);"																		>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "	zend_hash_destroy(includes);"																	>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "}"																								>> $(PHP_DIR)/$(PHP_LIB).h | ||||
| 	@echo "#endif"																							>> $(PHP_DIR)/$(PHP_LIB).h | ||||
		Reference in New Issue
	
	Block a user