aboutsummaryrefslogblamecommitdiffstats
path: root/Makefile
blob: 0516a6fd7412145f34e8081929e7893a5b04a7c7 (plain) (tree)
1
2
3
4
5
6
7
8
9
                     

                  
                       



                                  
 
                                       
                                             
 
                                                      









                                     
 
             
                                             
                                           
 

                           
                                            
               

                           
                                            

               
     
 
                              
                                     

     
                                                                             

                 
                                                                     

            
 
                                              
 
                                                                                                         
                                                          
 
                                                                            
                                                          
 
                        
                                                                                         





                                                              
 

                                         
 


                                             
               


                         
                                                                  

 
      
                                                                              
 
            
                                                                   
                                        
                                                               
 
              
                                      
                                                                                
                                                                                    


                                                                  
# include config file
CONFIG ?= .config
-include $(CONFIG)
CFLAGSORIG := $(CFLAGS)
-include $(DOVECOT)/dovecot-config
INSTALLDIR ?= $(moduledir)/imap
# Kill CFLAGS from dovecot-config
CFLAGS := $(CFLAGSORIG)

backenddir := /usr/lib/dovecot-antispam
LOCALCFLAGS += '-DBACKENDDIR="$(backenddir)"'

# includes/flags we need for building a dovecot plugin
INCS += -DHAVE_CONFIG_H
INCS += -I$(DOVECOT)/
INCS += -I$(DOVECOT)/src/
INCS += -I$(DOVECOT)/src/lib/
INCS += -I$(DOVECOT)/src/lib-storage/
INCS += -I$(DOVECOT)/src/lib-mail/
INCS += -I$(DOVECOT)/src/lib-imap/
INCS += -I$(DOVECOT)/src/lib-dict/
INCS += -I$(DOVECOT)/src/lib-index/
INCS += -I$(DOVECOT)/src/imap/

# output name
LIBRARY_NAME ?= lib90_$(PLUGINNAME)_plugin.so
objs = antispam-storage.o antispam-plugin.o

# debug rules
ifeq ("$(DEBUG)", "stderr")
LOCALCFLAGS += -DCONFIG_DEBUG -DDEBUG_STDERR
objs += debug.o
else 
ifeq ("$(DEBUG)", "syslog")
LOCALCFLAGS += -DCONFIG_DEBUG -DDEBUG_SYSLOG
objs += debug.o
endif
endif

ifeq ("$(DEBUG_VERBOSE)", "1")
LOCALCFLAGS += -DCONFIG_DEBUG_VERBOSE
endif

BACKENDS = dspam-exec.so signature-log.so crm114-exec.so pipe.so spool2dir.so

# main make rules
LOCALCFLAGS += -fPIC -shared -Wall -Wextra -DPLUGINNAME=$(PLUGINNAME)
CC ?= cc
HOSTCC ?= cc

all: verify_config $(LIBRARY_NAME) $(BACKENDS)

antispam-storage.o: antispam-storage.c antispam-storage-*.c $(CONFIG) antispam-plugin.h dovecot-version.h
	$(CC) -c $(CFLAGS) $(LOCALCFLAGS) $(INCS) -o $@ $<

%.o:	%.c $(CONFIG) antispam-plugin.h dovecot-version.h antispam-version.h
	$(CC) -c $(CFLAGS) $(LOCALCFLAGS) $(INCS) -o $@ $<

$(LIBRARY_NAME): $(objs)
	$(CC) $(CFLAGS) $(LOCALCFLAGS) $(INCS) $(objs) -o $(LIBRARY_NAME) $(LDFLAGS) -ldl

dovecot-version: dovecot-version.c $(CONFIG)
	$(HOSTCC) $(INCS) -o dovecot-version dovecot-version.c

dovecot-version.h: dovecot-version
	./dovecot-version > dovecot-version.h

antispam-version.h: version.sh
	./version.sh > antispam-version.h

dspam-exec.so: dspam-exec.o signature.o
signature-log.so: signature-log.o signature.o
crm114-exec.so: crm114-exec.o signature.o
pipe.so: pipe.o
spool2dir.so: spool2dir.o

$(BACKENDS):
	$(CC) $(CFLAGS) $(INCS) $(LOCALCFLAGS) $(LDFLAGS) -o $@ $^


clean:
	rm -f *.so *.o *~ dovecot-version dovecot-version.h antispam-version.h

install: all
	install -p -m 0755 $(LIBRARY_NAME) $(DESTDIR)$(INSTALLDIR)/
	mkdir -p $(DESTDIR)$(backenddir)
	install -p -m 0755 $(BACKENDS) $(DESTDIR)$(backenddir)/

verify_config:
	@if [ ! -r $(CONFIG) ]; then \
		echo -e "\nBuilding the plugin requires a configuration file"; \
		echo -e $(CONFIG)'. Copy defconfig ("cp defconfig' $(CONFIG)'")' ; \
		echo -e "to create an example configuration.\n"; \
		exit 1; \
	fi