123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- $_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;
- }
- }
- }
|