]> sourceware.org Git - lvm2.git/commitdiff
dmeventd
authorAlasdair Kergon <agk@redhat.com>
Tue, 4 Nov 2008 15:55:27 +0000 (15:55 +0000)
committerAlasdair Kergon <agk@redhat.com>
Tue, 4 Nov 2008 15:55:27 +0000 (15:55 +0000)
Makefile.in
daemons/Makefile.in
daemons/dmeventd/Makefile.in
dmeventd/Makefile.in [deleted file]
dmeventd/mirror/.exported_symbols [deleted file]
dmeventd/mirror/Makefile.in [deleted file]
dmeventd/mirror/dmeventd_mirror.c [deleted file]
dmeventd/snapshot/.exported_symbols [deleted file]
dmeventd/snapshot/Makefile.in [deleted file]
dmeventd/snapshot/dmeventd_snapshot.c [deleted file]
make.tmpl.in

index 0740f77c4d4471f4435e02ef7ad839c8ed1f6b15..5196e7bc121909287e2298a0d93763bbd3452a49 100644 (file)
@@ -43,13 +43,13 @@ include make.tmpl
 libdm: include
 lib: libdm
 daemons: lib
-tools: lib
+tools: lib device-mapper
 po: tools daemons
 
 libdm.device-mapper: include.device-mapper
 daemons.device-mapper: libdm.device-mapper
 tools.device-mapper: libdm.device-mapper
-device-mapper: tools.device-mapper daemons.device-mapper
+device-mapper: tools.device-mapper daemons.device-mapper man.device-mapper
 
 ifeq ("@INTL@", "yes")
 lib.pofile: include.pofile
index adc9cab088e3496daa79f8e12457331382051347..766469e154f3c34ac974d673d88177fc46f0be8d 100644 (file)
@@ -15,6 +15,8 @@ srcdir = @srcdir@
 top_srcdir = @top_srcdir@
 VPATH = @srcdir@
 
+.PHONY: dmeventd clvmd
+
 ifneq ("@CLVMD@", "none")
   SUBDIRS = clvmd
 endif
@@ -23,7 +25,6 @@ ifeq ("@DMEVENTD@", "yes")
   SUBDIRS += dmeventd
 endif
 
-device-mapper: dmeventd
-
 include $(top_srcdir)/make.tmpl
 
+device-mapper: dmeventd.device-mapper
index 9516700616afcb8fb7e62df4098d3e5e0dee5400..7a91d7784ccaa664529b42016b9ce3c154fd0ded 100644 (file)
@@ -37,6 +37,7 @@ endif
 include $(top_srcdir)/make.tmpl
 
 all: dmeventd
+device-mapper: dmeventd
 
 LDFLAGS += -ldl -ldevmapper -lpthread
 CLDFLAGS += -ldl -ldevmapper -lpthread
