trekel / Makefile

# Copyright 2010 Joey Mazzarelli. All rights reserved.
#
# Redistribution and use in source, with or without modification, is
# permitted provided that the following condition is met:
#
#    1. Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY JOEY MAZZARELLI ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL JOEY MAZZARELLI OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
# THE POSSIBILITY OF SUCH DAMAGE.
#
# The views and conclusions contained in the software and documentation
# are those of the authors and should not be interpreted as representing
# official policies, either expressed or implied, of Joey Mazzarelli.

PHPSRC=src/php/
PARSER=${PHPSRC}Trekel/Parser.php
LEXER=${PHPSRC}Trekel/Lexer.php
TREKEL=${PHPSRC}Trekel.php
COMPILED=Trekel.php
VERSION=1.0
TARBALL=Trekel-${VERSION}.tgz

PLEX=src/bin/plex
LEMON=src/bin/phplemon

all : ${PARSER} ${LEXER}

lexer : ${PARSER} ${LEXER}

parser : ${PARSER}

${LEXER} : src/plex/Trekel/Lexer.plex
	${PLEX} $< && mv src/plex/Trekel/Lexer.php ${LEXER}

${PARSER} : src/phplemon/Trekel/Parser.y
	${LEMON} $< && mv src/phplemon/Trekel/Parser.php ${PARSER}

test : ${PARSER} ${LEXER} lint
	phpunit src/test/php

lint :
	find src/php -name *.php -exec php -l {} >/dev/null \;
	find src/test/php -name *.php -exec php -l {} >/dev/null \;

release : ${PARSER} ${LEXER} ${TARBALL}

${TARBALL} : ${COMPILED}
	tar zcf ${TARBALL} ${COMPILED} LICENSE
	@echo ==============================================
	@echo Created release tarball: ${TARBALL}
	@tar tf ${TARBALL}

${COMPILED} :
	awk FNR!=1 ${LEXER} ${PARSER} ${TREKEL} | cat -s - > ${COMPILED}.tmp
	echo '<?php' | cat - ${COMPILED}.tmp > ${COMPILED}
	@rm -f ${COMPILED}.tmp

clean :
	rm -f ${PARSER} ${LEXER} ${COMPILED} ${TARBALL}

.PHONY : clean lexer parser test release lint
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.