source: Makefile.in @ 48f7d12

release-1.4release-1.5release-1.6release-1.7release-1.8release-1.9
Last change on this file since 48f7d12 was fd8dfe7, checked in by Nelson Elhage <nelhage@mit.edu>, 13 years ago
Load perl code from the filesystem at runtime. Remove perlwrap.pm and associated code, and instead do 'use BarnOwl' at boot time to load cdoe from the file system at runtime. In addition, add appropriate 'use' statements to the .pm files to cause everything to get loaded.
  • Property mode set to 100644
File size: 4.1 KB
Line 
1# $Id$
2
3srcdir = @srcdir@
4VPATH = @srcdir@
5prefix = @prefix@
6exec_prefix = @exec_prefix@
7datarootdir = @datarootdir@
8datadir = @datadir@/barnowl
9bindir = @bindir@
10mandir = @mandir@
11transform = @program_transform_name@
12
13CC=@CC@
14LIBS=@LIBS@ -L./libfaim -lfaim
15CFLAGS=@CFLAGS@ -I./libfaim -DDATADIR=\"${datadir}\"
16LDFLAGS=@LDFLAGS@
17XSUBPPDIR=@XSUBPPDIR@
18XSUBPPFLAGS=@XSUBPPFLAGS@
19INSTALL=@INSTALL@
20INSTALL_PROGRAM=@INSTALL_PROGRAM@
21INSTALL_DATA=@INSTALL_DATA@
22ATHSTATIC=@ATHSTATIC@
23
24BASE_SRCS=list.c message.c mainwin.c popwin.c zephyr.c messagelist.c \
25     commands.c global.c text.c fmtext.c editwin.c util.c logging.c \
26     perlconfig.c keys.c functions.c zwrite.c viewwin.c help.c filter.c \
27     regex.c history.c view.c dict.c variable.c filterelement.c pair.c \
28     keypress.c keymap.c keybinding.c cmd.c context.c zcrypt.c \
29     aim.c buddy.c buddylist.c style.c errqueue.c \
30     zbuddylist.c popexec.c obarray.c select.c wcwidth.c \
31     glib_compat.c
32OWL_SRC = owl.c
33TESTER_SRC = tester.c
34
35EXE = barnowl.bin
36PERL_MODULES = Jabber IRC WordWrap
37MODULE_DIRS = $(PERL_MODULES:%=perl/modules/%)
38
39BASE_OBJS = $(BASE_SRCS:.c=.o)
40
41GEN_C = varstubs.c perlglue.c
42GEN_H = owl_prototypes.h
43GEN_O = $(GEN_C:.c=.o)
44
45OBJS = $(BASE_OBJS) $(GEN_O)
46
47AUTOGEN=$(GEN_C) $(GEN_H)
48#AUTOGEN=$(GEN_C)
49
50HEADERS=$(GEN_H) owl.h owl_perl.h config.h test.h
51
52all: $(EXE) $(MODULE_DIRS)
53
54$(EXE): $(AUTOGEN) $(OBJS) owl.o libfaim
55        $(ATHSTATIC) $(CC) -o $(EXE) owl.o $(OBJS) $(LDFLAGS) $(LIBS)
56
57tester: $(AUTOGEN) $(OBJS) tester.o libfaim
58        $(ATHSTATIC) $(CC) -o tester tester.o $(OBJS) $(LDFLAGS) $(LIBS)
59
60%.o: %.c $(HEADERS)
61        $(CC) -c $(CFLAGS) $< -o $@
62
63# zcrypt is old crufty DES code I don't want to touch
64# Disable all warnings when compiling it
65zcrypt.o: zcrypt.c $(HEADERS)
66        $(CC) -c $(CFLAGS) $< -w -o $@
67
68test: tester
69        ./tester reg
70
71clean: libfaimclean modules_clean
72        $(RM) $(EXE) tester *.o $(AUTOGEN) owl_prototypes.h.new
73
74distclean: clean libfaimdistclean
75        $(RM) config.cache config.log config.status  Makefile config.h TAGS *~ core
76
77.PHONY: $(MODULE_DIRS) $(MODULE_DIRS:%=clean_%)
78
79modules: $(MODULE_DIRS)
80modules_clean: $(MODULE_DIRS:%=clean_%)
81
82$(MODULE_DIRS): %: %/Makefile
83        ( cd $@ && $(MAKE) $(notdir $@).par )
84
85$(MODULE_DIRS:=/Makefile): %/Makefile: %/Makefile.PL
86        ( cd $(dir $@) && perl -I../../lib Makefile.PL )
87
88$(MODULE_DIRS:%=clean_%): clean_%:
89        (cd $* && (test ! -f Makefile || $(MAKE) clean))
90
91proto: owl_prototypes.h
92
93perlglue.c: perlglue.xs Makefile
94        perl $(XSUBPPDIR)/xsubpp $(XSUBPPFLAGS) -prototypes perlglue.xs > perlglue.c
95
96varstubs.c: variable.c stubgen.pl
97        perl stubgen.pl > varstubs.c
98
99# Only move owl_prototypes.h into place if the new one is different
100owl_prototypes.h: codelist.pl varstubs.c $(BASE_SRCS)
101        perl codelist.pl > owl_prototypes.h.new
102        @cmp -s owl_prototypes.h.new $@ || { \
103         test -f $@ && echo 'Interfaces changed!'; \
104         echo mv -f owl_prototypes.h.new $@; \
105              mv -f owl_prototypes.h.new $@; }
106#owl_prototypes.h:
107
108.PHONY: tags clean distclean proto test check-syntax
109
110tags: TAGS
111
112TAGS: $(BASE_SRCS) $(OWL_SRC) $(TESTER_SRC) $(GEN_C) owl.h $(GEN_H)
113        etags $(BASE_SRCS) $(OWL_SRC) $(TESTER_SRC) $(GEN_C) owl.h $(GEN_H)
114
115$(BASE_OBJS) varstubs.h: owl.h config.h owl_prototypes.h
116
117libfaim: libfaim/libfaim.a
118
119libfaim/libfaim.a:
120        (cd libfaim && $(MAKE))
121
122libfaimclean:
123        (cd libfaim && $(MAKE) clean)
124
125libfaimdistclean:
126        (cd libfaim && $(MAKE) distclean)
127
128install: all installdirs $(PERL_MODULES:%=module_install_%)
129        ${INSTALL_PROGRAM} $(EXE) ${DESTDIR}${bindir}/`echo barnowl|sed '$(transform)'`
130        ${INSTALL_DATA} doc/barnowl.1 ${DESTDIR}${mandir}/man1/barnowl.1
131        (cd perl/lib && tar --exclude .svn -cf - . ) | (cd ${DESTDIR}${datadir}/lib && tar -xf - )
132
133installdirs: mkinstalldirs
134        ${srcdir}/mkinstalldirs \
135            ${DESTDIR}${bindir} \
136            ${DESTDIR}${mandir}/man1 \
137            ${DESTDIR}${datadir}/lib \
138            ${DESTDIR}${datadir}/modules
139
140.PHONY: $(PERL_MODULES:%=module_install_%)
141
142$(PERL_MODULES:%=module_install_%): module_install_%: installdirs
143        ${INSTALL_DATA} perl/modules/$*/$*.par ${DESTDIR}${datadir}/modules/$*.par
144
145# For emacs flymake-mode
146check-syntax: proto
147        $(CC) $(CFLAGS) -Wall -Wextra -pedantic -fsyntax-only $(CHK_SOURCES)
Note: See TracBrowser for help on using the repository browser.