# # EnergyMech, IRC bot software # Copyright (c) 1997-2018 proton # # 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 2 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, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # INSTALLNAME = energymech INSTALLDIR = .. INSTALLMODE = 0700 LDSCRIPT = @ldscript@ CPROF = @cprof@ LPROF = @lprof@ LIBS = @libflags@ PIPEFLAG = @pipeflag@ GDBFLAG = @gdbflag@ WARNFLAG = @W_FLAGS@ OPTIMIZE = @O_FLAGS@ PYINCLUDE = @PYINCLUDE@ TCLINCLUDE = @TCLINCLUDE@ CFLAGS = $(PIPEFLAG) $(GDBFLAG) $(WARNFLAG) $(OPTIMIZE) LFLAGS = $(PIPEFLAG) $(GDBFLAG) CC = @CC@ MV = mv -f RM = rm -f CHMOD = chmod INCS = config.h mcmd.h defines.h global.h h.h structs.h text.h TESTFILES = aliastest safepathtest OFILES = alias.o auth.o bounce.o chanban.o channel.o core.o \ ctcp.o debug.o dns.o dynamode.o function.o greet.o help.o hostinfo.o irc.o \ kicksay.o main.o net.o net_chan.o note.o notify.o ons.o parse.o \ perl.o prot.o python.o redirect.o reset.o seen.o shit.o socket.o \ spy.o stats.o tcl.o telnet.o toybox.o trivia.o uptime.o urlcap.o \ user.o vars.o web.o @MD5_O@ @SHA_O@ SRCFILES = alias.c auth.c bounce.c chanban.c channel.c core.c \ ctcp.c debug.c dns.c dynamode.c function.c greet.c help.c hostinfo.c irc.c \ kicksay.c main.c net.c net_chan.c note.c notify.c ons.c parse.c \ perl.c prot.c python.c redirect.c reset.c seen.c shit.c socket.c \ spy.c stats.c tcl.c telnet.c toybox.c trivia.c uptime.c urlcap.c \ user.c vars.c web.c all: $(INSTALLNAME) # # mcmd.h is generated at compile time to wrap up all command attributes more efficiently, # instead of doing extra parsing and handling while the bot is running. # gencmd: gencmd.c socket.c config.h structs.h $(CC) $(LFLAGS) -o gencmd gencmd.c mcmd.h: gencmd ./gencmd mcmd.h usercombo.h: gencmd ./gencmd usercombo.h install: $(INSTALLNAME) $(CHMOD) $(INSTALLMODE) $(INSTALLNAME) $(MV) $(INSTALLNAME) $(INSTALLDIR) clean: FORCE $(RM) $(INSTALLNAME) gencmd mcmd.h usercombo.h core $(TESTFILES) $(OFILES) $(INSTALLNAME): $(OFILES) $(CROSS_COMPILE)$(CC) $(LFLAGS) -o $(INSTALLNAME) $(OFILES) $(LPROF) $(LIBS) $(LDSCRIPT) @oc@ $(CROSS_COMPILE)objcopy -R .note -R .comment $(INSTALLNAME) @sz@ size $(INSTALLNAME) $(INSTALLNAME)-static: $(OFILES) $(CROSS_COMPILE)$(CC) $(LFLAGS) -o $(INSTALLNAME) $(OFILES) $(LPROF) $(LIBS) $(LDSCRIPT) -static @oc@ $(CROSS_COMPILE)objcopy -R .note -R .comment $(INSTALLNAME) @sz@ size $(INSTALLNAME) # # 'mega' versions # compiling the C files all at once (having all the code "visible" during the whole process) enables GCC to make more optimizations, # resulting in a smaller, more efficient, binary. this process uses lots more memory at compile time. # mega-install: mega $(SRCFILES) $(INCS) usage.h $(CHMOD) $(INSTALLMODE) $(INSTALLNAME) $(MV) $(INSTALLNAME) $(INSTALLDIR) mega: $(SRCFILES) $(INCS) usage.h $(CROSS_COMPILE)$(CC) $(CFLAGS) -o $(INSTALLNAME) mega.c $(LPROF) $(LIBS) $(LDSCRIPT) $(PYINCLUDE) $(TCLINCLUDE) @oc@ $(CROSS_COMPILE)objcopy -R .note -R .comment $(INSTALLNAME) @sz@ size $(INSTALLNAME) mega-static: $(SRCFILES) $(INCS) usage.h $(CROSS_COMPILE)$(CC) $(CFLAGS) -o $(INSTALLNAME) mega.c $(LPROF) $(LIBS) $(LDSCRIPT) $(PYINCLUDE) $(TCLINCLUDE) -static @oc@ $(CROSS_COMPILE)objcopy -R .note -R .comment $(INSTALLNAME) @sz@ size $(INSTALLNAME) # # testing stuff # test: $(TESTFILES) ./aliastest ./safepathtest aliastest: alias.c $(CROSS_COMPILE)$(CC) $(CFLAGS) -o aliastest $< $(LPROF) $(LIBS) $(LDSCRIPT) -DTEST safepathtest: function.c $(CROSS_COMPILE)$(CC) $(CFLAGS) -o safepathtest $< $(LPROF) $(LIBS) $(LDSCRIPT) -DTEST commands: grep -E '(void do_.*\(COMMAND_ARGS\)|/*---Help:)' *c # # # alias.o: alias.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) auth.o: auth.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) bounce.o: bounce.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) chanban.o: chanban.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) channel.o: channel.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) core.o: core.c $(INCS) settings.h $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) ctcp.o: ctcp.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) debug.o: debug.c $(INCS) settings.h $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) $(PYINCLUDE) dns.o: dns.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) dynamode.o: dynamode.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) function.o: function.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) greet.o: greet.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) help.o: help.c $(INCS) usage.h $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) hostinfo.o: hostinfo.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) irc.o: irc.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) kicksay.o: kicksay.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) main.o: main.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) $(PYINCLUDE) net.o: net.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) net_chan.o: net_chan.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) note.o: note.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) notify.o: notify.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) ons.o: ons.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) parse.o: parse.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) perl.o: perl.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) prot.o: prot.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) python.o: python.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) $(PYINCLUDE) redirect.o: redirect.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) reset.o: reset.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) seen.o: seen.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) shit.o: shit.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) socket.o: socket.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) spy.o: spy.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) stats.o: stats.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) tcl.o: tcl.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) $(TCLINCLUDE) telnet.o: telnet.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) toybox.o: toybox.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) trivia.o: trivia.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) uptime.o: uptime.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) urlcap.o: urlcap.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) user.o: user.c $(INCS) usercombo.h $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) vars.o: vars.c $(INCS) settings.h $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) web.o: web.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< $(CPROF) md5/md5.o: md5/md5.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< -o $@ -Imd5 $(CPROF) sha/sha1.o: sha/sha1.c $(INCS) $(CROSS_COMPILE)$(CC) $(CFLAGS) -c $< -o $@ -Isha1 $(CPROF) FORCE: