|  | @@ -0,0 +1,75 @@
 | 
	
		
			
				|  |  | +$_CC = defined("CC")? CC: "cc";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$_CFLAGS = array();
 | 
	
		
			
				|  |  | +$_LDFLAGS = array();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$_SOURCES = array();
 | 
	
		
			
				|  |  | +$_OBJECTS = array();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$_OUT = defined("OUT")? OUT: defined("OUTPUT")? OUTPUT: "out";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if (defined("CFLAGS"))
 | 
	
		
			
				|  |  | +  $_CFLAGS = arrcat($_CFLAGS, words(CFLAGS));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if (defined("LDFLAGS"))
 | 
	
		
			
				|  |  | +  $_LDFLAGS = arrcat($_LDFLAGS, words(LDFLAGS));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +function pkg_config() {
 | 
	
		
			
				|  |  | +  global $_CFLAGS, $_LDFLAGS;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  foreach (getargs(), $name) {
 | 
	
		
			
				|  |  | +    $_CFLAGS = arrcat($_CFLAGS, words(rtrim(`pkg-config --cflags $name`)));
 | 
	
		
			
				|  |  | +    $_LDFLAGS = arrcat($_LDFLAGS, words(rtrim(`pkg-config --libs $name`)));
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +function sources() {
 | 
	
		
			
				|  |  | +  global $_SOURCES;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  foreach (getargs(), $source) {
 | 
	
		
			
				|  |  | +    if (!isarray($source))
 | 
	
		
			
				|  |  | +      $source = words($source);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    $_SOURCES = arrcat($_SOURCES, $source);  
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +function flags() {
 | 
	
		
			
				|  |  | +  global $_CFLAGS;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  foreach (getargs(), $flag) {
 | 
	
		
			
				|  |  | +    if (!isarray($flag))
 | 
	
		
			
				|  |  | +      $flag = words($flag);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    $_CFLAGS = arrcat($_CFLAGS, $flag);  
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +function compile() {
 | 
	
		
			
				|  |  | +  global $_CC, $_CFLAGS, $_SOURCES, $_OBJECTS;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  foreach ($_SOURCES, $source) {
 | 
	
		
			
				|  |  | +    $object = replace($source, ".c", ".o");
 | 
	
		
			
				|  |  | +    $cflags = unwords($_CFLAGS);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if (!isfile($object) || mtime($source) > mtime($object))
 | 
	
		
			
				|  |  | +      `$_CC $cflags -c $source`;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    push($_OBJECTS, $object);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +function link() {
 | 
	
		
			
				|  |  | +  global $_CC, $_LDFLAGS, $_OBJECTS, $_OUT;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  foreach ($_OBJECTS, $object) {
 | 
	
		
			
				|  |  | +    if (!isfile($_OUT) || mtime($_OUT) < mtime($object)) {
 | 
	
		
			
				|  |  | +      $objects = unwords($_OBJECTS);
 | 
	
		
			
				|  |  | +      $ldflags = unwords($_LDFLAGS);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      `$_CC $ldflags $objects -o $_OUT`;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      break;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 |