# ***** BEGIN LICENSE BLOCK ***** 
# Version: MPL 1.1/GPL 2.0/LGPL 2.1 
#
# The contents of this file are subject to the Mozilla Public License Version 1.1 (the 
# "License"); you may not use this file except in compliance with the License. You may obtain 
# a copy of the License at http://www.mozilla.org/MPL/ 
#
# Software distributed under the License is distributed on an "AS IS" basis, WITHOUT 
# WARRANTY OF ANY KIND, either express or implied. See the License for the specific 
# language governing rights and limitations under the License. 
#
# The Original Code is [Open Source Virtual Machine.] 
#
# The Initial Developer of the Original Code is Adobe System Incorporated.  Portions created 
# by the Initial Developer are Copyright (C)[ 2006 ] Adobe Systems Incorporated. All Rights 
# Reserved. 
#
# Contributor(s): Adobe AS3 Team
#
# Alternatively, the contents of this file may be used under the terms of either the GNU 
# General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public 
# License Version 2.1 or later (the "LGPL"), in which case the provisions of the GPL or the 
# LGPL are applicable instead of those above. If you wish to allow use of your version of this 
# file only under the terms of either the GPL or the LGPL, and not to allow others to use your 
# version of this file under the terms of the MPL, indicate your decision by deleting provisions 
# above and replace them with the notice and other provisions required by the GPL or the 
# LGPL. If you do not delete the provisions above, a recipient may use your version of this file 
# under the terms of any one of the MPL, the GPL or the LGPL. 
# 
# ***** END LICENSE BLOCK ***** */

MMGC_DEBUG_CFLAGS     := -g -MMD
MMGC_RELEASE_CFLAGS   := -O3 -MMD

MMGC_DEBUG_CXXFLAGS   := ${MMGC_DEBUG_CFLAGS} -fcheck-new -Wno-invalid-offsetof -rdynamic
MMGC_RELEASE_CXXFLAGS := ${MMGC_RELEASE_CFLAGS} -fno-rtti -fcheck-new -Wno-invalid-offsetof

ifeq (YES, ${DEBUG})
   MMGC_CFLAGS       := ${MMGC_DEBUG_CFLAGS}
   MMGC_CXXFLAGS     := ${MMGC_DEBUG_CXXFLAGS}
else
   MMGC_CFLAGS       := ${MMGC_RELEASE_CFLAGS}
   MMGC_CXXFLAGS     := ${MMGC_RELEASE_CXXFLAGS}
endif

#************************************************************************
# DEFS
#************************************************************************
ifeq (YES, ${DEBUGGER})
	MMGC_DEFS := ${MMGC_DEFS} -DAVMPLUS_LINUX -DDEBUGGER -DAVMPLUS_IA32
else
	MMGC_DEFS := ${MMGC_DEFS} -DAVMPLUS_LINUX -DSOFT_ASSERTS -DAVMPLUS_IA32
endif

ifeq (YES, ${DEBUG})
	MMGC_DEFS := ${MMGC_DEFS} -DDEBUG
endif

#************************************************************************
# Include Paths
#************************************************************************

MMGC_INCS := -I${MMGC_ROOT} -I${MMGC_ROOT}/../core -I${MMGC_ROOT}/../codegen

#****************************************************************************
# Preprocessor directives
#****************************************************************************

MMGC_DEFS := ${MMGC_DEFS} -DUNIX ${MMGC_PLATFORM_DEFS}
MMGC_CFLAGS   := ${MMGC_CFLAGS} ${MMGC_DEFS}
MMGC_CXXFLAGS := ${MMGC_CXXFLAGS} ${MMGC_DEFS}${MMGC_CXXFLAGS}

#************************************************************************
# MMgc common files
#************************************************************************

MMGC_SRCS := ${MMGC_ROOT}/GCObject.cpp \
			${MMGC_ROOT}/GCMemoryProfiler.cpp \
			${MMGC_ROOT}/GCLargeAlloc.cpp \
			${MMGC_ROOT}/GCHeapUnix.cpp \
			${MMGC_ROOT}/GCHeap.cpp \
			${MMGC_ROOT}/GCHashtable.cpp \
			${MMGC_ROOT}/GCDebugUnix.cpp \
			${MMGC_ROOT}/GCAllocObjectUnix.cpp \
			${MMGC_ROOT}/GCAlloc.cpp \
			${MMGC_ROOT}/GC.cpp \
			${MMGC_ROOT}/GCTests.cpp \
			${MMGC_ROOT}/FixedMalloc.cpp \
			${MMGC_ROOT}/FixedAlloc.cpp

#************************************************************************
# MMgc rules
#************************************************************************

define mmgc-cmd
	@echo "=== compiling MMgc: ===" $@ ${OPT}${MMGC_CXXFLAGS}
    @${CXX} -c ${OPT} ${MMGC_CXXFLAGS} ${MMGC_INCS} $< -o $@
endef

${MMGC_ROOT}/%.o : ${MMGC_ROOT}/%.cpp
	$(mmgc-cmd)
