##############################################################################
# Makefile definitions and common commands
#
# Setup of C definitions based on makeconfig options
#
# Suitable for POSIX platforms (Linux, *BSD, OSX etc.).
# Note: the configurable options are in makeconfig.
#
# Copyright (C) 2009-2010 Francesco Abbate. See Copyright Notice in gsl-shell.c
##############################################################################

MAJVER=  2
MINVER=  0
RELVER=  2
ABIVER=  5.1
NODOTABIVER= 51

AR= ar rcu
RANLIB= ranlib
CP_REL = cp --parents

CC = gcc
CXX = g++

COMPILE = $(CC) $(CFLAGS) $(DEFS) $(INCLUDES)
CXXCOMPILE = $(CXX) $(CXXFLAGS) $(DEFS) $(INCLUDES)
LINK_EXE = $(CC) $(LDFLAGS)

GSH_LIBDIR= $(GSH_BASE_DIR)/.libs
GSH_DLL_LIBDIR= $(GSH_BASE_DIR)
LUADIR = $(GSH_BASE_DIR)/luajit2
LUA_CFLAGS = -I$(LUADIR)/src

ifeq ($(HOST_SYS),Windows)
  INCLUDES += -I/usr/include
  LDFLAGS += -Wl,--enable-auto-import
  LIBS += -L/usr/lib
else
  ifeq ($(HOST_SYS),Darwin)
    LINK_EXE = $(CXX) $(LDFLAGS)
    # Use rsync because the --parents option to cp doesn't exist in
    # Mac OS X
    CP_REL = rsync -R
    LDFLAGS += -L/usr/X11/lib -undefined dynamic_lookup -pagezero_size 10000 -image_base 100000000
  else
    LDFLAGS += -Wl,-E
  endif
endif

ifeq ($(strip $(LUA_BUILD)), yes)
  PACKAGE_NAME = lua
  PACKAGE_VERSION = $(ABIVER)
else
  PACKAGE_NAME = gsl-shell
  PACKAGE_VERSION = 2.3
endif

ifeq ($(strip $(DEBUG)), yes)
  CFLAGS = -g -Wall
  CXXFLAGS = -g -Wall
else
  CFLAGS = -O2 -fomit-frame-pointer -ffast-math -Wall
  CXXFLAGS = -Os -fno-exceptions -ffast-math -fno-rtti -Wall
endif

PTHREAD_DEFS += -D_REENTRANT
CPP_SUP_LIBS = -lsupc++

ifeq ($(HOST_SYS),Windows)
  DEFS += -DWIN32
  LDFLAGS += -Wl,--export-all-symbols

  GSL_SHELL = gsl-shell.exe
  GSL_SHELL_GUI = gsl-shell-gui.exe
  LUAJIT_DLL = lua$(NODOTABIVER)
  LUAJIT_SO = $(GSH_DLL_LIBDIR)/$(LUAJIT_DLL).dll
else
  PTHREAD_DEFS += -pthread
  PTHREAD_LIBS += -pthread

  GSL_SHELL = gsl-shell
  GSL_SHELL_GUI = gsl-shell-gui
  LUAJIT_DLL = luajit
  LUAJIT_SO = $(GSH_DLL_LIBDIR)/lib$(LUAJIT_DLL).so
endif

ifeq ($(strip $(DEBUG)), yes)
  GSL_SHELL_DEFS += -DGSL_SHELL_DEBUG
endif

ifeq ($(strip $(DISABLE_GAMMA_CORR)), yes)
  GSL_SHELL_DEFS += -DDISABLE_GAMMA_CORR
endif

ifeq ($(strip $(DISABLE_SUBPIXEL_LCD)), yes)
  GSL_SHELL_DEFS += -DDISABLE_SUBPIXEL_AA
endif

ifeq ($(strip $(USE_READLINE)),yes)
  ifneq ($(HOST_SYS),Windows)
    GSL_SHELL_DEFS += -DUSE_READLINE
  else
    USE_READLINE = no
  endif
endif
