#------------------------------------------------------------------------------- # Copyright (c) 2004 Media Development Loan Fund # # This file is part of the Campcaster project. # http://campcaster.campware.org/ # To report bugs, send an e-mail to bugs@campware.org # # Campcaster 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. # # Campcaster 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 Campcaster; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # # Author : $Author$ # Version : $Revision$ # Location : $URL$ #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- # General command definitions #------------------------------------------------------------------------------- MKDIR = mkdir -p RM = rm -f RMDIR = rm -rf DOXYGEN = doxygen DOXYTAG = doxytag XSLTPROC = xsltproc ECHO = @echo FLAWFINDER = flawfinder CP = cp -f #------------------------------------------------------------------------------- # Basic directory and file definitions #------------------------------------------------------------------------------- BASE_DIR = . BIN_DIR = ${BASE_DIR}/bin DOC_DIR = ${BASE_DIR}/doc DOXYGEN_DIR = ${DOC_DIR}/doxygen COVERAGE_DIR = ${DOC_DIR}/coverage ETC_DIR = ${BASE_DIR}/etc SRC_DIR = ${BASE_DIR}/src TMP_DIR = ${BASE_DIR}/tmp prefix = @prefix@ PACKAGE_VERSION = @PACKAGE_VERSION@ USR_DIR = ${prefix} USR_BIN_DIR = ${USR_DIR}/bin USR_DOC_DIR = ${USR_DIR}/doc USR_ETC_DIR = ${USR_DIR}/etc USR_LIB_DIR = ${USR_DIR}/lib USR_VAR_DIR = ${USR_DIR}/var HOSTNAME = @HOSTNAME@ APACHE_GROUP = @APACHE_GROUP@ WWW_DOCROOT = @WWW_DOCROOT@ WWW_PORT = @WWW_PORT@ SCHEDULER_PORT = @SCHEDULER_PORT@ DB_SERVER = @DB_SERVER@ DATABASE = @DATABASE@ DB_USER = @DB_USER@ DB_PASSWORD = @DB_PASSWORD@ CREATE_LS_DATABASE = @CREATE_LS_DATABASE@ INIT_LS_DATABASE = @INIT_LS_DATABASE@ CREATE_ODBC_DATA_SOURCE = @CREATE_ODBC_DATA_SOURCE@ CONFIGURE_APACHE = @CONFIGURE_APACHE@ STATION_AUDIO_OUT = "@STATION_AUDIO_OUT@" STUDIO_AUDIO_OUT = "@STUDIO_AUDIO_OUT@" STUDIO_AUDIO_CUE = "@STUDIO_AUDIO_CUE@" export LD_LIBRARY_PATH:=${prefix}/lib:${LD_LIBRARY_PATH} export PKG_CONFIG_PATH:=${prefix}/lib/pkgconfig:${PKG_CONFIG_PATH} DEBUG = @DEBUG@ DOXYGEN_CONFIG = ${ETC_DIR}/doxygen.config XMLRPC-DOXYGEN_CONFIG = ${ETC_DIR}/xmlrpc-doxygen.config XMLRPCXX_DOC_DIR = ${BASE_DIR}/usr/share/doc/xmlrpc++ EXTERNAL_DOC_PAGES = ${XMLRPCXX_DOC_DIR}/XmlRpcServerMethod_8h-source.html \ ${XMLRPCXX_DOC_DIR}/classXmlRpc_1_1XmlRpcServerMethod.html \ ${XMLRPCXX_DOC_DIR}/classXmlRpc_1_1XmlRpcServerMethod-members.html TAGFILE = ${DOXYGEN_DIR}/xmlrpc++.tag TESTRESULTS_XSLT = ${ETC_DIR}/testResultsToHtml.xsl TESTRESULTS_IN = ${ETC_DIR}/testResults.xml TESTRESULTS_FILE = ${DOC_DIR}/testResults.html FLAWFINDER_FILE = ${DOC_DIR}/flawfinderReport.html TOOLS_DIR = ${SRC_DIR}/tools CXXUNIT_DIR = ${TOOLS_DIR}/cppunit CXXUNIT_VERSION = cppunit-1.10.2 LIBODBCXX_DIR = ${TOOLS_DIR}/libodbc++ LIBODBCXX_VERSION = libodbc++-0.2.3-20050404 XMLRPCXX_DIR = ${TOOLS_DIR}/xmlrpc++ XMLRPCXX_VERSION = xmlrpc++-20040713 GSTREAMER_DIR = ${TOOLS_DIR}/gstreamer GSTREAMER_VERSION = gstreamer-0.8.12 TAGLIB_DIR = ${TOOLS_DIR}/taglib TAGLIB_VERSION = taglib-1.4 LIBSERIAL_DIR = ${TOOLS_DIR}/libserial LIBSERIAL_VERSION = libserial-0.5.2 PEAR_DIR = ${TOOLS_DIR}/pear MODULES_DIR = ${SRC_DIR}/modules CORE_DIR = ${MODULES_DIR}/core AUTHENTICATION_DIR = ${MODULES_DIR}/authentication DB_DIR = ${MODULES_DIR}/db STORAGE_CLIENT_DIR = ${MODULES_DIR}/storageClient GSTREAMER_ELEMENTS_DIR = ${MODULES_DIR}/gstreamerElements PLAYLIST_EXECUTOR_DIR = ${MODULES_DIR}/playlistExecutor EVENT_SCHEDULER_DIR = ${MODULES_DIR}/eventScheduler SCHEDULER_CLIENT_DIR = ${MODULES_DIR}/schedulerClient WIDGETS_DIR = ${MODULES_DIR}/widgets ALIB_DIR = ${MODULES_DIR}/alib ARCHIVE_SERVER_DIR = ${MODULES_DIR}/archiveServer GETID3_DIR = ${MODULES_DIR}/getid3 HTML_UI_DIR = ${MODULES_DIR}/htmlUI STORAGE_ADMIN_DIR = ${MODULES_DIR}/storageAdmin STORAGE_SERVER_DIR = ${MODULES_DIR}/storageServer PRODUCTS_DIR = ${SRC_DIR}/products SCHEDULER_DIR = ${PRODUCTS_DIR}/scheduler GLIVESUPPORT_DIR = ${PRODUCTS_DIR}/gLiveSupport SCHEDULER_EXE = ${SCHEDULER_DIR}/tmp/campcaster-scheduler GLIVESUPPORT_EXE = ${GLIVESUPPORT_DIR}/tmp/campcaster-studio #------------------------------------------------------------------------------- # Targets #------------------------------------------------------------------------------- .PHONY: all doc clean docclean depclean distclean doxygen testresults .PHONY: setup tools_setup doxytag_setup modules_setup products_setup .PHONY: start stop status run all: setup compile help: ${ECHO} "Campcaster project main Makefile" ${ECHO} "http://campcaster.campware.org/" ${ECHO} "Copyright (c) 2004 Media Development Loan Fund under the GNU GPL" ${ECHO} "" ${ECHO} "Useful targets for this makefile:" ${ECHO} " all - set up and compile everthing" ${ECHO} " install - install everything" ${ECHO} " doc - build autogenerated documentation" ${ECHO} " clean - clean all modules" ${ECHO} " check - check all modules" ${ECHO} "" ${ECHO} "Some less frequently used targets:" ${ECHO} " setup - set up the development environment" ${ECHO} " doxygen - build autogenerated doxygen documentation only" ${ECHO} " compile - compile all modules" ${ECHO} " recompile - recompile all modules" doc: doxygen testresults flawfinder doxygen: ${DOXYGEN} ${DOXYGEN_CONFIG} ${DOXYGEN} ${XMLRPC-DOXYGEN_CONFIG} testresults: ${XSLTPROC} ${TESTRESULT_XSLT} ${TESTRESULTS_IN} > ${TESTRESULTS_FILE} flawfinder: ${FLAWFINDER} -c --immediate --html \ ${CORE_DIR}/include ${CORE_DIR}/src \ ${AUTHENTICATION_DIR}/include ${AUTHENTICATION_DIR}/src \ ${DB_DIR}/include ${DB_DIR}/src \ ${STORAGE_CLIENT_DIR}/include ${STORAGE_CLIENT_DIR}/src \ ${GSTREAMER_ELEMENTS_DIR}/include \ ${GSTREAMER_ELEMENTS_DIR}/src \ ${PLAYLIST_EXECUTOR_DIR}/include \ ${PLAYLIST_EXECUTOR_DIR}/src \ ${EVENT_SCHEDULER_DIR}/include ${EVENT_SCHEDULER_DIR}/src \ ${SCHEDULER_CLIENT_DIR}/include ${SCHEDULER_CLIENT_DIR}/src \ ${WIDGETS_DIR}/include ${WIDGETS_DIR}/src \ ${SCHEDULER_DIR}/src > ${FLAWFINDER_FILE} \ ${GLIVESUPPORT_DIR}/src > ${FLAWFINDER_FILE} \ clean: ${RMDIR} ${DOXYGEN_DIR}/html ${RMDIR} ${COVERAGE_DIR}/* ${RM} ${TMP_DIR}/*.stamp ${RM} ${TMP_DIR}/ac* ${TMP_DIR}/config* ${TMP_DIR}/install-sh ${RMDIR} ${TMP_DIR}/auto* setup: ${TMP_DIR}/setup.stamp ${TMP_DIR}/setup.stamp: tools_setup doxytag_setup modules_setup products_setup touch ${TMP_DIR}/setup.stamp recompile: modprod_distclean modules_setup products_setup compile tools_setup: ${TMP_DIR}/tools_setup.stamp ${TMP_DIR}/tools_setup.stamp: cd ${CXXUNIT_DIR}/${CXXUNIT_VERSION} && ./configure --prefix=${prefix} ${MAKE} -C ${CXXUNIT_DIR}/${CXXUNIT_VERSION} install cd ${LIBODBCXX_DIR}/${LIBODBCXX_VERSION} && ./configure --prefix=${prefix} ${MAKE} -C ${LIBODBCXX_DIR}/${LIBODBCXX_VERSION} install cd ${XMLRPCXX_DIR}/${XMLRPCXX_VERSION} && ./configure --prefix=${prefix} ${MAKE} -C ${XMLRPCXX_DIR}/${XMLRPCXX_VERSION} install cd ${GSTREAMER_DIR}/${GSTREAMER_VERSION} && ./configure --prefix=${prefix} ${MAKE} -C ${GSTREAMER_DIR}/${GSTREAMER_VERSION} install cd ${TAGLIB_DIR}/${TAGLIB_VERSION} && ./configure --prefix=${prefix} ${MAKE} -C ${TAGLIB_DIR}/${TAGLIB_VERSION} install cd ${LIBSERIAL_DIR}/${LIBSERIAL_VERSION} && ./configure --prefix=${prefix} ${MAKE} -C ${LIBSERIAL_DIR}/${LIBSERIAL_VERSION} install cd ${PEAR_DIR} && ./configure --prefix=${prefix} ${MAKE} -C ${PEAR_DIR} install touch ${TMP_DIR}/tools_setup.stamp tools_distclean: -${MAKE} -C ${CXXUNIT_DIR}/${CXXUNIT_VERSION} distclean -${MAKE} -C ${LIBODBCXX_DIR}/${LIBODBCXX_VERSION} distclean -${MAKE} -C ${XMLRPCXX_DIR}/${XMLRPCXX_VERSION} distclean -${MAKE} -C ${GSTREAMER_DIR}/${GSTREAMER_VERSION} distclean -${MAKE} -C ${TAGLIB_DIR}/${TAGLIB_VERSION} distclean -${MAKE} -C ${LIBSERIAL_DIR}/${LIBSERIAL_VERSION} distclean ${RM} ${TMP_DIR}/tools_setup.stamp doxytag_setup: ${TMP_DIR}/doxytag_setup.stamp ${TMP_DIR}/doxytag_setup.stamp: ${DOXYTAG} -t ${TAGFILE} ${EXTERNAL_DOC_PAGES} touch ${TMP_DIR}/doxytag_setup.stamp modules_setup: ${TMP_DIR}/modules_setup.stamp ${TMP_DIR}/modules_setup.stamp: cd ${ALIB_DIR} && ./configure --prefix=${prefix} \ PACKAGE_VERSION=${PACKAGE_VERSION} cd ${ARCHIVE_SERVER_DIR} && \ ./configure --prefix=${prefix} \ --with-hostname=${HOSTNAME} \ --with-www-port=${WWW_PORT} \ --with-database-server=${DB_SERVER} \ --with-database=${DATABASE} \ --with-database-user=${DB_USER} \ --with-database-password=${DB_PASSWORD} \ PACKAGE_VERSION=${PACKAGE_VERSION} cd ${GETID3_DIR} && ./configure --prefix=${prefix} \ PACKAGE_VERSION=${PACKAGE_VERSION} cd ${HTML_UI_DIR} && ./configure --prefix=${prefix} \ --with-apache-group=${APACHE_GROUP} \ --with-www-docroot=${WWW_DOCROOT} \ --with-configure-apache=${CONFIGURE_APACHE} \ --with-storage-server=${prefix}/var/Campcaster/storageServer \ PACKAGE_VERSION=${PACKAGE_VERSION} cd ${STORAGE_ADMIN_DIR} && ./configure --prefix=${prefix} \ --with-storage-server=${prefix}/var/Campcaster/storageServer \ --with-phppart-dir=${prefix}/var/Campcaster/storageAdmin \ PACKAGE_VERSION=${PACKAGE_VERSION} cd ${STORAGE_SERVER_DIR} && \ ./configure --prefix=${prefix} \ --with-apache-group=${APACHE_GROUP} \ --with-hostname=${HOSTNAME} \ --with-www-docroot=${WWW_DOCROOT} \ --with-www-port=${WWW_PORT} \ --with-scheduler-port=${SCHEDULER_PORT} \ --with-database-server=${DB_SERVER} \ --with-database=${DATABASE} \ --with-database-user=${DB_USER} \ --with-database-password=${DB_PASSWORD} \ --with-init-database=${INIT_LS_DATABASE} \ PACKAGE_VERSION=${PACKAGE_VERSION} cd ${CORE_DIR} && \ ./configure --prefix=${prefix} --enable-debug=${DEBUG} \ PACKAGE_VERSION=${PACKAGE_VERSION} cd ${AUTHENTICATION_DIR} && \ ./configure --prefix=${prefix} --enable-debug=${DEBUG} \ PACKAGE_VERSION=${PACKAGE_VERSION} cd ${DB_DIR} && \ ./configure --prefix=${prefix} --enable-debug=${DEBUG} \ PACKAGE_VERSION=${PACKAGE_VERSION} cd ${STORAGE_CLIENT_DIR} && \ ./configure --prefix=${prefix} --enable-debug=${DEBUG} \ PACKAGE_VERSION=${PACKAGE_VERSION} cd ${GSTREAMER_ELEMENTS_DIR} && \ ./configure --prefix=${prefix} --enable-debug=${DEBUG} \ PACKAGE_VERSION=${PACKAGE_VERSION} cd ${PLAYLIST_EXECUTOR_DIR} && \ ./configure --prefix=${prefix} --enable-debug=${DEBUG} \ PACKAGE_VERSION=${PACKAGE_VERSION} cd ${EVENT_SCHEDULER_DIR} && \ ./configure --prefix=${prefix} --enable-debug=${DEBUG} \ PACKAGE_VERSION=${PACKAGE_VERSION} cd ${SCHEDULER_CLIENT_DIR} && \ ./configure --prefix=${prefix} --enable-debug=${DEBUG} \ PACKAGE_VERSION=${PACKAGE_VERSION} cd ${WIDGETS_DIR} && \ ./configure --prefix=${prefix} --enable-debug=${DEBUG} \ PACKAGE_VERSION=${PACKAGE_VERSION} touch ${TMP_DIR}/modules_setup.stamp products_setup: ${TMP_DIR}/products_setup.stamp ${TMP_DIR}/products_setup.stamp: cd ${SCHEDULER_DIR} && \ ./configure --prefix=${prefix} \ --enable-debug=${DEBUG} \ --with-hostname=${HOSTNAME} \ --with-www-port=${WWW_PORT} \ --with-scheduler-port=${SCHEDULER_PORT} \ --with-database-server=${DB_SERVER} \ --with-database=${DATABASE} \ --with-database-user=${DB_USER} \ --with-database-password=${DB_PASSWORD} \ --with-audio-out=${STATION_AUDIO_OUT} \ --with-create-odbc-data-source=${CREATE_ODBC_DATA_SOURCE} \ --with-init-database=${INIT_LS_DATABASE} \ PACKAGE_VERSION=${PACKAGE_VERSION} cd ${GLIVESUPPORT_DIR} && \ ./configure --prefix=${prefix} \ --enable-debug=${DEBUG} \ --with-hostname=${HOSTNAME} \ --with-www-port=${WWW_PORT} \ --with-scheduler-port=${SCHEDULER_PORT} \ --with-database-server=${DB_SERVER} \ --with-database=${DATABASE} \ --with-database-user=${DB_USER} \ --with-database-password=${DB_PASSWORD} \ --with-audio-out=${STUDIO_AUDIO_OUT} \ --with-audio-cue=${STUDIO_AUDIO_CUE} \ PACKAGE_VERSION=${PACKAGE_VERSION} touch ${TMP_DIR}/products_setup.stamp distclean: clean tools_distclean modprod_distclean modprod_distclean: ${MAKE} -C ${CORE_DIR} distclean ${MAKE} -C ${AUTHENTICATION_DIR} distclean ${MAKE} -C ${DB_DIR} distclean ${MAKE} -C ${STORAGE_CLIENT_DIR} distclean ${MAKE} -C ${GSTREAMER_ELEMENTS_DIR} distclean ${MAKE} -C ${PLAYLIST_EXECUTOR_DIR} distclean ${MAKE} -C ${EVENT_SCHEDULER_DIR} distclean ${MAKE} -C ${SCHEDULER_CLIENT_DIR} distclean ${MAKE} -C ${WIDGETS_DIR} distclean ${MAKE} -C ${SCHEDULER_DIR} distclean ${MAKE} -C ${GLIVESUPPORT_DIR} distclean ${RM} ${TMP_DIR}/compile.stamp ${RM} ${TMP_DIR}/modules_setup.stamp ${RM} ${TMP_DIR}/products_setup.stamp depclean: ${MAKE} -C ${CORE_DIR} depclean ${MAKE} -C ${AUTHENTICATION_DIR} depclean ${MAKE} -C ${DB_DIR} depclean ${MAKE} -C ${STORAGE_CLIENT_DIR} depclean ${MAKE} -C ${GSTREAMER_ELEMENTS_DIR} depclean ${MAKE} -C ${PLAYLIST_EXECUTOR_DIR} depclean ${MAKE} -C ${EVENT_SCHEDULER_DIR} depclean ${MAKE} -C ${SCHEDULER_CLIENT_DIR} depclean ${MAKE} -C ${WIDGETS_DIR} depclean ${MAKE} -C ${SCHEDULER_DIR} depclean ${MAKE} -C ${GLIVESUPPORT_DIR} depclean -${MAKE} -C ${ARCHIVE_SERVER_DIR} depclean -${MAKE} -C ${STORAGE_SERVER_DIR} depclean compile: ${TMP_DIR}/compile.stamp ${TMP_DIR}/compile.stamp: ${MAKE} -C ${CORE_DIR} all ${MAKE} -C ${AUTHENTICATION_DIR} all ${MAKE} -C ${DB_DIR} all ${MAKE} -C ${STORAGE_CLIENT_DIR} all ${MAKE} -C ${GSTREAMER_ELEMENTS_DIR} all ${MAKE} -C ${PLAYLIST_EXECUTOR_DIR} all ${MAKE} -C ${EVENT_SCHEDULER_DIR} all ${MAKE} -C ${SCHEDULER_CLIENT_DIR} all ${MAKE} -C ${WIDGETS_DIR} all ${MAKE} -C ${SCHEDULER_DIR} all ${MAKE} -C ${GLIVESUPPORT_DIR} all touch ${TMP_DIR}/compile.stamp check: -${MAKE} -C ${CORE_DIR} check -${MAKE} -C ${AUTHENTICATION_DIR} check -${MAKE} -C ${DB_DIR} check -${MAKE} -C ${STORAGE_CLIENT_DIR} check -${MAKE} -C ${GSTREAMER_ELEMENTS_DIR} check # -${MAKE} -C ${PLAYLIST_EXECUTOR_DIR} check # hangs on edge.campware.org -${MAKE} -C ${EVENT_SCHEDULER_DIR} check -${MAKE} -C ${SCHEDULER_CLIENT_DIR} check # -${MAKE} -C ${WIDGETS_DIR} check # no tests defined # -${MAKE} -C ${SCHEDULER_DIR} check # has database issues # -${MAKE} -C ${GLIVESUPPORT_DIR} check # has database issues # -${MAKE} -C ${ARCHIVE_SERVER_DIR} check # no tests defined # -${MAKE} -C ${STORAGE_SERVER_DIR} check # has database issues start: ${SCHEDULER_EXE} ${MAKE} -C ${SCHEDULER_DIR} start stop: ${SCHEDULER_EXE} ${MAKE} -C ${SCHEDULER_DIR} stop status: ${SCHEDULER_EXE} ${MAKE} -C ${SCHEDULER_DIR} status run: ${GLIVESUPPORT_EXE} ${MAKE} -C ${GLIVESUPPORT_DIR} run #------------------------------------------------------------------------------- # Installation related targets #------------------------------------------------------------------------------- .PHONY: install create_database setup_install_dirs .PHONY: install_modules install_products install: setup compile setup_install_dirs create_database install_modules install_products ${MKDIR} ${USR_ETC_DIR}/apache ${CP} ${ETC_DIR}/apache/*.conf ${USR_ETC_DIR}/apache ${MKDIR} ${USR_BIN_DIR} ${CP} ${BIN_DIR}/postInstallStation.sh ${USR_BIN_DIR} ${CP} ${ETC_DIR}/campcaster-scheduler ${USR_ETC_DIR} ${CP} ${ETC_DIR}/pg_hba.conf ${USR_ETC_DIR} create_database: ifeq (@CREATE_LS_DATABASE@,yes) ${SCHEDULER_DIR}/bin/createDatabase.sh --database=${DATABASE} \ --dbserver=${DB_SERVER} \ --dbuser=${DB_USER} \ --dbpassword=${DB_PASSWORD} endif setup_install_dirs: ${MKDIR} ${USR_BIN_DIR} ${MKDIR} ${USR_DOC_DIR} ${MKDIR} ${USR_ETC_DIR} ${MKDIR} ${USR_LIB_DIR} ${MKDIR} ${USR_VAR_DIR} install_modules: ${MAKE} -C ${ALIB_DIR} install ${MAKE} -C ${ARCHIVE_SERVER_DIR} install ${MAKE} -C ${GETID3_DIR} install ${MAKE} -C ${HTML_UI_DIR} install ${MAKE} -C ${STORAGE_ADMIN_DIR} install ${MAKE} -C ${STORAGE_SERVER_DIR} install ${MAKE} -C ${CORE_DIR} install ${MAKE} -C ${AUTHENTICATION_DIR} install ${MAKE} -C ${DB_DIR} install ${MAKE} -C ${STORAGE_CLIENT_DIR} install ${MAKE} -C ${GSTREAMER_ELEMENTS_DIR} install ${MAKE} -C ${PLAYLIST_EXECUTOR_DIR} install ${MAKE} -C ${EVENT_SCHEDULER_DIR} install ${MAKE} -C ${SCHEDULER_CLIENT_DIR} install ${MAKE} -C ${WIDGETS_DIR} install install_products: ${MAKE} -C ${SCHEDULER_DIR} install ${MAKE} -C ${GLIVESUPPORT_DIR} install