ifndef MQO_CFG_LOADED
MQO_CFG_LOADED=1

# This must be first -- in case there's LTC in /usr/local/include.  If there's
# LTC in /usr/include, well, we're fucked.

CFLAGS += -I$(ROOT)/crypt/src/headers 
CFLAGS += -std=gnu99
HAS_DEVRANDOM=yes

BIN=$(ROOT)/bin
STUBS=$(ROOT)/stubs

OS=$(shell uname)
ARCH=$(shell uname -m)

ifeq ($(ARCH),i386)
# BSD calls anything after i386, i386.
ARCH=x86
endif

ifeq ($(ARCH),i686)
# GNU calls post-pentium i686
ARCH=x86
endif

ifeq ($(ARCH),Power Macintosh)
# Oh lawd, it don't come easy with you macs..
ARCH=ppc
endif

ifeq ($(ARCH),macppc)
# Somebody smell BSD?
ARCH=ppc
endif

ifdef USE_MZSCHEME
DO_SCHEME=mzscheme -M errortrace -f $(ROOT)/lib/run-mzscheme.scm -C
endif

ifdef USE_GUILE
DO_SCHEME=guile --debug -l $(ROOT)/lib/run-guile.scm -e guile-main -s 
endif

ifndef DO_SCHEME
DO_SCHEME=@echo You need a scheme interpreter for 
endif

ifeq ($(OS),MINGW32_NT-5.1)
OS=MinGW
endif

ifeq ($(OS),CYGWIN_NT-5.1)
OS=Cygwin
endif

ifeq ($(OS),MINGW32_NT-5.0)
OS=MinGW
endif

ifeq ($(OS),CYGWIN_NT-5.0)
OS=Cygwin
endif

ifeq ($(OS),Linux)
# Tested on Debian.
CFLAGS += -DLINUX
PLATFORM = linux-$(ARCH)
PKG=.tar.gz
endif

ifeq ($(OS),MinGW)
PLATFORM = winnt-$(ARCH)
CFLAGS += -mwindows
CFLAGS += -I/mingw/include
LIBRX=/mingw/lib/libregex.a
LIBS += -lwsock32
EXE=.exe
HAS_DEVRANDOM=no
PKG=.zip
endif

ifeq ($(OS),Cygwin)
CFLAGS += -mwindows
CFLAGS += -mno-cygwin
CFLAGS += -I/mingw/include
LIBRX=/mingw/lib/libregex.a
LIBS += -lwsock32
PLATFORM = winnt-$(ARCH)
EXE=.exe
HAS_DEVRANDOM=no
PKG=.zip
endif

ifeq ($(OS),OpenBSD)
PLATFORM = openbsd-$(ARCH)
PKG=.tar.gz
endif

ifeq ($(OS),Darwin)
PLATFORM = darwin-$(ARCH)
PKG=.tar.gz
endif

ifdef COMPACT
CFLAGS+=-Os -DNDEBUG
else
ifdef FAST
CFLAGS+=-O2 -DNDEBUG
else
CFLAGS+=-g 
endif
endif

ifndef TAG
TAG=$(shell date +%Y-%m-%d)
endif

PACKAGENAME=mosref-2.0-$(TAG)-$(PLATFORM)
VERSION=2.0-$(TAG)
PACKAGEDIR=$(PACKAGENAME)
PACKAGE=$(PACKAGEDIR)$(PKG) 

CFLAGS += -DMQO_VERSION='"$(VERSION)"'

LIBTC=$(ROOT)/crypt/libtomcrypt.a
MOSVM=$(BIN)/mosvm$(EXE)
MOSREF=$(BIN)/mosref$(EXE)
MOSVM_STUB=$(STUBS)/mosvm-stub-$(PLATFORM)$(EXE)
MOSC=$(BIN)/mosc$(EXE)
MOSASM=$(BIN)/mosasm$(EXE)
MOSLD=$(BIN)/mosld$(EXE)

ifeq ($(PKG),.zip)
PACKAGECMD=cp `which nc` $(PACKAGEDIR)/bin && zip -r $(PACKAGE) $(PACKAGEDIR)
endif

ifeq ($(PKG),.tar.gz)
PACKAGECMD=tar -czf $(PACKAGE) $(PACKAGEDIR)
endif

ifeq ($(HAS_DEVRANDOM),yes)
CFLAGS += -DDEVRANDOM
endif

CFLAGS += -DMQO_PLATFORM=\"$(PLATFORM)\"
endif
