# -----------------------------------------------------------------------------
#  (C) Altran Praxis Limited
# -----------------------------------------------------------------------------
# 
#  The SPARK toolset is free software; you can redistribute it and/or modify it
#  under terms of the GNU General Public License as published by the Free
#  Software Foundation; either version 3, or (at your option) any later
#  version. The SPARK toolset 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 distributed with the SPARK toolset; see file
#  COPYING3. If not, go to http://www.gnu.org/licenses for a complete copy of
#  the license.
# 
# =============================================================================

################################################################################
# PURPOSE
#-------------------------------------------------------------------------------
# Makefile for the SPARKLALR parser
# For Linux, Windows, Solaris or Mac OS X (aka Darwin).
################################################################################

.SUFFIXES:

################################################################################
# BUILD CONFIGURATION
################################################################################

# Name of the output program.
OUTPUT_NAME:=sparklalr

# Location of root.
ROOT:=..

################################################################################
# DETERMINE HOST INFORMATION
################################################################################

# Determine which platform this Makefile is being run on.
TARGET:=$(shell uname -s)

# Canonicalize the target string.
ifeq ($(findstring CYGWIN_NT,${TARGET}),CYGWIN_NT)
    TARGET:=Windows
endif

################################################################################
# DYNAMIC DEPENDENCIES
################################################################################

################################################################################
# PLATFORM INDEPENDENT CONFIGURATION
################################################################################

# Location of customer lib
CUSTOMER_LIB:=${ROOT}/lib/spark/current

# Location of common.
COMMON:=${ROOT}/common

# Common compiler options.
COMMON_OPTS:=-g -gnatwae -gnat95 -gnatwl -gnaty3abefhiklnprt -I${CUSTOMER_LIB} -gnatf -k
GNATMAKE_OPTS:=${COMMON_OPTS} -O1
BIND_OPTS:=-E

################################################################################
# PLATFORM SPECIFIC CONFIGURATION
################################################################################

# Windows.
ifeq (${TARGET},Windows)
    EXE_EXTN:=.exe
endif

# Solaris.
ifeq (${TARGET},SunOS)
    EXE_EXTN:=
endif

# Linux.
ifeq (${TARGET},Linux)
    EXE_EXTN:=
endif

# Darwin (Mac OS X 10.5 or 10.6, 64-bit).
ifeq (${TARGET},Darwin)
    EXE_EXTN:=
endif

################################################################################
# TARGETS
################################################################################

all: ${OUTPUT_NAME}${EXE_EXTN}

${OUTPUT_NAME}${EXE_EXTN}:
	gnatmake ${GNATMAKE_OPTS} ${OUTPUT_NAME} -o ${OUTPUT_NAME}${EXE_EXTN} -bargs ${BIND_OPTS}

examine:
	-spark -plain @${OUTPUT_NAME}.smf

# Cleaning code base
# ==================

clean: standardclean

reallyclean: clean targetclean vcclean

standardclean:
	rm -f *.o *.ali

targetclean:
	rm -f ${OUTPUT_NAME}${EXE_EXTN}
	rm -f b~*.ad[sb]

vcclean:
	-find vcg -type f -name "*.vcg" -delete
	-find vcg -type f -name "*.fdl" -delete
	-find vcg -type f -name "*.rls" -delete
	-find vcg -type f -name "*.siv" -delete
	-find vcg -type f -name "*.slg" -delete
	-find vcg -type f -name "*.sli" -delete
	-find vcg -type f -name "*.lsb" -delete
	-find vcg -type f -name "*.log" -delete
	rm -f vcg/${OUTPUT_NAME}.rep
	-find vcg -depth -mindepth 1 -type d | grep -v -e '/\.svn' | xargs rmdir --ignore-fail-on-non-empty

################################################################################
# END-OF-FILE