diff --git a/dmeventd/Makefile.in b/dmeventd/Makefile.in
deleted file mode 100644 (file)
index 7fe9dc8..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
-# Copyright (C) 2004-2005 Red Hat, Inc. All rights reserved.
-#
-# This file is part of LVM2.
-#
-# This copyrighted material is made available to anyone wishing to use,
-# modify, copy, or redistribute it subject to the terms and conditions
-# of the GNU General Public License v.2.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-
-SUBDIRS += mirror snapshot
-
-include $(top_srcdir)/make.tmpl
-
diff --git a/dmeventd/mirror/.exported_symbols b/dmeventd/mirror/.exported_symbols
deleted file mode 100644 (file)
index b88c705..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-process_event
-register_device
-unregister_device
diff --git a/dmeventd/mirror/Makefile.in b/dmeventd/mirror/Makefile.in
deleted file mode 100644 (file)
index 68c15c8..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
-# Copyright (C) 2004-2005, 2008 Red Hat, Inc. All rights reserved.
-#
-# This file is part of LVM2.
-#
-# This copyrighted material is made available to anyone wishing to use,
-# modify, copy, or redistribute it subject to the terms and conditions
-# of the GNU General Public License v.2.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-
-INCLUDES += -I${top_srcdir}/tools
-CLDFLAGS += -L${top_srcdir}/tools -ldevmapper @LVM2CMD_LIB@
-
-SOURCES = dmeventd_mirror.c
-
-ifeq ("@LIB_SUFFIX@","dylib")
-  LIB_SHARED = libdevmapper-event-lvm2mirror.dylib
-else
-  LIB_SHARED = libdevmapper-event-lvm2mirror.so
-endif
-
-include $(top_srcdir)/make.tmpl
-
-install: libdevmapper-event-lvm2mirror.$(LIB_SUFFIX)
-       $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
-               $(libdir)/$<.$(LIB_VERSION)
-       $(LN_S) -f $<.$(LIB_VERSION) $(libdir)/$<
diff --git a/dmeventd/mirror/dmeventd_mirror.c b/dmeventd/mirror/dmeventd_mirror.c
deleted file mode 100644 (file)
index fc610ae..0000000
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Copyright (C) 2005 Red Hat, Inc. All rights reserved.
- *
- * This file is part of LVM2.
- *
- * This copyrighted material is made available to anyone wishing to use,
- * modify, copy, or redistribute it subject to the terms and conditions
- * of the GNU Lesser General Public License v.2.1.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "lvm2cmd.h"
-
-#include <libdevmapper.h>
-#include <libdevmapper-event.h>
-#include <errno.h>
-#include <signal.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <pthread.h>
-#include <unistd.h>
-
-#include <syslog.h> /* FIXME Replace syslog with multilog */
-/* FIXME Missing openlog? */
-
-#define ME_IGNORE    0
-#define ME_INSYNC    1
-#define ME_FAILURE   2
-
-/*
- * register_device() is called first and performs initialisation.
- * Only one device may be registered or unregistered at a time.
- */
-static pthread_mutex_t _register_mutex = PTHREAD_MUTEX_INITIALIZER;
-
-/*
- * Number of active registrations.
- */
-static int _register_count = 0;
-
-static struct dm_pool *_mem_pool = NULL;
-static void *_lvm_handle = NULL;
-
-/*
- * Currently only one event can be processed at a time.
- */
-static pthread_mutex_t _event_mutex = PTHREAD_MUTEX_INITIALIZER;
-
-static int _get_mirror_event(char *params)
-{
-       int i, r = ME_INSYNC;
-       char **args = NULL;
-       char *dev_status_str;
-       char *log_status_str;
-       char *sync_str;
-       char *p = NULL;
-       int log_argc, num_devs;
-
-       /*
-        * dm core parms:            0 409600 mirror
-        * Mirror core parms:        2 253:4 253:5 400/400
-        * New-style failure params: 1 AA
-        * New-style log params:     3 cluster 253:3 A
-        *                       or  3 disk 253:3 A
-        *                       or  1 core
-        */
-
-       /* number of devices */
-       if (!dm_split_words(params, 1, 0, &p))
-               goto out_parse;
-
-       if (!(num_devs = atoi(p)))
-               goto out_parse;
-       p += strlen(p) + 1;
-
-       /* devices names + "400/400" + "1 AA" + 1 or 3 log parms + NULL */
-       args = dm_malloc((num_devs + 7) * sizeof(char *));
-       if (!args || dm_split_words(p, num_devs + 7, 0, args) < num_devs + 5)
-               goto out_parse;
-
-       dev_status_str = args[2 + num_devs];
-       log_argc = atoi(args[3 + num_devs]);
-       log_status_str = args[3 + num_devs + log_argc];
-       sync_str = args[num_devs];
-
-       /* Check for bad mirror devices */
-       for (i = 0; i < num_devs; i++)
-               if (dev_status_str[i] == 'D') {
-                       syslog(LOG_ERR, "Mirror device, %s, has failed.\n", args[i]);
-                       r = ME_FAILURE;
-               }
-
-       /* Check for bad disk log device */
-       if (log_argc > 1 && log_status_str[0] == 'D') {
-               syslog(LOG_ERR, "Log device, %s, has failed.\n",
-                      args[2 + num_devs + log_argc]);
-               r = ME_FAILURE;
-       }
-
-       if (r == ME_FAILURE)
-               goto out;
-
-       p = strstr(sync_str, "/");
-       if (p) {
-               p[0] = '\0';
-               if (strcmp(sync_str, p+1))
-                       r = ME_IGNORE;
-               p[0] = '/';
-       } else
-               goto out_parse;
-
-out:
-       if (args)
-               dm_free(args);
-       return r;
-       
-out_parse:
-       if (args)
-               dm_free(args);
-       syslog(LOG_ERR, "Unable to parse mirror status string.");
-       return ME_IGNORE;
-}
-
-static void _temporary_log_fn(int level, const char *file __attribute((unused)),
-                             int line __attribute((unused)),
-                             const char *format)
-{
-       if (!strncmp(format, "WARNING: ", 9) && (level < 5))
-               syslog(LOG_CRIT, "%s", format);
-       else
-               syslog(LOG_DEBUG, "%s", format);
-}
-
-static int _remove_failed_devices(const char *device)
-{
-       int r;
-#define CMD_SIZE 256   /* FIXME Use system restriction */
-       char cmd_str[CMD_SIZE];
-       char *vg = NULL, *lv = NULL, *layer = NULL;
-
-       if (strlen(device) > 200)  /* FIXME Use real restriction */
-               return -ENAMETOOLONG;   /* FIXME These return code distinctions are not used so remove them! */
-
-       if (!dm_split_lvm_name(_mem_pool, device, &vg, &lv, &layer)) {
-               syslog(LOG_ERR, "Unable to determine VG name from %s",
-                      device);
-               return -ENOMEM; /* FIXME Replace with generic error return - reason for failure has already got logged */
-       }
-
-       /* FIXME Is any sanity-checking required on %s? */
-       if (CMD_SIZE <= snprintf(cmd_str, CMD_SIZE, "vgreduce --config devices{ignore_suspended_devices=1} --removemissing --force %s", vg)) {
-               /* this error should be caught above, but doesn't hurt to check again */
-               syslog(LOG_ERR, "Unable to form LVM command: Device name too long");
-               dm_pool_empty(_mem_pool);  /* FIXME: not safe with multiple threads */
-               return -ENAMETOOLONG; /* FIXME Replace with generic error return - reason for failure has already got logged */
-       }
-
-       r = lvm2_run(_lvm_handle, cmd_str);
-
-       dm_pool_empty(_mem_pool);  /* FIXME: not safe with multiple threads */
-       return (r == 1) ? 0 : -1;
-}
-
-void process_event(struct dm_task *dmt,
-                  enum dm_event_mask event __attribute((unused)),
-                  void **unused __attribute((unused)))
-{
-       void *next = NULL;
-       uint64_t start, length;
-       char *target_type = NULL;
-       char *params;
-       const char *device = dm_task_get_name(dmt);
-
-       if (pthread_mutex_trylock(&_event_mutex)) {
-               syslog(LOG_NOTICE, "Another thread is handling an event.  Waiting...");
-               pthread_mutex_lock(&_event_mutex);
-       }
-       do {
-               next = dm_get_next_target(dmt, next, &start, &length,
-                                         &target_type, &params);
-
-               if (!target_type) {
-                       syslog(LOG_INFO, "%s mapping lost.\n", device);
-                       continue;
-               }
-
-               if (strcmp(target_type, "mirror")) {
-                       syslog(LOG_INFO, "%s has unmirrored portion.\n", device);
-                       continue;
-               }
-
-               switch(_get_mirror_event(params)) {
-               case ME_INSYNC:
-                       /* FIXME: all we really know is that this
-                          _part_ of the device is in sync
-                          Also, this is not an error
-                       */
-                       syslog(LOG_NOTICE, "%s is now in-sync\n", device);
-                       break;
-               case ME_FAILURE:
-                       syslog(LOG_ERR, "Device failure in %s\n", device);
-                       if (_remove_failed_devices(device))
-                               /* FIXME Why are all the error return codes unused? Get rid of them? */
-                               syslog(LOG_ERR, "Failed to remove faulty devices in %s\n",
-                                      device);
-                       /* Should check before warning user that device is now linear
-                       else
-                               syslog(LOG_NOTICE, "%s is now a linear device.\n",
-                                       device);
-                       */
-                       break;
-               case ME_IGNORE:
-                       break;
-               default:
-                       /* FIXME Provide value then! */
-                       syslog(LOG_INFO, "Unknown event received.\n");
-               }
-       } while (next);
-
-       pthread_mutex_unlock(&_event_mutex);
-}
-
-int register_device(const char *device,
-                   const char *uuid __attribute((unused)),
-                   int major __attribute((unused)),
-                   int minor __attribute((unused)),
-                   void **unused __attribute((unused)))
-{
-       int r = 0;
-
-       pthread_mutex_lock(&_register_mutex);
-
-       syslog(LOG_INFO, "Monitoring mirror device %s for events\n", device);
-
-       /*
-        * Need some space for allocations.  1024 should be more
-        * than enough for what we need (device mapper name splitting)
-        */
-       if (!_mem_pool && !(_mem_pool = dm_pool_create("mirror_dso", 1024)))
-               goto out;
-
-       if (!_lvm_handle) {
-               lvm2_log_fn(_temporary_log_fn);
-               if (!(_lvm_handle = lvm2_init())) {
-                       dm_pool_destroy(_mem_pool);
-                       _mem_pool = NULL;
-                       goto out;
-               }
-               lvm2_log_level(_lvm_handle, LVM2_LOG_SUPPRESS);
-               /* FIXME Temporary: move to dmeventd core */
-               lvm2_run(_lvm_handle, "_memlock_inc");
-       }
-
-       _register_count++;
-       r = 1;
-
-out:
-       pthread_mutex_unlock(&_register_mutex);
-
-       return r;
-}
-
-int unregister_device(const char *device,
-                     const char *uuid __attribute((unused)),
-                     int major __attribute((unused)),
-                     int minor __attribute((unused)),
-                     void **unused __attribute((unused)))
-{
-       pthread_mutex_lock(&_register_mutex);
-
-       syslog(LOG_INFO, "No longer monitoring mirror device %s for events\n",
-              device);
-
-       if (!--_register_count) {
-               dm_pool_destroy(_mem_pool);
-               _mem_pool = NULL;
-               lvm2_run(_lvm_handle, "_memlock_dec");
-               lvm2_exit(_lvm_handle);
-               _lvm_handle = NULL;
-       }
-
-       pthread_mutex_unlock(&_register_mutex);
-
-       return 1;
-}
diff --git a/dmeventd/snapshot/.exported_symbols b/dmeventd/snapshot/.exported_symbols
deleted file mode 100644 (file)
index b88c705..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-process_event
-register_device
-unregister_device
diff --git a/dmeventd/snapshot/Makefile.in b/dmeventd/snapshot/Makefile.in
deleted file mode 100644 (file)
index 48acbbd..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
-# Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved.
-#
-# This file is part of the LVM2.
-#
-# This copyrighted material is made available to anyone wishing to use,
-# modify, copy, or redistribute it subject to the terms and conditions
-# of the GNU General Public License v.2.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-
-INCLUDES += -I${top_srcdir}/tools
-CLDFLAGS += -L${top_srcdir}/tools -ldevmapper @LVM2CMD_LIB@
-
-SOURCES = dmeventd_snapshot.c
-
-ifeq ("@LIB_SUFFIX@","dylib")
-  LIB_SHARED = libdevmapper-event-lvm2snapshot.dylib
-else
-  LIB_SHARED = libdevmapper-event-lvm2snapshot.so
-endif
-
-include $(top_srcdir)/make.tmpl
-
-install: libdevmapper-event-lvm2snapshot.$(LIB_SUFFIX)
-       $(INSTALL) -D $(OWNER) $(GROUP) -m 555 $(STRIP) $< \
-               $(libdir)/$<.$(LIB_VERSION)
-       $(LN_S) -f $<.$(LIB_VERSION) $(libdir)/$<
diff --git a/dmeventd/snapshot/dmeventd_snapshot.c b/dmeventd/snapshot/dmeventd_snapshot.c
deleted file mode 100644 (file)
index 3e250af..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Copyright (C) 2007-2008 Red Hat, Inc. All rights reserved.
- *
- * This file is part of LVM2.
- *
- * This copyrighted material is made available to anyone wishing to use,
- * modify, copy, or redistribute it subject to the terms and conditions
- * of the GNU Lesser General Public License v.2.1.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "libdevmapper.h"
-#include "libdevmapper-event.h"
-#include "lvm2cmd.h"
-#include "lvm-string.h"
-
-#include <errno.h>
-#include <signal.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <pthread.h>
-#include <unistd.h>
-
-#include <syslog.h> /* FIXME Replace syslog with multilog */
-/* FIXME Missing openlog? */
-
-/* First warning when snapshot is 80% full. */
-#define WARNING_THRESH 80
-/* Further warnings at 85%, 90% and 95% fullness. */
-#define WARNING_STEP 5
-
-static pthread_mutex_t _register_mutex = PTHREAD_MUTEX_INITIALIZER;
-
-/*
- * Number of active registrations.
- */
-static int _register_count = 0;
-
-static struct dm_pool *_mem_pool = NULL;
-static void *_lvm_handle = NULL;
-
-struct snap_status {
-       int invalid;
-       int used;
-       int max;
-};
-
-/*
- * Currently only one event can be processed at a time.
- */
-static pthread_mutex_t _event_mutex = PTHREAD_MUTEX_INITIALIZER;
-
-static void _temporary_log_fn(int level,
-                             const char *file __attribute((unused)),
-                             int line __attribute((unused)),
-                             const char *format)
-{
-       if (!strncmp(format, "WARNING: ", 9) && (level < 5))
-               syslog(LOG_CRIT, "%s", format);
-       else
-               syslog(LOG_DEBUG, "%s", format);
-}
-
-/* FIXME possibly reconcile this with target_percent when we gain
-   access to regular LVM library here. */
-static void _parse_snapshot_params(char *params, struct snap_status *stat)
-{
-       char *p;
-       /*
-        * xx/xx        -- fractions used/max
-        * Invalid      -- snapshot invalidated
-        * Unknown      -- status unknown
-        */
-       stat->used = stat->max = 0;
-
-       if (!strncmp(params, "Invalid", 7)) {
-               stat->invalid = 1;
-               return;
-       }
-
-       /*
-        * When we return without setting non-zero max, the parent is
-        * responsible for reporting errors.
-        */
-       if (!strncmp(params, "Unknown", 7))
-               return;
-
-       if (!(p = strstr(params, "/")))
-               return;
-
-       *p = '\0';
-       p++;
-
-       stat->used = atoi(params);
-       stat->max = atoi(p);
-}
-
-void process_event(struct dm_task *dmt,
-                  enum dm_event_mask event __attribute((unused)),
-                  void **private)
-{
-       void *next = NULL;
-       uint64_t start, length;
-       char *target_type = NULL;
-       char *params;
-       struct snap_status stat = { 0 };
-       const char *device = dm_task_get_name(dmt);
-       int percent, *percent_warning = (int*)private;
-
-       /* No longer monitoring, waiting for remove */
-       if (!*percent_warning)
-               return;
-
-       if (pthread_mutex_trylock(&_event_mutex)) {
-               syslog(LOG_NOTICE, "Another thread is handling an event.  Waiting...");
-               pthread_mutex_lock(&_event_mutex);
-       }
-
-       dm_get_next_target(dmt, next, &start, &length, &target_type, &params);
-       if (!target_type)
-               goto out;
-
-       _parse_snapshot_params(params, &stat);
-       /*
-        * If the snapshot has been invalidated or we failed to parse
-        * the status string. Report the full status string to syslog.
-        */
-       if (stat.invalid || !stat.max) {
-               syslog(LOG_ERR, "Snapshot %s changed state to: %s\n", device, params);
-               *percent_warning = 0;
-               goto out;
-       }
-
-       percent = 100 * stat.used / stat.max;
-       if (percent >= *percent_warning) {
-               syslog(LOG_WARNING, "Snapshot %s is now %i%% full.\n", device, percent);
-               /* Print warning on the next multiple of WARNING_STEP. */
-               *percent_warning = (percent / WARNING_STEP) * WARNING_STEP + WARNING_STEP;
-       }
-out:
-       pthread_mutex_unlock(&_event_mutex);
-}
-
-int register_device(const char *device,
-                   const char *uuid __attribute((unused)),
-                   int major __attribute((unused)),
-                   int minor __attribute((unused)),
-                   void **private)
-{
-       int r = 0;
-       int *percent_warning = (int*)private;
-
-       pthread_mutex_lock(&_register_mutex);
-
-       /*
-        * Need some space for allocations.  1024 should be more
-        * than enough for what we need (device mapper name splitting)
-        */
-       if (!_mem_pool && !(_mem_pool = dm_pool_create("snapshot_dso", 1024)))
-               goto out;
-
-       *percent_warning = WARNING_THRESH; /* Print warning if snapshot is full */
-
-       if (!_lvm_handle) {
-               lvm2_log_fn(_temporary_log_fn);
-               if (!(_lvm_handle = lvm2_init())) {
-                       dm_pool_destroy(_mem_pool);
-                       _mem_pool = NULL;
-                       goto out;
-               }
-               lvm2_log_level(_lvm_handle, LVM2_LOG_SUPPRESS);
-               /* FIXME Temporary: move to dmeventd core */
-               lvm2_run(_lvm_handle, "_memlock_inc");
-       }
-
-       syslog(LOG_INFO, "Monitoring snapshot %s\n", device);
-
-       _register_count++;
-       r = 1;
-
-out:
-       pthread_mutex_unlock(&_register_mutex);
-
-       return r;
-}
-
-int unregister_device(const char *device,
-                     const char *uuid __attribute((unused)),
-                     int major __attribute((unused)),
-                     int minor __attribute((unused)),
-                     void **unused __attribute((unused)))
-{
-       pthread_mutex_lock(&_register_mutex);
-
-       syslog(LOG_INFO, "No longer monitoring snapshot %s\n",
-              device);
-
-       if (!--_register_count) {
-               dm_pool_destroy(_mem_pool);
-               _mem_pool = NULL;
-               lvm2_run(_lvm_handle, "_memlock_dec");
-               lvm2_exit(_lvm_handle);
-               _lvm_handle = NULL;
-       }
-
-       pthread_mutex_unlock(&_register_mutex);
-
-       return 1;
-}
index 6245a0dac777580c8e192a301aa815b89ba4d425..64378ff66896231bc0624113abbfb2beb7661c77 100644 (file)
@@ -86,6 +86,11 @@ endif
 LDFLAGS += -L$(top_srcdir)/libdm -L$(top_srcdir)/lib
 CLDFLAGS += -L$(top_srcdir)/libdm -L$(top_srcdir)/lib
 
+ifeq ("@DMEVENTD@", "yes")
+  LDFLAGS += -L$(top_srcdir)/daemons/dmeventd
+  CLDFLAGS += -L$(top_srcdir)/daemons/dmeventd
+endif
+
 ifeq ("@DM_COMPAT@", "yes")
   DEFS += -DDM_COMPAT
 endif
This page took 0.047442 seconds and 5 git commands to generate.