Browse Source
make install works now. So from now on taskrambler will not work when run from its build dir, because it can't find its assets then. To make installation work a basic config file reader class was implemented.
0.1.7
make install works now. So from now on taskrambler will not work when run from its build dir, because it can't find its assets then. To make installation work a basic config file reader class was implemented.
0.1.7
32 changed files with 618 additions and 47 deletions
-
55Makefile.am
-
19configure.ac
-
42include/config/config.h
-
55include/config/value.h
-
15src/Makefile.am
-
4src/application/Makefile.am
-
4src/asset/Makefile.am
-
4src/auth/Makefile.am
-
4src/cbuf/Makefile.am
-
4src/class/Makefile.am
-
11src/config/Makefile.am
-
122src/config/config.c
-
36src/config/get.c
-
100src/config/value.c
-
42src/configtest.c
-
4src/hash/Makefile.am
-
4src/http/Makefile.am
-
19src/http/worker/process.c
-
4src/logger/Makefile.am
-
4src/queue/Makefile.am
-
4src/server/Makefile.am
-
4src/session/Makefile.am
-
4src/socket/Makefile.am
-
3src/socket/listen.c
-
4src/storage/Makefile.am
-
4src/stream/Makefile.am
-
45src/taskrambler.c
-
23src/testconfig.cfg
-
4src/tree/Makefile.am
-
4src/user/Makefile.am
-
6src/utils/daemonize.c
-
4src/utils/mime_type.c
@ -0,0 +1,42 @@ |
|||||
|
/** |
||||
|
* \file |
||||
|
* |
||||
|
* \author Georg Hopp |
||||
|
* |
||||
|
* \copyright |
||||
|
* Copyright © 2012 Georg Hopp |
||||
|
* |
||||
|
* This program is free software: you can redistribute it and/or modify |
||||
|
* it under the terms of the GNU General Public License as published by |
||||
|
* the Free Software Foundation, either version 3 of the License, or |
||||
|
* (at your option) any later version. |
||||
|
* |
||||
|
* This program is distributed in the hope that it will be useful, |
||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
* GNU General Public License for more details. |
||||
|
* |
||||
|
* You should have received a copy of the GNU General Public License |
||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
|
*/ |
||||
|
|
||||
|
#ifndef __CONFIG_H__ |
||||
|
#define __CONFIG_H__ |
||||
|
|
||||
|
#include "hash.h" |
||||
|
#include "class.h" |
||||
|
#include "config/value.h" |
||||
|
|
||||
|
#define MAX_CONFIG_LINE 256 |
||||
|
|
||||
|
|
||||
|
CLASS(Config) { |
||||
|
char * cnf_file; |
||||
|
Hash config; |
||||
|
}; |
||||
|
|
||||
|
ConfigValue configGet(Config, const char *, size_t); |
||||
|
|
||||
|
#endif // __CONFIG_H__ |
||||
|
|
||||
|
// vim: set ts=4 sw=4: |
||||
@ -0,0 +1,55 @@ |
|||||
|
/** |
||||
|
* \file |
||||
|
* |
||||
|
* \author Georg Hopp |
||||
|
* |
||||
|
* \copyright |
||||
|
* Copyright © 2012 Georg Hopp |
||||
|
* |
||||
|
* This program is free software: you can redistribute it and/or modify |
||||
|
* it under the terms of the GNU General Public License as published by |
||||
|
* the Free Software Foundation, either version 3 of the License, or |
||||
|
* (at your option) any later version. |
||||
|
* |
||||
|
* This program is distributed in the hope that it will be useful, |
||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
* GNU General Public License for more details. |
||||
|
* |
||||
|
* You should have received a copy of the GNU General Public License |
||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
|
*/ |
||||
|
|
||||
|
#ifndef __CONFIG_VALUE_H__ |
||||
|
#define __CONFIG_VALUE_H__ |
||||
|
|
||||
|
#include <sys/types.h> |
||||
|
|
||||
|
#include "hash.h" |
||||
|
#include "class.h" |
||||
|
|
||||
|
#define MAX_CONFIG_LINE 256 |
||||
|
|
||||
|
#define CONFSTRA(val) ((val)->value).string, (val)->nvalue |
||||
|
|
||||
|
|
||||
|
typedef enum e_ConfigValueType { |
||||
|
CONFIG_VALUE_NUMERIC = 0, |
||||
|
CONFIG_VALUE_STRING = 1 |
||||
|
} ConfigValueType; |
||||
|
|
||||
|
CLASS(ConfigValue) { |
||||
|
union { |
||||
|
char * string; |
||||
|
long long number; |
||||
|
} value; |
||||
|
|
||||
|
size_t nvalue; |
||||
|
ConfigValueType type; |
||||
|
|
||||
|
unsigned long hash; |
||||
|
}; |
||||
|
|
||||
|
#endif // __CONFIG_VALUE_H__ |
||||
|
|
||||
|
// vim: set ts=4 sw=4: |
||||
@ -1,7 +1,9 @@ |
|||||
ACLOCAL_AMFLAGS = -I m4 |
ACLOCAL_AMFLAGS = -I m4 |
||||
AUTOMAKE_OPTIONS = subdir-objects |
AUTOMAKE_OPTIONS = subdir-objects |
||||
|
|
||||
|
AM_CFLAGS += -I../../include/ |
||||
|
|
||||
noinst_LIBRARIES = libasset.a |
noinst_LIBRARIES = libasset.a |
||||
|
|
||||
libasset_a_SOURCES = asset.c pool.c |
libasset_a_SOURCES = asset.c pool.c |
||||
libasset_a_CFLAGS = $(CFLAGS) $(DRAGONEGG_FLAGS) -Wall -I ../../include/ |
|
||||
|
libasset_a_CFLAGS = $(AM_CFLAGS) |
||||
@ -1,7 +1,9 @@ |
|||||
ACLOCAL_AMFLAGS = -I m4 |
ACLOCAL_AMFLAGS = -I m4 |
||||
AUTOMAKE_OPTIONS = subdir-objects |
AUTOMAKE_OPTIONS = subdir-objects |
||||
|
|
||||
|
AM_CFLAGS += -I../../include/ |
||||
|
|
||||
noinst_LIBRARIES = libclass.a |
noinst_LIBRARIES = libclass.a |
||||
|
|
||||
libclass_a_SOURCES = interface.c interface/i_class.c |
libclass_a_SOURCES = interface.c interface/i_class.c |
||||
libclass_a_CFLAGS = $(CFLAGS) $(DRAGONEGG_FLAGS) -Wall -I ../../include/ |
|
||||
|
libclass_a_CFLAGS = $(AM_CFLAGS) |
||||
@ -0,0 +1,11 @@ |
|||||
|
ACLOCAL_AMFLAGS = -I m4 |
||||
|
AUTOMAKE_OPTIONS = subdir-objects |
||||
|
|
||||
|
CONFIG = config.c value.c get.c |
||||
|
|
||||
|
AM_CFLAGS += -I../../include/ |
||||
|
|
||||
|
noinst_LIBRARIES = libconfig.a |
||||
|
|
||||
|
libconfig_a_SOURCES = $(CONFIG) |
||||
|
libconfig_a_CFLAGS = $(AM_CFLAGS) |
||||
@ -0,0 +1,122 @@ |
|||||
|
/** |
||||
|
* \file |
||||
|
* |
||||
|
* \author Georg Hopp |
||||
|
* |
||||
|
* \copyright |
||||
|
* Copyright © 2012 Georg Hopp |
||||
|
* |
||||
|
* This program is free software: you can redistribute it and/or modify |
||||
|
* it under the terms of the GNU General Public License as published by |
||||
|
* the Free Software Foundation, either version 3 of the License, or |
||||
|
* (at your option) any later version. |
||||
|
* |
||||
|
* This program is distributed in the hope that it will be useful, |
||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
* GNU General Public License for more details. |
||||
|
* |
||||
|
* You should have received a copy of the GNU General Public License |
||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
|
*/ |
||||
|
|
||||
|
#include <stdarg.h> |
||||
|
#include <string.h> |
||||
|
#include <stdio.h> |
||||
|
#include <ctype.h> |
||||
|
#include <sys/types.h> |
||||
|
|
||||
|
#include "class.h" |
||||
|
#include "config/config.h" |
||||
|
#include "config/value.h" |
||||
|
#include "utils/memory.h" |
||||
|
|
||||
|
static |
||||
|
int |
||||
|
configCtor(void * _this, va_list * params) |
||||
|
{ |
||||
|
Config this = _this; |
||||
|
|
||||
|
FILE * handle; |
||||
|
char line[MAX_CONFIG_LINE]; |
||||
|
char * cnf_file = va_arg(*params, char *); |
||||
|
size_t ncnf_file = strlen(cnf_file); |
||||
|
|
||||
|
this->cnf_file = memMalloc(ncnf_file + 1); |
||||
|
memcpy(this->cnf_file, cnf_file, ncnf_file); |
||||
|
this->cnf_file[ncnf_file] = '\0'; |
||||
|
|
||||
|
handle = fopen(this->cnf_file, "r"); |
||||
|
if (NULL == handle) { |
||||
|
MEM_FREE(this->cnf_file); |
||||
|
return -1; |
||||
|
} |
||||
|
|
||||
|
this->config = new(Hash); |
||||
|
|
||||
|
line[MAX_CONFIG_LINE] = '\0'; |
||||
|
|
||||
|
while(NULL != fgets(line, MAX_CONFIG_LINE, handle)) { |
||||
|
char * key = line; |
||||
|
size_t nkey = 0; |
||||
|
size_t nvalue = 0; |
||||
|
size_t nspaces = 0; |
||||
|
char * value; |
||||
|
|
||||
|
while (isspace(*key)) { |
||||
|
key++; |
||||
|
} |
||||
|
|
||||
|
if ('#' == *key) { |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
while (! isspace(key[nkey])) { |
||||
|
nkey++; |
||||
|
} |
||||
|
|
||||
|
value = &(key[nkey+1]); |
||||
|
while (isspace(*value)) { |
||||
|
value++; |
||||
|
} |
||||
|
|
||||
|
while ('\0' != value[nvalue+nspaces] |
||||
|
&& '\n' != value[nvalue+nspaces]) |
||||
|
{ |
||||
|
if (isspace(value[nvalue+nspaces])) { |
||||
|
nspaces++; |
||||
|
} else { |
||||
|
if (0 != nspaces) { |
||||
|
nvalue += nspaces; |
||||
|
nspaces = 0; |
||||
|
} |
||||
|
nvalue++; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
value[nvalue] = '\0'; |
||||
|
|
||||
|
if (0 != nkey && 0 != nvalue) { |
||||
|
hashAdd( |
||||
|
this->config, |
||||
|
new(ConfigValue, key, nkey, value, nvalue)); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
fclose(handle); |
||||
|
|
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
static void configDtor(void * _this) |
||||
|
{ |
||||
|
Config this = _this; |
||||
|
|
||||
|
MEM_FREE(this->cnf_file); |
||||
|
delete(this->config); |
||||
|
} |
||||
|
|
||||
|
INIT_IFACE(Class, configCtor, configDtor, NULL); |
||||
|
CREATE_CLASS(Config, NULL, IFACE(Class)); |
||||
|
|
||||
|
// vim: set ts=4 sw=4: |
||||
@ -0,0 +1,36 @@ |
|||||
|
/** |
||||
|
* \file |
||||
|
* |
||||
|
* \author Georg Hopp |
||||
|
* |
||||
|
* \copyright |
||||
|
* Copyright © 2012 Georg Hopp |
||||
|
* |
||||
|
* This program is free software: you can redistribute it and/or modify |
||||
|
* it under the terms of the GNU General Public License as published by |
||||
|
* the Free Software Foundation, either version 3 of the License, or |
||||
|
* (at your option) any later version. |
||||
|
* |
||||
|
* This program is distributed in the hope that it will be useful, |
||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
* GNU General Public License for more details. |
||||
|
* |
||||
|
* You should have received a copy of the GNU General Public License |
||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
|
*/ |
||||
|
|
||||
|
#include <sys/types.h> |
||||
|
|
||||
|
#include "class.h" |
||||
|
#include "hash/hash.h" |
||||
|
#include "config/config.h" |
||||
|
#include "config/value.h" |
||||
|
|
||||
|
ConfigValue |
||||
|
configGet(Config this, const char * key, size_t nkey) |
||||
|
{ |
||||
|
return hashGet(this->config, key, nkey); |
||||
|
} |
||||
|
|
||||
|
// vim: set ts=4 sw=4: |
||||
@ -0,0 +1,100 @@ |
|||||
|
/** |
||||
|
* \file |
||||
|
* |
||||
|
* \author Georg Hopp |
||||
|
* |
||||
|
* \copyright |
||||
|
* Copyright © 2012 Georg Hopp |
||||
|
* |
||||
|
* This program is free software: you can redistribute it and/or modify |
||||
|
* it under the terms of the GNU General Public License as published by |
||||
|
* the Free Software Foundation, either version 3 of the License, or |
||||
|
* (at your option) any later version. |
||||
|
* |
||||
|
* This program is distributed in the hope that it will be useful, |
||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
* GNU General Public License for more details. |
||||
|
* |
||||
|
* You should have received a copy of the GNU General Public License |
||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
|
*/ |
||||
|
|
||||
|
#include <stdarg.h> |
||||
|
#include <stdlib.h> |
||||
|
#include <string.h> |
||||
|
#include <sys/types.h> |
||||
|
|
||||
|
#include "class.h" |
||||
|
#include "config/value.h" |
||||
|
#include "utils/memory.h" |
||||
|
#include "utils/hash.h" |
||||
|
|
||||
|
static |
||||
|
int |
||||
|
configValueCtor(void * _this, va_list * params) |
||||
|
{ |
||||
|
ConfigValue this = _this; |
||||
|
|
||||
|
char * key = va_arg(*params, char *); |
||||
|
size_t nkey = va_arg(*params, size_t); |
||||
|
char * value = va_arg(*params, char *); |
||||
|
size_t nvalue = va_arg(*params, size_t); |
||||
|
|
||||
|
this->hash = sdbm((unsigned char *)key, nkey); |
||||
|
|
||||
|
/** |
||||
|
* if we find the value enclosed by single or double |
||||
|
* quotes we take it as a string, else we take it |
||||
|
* as a numeric which is treated as a long long |
||||
|
* right now. |
||||
|
*/ |
||||
|
if (('"' == value[0] && '"' == value[nvalue-1]) |
||||
|
|| ('\'' == value[0] && '\'' == value[nvalue-1])) |
||||
|
{ |
||||
|
this->type = CONFIG_VALUE_STRING; |
||||
|
(this->value).string = memMalloc(nvalue-1); |
||||
|
(this->value).string[nvalue-1] = '\0'; |
||||
|
memcpy((this->value).string, value+1, nvalue-2); |
||||
|
this->nvalue = nvalue; |
||||
|
} else { |
||||
|
this->type = CONFIG_VALUE_NUMERIC; |
||||
|
(this->value).number = atoll(value); |
||||
|
this->nvalue = sizeof(long long); |
||||
|
} |
||||
|
|
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
static |
||||
|
void |
||||
|
configValueDtor(void * _this) |
||||
|
{ |
||||
|
ConfigValue this = _this; |
||||
|
|
||||
|
if (CONFIG_VALUE_STRING == this->type) { |
||||
|
MEM_FREE((this->value).string); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
static |
||||
|
unsigned long |
||||
|
configValueGetHash(void * _this) |
||||
|
{ |
||||
|
ConfigValue this = _this; |
||||
|
|
||||
|
return this->hash; |
||||
|
} |
||||
|
|
||||
|
static |
||||
|
void |
||||
|
configValueHandleDouble(void * _this, void * _double) |
||||
|
{ |
||||
|
/* right now I do nothing...but I could :D */ |
||||
|
} |
||||
|
|
||||
|
INIT_IFACE(Class, configValueCtor, configValueDtor, NULL); |
||||
|
INIT_IFACE(Hashable, configValueGetHash, configValueHandleDouble); |
||||
|
CREATE_CLASS(ConfigValue, NULL, IFACE(Class), IFACE(Hashable)); |
||||
|
|
||||
|
// vim: set ts=4 sw=4: |
||||
@ -0,0 +1,42 @@ |
|||||
|
#include <stdio.h> |
||||
|
|
||||
|
#include "class.h" |
||||
|
#include "commons.h" |
||||
|
#include "config/config.h" |
||||
|
#include "config/value.h" |
||||
|
#include "utils/memory.h" |
||||
|
|
||||
|
int |
||||
|
main(int argc, char * argv[]) |
||||
|
{ |
||||
|
Config config = new(Config, "./testconfig.cfg"); |
||||
|
ConfigValue val; |
||||
|
|
||||
|
val = configGet(config, CSTRA("dummy")); |
||||
|
|
||||
|
if (NULL != val) { |
||||
|
switch (val->type) { |
||||
|
case CONFIG_VALUE_STRING: |
||||
|
printf( |
||||
|
"Value for dummy: (STRING): %s\n", |
||||
|
(val->value).string); |
||||
|
break; |
||||
|
|
||||
|
case CONFIG_VALUE_NUMERIC: |
||||
|
printf( |
||||
|
"Value for dummy: (NUMERIC): %lld\n", |
||||
|
(val->value).number); |
||||
|
break; |
||||
|
|
||||
|
default: |
||||
|
printf("Invalid config...that should never happen\n"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
delete(config); |
||||
|
memCleanup(); |
||||
|
|
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
// vim: set et ts=4 sw=4: |
||||
@ -1,7 +1,9 @@ |
|||||
ACLOCAL_AMFLAGS = -I m4 |
ACLOCAL_AMFLAGS = -I m4 |
||||
AUTOMAKE_OPTIONS = subdir-objects |
AUTOMAKE_OPTIONS = subdir-objects |
||||
|
|
||||
|
AM_CFLAGS += -I../../include/ |
||||
|
|
||||
noinst_LIBRARIES = liblogger.a |
noinst_LIBRARIES = liblogger.a |
||||
|
|
||||
liblogger_a_SOURCES = interface/i_logger.c logger.c stderr.c syslog.c |
liblogger_a_SOURCES = interface/i_logger.c logger.c stderr.c syslog.c |
||||
liblogger_a_CFLAGS = $(CFLAGS) $(DRAGONEGG_FLAGS) -Wall -I ../../include/ |
|
||||
|
liblogger_a_CFLAGS = $(AM_CFLAGS) |
||||
@ -1,7 +1,9 @@ |
|||||
ACLOCAL_AMFLAGS = -I m4 |
ACLOCAL_AMFLAGS = -I m4 |
||||
AUTOMAKE_OPTIONS = subdir-objects |
AUTOMAKE_OPTIONS = subdir-objects |
||||
|
|
||||
|
AM_CFLAGS += -I../../include/ |
||||
|
|
||||
noinst_LIBRARIES = libqueue.a |
noinst_LIBRARIES = libqueue.a |
||||
|
|
||||
libqueue_a_SOURCES = queue.c get.c put.c |
libqueue_a_SOURCES = queue.c get.c put.c |
||||
libqueue_a_CFLAGS = $(CFLAGS) $(DRAGONEGG_FLAGS) -Wall -I ../../include/ |
|
||||
|
libqueue_a_CFLAGS = $(AM_CFLAGS) |
||||
@ -1,7 +1,9 @@ |
|||||
ACLOCAL_AMFLAGS = -I m4 |
ACLOCAL_AMFLAGS = -I m4 |
||||
AUTOMAKE_OPTIONS = subdir-objects |
AUTOMAKE_OPTIONS = subdir-objects |
||||
|
|
||||
|
AM_CFLAGS += -I../../include/ |
||||
|
|
||||
noinst_LIBRARIES = libsession.a |
noinst_LIBRARIES = libsession.a |
||||
|
|
||||
libsession_a_SOURCES = session.c |
libsession_a_SOURCES = session.c |
||||
libsession_a_CFLAGS = $(CFLAGS) $(DRAGONEGG_FLAGS) -Wall -I ../../include/ |
|
||||
|
libsession_a_CFLAGS = $(AM_CFLAGS) |
||||
@ -1,7 +1,9 @@ |
|||||
ACLOCAL_AMFLAGS = -I m4 |
ACLOCAL_AMFLAGS = -I m4 |
||||
AUTOMAKE_OPTIONS = subdir-objects |
AUTOMAKE_OPTIONS = subdir-objects |
||||
|
|
||||
|
AM_CFLAGS += -I../../include/ |
||||
|
|
||||
noinst_LIBRARIES = libsocket.a |
noinst_LIBRARIES = libsocket.a |
||||
|
|
||||
libsocket_a_SOURCES = socket.c accept.c connect.c listen.c nonblock.c |
libsocket_a_SOURCES = socket.c accept.c connect.c listen.c nonblock.c |
||||
libsocket_a_CFLAGS = $(CFLAGS) $(DRAGONEGG_FLAGS) -Wall -I ../../include/ |
|
||||
|
libsocket_a_CFLAGS = $(AM_CFLAGS) |
||||
@ -1,7 +1,9 @@ |
|||||
ACLOCAL_AMFLAGS = -I m4 |
ACLOCAL_AMFLAGS = -I m4 |
||||
AUTOMAKE_OPTIONS = subdir-objects |
AUTOMAKE_OPTIONS = subdir-objects |
||||
|
|
||||
|
AM_CFLAGS += -I../../include/ |
||||
|
|
||||
noinst_LIBRARIES = libstorage.a |
noinst_LIBRARIES = libstorage.a |
||||
|
|
||||
libstorage_a_SOURCES = storage.c get.c put.c update.c |
libstorage_a_SOURCES = storage.c get.c put.c update.c |
||||
libstorage_a_CFLAGS = $(CFLAGS) $(DRAGONEGG_FLAGS) -Wall -I ../../include/ |
|
||||
|
libstorage_a_CFLAGS = $(AM_CFLAGS) |
||||
@ -0,0 +1,23 @@ |
|||||
|
## |
||||
|
# basic configuration file for taskrambler |
||||
|
# |
||||
|
# syntax: <ws><key><ws><value><ws> |
||||
|
# |
||||
|
# <ws> ::= any whitespace as defined by isspace |
||||
|
# <key> ::= any character except whitespace |
||||
|
# <value> ::= <string> | <number> |
||||
|
# <string> ::= <quote>any character<quote> |
||||
|
# <quote> ::= " | ' |
||||
|
# <number> ::= <digit><number> |
||||
|
# <digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
||||
|
# |
||||
|
# Whitespaces at the beginning or the end of a line are |
||||
|
# ignored. |
||||
|
# everything after a # is ignored. |
||||
|
# |
||||
|
|
||||
|
ldap_base "ou=user,dc=yabrog,dc=weird-web-workers,dc=org" |
||||
|
ldap_host "ldap://hosted/" |
||||
|
assets_dir "/usr/local/var/lib/taskrambler" |
||||
|
runtime_dir "/usr/local/var/run/taskrambler" |
||||
|
port 11212 |
||||
@ -1,7 +1,9 @@ |
|||||
ACLOCAL_AMFLAGS = -I m4 |
ACLOCAL_AMFLAGS = -I m4 |
||||
AUTOMAKE_OPTIONS = subdir-objects |
AUTOMAKE_OPTIONS = subdir-objects |
||||
|
|
||||
|
AM_CFLAGS += -I../../include/ |
||||
|
|
||||
noinst_LIBRARIES = libuser.a |
noinst_LIBRARIES = libuser.a |
||||
|
|
||||
libuser_a_SOURCES = user.c load.c save.c |
libuser_a_SOURCES = user.c load.c save.c |
||||
libuser_a_CFLAGS = $(CFLAGS) $(DRAGONEGG_FLAGS) -Wall -I ../../include/ |
|
||||
|
libuser_a_CFLAGS = $(AM_CFLAGS) |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue