################################################################################ # Makefile for Motion # ################################################################################ # Copyright 2000 by Jeroen Vreeken # # # # This program is published under the GNU public license version 2.0 or later. # # Please read the file COPYING for more info. # ################################################################################ # Please visit the Motion home page: # # http://www.lavrsen.dk/twiki/bin/view/Motion # ################################################################################ CC = @CC@ INSTALL = install VERSION = @VERSION@ ################################################################################ # Install locations, controlled by setting configure flags. # ################################################################################ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ mandir = @mandir@ sysconfdir = @sysconfdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = $(datadir)/doc/motion-$(VERSION) examplesdir = $(docdir)/examples ################################################################################ # These variables contain compiler flags, object files to build and files to # # install. # ################################################################################ CFLAGS = @CFLAGS@ -Wall -DVERSION=\"$(VERSION)\" -D_REENTRANT \ -Dsysconfdir=\"$(sysconfdir)\" #LDFLAGS = @LDFLAGS@ -lmjpegutils -llavjpeg LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ VIDEO_OBJ = @VIDEO@ OBJ = motion.o conf.o draw.o $(VIDEO_OBJ) netcam.o \ netcam_ftp.o netcam_jpeg.o netcam_wget.o track.o \ alg.o event.o picture.o rotate.o webhttpd.o \ webcam.o @FFMPEG_OBJ@ SRC = $(OBJ:.o=.c) DOC = CHANGELOG COPYING CREDITS INSTALL README motion_guide.html EXAMPLES = *.conf motion.init-Debian motion.init-RH motion.init-FreeBSD.sh PROGS = motion DEPEND_FILE = .depend ################################################################################ # ALL and PROGS build Motion and, possibly, Motion-control. # ################################################################################ all: progs ifneq (,$(findstring freebsd,$(VIDEO_OBJ))) @echo "Build complete, run \"gmake install\" to install Motion!" else @echo "Build complete, run \"make install\" to install Motion!" endif @echo progs: pre-build-info $(PROGS) ################################################################################ # PRE-BUILD-INFO outputs some general info before the build process starts. # ################################################################################ pre-build-info: @echo "Welcome to the setup procedure for Motion, the motion detection daemon! If you get" @echo "error messages during this procedure, please report them to the mailing list. The" @echo "Motion Guide contains all information you should need to get Motion up and running." @echo "Run \"make updateguide\" to download the latest version of the Motion Guide." @echo @echo "Version: $(VERSION)" ifneq (,$(findstring freebsd,$(VIDEO_OBJ))) @echo "Platform: FreeBSD" else @echo "Platform: Linux (if this is incorrect, please read README.FreeBSD)" endif @echo ################################################################################ # MOTION builds motion. MOTION-OBJECTS and PRE-MOBJECT-INFO are helpers. # ################################################################################ motion: motion-objects @echo "Linking Motion..." @echo "--------------------------------------------------------------------------------" $(CC) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) @echo "--------------------------------------------------------------------------------" @echo "Motion has been linked." @echo motion-objects: dep pre-mobject-info $(OBJ) @echo "--------------------------------------------------------------------------------" @echo "Motion object files compiled." @echo pre-mobject-info: @echo "Compiling Motion object files..." @echo "--------------------------------------------------------------------------------" ################################################################################ # Define the compile command for C files. # ################################################################################ #%.o: %.c # @echo -e "\tCompiling $< into $@..." # @$(CC) -c $(CFLAGS) $< -o $@ ################################################################################ # Include the dependency file if it exists. # ################################################################################ ifeq ($(DEPEND_FILE), $(wildcard $(DEPEND_FILE))) ifeq (,$(findstring clean,$(MAKECMDGOALS))) -include $(DEPEND_FILE) endif endif ################################################################################ # Make the dependency file depend on all header files and all relevant source # # files. This forces the file to be re-generated if the source/header files # # change. Note, however, that the existing version will be included before # # re-generation. # ################################################################################ $(DEPEND_FILE): *.h $(SRC) @echo "Generating dependencies, please wait..." @$(CC) $(CFLAGS) -M $(SRC) > .tmp @mv -f .tmp $(DEPEND_FILE) @echo ################################################################################ # DEP, DEPEND and FASTDEP generate the dependency file. # ################################################################################ dep depend fastdep: $(DEPEND_FILE) ################################################################################ # INSTALL installs all relevant files. # ################################################################################ install: @echo "Installing files..." @echo "--------------------------------------------------------------------------------" mkdir -p $(DESTDIR)$(bindir) mkdir -p $(DESTDIR)$(mandir)/man1 mkdir -p $(DESTDIR)$(sysconfdir) mkdir -p $(DESTDIR)$(docdir) mkdir -p $(DESTDIR)$(examplesdir) $(INSTALL) motion.1 $(DESTDIR)$(mandir)/man1 $(INSTALL) $(DOC) $(DESTDIR)$(docdir) $(INSTALL) $(EXAMPLES) $(DESTDIR)$(examplesdir) $(INSTALL) motion-dist.conf $(DESTDIR)$(sysconfdir) for prog in $(PROGS); \ do \ ($(INSTALL) $$prog $(DESTDIR)$(bindir) ); \ done @echo "--------------------------------------------------------------------------------" @echo "Install complete! The default configuration file, motion-dist.conf, has been" @echo "installed to $(sysconfdir). You need to rename/copy it to $(sysconfdir)/motion.conf" @echo "for Motion to find it. More configuration examples as well as init scripts" @echo "can be found in $(examplesdir)." @echo ################################################################################ # UNINSTALL and REMOVE uninstall already installed files. # ################################################################################ uninstall remove: pre-build-info @echo "Uninstalling files..." @echo "--------------------------------------------------------------------------------" for prog in $(PROGS); \ do \ ($ rm -f $(bindir)/$$prog ); \ done rm -f $(mandir)/man1/motion.1 rm -f $(sysconfdir)/motion-dist.conf rm -rf $(docdir) @echo "--------------------------------------------------------------------------------" @echo "Uninstall complete!" @echo ################################################################################ # CLEAN is basic cleaning; removes object files and executables, but does not # # remove files generated from the configure step. # ################################################################################ clean: pre-build-info @echo "Removing compiled files and binaries..." @rm -f *~ *.jpg *.o $(PROGS) combine $(DEPEND_FILE) ################################################################################ # DIST restores the directory to distribution state. # ################################################################################ dist: distclean updateguide @chmod -R 644 * @chmod 755 configure @chmod 755 debian @chmod 755 debian/rules ################################################################################ # DEB create a deb package. # ################################################################################ deb: @chmod -R 755 * dpkg-buildpackage -tc -b -rfakeroot ################################################################################ # DISTCLEAN removes all files generated during the configure step in addition # # to basic cleaning. # ################################################################################ distclean: clean @echo "Removing files generated by configure..." @rm -f config.status config.log config.cache Makefile motion.init-RH motion.init-Debian motion.init-FreeBSD.sh @rm -rf autom4te.cache @echo "You will need to re-run configure if you want to build Motion." @echo ################################################################################ # UPDATEGUIDE downloads the Motion Guide from TWiki. # ################################################################################ updateguide: pre-build-info @echo "Downloading Motion Guide. If it fails, please check your Internet connection." @echo wget www.lavrsen.dk/twiki/bin/view/Motion/MotionGuideOneLargeDocument?skin=text -O motion_guide.tmp @echo "Cleaning up and fixing links..." @cat motion_guide.tmp | sed -e 's/\?skin=text//g;s,"/twiki/,"http://www.lavrsen.dk/twiki/,g' > motion_guide.html @rm -f motion_guide.tmp @echo "All done, you should now have an up-to-date local copy of the Motion guide." @echo