# generic.env
# Linux/generic
#
# Common makefile settings for wxWindows programs
# This file is included by all the other makefiles, thus changes 
# made here take effect everywhere (except where overriden).
# RCS-ID:      $Id$
#
########################### Programs #################################

# Replace this with your own path if necessary
WXDIR       = $(WXWIN)

# C++ compiler
CC          = g++

# C compiler
CCC         = gcc

# Compiler for lex/yacc .c programs
CCLEX       = $(CCC)

LEX         = lex
YACC        = yacc
# Note: if using bison, use -y option for yacc compatibility
# YACC      = bison -y
MAKE        = make
AROPTIONS   = ruv
RANLIB      = ranlib

############################ Switches #################################

# Debug/trace mode. 1 or more for debugging.
DEBUG       = 1
GUI         = -D__WXSTUBS__ -D__UNIX__
GUISUFFIX   = _stubs

########################## Compiler flags #############################

# Misc options
OPTIONS     = -D__LINUX__ -D__WXDEBUG__
COPTIONS    =
DEBUGFLAGS  = -ggdb
INCLUDE     =
WARN        = -Wall -Wno-unused # -w
CWARN       = -Wall -Wno-unused # -w
OPT         = # -O2

############################ Includes #################################

# Compiler or system-specific include paths
COMPPATHS   =
XINCLUDE    = -I/usr/openwin/include -I/usr/include/X11 -I/usr/include/Xm \
              -I/usr/include/X11/Xm -I/usr/include
XLIB        = -L/usr/local/X11/lib -L/usr/openwin/lib -L/usr/X11/lib -L/usr/X11R6/lib

############################ Libraries ################################

COMPLIBS    = -lstdc++
GUILDLIBS   = -lwx_stubs $(COMPLIBS) -lXm -lXmu -lXt -lXpm -lX11 -lm

############################# Suffixes ################################

# Change cpp to c if you want to use main.c instead of main.cpp.
# Edit wx_setup.h accordingly (USE_C_MAIN=1)

OBJSUFF     =o
SRCSUFF     =cpp
MAINSUFF    =cpp

####################### No changes below this line ####################

WXINC       = $(WXDIR)/include
WXLIB       = $(WXDIR)/lib/libwx$(GUISUFFIX).a
INC         = -I$(WXINC) -I$(WXDIR)/src/png -I$(WXDIR)/src/zlib $(COMPPATHS)

# Directory for object files
OBJDIR = objects$(GUISUFFIX)

CPPFLAGS    = $(EXTRACPPFLAGS) $(INC) $(XINCLUDE) $(OPTIONS) $(GUI) $(DEBUGFLAGS) $(WARN) $(OPT)
CFLAGS      = $(EXTRACFLAGS) $(INC) $(XINCLUDE) $(COPTIONS) $(GUI) $(DEBUGFLAGS) $(CWARN) $(OPT)
LDFLAGS     = $(EXTRALDFLAGS) $(XLIB) -L$(WXDIR)/lib
LDLIBS      = $(EXTRALDLIBS) $(GUILDLIBS)

# Clears all default suffixes
.SUFFIXES:	.o .cpp .c

.c.o :
	$(CCC) -c $(CFLAGS) -o $@ $<

.cpp.o :
	$(CC) -c $(CPPFLAGS) -o $@ $<

.C.o :
	$(CC) -c $(CPPFLAGS) -o $@ $<

####################### Targets to allow multiple GUIs ####################

dummy:
	echo Use a target: one of motif, stubs

stubs:
	make -f makefile.unx all GUI='-D__WXSTUBS__ -D__UNIX__' GUISUFFIX='_stubs' GUILDLIBS='-lwx_stubs $(COMPLIBS) -lXm -lXmu -lXt -lX11 -lm'

motif:
	make -f makefile.unx all GUI='-D__WXMOTIF__ -D__UNIX__' GUISUFFIX='_motif' GUILDLIBS='-lwx_motif $(COMPLIBS) -lpng -lzlib -lXm -lXmu -lXt -lXpm -lX11 -lm'

gtk:
	make -f makefile.unx all GUI='-D__WXGTK__ -D__UNIX__' GUISUFFIX='_gtk' GUILDLIBS='-lwx_gtk2 $(COMPLIBS) -ldl -lgtk -lgdk -lglib -lpng -lzlib -lX11 -lm -pthread'

cleanstubs:
	make -f makefile.unx clean GUI='-D__WXSTUBS__ -D__UNIX__' GUISUFFIX='_stubs' GUILDLIBS='-lwx_stubs $(COMPLIBS) -lXm -lXmu -lXt -lX11 -lm'

cleanmotif:
	make -f makefile.unx clean GUI='-D__WXMOTIF__ -D__UNIX__' GUISUFFIX='_motif' GUILDLIBS='-lwx_motif $(COMPLIBS) -lXm -lXmu -lXt -lX11 -lm'

cleangtk:
	make -f makefile.unx clean GUI='-D__WXGTK__ -D__UNIX__' GUISUFFIX='_gtk'

$(OBJDIR):
	mkdir $(OBJDIR)