|
@@ -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;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|