From 7c8e1fc2a2044be0082b90adc194ab3e188fa723 Mon Sep 17 00:00:00 2001
From: scuri
Date: Tue, 9 Nov 2010 13:26:37 +0000
Subject: *** empty log message ***
---
html/en/guide.html | 24 +-
src/Makefile | 4 +-
src/tecmake.mak | 1358 ---------------------------------------------------
src/tecmakewin.mak | 1384 ----------------------------------------------------
tecmake.mak | 1358 +++++++++++++++++++++++++++++++++++++++++++++++++++
tecmakewin.mak | 1384 ++++++++++++++++++++++++++++++++++++++++++++++++++++
6 files changed, 2760 insertions(+), 2752 deletions(-)
delete mode 100644 src/tecmake.mak
delete mode 100644 src/tecmakewin.mak
create mode 100644 tecmake.mak
create mode 100644 tecmakewin.mak
diff --git a/html/en/guide.html b/html/en/guide.html
index 6e8aba1..dcb8eca 100644
--- a/html/en/guide.html
+++ b/html/en/guide.html
@@ -63,14 +63,14 @@
-In the Downloads you will ne able to find pre-compiled binaries for many
+
In the Downloads you will be able to find pre-compiled binaries for many
platforms, all those binaries were built using Tecmake. Tecmake is a command line multi compiler build tool
based on GNU make, available at
http://www.tecgraf.puc-rio.br/tecmake. Tecmake is
used by all the Tecgraf libraries and many applications.
-In UNIX, you do not need to install Tecmake, a compact version of Tecmake for
-UNIX is already included in the source code package. Just type "make" in the
-command line on the "src" folder and all libraries and executables will be
+
In UNIX, you do not need to install Tecmake, a version for
+Posix systems is already included in the source code package. Just type "make" in the
+command line on the "src" folder and all libraries will be
build.
Set the TECTOOLS_HOME environment variable to the folder were the Lua libraries
are installed, by default it will assume "TECTOOLS_HOME=../..".
@@ -78,12 +78,20 @@ are installed, by default it will assume "TECTOOLS_HOME=../..".
Linux" guide.
In Windows, the easiest way to build everything is to install the Tecmake tool into your system. It is easy and helps a lot.
The Tecmake configuration files (*.mak) available at the "src" folder are very easy to understand also.
-Also there are files named
+There are files named
make_uname.bat that build the libraries using Tecmake. To build for Windows using
- Visual C 7.0 (2005) for example, just execute "make_uname vc7" , or the
-DLLs with Visual C++ 9 (2008) type "make_uname dll9". The Visual
+ Visual C 9.0 (2008) for example, just execute "make_uname vc9" , or
+for the
+DLLs type "make_uname dll9". The Visual
Studio workspaces with the respective projects available in the source package
is for debugging purposes only.
+If you don't want to install Tecmake you can use the version for Windows
+systems that is included in the source code package. BUt is is more complicated
+that its Posix counterpart. First the GNU make must be installed and in the PATH
+before other makes. In the command line you must specify the compiler path and
+the TEC_UNAME variable. For example:
+make -f tecmakewin.mak TEC_UNAME=mingw4 MINGW4=c:/mingw
+make -f tecmakewin.mak TEC_UNAME=gcc4 GCC4=c:/cygwin (Cygwin building for Win32)
Make sure you have all the dependencies for the library you want installed,
see the documentation bellow.
If you are going to build all the libraries,
@@ -120,7 +128,7 @@ imlua_process51 -> imlua51
-> im_process
As a general rule (excluding system dependencies and included third party
libraries): IM has NO external dependencies, and IMLua depends on Lua.
-The Lua binding for IM (Makfiles and Pre-compiled binaries) depend on the
+
The Lua binding for IM (Makefiles and Pre-compiled binaries) depend on the
LuaBinaries distribution. So if
you are going to build all use the LuaBinaries source package
also, not the Lua.org original source package. If you like to
diff --git a/src/Makefile b/src/Makefile
index c819fb0..8021b71 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,8 +1,8 @@
ifeq ($(OS), Windows_NT)
- TECMAKE_CMD = $(MAKE) --no-print-directory -f tecmakewin.mak TEC_UNAME=$(TEC_UNAME)
+ TECMAKE_CMD = $(MAKE) --no-print-directory -f ../tecmakewin.mak TEC_UNAME=$(TEC_UNAME)
WINLIBS = im_avi im_wmv imlua_avi imlua_wmv im_capture imlua_capture5
else
- TECMAKE_CMD = $(MAKE) --no-print-directory -f tecmake.mak
+ TECMAKE_CMD = $(MAKE) --no-print-directory -f ../tecmake.mak
endif
.PHONY: do_all im im_jp2 im_process im_fftw imlua3 imlua5 imlua_jp2 imlua_process5 imlua_fftw5 $(WINLIBS)
diff --git a/src/tecmake.mak b/src/tecmake.mak
deleted file mode 100644
index 2426d5b..0000000
--- a/src/tecmake.mak
+++ /dev/null
@@ -1,1358 +0,0 @@
-#-------------------------------------------------------------------------#
-#- Tecmake (POSIX Version) -#
-#- Generic Makefile to build applications and libraries at TeCGraf -#
-#- The user makefile usually has the name "config.mak". -#
-#-------------------------------------------------------------------------#
-
-#---------------------------------#
-# Tecmake Version
-VERSION = 4.3
-
-
-#---------------------------------#
-# First target
-.PHONY: build
-build: tecmake
-
-
-#---------------------------------#
-# System Variables Definitions
-
-ifndef TEC_UNAME
- # Base Defintions
- TEC_SYSNAME:=$(shell uname -s)
- TEC_SYSVERSION:=$(shell uname -r|cut -f1 -d.)
- TEC_SYSMINOR:=$(shell uname -r|cut -f2 -d.)
- TEC_SYSARCH:=$(shell uname -m)
-
- # Fixes
- ifeq ($(TEC_SYSNAME), SunOS)
- TEC_SYSARCH:=$(shell uname -p)
- endif
- ifeq ($(TEC_SYSNAME), IRIX)
- TEC_SYSARCH:=$(shell uname -p)
- endif
- ifeq ($(TEC_SYSNAME), FreeBSD)
- TEC_SYSMINOR:=$(shell uname -r|cut -f2 -d.|cut -f1 -d-)
- endif
- ifeq ($(TEC_SYSNAME), AIX)
- TEC_SYSVERSION:=$(shell uname -v)
- TEC_SYSMINOR:=$(shell uname -r)
- TEC_SYSARCH:=ppc
- endif
- ifeq ($(TEC_SYSNAME), Darwin)
- TEC_SYSNAME:=MacOS
- TEC_SYSVERSION:=$(shell sw_vers -productVersion|cut -f1 -d.)
- TEC_SYSMINOR:=$(shell sw_vers -productVersion|cut -f2 -d.)
- TEC_SYSARCH:=$(shell uname -p)
- endif
-
- ifeq ($(TEC_SYSARCH), i686)
- TEC_SYSARCH:=x86
- endif
- ifeq ($(TEC_SYSARCH), i386)
- TEC_SYSARCH:=x86
- endif
- ifeq ($(TEC_SYSARCH), powerpc)
- TEC_SYSARCH:=ppc
- endif
- ifeq ($(TEC_SYSARCH), x86_64)
- TEC_SYSARCH:=x64
- endif
- ifeq ($(TEC_SYSARCH), amd64)
- TEC_SYSARCH:=x64
- endif
-
- # Compose
- TEC_SYSRELEASE:=$(TEC_SYSVERSION).$(TEC_SYSMINOR)
- TEC_UNAME:=$(TEC_SYSNAME)$(TEC_SYSVERSION)$(TEC_SYSMINOR)
-
- # Cygwin
- ifneq ($(findstring CYGWIN, $(TEC_SYSNAME)), )
- TEC_SYSNAME:=CYGWIN
- TEC_UNAME:=cygw$(TEC_SYSVERSION)$(TEC_SYSMINOR)
- endif
-
- # Linux 2.4 and GCC 3.x
- ifeq ($(TEC_UNAME), Linux24)
- GCCVER:=$(shell gcc -dumpversion|cut -f1 -d.)
- ifeq ($(GCCVER), 3)
- TEC_UNAME:=$(TEC_UNAME)g3
- endif
- endif
-
- # Linux 2.6 and GCC 4.x
- ifeq ($(TEC_UNAME), Linux26)
- GCCVER:=$(shell gcc -dumpversion|cut -f1 -d.)
- ifeq ($(GCCVER), 4)
- TEC_UNAME:=$(TEC_UNAME)g4
- endif
- endif
-
- # Linux and PowerPC
- ifeq ($(TEC_SYSNAME), Linux)
- ifeq ($(TEC_SYSARCH), ppc)
- TEC_UNAME:=$(TEC_UNAME)ppc
- endif
- endif
-
- # 64-bits Linux
- ifeq ($(TEC_SYSNAME), Linux)
- ifeq ($(TEC_SYSARCH), x64)
- BUILD_64=Yes
- TEC_UNAME:=$(TEC_UNAME)_64
- endif
-
- ifeq ($(TEC_SYSARCH), ia64)
- BUILD_64=Yes
- TEC_UNAME:=$(TEC_UNAME)_ia64
- endif
- endif
-
- # 64-bits FreeBSD
- ifeq ($(TEC_SYSNAME), FreeBSD)
- ifeq ($(TEC_SYSARCH), x64)
- BUILD_64=Yes
- TEC_UNAME:=$(TEC_UNAME)_64
- endif
- endif
-
- # Solaris and Intel
- ifeq ($(TEC_SYSNAME), SunOS)
- ifeq ($(TEC_SYSARCH) , x86)
- TEC_UNAME:=$(TEC_UNAME)x86
- endif
- endif
-
- # MacOS and Intel
- ifeq ($(TEC_SYSNAME), MacOS)
- ifeq ($(TEC_SYSMINOR), 6)
- TEC_SYSARCH:=x64
- else
- ifeq ($(TEC_SYSARCH), x86)
- TEC_UNAME:=$(TEC_UNAME)x86
- endif
- endif
- endif
-endif
-
-
-#---------------------------------#
-# System Info
-.PHONY: sysinfo
-sysinfo:
- @echo ''; echo 'Tecmake: System Info'
- @echo 'TEC_SYSNAME = $(TEC_SYSNAME)'
- @echo 'TEC_SYSVERSION = $(TEC_SYSVERSION)'
- @echo 'TEC_SYSMINOR = $(TEC_SYSMINOR)'
- @echo 'TEC_SYSARCH = $(TEC_SYSARCH)'
- @echo 'TEC_UNAME = $(TEC_UNAME)'
- @echo 'GTK_BASE = $(GTK_BASE)'
- @echo 'X11_LIB = $(X11_LIB)'
- @echo 'X11_INC = $(X11_INC)'
- @echo 'MOTIF_LIB = $(MOTIF_LIB)'
- @echo 'MOTIF_INC = $(MOTIF_INC)'
- @echo 'GLUT_LIB = $(GLUT_LIB)'
- @echo 'GLUT_INC = $(GLUT_INC)'
- @echo 'OPENGL_LIB = $(OPENGL_LIB)'
- @echo 'OPENGL_INC = $(OPENGL_INC)'
- @echo ''
-
-
-#---------------------------------#
-# Known Platforms
-
-UNAMES = Linux24 Linux24g3 Linux24g3_64 Linux26 Linux26_64 Linux26g4 Linux26g4_64 Linux26_ia64 FreeBSD54 SunOS57 SunOS58 SunOS510 SunOS510_x86 AIX43 IRIX65 IRIX6465
-
-
-#---------------------------------#
-# Directories Definitions
-
-PROJDIR = ..
-SRCDIR = .
-OBJROOT = $(PROJDIR)/obj
-
-
-#---------------------------------#
-# Byte Order and Word Size
-
-ifneq ($(findstring x86, $(TEC_SYSARCH)), )
- TEC_BYTEORDER = TEC_LITTLEENDIAN
-else
-ifeq ($(TEC_SYSARCH), arm)
- TEC_BYTEORDER = TEC_LITTLEENDIAN
-else
- TEC_BYTEORDER = TEC_BIGENDIAN
-endif
-endif
-
-ifeq ($(TEC_SYSARCH), x64)
- TEC_BYTEORDER = TEC_LITTLEENDIAN
- TEC_WORDSIZE = TEC_64
-else
-ifdef BUILD_64
- TEC_WORDSIZE = TEC_64
-else
- TEC_WORDSIZE = TEC_32
-endif
-endif
-
-# Itanium Exception
-ifeq ($(TEC_SYSARCH), ia64)
- TEC_BYTEORDER = TEC_LITTLEENDIAN
- TEC_WORDSIZE = TEC_64
-endif
-
-
-#---------------------------------#
-# Compilation Flags
-STDFLAGS := -Wall
-STDDEFS := -DTEC_UNAME=$(TEC_UNAME) -DTEC_SYSNAME=$(TEC_SYSNAME) -D$(TEC_SYSNAME)=$(TEC_SYSRELEASE) -D$(TEC_BYTEORDER) -D$(TEC_WORDSIZE) -DFUNCPROTO=15
-STDINCS :=
-OPTFLAGS := -O2
-STDLFLAGS := r
-DEBUGFLAGS := -g
-STDLDFLAGS := -shared
-DLIBEXT := so
-DLIBPRE := lib
-APPEXT :=
-
-ifneq ($(findstring Linux24, $(TEC_UNAME)), )
- NO_GTK_DEFAULT = Yes
-endif
-ifeq ($(TEC_UNAME), Linux26)
- NO_GTK_DEFAULT = Yes
-endif
-ifeq ($(TEC_UNAME), Linux26_64)
- NO_GTK_DEFAULT = Yes
-endif
-
-ifndef NO_GTK_DEFAULT
- ifneq ($(findstring cygw, $(TEC_UNAME)), )
- GTK_DEFAULT = Yes
- endif
- ifneq ($(findstring Linux, $(TEC_UNAME)), )
- GTK_DEFAULT = Yes
- endif
- ifneq ($(findstring MacOS, $(TEC_UNAME)), )
- GTK_DEFAULT = Yes
- endif
- ifneq ($(findstring FreeBSD, $(TEC_UNAME)), )
- GTK_DEFAULT = Yes
- endif
-endif
-
-#---------------------------------#
-# Tools
-
-CC := $(TEC_TOOLCHAIN)gcc
-CPPC := $(TEC_TOOLCHAIN)g++
-FF := $(TEC_TOOLCHAIN)g77
-RANLIB := $(TEC_TOOLCHAIN)ranlib
-AR := $(TEC_TOOLCHAIN)ar
-DEBUGGER := $(TEC_TOOLCHAIN)gdb
-RCC := $(TEC_TOOLCHAIN)windres
-
-# Remote build script
-REMOTE = $(TECMAKE_HOME)/remote
-
-# Packed LOHs script
-LUAPRE = $(TECMAKE_HOME)/luapre.lua
-
-
-#---------------------------------#
-# User Configuration File
-
-MAKENAME = config.mak
-
-ifdef MF
- MAKENAME = $(MF).mak
-endif
-
-###################
-include $(MAKENAME)
-###################
-
-
-#---------------------------------#
-# Definitions of public variables
-
-ifdef LIBNAME
- TARGETNAME = $(LIBNAME)
- MAKETYPE = LIB
-else
- TARGETNAME = $(APPNAME)
- MAKETYPE = APP
-endif
-
-ifndef TARGETNAME
- $(error LIBNAME nor APPNAME defined in $(MAKENAME))
-endif
-
-PROJNAME ?= $(TARGETNAME)
-
-DEPEND := $(TARGETNAME).dep
-
-ifdef DEPENDDIR
- DEPEND := $(DEPENDDIR)/$(TARGETNAME).dep.$(TEC_UNAME)
-endif
-
-ifeq ($(MAKETYPE), APP)
- TARGETROOT ?= $(PROJDIR)/bin
-else
- TARGETROOT ?= $(PROJDIR)/lib
-endif
-
-ifneq ($(PROJNAME), $(TARGETNAME))
- OBJROOT := $(OBJROOT)/$(TARGETNAME)
-endif
-
-ifdef DBG
- STDFLAGS += $(DEBUGFLAGS)
- STDDEFS += -DDEBUG
-else
- STDDEFS += -DNDEBUG
- ifdef OPT
- STDFLAGS += $(OPTFLAGS)
- STRIP ?= Yes
- endif
-endif
-
-ifdef BUILD_64
- ifneq ($(findstring SunOS, $(TEC_UNAME)), )
- USE_CC = Yes
- BUILD_64_DIR = Yes
- endif
- ifneq ($(findstring AIX, $(TEC_UNAME)), )
- USE_CC = Yes
- BUILD_64_DIR = Yes
- endif
- ifneq ($(findstring IRIX, $(TEC_UNAME)), )
- USE_CC = Yes
- BUILD_64_DIR = Yes
- endif
-endif
-
-ifdef USE_CC
- CC := cc
- CPPC := CC
- STDFLAGS =
- UNAMES := $(UNAMES_CC)
- ifdef USE_CC_DIR
- TEC_UNAME := $(TEC_UNAME)cc
- endif
-endif
-
-ifdef BUILD_64
- ifdef BUILD_64_DIR
- TEC_UNAME := $(TEC_UNAME)_64
- endif
-endif
-
-TEC_UNAME_DIR ?= $(TEC_UNAME)
-TEC_UNAME_LIB_DIR ?= $(TEC_UNAME)
-ifdef DBG
- ifdef DBG_LIB_DIR
- TEC_UNAME_LIB_DIR := $(TEC_UNAME_DIR)d
- endif
- ifdef DBG_DIR
- TEC_UNAME_DIR := $(TEC_UNAME_DIR)d
- endif
-endif
-
-OBJDIR := $(OBJROOT)/$(TEC_UNAME_DIR)
-TARGETDIR := $(TARGETROOT)/$(TEC_UNAME_DIR)
-
-# Change linker if any C++ source
-ifndef LINKER
- ifneq "$(findstring .cpp, $(SRC))" ""
- LINKER := $(CPPC)
- LD := $(CPPC)
- else
- LINKER := $(CC)
- LD := $(CC)
- endif
-endif
-
-ifdef NO_ECHO
- ECHO:=@
-endif
-
-#---------------------------------#
-# LO and LOH Suffix
-
-SRCLUADIR ?= $(SRCDIR)
-LOHDIR ?= $(SRCLUADIR)
-
-ifdef USE_LOH_SUBDIR
- ifeq ($(TEC_BYTEORDER), TEC_BIGENDIAN)
- ifeq ($(TEC_WORDSIZE), TEC_64)
- LOH_SUBDIR ?= be64
- else
- LOH_SUBDIR ?= be32
- endif
- else
- ifeq ($(TEC_WORDSIZE), TEC_64)
- LOH_SUBDIR ?= le64
- else
- LOH_SUBDIR ?= le32
- endif
- endif
- LOHDIR := $(LOHDIR)/$(LOH_SUBDIR)
- INCLUDES += $(LOHDIR)
-else
- ifeq ($(TEC_BYTEORDER), TEC_BIGENDIAN)
- ifeq ($(TEC_WORDSIZE), TEC_64)
- LO_SUFFIX ?= _be64
- else
- LO_SUFFIX ?= _be32
- endif
- else
- ifeq ($(TEC_WORDSIZE), TEC_64)
- LO_SUFFIX ?= _le64
- else
- LO_SUFFIX ?=
- endif
- endif
-endif
-
-
-
-#---------------------------------#
-# Platform specific variables
-
-# Definitions for X11
-X11_LIBS := Xmu Xt Xext X11
-#X11_LIB :=
-#X11_INC := #include
-
-# Definitions for OpenGL
-OPENGL_LIBS := GLU GL
-#OPENGL_LIB :=
-#OPENGL_INC := #include and possibly
-MOTIFGL_LIB := GLw #include
-
-# Definitions for Motif
-#MOTIF_LIB :=
-#MOTIF_INC := #include
-
-# Definitions for GLUT
-#GLUT_LIB :=
-#GLUT_INC :=
-
-# Definitions for GTK
-ifdef GTK_BASE
- GTK := $(GTK_BASE)
-else
- ifneq ($(findstring MacOS, $(TEC_UNAME)), )
- # Option 1 - Fink GTK port
- GTK = /sw
- # Option 3 - GTK-OSX Framework
- # GTK := /Users/cpts/gtk/inst
- else
- GTK = /usr
- endif
-endif
-
-ifneq ($(findstring Linux, $(TEC_UNAME)), )
- UNIX_LINUX = Yes
- ifdef BUILD_64
- ifeq ($(TEC_SYSARCH), ia64)
- STDFLAGS += -fPIC
- X11_LIB := /usr/X11R6/lib
- else
- STDFLAGS += -m64 -fPIC
- X11_LIB := /usr/X11R6/lib64
- endif
- else
- X11_LIB := /usr/X11R6/lib
- endif
- X11_INC := /usr/X11R6/include
- MOTIFGL_LIB :=
-endif
-
-ifneq ($(findstring IRIX, $(TEC_UNAME)), )
- UNIX_POSIX = Yes
- LD = ld
- STDLDFLAGS := -elf -shared -rdata_shared -soname lib$(TARGETNAME).so
- RANLIB := /bin/true
- X11_LIBS := Xmu Xt X11
- ifdef BUILD_64
- ifdef USE_CC
- STDFLAGS += -64 -KPIC
- STDLDFLAGS += -64
- LINKER += -64
- endif
- X11_LIB := /usr/lib64
- MOTIF_LIB := /usr/Motif-2.1/lib64
- else
- X11_LIB := /usr/lib32
- MOTIF_LIB := /usr/Motif-2.1/lib32
- endif
- MOTIF_INC = /usr/Motif-2.1/include
-endif
-
-ifneq ($(findstring AIX, $(TEC_UNAME)), )
- UNIX_POSIX = Yes
- NO_DYNAMIC ?= Yes
- ifdef BUILD_64
- ifdef USE_CC
- STDFLAGS += -q64 # to compilers C and C++
- STDLFLAGS := -X64 $(STDLFLAGS) # to librarian
- STDLDFLAGS += -64
- LINKER += -q64 # to linker
- endif
- endif
-endif
-
-ifneq ($(findstring HP-UX, $(TEC_UNAME)), )
- UNIX_POSIX = Yes
- NO_DYNAMIC ?= Yes
- MOTIF_INC := /usr/include/Motif2.1
- X11_LIBS := Xt Xext X11
- OPENGL_LIB := /opt/graphics/OpenGL/lib
- OPENGL_INC := /opt/graphics/OpenGL/include
- STDDEFS := -DTEC_UNAME=$(TEC_UNAME) -DTEC_SYSNAME=$(TEC_SYSNAME) -D$(TEC_BYTEORDER) -D$(TEC_WORDSIZE) -DFUNCPROTO=15
- CC := aCC
- CPPC := aCC
- LINKER := aCC
-endif
-
-ifneq ($(findstring SunOS, $(TEC_UNAME)), )
- UNIX_POSIX = Yes
- LD = ld
- STDLDFLAGS := -G
- X11_INC := /usr/openwin/share/include
- X11_LIB := /usr/openwin/lib
- MOTIF_INC := /usr/dt/share/include
- MOTIF_LIB := /usr/dt/lib
- OPENGL_INC := /usr/openwin/share/include/X11
- GLUT_LIB := /usr/local/glut-3.7/lib/glut
- GLUT_INC := /usr/local/glut-3.7/include
- ifdef BUILD_64
- ifdef USE_CC
- STDFLAGS += -xarch=v9 -KPIC
- # have to force these PATHs because of a conflict with standard PATHs
- STDLDFLAGS += -64 -L/usr/lib/64 -L/usr/ucblib/sparcv9
- LINKER += -xarch=v9
- endif
- endif
-endif
-
-ifneq ($(findstring MacOS, $(TEC_UNAME)), )
- UNIX_BSD = Yes
- X11_LIBS := Xmu Xp Xt Xext X11
- X11_LIB := /usr/X11R6/lib
- X11_INC := /usr/X11R6/include
- MOTIF_INC := /usr/OpenMotif/include
- MOTIF_LIB := /usr/OpenMotif/lib
- ifdef BUILD_DYLIB
- STDLDFLAGS := -dynamiclib -Wl -fno-common -headerpad_max_install_names -undefined dynamic_lookup -install_name lib$(TARGETNAME).dylib
- DLIBEXT := dylib
- STDFLAGS += -fno-common
- else
- STDLDFLAGS := -bundle -undefined dynamic_lookup
- endif
- ifdef USE_OPENGL
- ifeq ($(TEC_SYSMINOR), 5)
- #Darwin9 Only - OpenGL bug fix for Fink, when the message bellow appears
- # ld: cycle in dylib re-exports with /usr/X11R6/lib/libGL.dylib
- LFLAGS += -dylib_file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
- endif
- endif
-endif
-
-ifneq ($(findstring FreeBSD, $(TEC_UNAME)), )
- BSD = Yes
- X11_LIB := /usr/X11R6/lib
- X11_INC := /usr/X11R6/include
- ifeq ($(TEC_SYSARCH), x64)
- STDFLAGS += -fPIC
- endif
-endif
-
-#---------------------------------#
-# Allows an extra configuration file.
-ifdef EXTRA_CONFIG
-include $(EXTRA_CONFIG)
-endif
-
-
-#---------------------------------#
-# Tecgraf Libraries Location
-TECTOOLS_HOME ?= ../..
-
-IUP ?= $(TECTOOLS_HOME)/iup
-CD ?= $(TECTOOLS_HOME)/cd
-IM ?= $(TECTOOLS_HOME)/im
-LUA ?= $(TECTOOLS_HOME)/lua
-LUA51 ?= $(TECTOOLS_HOME)/lua5.1
-LUA52 ?= $(TECTOOLS_HOME)/lua52
-
-
-#---------------------------------#
-# Pre-defined libraries
-
-# Library order:
-# user + iupcd + cd + iup + motif + X
-# Library path order is reversed
-
-ifdef USE_LUA
- LUA_SUFFIX ?=
- LIBLUASUFX := 3
-endif
-
-ifdef USE_LUA4
- LUA_SUFFIX ?= 4
- LIBLUASUFX := 4
- override USE_LUA = Yes
- LUA := $(LUA4)
-endif
-
-ifdef USE_LUA5
- LUA_SUFFIX ?= 5
- LIBLUASUFX := 5
- override USE_LUA = Yes
- LUA := $(LUA5)
-endif
-
-ifdef USE_LUA50
- LUA_SUFFIX ?= 50
- LIBLUASUFX := 5
- override USE_LUA = Yes
- LUA := $(LUA50)
- NO_LUALIB := Yes
-endif
-
-ifdef USE_LUA51
- LUA_SUFFIX ?= 5.1
- LIBLUASUFX := 51
- override USE_LUA = Yes
- LUA := $(LUA51)
- NO_LUALIB := Yes
-endif
-
-ifdef USE_LUA52
- LUA_SUFFIX ?= 52
- LIBLUASUFX := 52
- override USE_LUA = Yes
- LUA := $(LUA52)
- NO_LUALIB := Yes
-endif
-
-ifdef USE_IUP3
- override USE_IUP = Yes
-# Inside Tecgraf only
- ifndef IUP3_BUILD
-# IUP := $(IUP)3
- endif
-endif
-
-ifdef USE_IUPBETA
- IUP := $(IUP)/beta
-endif
-
-ifdef USE_CDBETA
- CD := $(CD)/beta
-endif
-
-ifdef USE_IMBETA
- IM := $(IM)/beta
-endif
-
-ifdef USE_GLUT
- override USE_OPENGL = Yes
-endif
-
-ifdef USE_GDK
- override USE_GTK = Yes
-endif
-
-ifdef USE_IUPCONTROLS
- override USE_CD = Yes
- override USE_IUP = Yes
- ifdef USE_IUPLUA
- ifdef USE_STATIC
- SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiupluacontrols$(LIBLUASUFX).a
- else
- LIBS += iupluacontrols$(LIBLUASUFX)
- endif
- override USE_CDLUA = Yes
- endif
- ifdef USE_STATIC
- SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiupcontrols.a
- else
- LIBS += iupcontrols
- endif
-endif
-
-ifdef USE_IMLUA
- override USE_IM = Yes
- ifdef USE_STATIC
- SLIB += $(IM)/lib/$(TEC_UNAME_LIB_DIR)/libimlua$(LIBLUASUFX).a
- else
- LIBS += imlua$(LIBLUASUFX)
- endif
-endif
-
-ifdef USE_CDLUA
- override USE_CD = Yes
- ifdef USE_STATIC
- SLIB += $(CD)/lib/$(TEC_UNAME_LIB_DIR)/libcdlua$(LIBLUASUFX).a
- else
- LIBS += cdlua$(LIBLUASUFX)
- endif
-endif
-
-ifdef USE_IUPLUA
- override USE_IUP = Yes
- ifdef USE_STATIC
- ifdef USE_CD
- SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiupluacd$(LIBLUASUFX).a
- endif
- ifdef USE_OPENGL
- SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiupluagl$(LIBLUASUFX).a
- endif
- SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiuplua$(LIBLUASUFX).a
- else
- ifdef USE_CD
- LIBS += iupluacd$(LIBLUASUFX)
- endif
- ifdef USE_OPENGL
- LIBS += iupluagl$(LIBLUASUFX)
- endif
- LIBS += iuplua$(LIBLUASUFX)
- endif
-endif
-
-ifdef USE_LUA
- LUA_LIB ?= $(LUA)/lib/$(TEC_UNAME_LIB_DIR)
- ifdef USE_STATIC
- ifndef NO_LUALIB
- SLIB += $(LUA_LIB)/liblualib$(LUA_SUFFIX).a
- endif
- SLIB += $(LUA_LIB)/liblua$(LUA_SUFFIX).a
- else
- ifndef NO_LUALIB
- LIBS += lualib$(LUA_SUFFIX)
- endif
- ifndef NO_LUALINK
- LIBS += lua$(LUA_SUFFIX)
- LDIR += $(LUA_LIB)
- else
- ifneq ($(findstring cygw, $(TEC_UNAME)), )
- LIBS += lua$(LUA_SUFFIX)
- LDIR += $(LUA_LIB)
- endif
- endif
- endif
-
- LUA_INC ?= $(LUA)/include
- INCLUDES += $(LUA_INC)
-
- LUA_BIN ?= $(LUA)/bin/$(TEC_UNAME)
- BIN2C := $(LUA_BIN)/bin2c$(LUA_SUFFIX)
- LUAC := $(LUA_BIN)/luac$(LUA_SUFFIX)
- LUABIN := $(LUA_BIN)/lua$(LUA_SUFFIX)
-endif
-
-ifdef USE_IUP
- IUP_SUFFIX ?=
- ifdef USE_IUP3
- ifdef GTK_DEFAULT
- ifdef USE_MOTIF
- IUP_SUFFIX := mot
- else
- override USE_GTK = Yes
- override USE_GDK = Yes
- endif
- else
- ifdef USE_GTK
- IUP_SUFFIX := gtk
- else
- override USE_MOTIF = Yes
- endif
- endif
- else
- override USE_MOTIF = Yes
- endif
- ifdef USE_STATIC
- ifdef USE_CD
- SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiupcd.a
- endif
- ifdef USE_OPENGL
- SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiupgl.a
- endif
- SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiup$(IUP_SUFFIX).a
- else
- ifdef USE_CD
- LIBS += iupcd
- endif
- ifdef USE_OPENGL
- LIBS += iupgl
- endif
- LIBS += iup$(IUP_SUFFIX)
- LDIR += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)
- endif
- INCLUDES += $(IUP)/include
-endif
-
-ifdef USE_CD
- CD_SUFFIX ?=
- override USE_X11 = Yes
- ifndef USE_CD_OLD
- ifdef GTK_DEFAULT
- ifdef USE_MOTIF
- CD_SUFFIX := x11
- endif
- else
- ifdef USE_GTK
- CD_SUFFIX := gdk
- endif
- endif
- endif
- ifdef USE_STATIC
- ifdef USE_XRENDER
- CHECK_XRENDER = Yes
- SLIB += $(CD)/lib/$(TEC_UNAME_LIB_DIR)/libcdcontextplus.a
- LIBS += Xrender Xft
- endif
- ifdef USE_CAIRO
- # To use Cairo with X11 base driver (NOT for GDK)
- # Can NOT be used together with XRender
- SLIB += $(CD)/lib/$(TEC_UNAME_LIB_DIR)/libcdcairo.a
- LIBS += pangocairo-1.0 cairo
- endif
- SLIB += $(CD)/lib/$(TEC_UNAME_LIB_DIR)/libcd$(CD_SUFFIX).a
- ifndef USE_GTK
- # Freetype is already included in GTK
- SLIB += $(CD)/lib/$(TEC_UNAME_LIB_DIR)/libfreetype.a
- endif
- else
- ifdef USE_XRENDER
- CHECK_XRENDER = Yes
- LIBS += cdcontextplus
- LIBS += Xrender Xft
- endif
- ifdef USE_CAIRO
- # To use Cairo with X11 base driver (NOT for GDK)
- # Can NOT be used together with XRender
- LIBS += cdcairo
- LIBS += pangocairo-1.0 cairo
- endif
- LIBS += cd$(CD_SUFFIX)
- LDIR += $(CD)/lib/$(TEC_UNAME_LIB_DIR)
- ifndef USE_GTK
- # Freetype is already included in GTK
- ifneq ($(findstring cygw, $(TEC_UNAME)), )
- LIBS += freetype-6
- else
- LIBS += freetype
- endif
- endif
- endif
- INCLUDES += $(CD)/include
-endif
-
-ifdef USE_IM
- ifdef USE_STATIC
- SLIB += $(IM)/lib/$(TEC_UNAME_LIB_DIR)/libim.a
- else
- LIBS += im
- LDIR += $(IM)/lib/$(TEC_UNAME_LIB_DIR)
- endif
- INCLUDES += $(IM)/include
-endif
-
-ifdef USE_GLUT
- LIBS += glut
- LDIR += $(GLUT_LIB)
- STDINCS += $(GLUT_INC)
-endif
-
-ifdef USE_OPENGL
- override USE_X11 = Yes
- ifdef USE_MOTIF
- ifndef USE_IUP3
- LIBS += $(MOTIFGL_LIB)
- endif
- endif
- LIBS += $(OPENGL_LIBS)
- LDIR += $(OPENGL_LIB)
- STDINCS += $(OPENGL_INC)
-endif
-
-ifdef USE_MOTIF
- override USE_X11 = Yes
- LIBS += Xm
- LDIR += $(MOTIF_LIB)
- STDINCS += $(MOTIF_INC)
- ifneq ($(findstring Linux, $(TEC_UNAME)), )
- X11_LIBS := Xpm $(X11_LIBS)
- endif
- ifneq ($(findstring cygw, $(TEC_UNAME)), )
- X11_LIBS := Xpm $(X11_LIBS)
- endif
-endif
-
-ifdef USE_GTK
- ifdef USE_PKGCONFIG
- # get compile/link flags via pkg-config
- STDFLAGS += $(shell pkg-config --cflags gtk+-2.0 gdk-2.0)
- LIBS += $(shell pkg-config --libs gtk+-2.0 gdk-2.0)
- else
- CHECK_GTK = Yes
- ifneq ($(findstring MacOS, $(TEC_UNAME)), )
- # Option 1 - Fink GTK port
- LDIR += $(GTK)/lib
- override USE_X11 = Yes
- LIBS += gtk-x11-2.0 gdk-x11-2.0 pangox-1.0
- # Option 2 - Imendio Framework
- # STDINCS += /Library/Frameworks/Gtk.framework/Headers
- # STDINCS += /Library/Frameworks/GLib.framework/Headers
- # STDINCS += /Library/Frameworks/Cairo.framework/Headers
- # LFLAGS += -framework Gtk
- # Option 3 - GTK-OSX Framework
- # LDIR += $(GTK)/lib
- # LFLAGS += -framework Carbon
- # LIBS += gtk-quartz-2.0 gdk-quartz-2.0 pangoft2-1.0
-
- LIBS += freetype
- else
- # if not the default, then include it for linker
- # must be before the default
- ifdef GTK_BASE
- LDIR += $(GTK)/lib
- endif
- override USE_X11 = Yes
- LIBS += gtk-x11-2.0 gdk-x11-2.0 pangox-1.0
- endif
-
- LIBS += gdk_pixbuf-2.0 pango-1.0 gobject-2.0 gmodule-2.0 glib-2.0
- STDINCS += $(GTK)/include/atk-1.0 $(GTK)/include/gtk-2.0 $(GTK)/include/cairo $(GTK)/include/pango-1.0 $(GTK)/include/glib-2.0
-
- ifeq ($(TEC_SYSARCH), x64)
- STDINCS += $(GTK)/lib64/glib-2.0/include $(GTK)/lib64/gtk-2.0/include
- # Add also these to avoid errors in systems that lib64 does not exists
- STDINCS += $(GTK)/lib/glib-2.0/include $(GTK)/lib/gtk-2.0/include
- else
- ifeq ($(TEC_SYSARCH), ia64)
- STDINCS += $(GTK)/lib64/glib-2.0/include $(GTK)/lib64/gtk-2.0/include
- else
- STDINCS += $(GTK)/lib/glib-2.0/include $(GTK)/lib/gtk-2.0/include
- endif
- endif
- ifneq ($(findstring FreeBSD, $(TEC_UNAME)), )
- STDINCS += /lib/X11R6/include/gtk-2.0
- endif
- endif
-endif
-
-ifdef USE_QT
- override USE_X11 = Yes
- LIBS += QtGui QtCore
- QT_BASE_INC := /usr/include/qt4
- STDINCS += $(QT_BASE_INC) $(QT_BASE_INC)/QtCore $(QT_BASE_INC)/QtGui
- STDDEFS += -DQT_DLL -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT
-endif
-
-ifdef USE_X11
- LIBS += $(X11_LIBS)
- LDIR += $(X11_LIB)
- STDINCS += $(X11_INC)
-endif
-
-LIBS += m
-
-ifneq ($(findstring cygw, $(TEC_UNAME)), )
- WIN_OTHER := Yes
-
- # INCLUDES for dependencies, remove references to "c:" and similars
- DEPINCS := $(patsubst c:%, /cygdrive/c%, $(INCLUDES))
- DEPINCS := $(patsubst d:%, /cygdrive/d%, $(DEPINCS))
- DEPINCS := $(patsubst x:%, /cygdrive/x%, $(DEPINCS))
- DEPINCS := $(patsubst t:%, /cygdrive/t%, $(DEPINCS))
-
- DLIBEXT := dll
- APPEXT := .exe
- # Use the cyg prefix to indicate that it is a Cygwin Posix DLL
- DLIBPRE := cyg
-
- STDLDFLAGS += -Wl,--out-implib=$(TARGETDIR)/lib$(TARGETNAME).dll.a
-endif
-
-#---------------------------------#
-# Building compilation flags that are sets
-
-DEPINCS ?= $(INCLUDES)
-DEPINCS := $(addprefix -I, $(DEPINCS))
-
-INCLUDES := $(addprefix -I, $(INCLUDES))
-STDINCS := $(addprefix -I, $(STDINCS))
-EXTRAINCS := $(addprefix -I, $(EXTRAINCS))
-DEFINES := $(addprefix -D, $(DEFINES))
-
-LIBS := $(addprefix -l, $(LIBS))
-ifdef LDIR
- LDIR := $(addprefix -L, $(LDIR))
-endif
-
-
-#---------------------------------#
-# Definitions of private variables
-
-# Library flags for application and dynamic library linker
-LFLAGS += $(LDIR) $(LIBS)
-# C compiler flags
-CFLAGS = $(FLAGS) $(STDFLAGS) $(INCLUDES) $(STDINCS) $(EXTRAINCS) $(DEFINES) $(STDDEFS)
-# C++ compiler flags
-CXXFLAGS = $(CPPFLAGS) $(STDFLAGS) $(INCLUDES) $(STDINCS) $(EXTRAINCS) $(DEFINES) $(STDDEFS)
-
-# Sources with relative path
-SOURCES := $(addprefix $(SRCDIR)/, $(SRC))
-
-TARGETAPPNAME := $(TARGETNAME)$(APPEXT)
-TARGETSLIBNAME := lib$(TARGETNAME).a
-TARGETDLIBNAME := $(DLIBPRE)$(TARGETNAME).$(DLIBEXT)
-
-# Target for applications or libraries
-ifeq ($(MAKETYPE), APP)
- TARGET := $(TARGETDIR)/$(TARGETAPPNAME)
-else
- ifeq ($(NO_DYNAMIC), Yes)
- TARGET := $(TARGETDIR)/$(TARGETSLIBNAME)
- else
- ifeq ($(NO_STATIC), Yes)
- TARGET := $(TARGETDIR)/$(TARGETDLIBNAME)
- else
- TARGET := $(TARGETDIR)/$(TARGETSLIBNAME) $(TARGETDIR)/$(TARGETDLIBNAME)
- endif
- endif
-endif
-
-# OBJ: list of .o, without path
-# OBJS: list of .o with relative path
-OBJ = $(notdir $(SRC))
-OBJ := $(OBJ:.c=.o)
-OBJ := $(OBJ:.cpp=.o)
-OBJ := $(OBJ:.cxx=.o)
-OBJ := $(OBJ:.cc=.o)
-OBJ := $(OBJ:.f=.o)
-OBJ := $(OBJ:.for=.o)
-OBJ := $(OBJ:.rc=.ro)
-OBJS = $(addprefix $(OBJDIR)/, $(OBJ))
-
-ifdef LOHPACK
- # Package with all LOHs
- LOHS := $(LOHDIR)/$(LOHPACK)
- LOHDIRS :=
-else
- # LOH: list of .loh, without path
- # LOHS: list of .loh, with relative path
- LO = $(notdir $(SRCLUA))
- LO := $(LO:.lua=$(LO_SUFFIX).lo)
- LOS = $(addprefix $(OBJROOT)/, $(LO))
-
- LOH = $(notdir $(SRCLUA))
- LOH := $(LOH:.lua=$(LO_SUFFIX).loh)
- LOHS = $(addprefix $(LOHDIR)/, $(LOH))
-endif
-
-# Construct VPATH variable
-P-SRC = $(dir $(SRC))
-P-SRC += $(dir $(SRCLUA))
-VPATH = .:$(foreach dir,$(P-SRC),$(if $(dir)="./",:$(dir)))
-
-
-#---------------------------------#
-# Main Rule - Build Everything that it is necessary
-
-.PHONY: tecmake
-ifeq ($(MAKETYPE), APP)
- tecmake: print-start system-check directories application scripts
-else
- ifeq ($(NO_DYNAMIC), Yes)
- tecmake: print-start system-check directories static-lib
- else
- ifeq ($(NO_STATIC), Yes)
- tecmake: print-start system-check directories dynamic-lib
- else
- tecmake: print-start system-check directories static-lib dynamic-lib
- endif
- endif
-endif
-
-.PHONY: print-start
-print-start:
- @echo ''; echo 'Tecmake: starting [ $(TARGETNAME):$(TEC_UNAME) ]'
-
-.PHONY: system-check
-system-check:
- ifdef CHECK_XRENDER
- ifdef UNIX_POSIX
- @echo ''; echo 'Tecmake: check failed, XRender NOT available in this system.'; echo ''; exit 1;
- endif
- endif
- ifdef CHECK_GTK
- ifndef GTK_BASE
- ifdef UNIX_POSIX
- @echo ''; echo 'Tecmake: check failed, GTK NOT available in this system.'; echo ''; exit 1;
- else
- ifneq ($(findstring Linux24, $(TEC_UNAME)), )
- @echo ''; echo 'Tecmake: check failed, GTK too OLD in this system.'; echo ''; exit 1;
- endif
- endif
- endif
- endif
- ifdef CHECK_GDIPLUS
- ifdef WIN_OTHER
- @echo ''; echo 'Tecmake: check failed, GDI+ NOT available in this system.'; echo ''; exit 1;
- endif
- endif
-
-#---------------------------------#
-# Dynamic Library Build
-
-.PHONY: dynamic-lib
-dynamic-lib: $(TARGETDIR)/$(TARGETDLIBNAME)
-
-$(TARGETDIR)/$(TARGETDLIBNAME) : $(LOHS) $(OBJS) $(EXTRADEPS)
- @echo ''; echo Tecmake: linking $(@F) ...
- $(ECHO)$(LD) $(STDLDFLAGS) -o $@ $(OBJS) $(SLIB) $(LFLAGS)
- @echo ''; echo 'Tecmake: Dynamic Library ($@) Done.'; echo ''
-
-
-#---------------------------------#
-# Static Library Build
-
-.PHONY: static-lib
-static-lib: $(TARGETDIR)/$(TARGETSLIBNAME)
-
-$(TARGETDIR)/$(TARGETSLIBNAME) : $(LOHS) $(OBJS) $(EXTRADEPS)
- @echo ''; echo Tecmake: librarian $(@F) ...
- $(ECHO)$(AR) $(STDLFLAGS) $@ $(OBJS) $(SLIB) $(LCFLAGS)
- @echo ''; echo Tecmake: updating lib TOC $(@F) ...
- $(ECHO)-$(RANLIB) $@
- @echo ''; echo 'Tecmake: Static Library ($@) Done.'; echo ''
-
-
-#---------------------------------#
-# Application Build
-
-.PHONY: application
-application: $(TARGETDIR)/$(TARGETAPPNAME)
-
-$(TARGETDIR)/$(TARGETAPPNAME) : $(LOHS) $(OBJS) $(EXTRADEPS)
- @echo ''; echo Tecmake: linking $(@F) ...
- $(ECHO)$(LINKER) -o $@ $(OBJS) $(SLIB) $(LFLAGS)
- @if [ ! -z "$(STRIP)" ]; then \
- echo ''; echo 'Tecmake: striping debug information' ;\
- strip $@ ;\
- fi
- @echo ''; echo 'Tecmake: Application ($@) Done.'; echo ''
-
-
-#---------------------------------#
-# Application Scripts
-
-# Script name
-SRELEASE := $(SRCDIR)/$(TARGETNAME)
-
-.PHONY: scripts
-ifdef NO_SCRIPTS
- scripts: ;
-else
- scripts: $(SRELEASE) ;
-endif
-
-$(SRELEASE): $(MAKENAME)
- @echo ''; echo 'Tecmake: building script $(@F)'
- @echo "#!/bin/csh" > $@
- @echo "# Script generated automatically by tecmake v$(VERSION)" >> $@
- @echo "# Remove the comment bellow to set the LD_LIBRARY_PATH if needed." >> $@
- @echo '#setenv LD_LIBRARY_PATH $(MYLIB1)/lib/$${TEC_UNAME}:$(MYLIB2)/lib/$${TEC_UNAME}:$$LD_LIBRARY_PATH' >> $@
- @echo 'if ( -r app.env ) source app.env' >> $@
- @echo 'exec $(TARGETROOT)/$$TEC_UNAME/$(TARGETNAME) $$*' >> $@
- @chmod a+x $@
-
-
-#---------------------------------#
-# Directories Creation
-
-.PHONY: directories
-directories: $(OBJDIR) $(TARGETDIR) $(EXTRADIR) $(LOHDIR)
-
-$(OBJDIR) $(TARGETDIR):
- if [ ! -d $@ ] ; then mkdir -p $@ ; fi
-
-ifdef EXTRADIR
- $(EXTRADIR):
- if [ ! -d $@ ] ; then mkdir -p $@ ; fi
-else
- $(EXTRADIR): ;
-endif
-
-ifdef LOHDIR
- $(LOHDIR):
- if [ ! -d $@ ] ; then mkdir -p $@ ; fi
-else
- $(LOHDIR): ;
-endif
-
-
-#---------------------------------#
-# Compilation Rules
-
-$(OBJDIR)/%.o: $(SRCDIR)/%.c
- @echo ''; echo Tecmake: compiling $( $@
-
-$(OBJROOT)/%$(LO_SUFFIX).lo: $(SRCLUADIR)/%.lua
- @echo ''; echo Tecmake: compiling $( $(DEPEND)
- @which $(CPPC) 2> /dev/null 1>&2 ;\
- if [ $$? -eq 0 ]; then \
- echo "Tecmake: Building Dependencies ... [ $(DEPEND) ] (can be slow)" ;\
- $(CPPC) $(DEPINCS) $(DEFINES) $(STDDEFS) -MM $(SOURCES) | \
- sed -e '1,$$s/^\([^ ]\)/$$(OBJDIR)\/\1/' > $(DEPEND) ;\
- else \
- echo "" ;\
- echo "Tecmake: error, $(CPPC) not found. Dependencies can not be built." ;\
- echo "Must set NO_DEPEND=Yes." ;\
- echo "" ;\
- exit 1 ;\
- fi
- endif
-
-ifdef USE_NODEPEND
- NO_DEPEND:=Yes
-endif
-
-###################
-ifndef NO_DEPEND
-include $(DEPEND)
-endif
-###################
-
-
-#---------------------------------#
-# Management Rules
-
-# Remove extra files
-.PHONY: clean-extra
-clean-extra:
- rm -f $(DEPEND) $(SRELEASE) so_locations
-
-# Remove Lua object inclusion files
-.PHONY: clean-lohs
-clean-lohs:
- rm -f $(LOS) $(LOHS)
-
-# Remove object files
-.PHONY: clean-obj
-clean-obj:
- rm -f $(OBJS)
-
-# Remove target
-.PHONY: clean-target
-clean-target:
- rm -f $(TARGET)
-
-.PHONY: clean-dir
-clean-dir:
- rm -fr $(OBJROOT) $(TARGETROOT)
-
-# Remove target and object files
-.PHONY: clean
-clean: clean-target clean-obj
-
-# Remove symbols from executables
-.PHONY: strip
-strip:
- test -r $(TARGETDIR)/$(TARGETAPPNAME) && strip $(TARGETDIR)/$(TARGETAPPNAME)
-
-# Rebuild target and object files
-.PHONY: rebuild
-rebuild: clean-extra clean-lohs clean-obj clean-target tecmake
-
-# Rebuild target without rebuilding object files
-.PHONY: relink
-relink: clean-target tecmake
-
-# Remove target and object files
-.PHONY: clean-all-obj
-clean-all-obj:
- @for d in $(UNAMES); do \
- (cd $(OBJROOT)/$$d; echo $(OBJ) | xargs rm -f) ;\
- done
-
-# Remove libraries and executables for all platforms
-.PHONY: clean-all-target
-clean-all-target:
- @for d in $(UNAMES); do \
- (rm -f $(TARGETROOT)/$$d/$(TARGETNAME) $(TARGETROOT)/$$d/$(TARGETSLIBNAME) $(TARGETROOT)/$$d/$(TARGETDLIBNAME)) ;\
- done
-
-#---------------------------------#
-# Remote build
-# There must be aliases in DNS for the known UNAMES
-.PHONY: $(UNAMES)
-$(UNAMES):
- @cwd=`csh -c "\\pwd"` ; home=`csh -c "cd;\\pwd"` ;\
- dir=`echo $$cwd | sed -e "s|$$home/||"` ;\
- xterm -bg black -fg lightblue -T "Tecmake: $@ ($(TARGETNAME))" -e ssh $@ $(REMOTE) $$dir $(TECMAKEFLAGS) $(MAKEFLAGS) & 2> /dev/null
-
-
-#---------------------------------#
-
-.PHONY: version
-version:
- @echo "Tecmake Posix Version $(VERSION)"
-
-#---------------------------------#
diff --git a/src/tecmakewin.mak b/src/tecmakewin.mak
deleted file mode 100644
index 90506ed..0000000
--- a/src/tecmakewin.mak
+++ /dev/null
@@ -1,1384 +0,0 @@
-#-------------------------------------------------------------------------#
-#- Tecmake (Windows Version) -#
-#- Generic Makefile to build applications and libraries at TeCGraf -#
-#- The user makefile usually has the name "config.mak". -#
-#-------------------------------------------------------------------------#
-
-#---------------------------------#
-# Tecmake Version
-VERSION = 4.3
-
-
-#---------------------------------#
-# First target
-.PHONY: build
-build: tecmake
-
-
-#---------------------------------#
-# Location of this file
-TECMAKE = $(TECMAKE_HOME)/tecmakewin.mak
-
-
-#---------------------------------#
-# System Variables Definitions
-
-# If tecmake.bat is not used,
-# then at least define main system variables.
-
-WIN32NAMES = vc10 vc9 vc8 vc7 vc6 owc1 bc55 bc56 bc6 gcc3 gcc4 mingw3 mingw4 dllw4 dllg4 dll dll7 dll8 dll9 dll10
-WIN64UNAMES = vc10_64 vc9_64 vc8_64 dll8_64 dll9_64 dll10_64
-
-ifdef TEC_UNAME
- ifneq ($(findstring $(TEC_UNAME), $(WIN32NAMES)), )
- TEC_WIN32 = Yes
- else
- ifneq ($(findstring $(TEC_UNAME), $(WIN64NAMES)), )
- TEC_WIN64 = Yes
- endif
- endif
-endif
-
-ifdef TEC_WIN64
- TEC_SYSNAME=Win64 TEC_SYSARCH=x64
- ifeq ($(PROCESSOR_ARCHITECTURE), x86)
- # Define this if compiling for 64-bits in a 32bits environment
- USE_X86_CL64=Yes
- endif
-else
- TEC_SYSNAME=Win32
- TEC_SYSARCH=x86
-endif
-
-
-#---------------------------------#
-# System Info
-.PHONY: sysinfo
-sysinfo:
- @echo ''; echo 'Tecmake: System Info'
- @echo 'TEC_SYSNAME = $(TEC_SYSNAME)'
- @echo 'TEC_SYSARCH = $(TEC_SYSARCH)'
- @echo 'TEC_UNAME = $(TEC_UNAME)'; echo ''
-
-
-#---------------------------------#
-# Known platforms
-
-UNAMES = $(WIN32NAMES) $(WIN64NAMES)
-
-
-#---------------------------------#
-# Directories Definitions
-
-PROJDIR = ..
-SRCDIR = .
-OBJROOT = $(PROJDIR)/obj
-
-
-# ---------------------------------------------------------
-# Byte Order and Word Size
-
-ifneq ($(findstring x86, $(TEC_SYSARCH)), )
- TEC_BYTEORDER = TEC_LITTLEENDIAN
-else
-ifeq ($(TEC_SYSARCH), arm)
- TEC_BYTEORDER = TEC_LITTLEENDIAN
-else
- TEC_BYTEORDER = TEC_BIGENDIAN
-endif
-endif
-
-ifeq ($(TEC_SYSARCH), x64)
- TEC_BYTEORDER = TEC_LITTLEENDIAN
- TEC_WORDSIZE = TEC_64
-else
- TEC_WORDSIZE = TEC_32
-endif
-
-# Itanium Exception
-ifeq ($(TEC_SYSARCH), ia64)
- TEC_BYTEORDER = TEC_LITTLEENDIAN
- TEC_WORDSIZE = TEC_64
-endif
-
-
-#---------------------------------#
-# Tools
-
-SHELL = bash
-SLASH = slash_parser
-
-# Packed LOHs script
-LUAPRE = "$(TECMAKE_PATH)"/luapre.lua
-
-
-#---------------------------------#
-# Defaults
-APPTYPE = windows
-INCLUDES =
-LIBS =
-LIB =
-
-
-#---------------------------------#
-# User Configuration File
-
-MAKENAME = config.mak
-
-ifdef MF
- MAKENAME = $(MF).mak
-endif
-
-###################
-include $(MAKENAME)
-###################
-
-
-#---------------------------------#
-# Definitions of public variables
-
-ifdef LIBNAME
- TARGETNAME = $(LIBNAME)
- MAKETYPE = LIB
-else
- TARGETNAME = $(APPNAME)
- MAKETYPE = APP
-endif
-
-ifndef TARGETNAME
- $(error LIBNAME nor APPNAME defined in $(MAKENAME))
-endif
-
-PROJNAME ?= $(TARGETNAME)
-
-ifneq ($(PROJNAME), $(TARGETNAME))
- OBJROOT := $(OBJROOT)/$(TARGETNAME)
-endif
-
-ifneq ($(findstring dll, $(TEC_UNAME)), )
- ifneq ($(MAKETYPE), APP)
- MAKETYPE = DLL
- DEF_FILE ?= $(TARGETNAME).def
- DEF_FILE := $(SRCDIR)/$(DEF_FILE)
- endif
-endif
-
-DEPEND := $(TARGETNAME).wdep
-
-ifdef DEPENDDIR
- DEPEND := $(DEPENDDIR)/$(TARGETNAME).dep.$(TEC_UNAME)
-endif
-
-
-# ---------------------------------------------------------
-# LO and LOH Suffix
-
-SRCLUADIR ?= $(SRCDIR)
-LOHDIR ?= $(SRCLUADIR)
-
-ifdef USE_LOH_SUBDIR
- ifeq ($(TEC_BYTEORDER), TEC_BIGENDIAN)
- ifeq ($(TEC_WORDSIZE), TEC_64)
- LOH_SUBDIR ?= be64
- else
- LOH_SUBDIR ?= be32
- endif
- else
- ifeq ($(TEC_WORDSIZE), TEC_64)
- # longs in 64-bits Windows are 32 bits!!!
- LOH_SUBDIR ?= le64w
- else
- LOH_SUBDIR ?= le32
- endif
- endif
- LOHDIR := $(LOHDIR)/$(LOH_SUBDIR)
- INCLUDES += $(LOHDIR)
-else
- ifeq ($(TEC_BYTEORDER), TEC_BIGENDIAN)
- ifeq ($(TEC_WORDSIZE), TEC_64)
- LO_SUFFIX ?= _be64
- else
- LO_SUFFIX ?= _be32
- endif
- else
- ifeq ($(TEC_WORDSIZE), TEC_64)
- # longs in 64-bits Windows are 32 bits!!!
- LO_SUFFIX ?= _le64w
- else
- LO_SUFFIX ?=
- endif
- endif
-endif
-
-
-#---------------------------------#
-# Main Rule - Build Everything that it is necessary
-
-.PHONY: tecmake
-ifeq ($(MAKETYPE), APP)
- tecmake: print-start system-check directories application scripts
-else
- ifeq ($(MAKETYPE), DLL)
- tecmake: print-start system-check directories dynamic-lib
- else
- tecmake: print-start system-check directories static-lib
- endif
-endif
-
-.PHONY: print-start
-print-start:
- @echo ''; echo 'Tecmake: Starting [ $(TARGETNAME):$(TEC_UNAME) ]'
-
-
-#---------------------------------#
-# Definitions of public variables
-
-ifeq ($(MAKETYPE), APP)
- TARGETROOT ?= $(PROJDIR)/bin
-else
- TARGETROOT ?= $(PROJDIR)/lib
-endif
-
-ifeq ($(MAKETYPE), APP)
- TEC_UNAME_DIR ?= $(TEC_SYSNAME)
-else
- TEC_UNAME_DIR ?= $(TEC_UNAME)
-endif
-
-ifdef DBG
- ifdef DBG_DIR
- TEC_UNAME_DIR := $(TEC_UNAME_DIR)d
- endif
-endif
-
-OBJDIR := $(OBJROOT)/$(TEC_UNAME_DIR)
-TARGETDIR := $(TARGETROOT)/$(TEC_UNAME_DIR)
-
-TARGETEXE := $(TARGETDIR)/$(TARGETNAME).exe
-TARGETDLL := $(TARGETDIR)/$(TARGETNAME).dll
-TARGETLIB := $(TARGETDIR)/$(TARGETNAME).lib
-ifneq ($(findstring gcc, $(TEC_UNAME)), )
- TARGETLIB := $(TARGETDIR)/lib$(TARGETNAME).a
-endif
-ifneq ($(findstring mingw, $(TEC_UNAME)), )
- TARGETLIB := $(TARGETDIR)/lib$(TARGETNAME).a
-endif
-ifneq ($(findstring dllg4, $(TEC_UNAME)), )
- TARGETLIB := $(TARGETDIR)/$(TARGETNAME).a
-endif
-ifneq ($(findstring dllw4, $(TEC_UNAME)), )
- TARGETLIB := $(TARGETDIR)/$(TARGETNAME).a
-endif
-
-ifdef NO_ECHO
- ECHO:=@
-endif
-
-#---------------------------------#
-# Platform/Compiler dependend parameters
-
-STDDEFS = -DTEC_UNAME=$(TEC_UNAME) -DTEC_SYSNAME=$(TEC_SYSNAME) -D$(TEC_BYTEORDER) -D$(TEC_WORDSIZE) -DWIN32
-STDLIB = kernel32 user32 gdi32 winspool comdlg32 advapi32 shell32 ole32 oleaut32 uuid comctl32
-
-#Compilers
-VC6 ?= x:/lng/vc6
-VC7 ?= x:/lng/vc7
-VC8 ?= x:/lng/vc8
-VC9 ?= x:/lng/vc9
-VC10 ?= x:/lng/vc10
-OWC1 ?= x:/lng/owc1
-BC55 ?= x:/lng/bc55
-BC56 ?= x:/lng/cbuilderx
-BC6 ?= x:/lng/bc6
-MINGW3 ?= x:/lng/mingw3
-MINGW4 ?= x:/lng/mingw4
-# The default location is in the PATH
-#GCC3 ?= x:/lng/cygw15
-#GCC4 ?= x:/lng/cygw17
-
-#Tools
-QT ?= x:/lng/qt
-GTK ?= x:/lng/gtk
-GLUT ?= x:/lng/glut
-
-OBJEXT = obj
-LIBEXT = lib
-
-ifeq "$(TEC_UNAME)" "vc6"
- COMPILER = $(VC6)
-endif
-
-ifeq "$(TEC_UNAME)" "vc7"
- COMPILER = $(VC7)
-endif
-
-ifeq "$(TEC_UNAME)" "vc8"
- COMPILER = $(VC8)
-endif
-
-ifeq "$(TEC_UNAME)" "vc8_64"
- COMPILER = $(VC8)
- BUILD64 = Yes
- SDKLIBBIN = /amd64
-endif
-
-ifeq "$(TEC_UNAME)" "vc9"
- COMPILER = $(VC9)
-endif
-
-ifeq "$(TEC_UNAME)" "vc9_64"
- COMPILER = $(VC9)
- BUILD64 = Yes
-endif
-
-ifeq "$(TEC_UNAME)" "vc10"
- COMPILER = $(VC10)
-endif
-
-ifeq "$(TEC_UNAME)" "vc10_64"
- COMPILER = $(VC10)
- BUILD64 = Yes
-endif
-
-ifeq "$(TEC_UNAME)" "dll"
- COMPILER = $(VC6)
- USE_DLL = Yes
-endif
-
-ifeq "$(TEC_UNAME)" "dll7"
- COMPILER = $(VC7)
- USE_DLL = Yes
-endif
-
-ifeq "$(TEC_UNAME)" "dll8"
- COMPILER = $(VC8)
- USE_DLL = Yes
- ifdef DBG
- #debug info not working for dll8 linker
- define DBG
- endef
- endif
-endif
-
-ifeq "$(TEC_UNAME)" "dll8_64"
- COMPILER = $(VC8)
- USE_DLL = Yes
- BUILD64 = Yes
- SDKLIBBIN = /amd64
-endif
-
-ifeq "$(TEC_UNAME)" "dll9"
- COMPILER = $(VC9)
- USE_DLL = Yes
-endif
-
-ifeq "$(TEC_UNAME)" "dll9_64"
- COMPILER = $(VC9)
- USE_DLL = Yes
- BUILD64 = Yes
-endif
-
-ifeq "$(TEC_UNAME)" "dll10"
- COMPILER = $(VC10)
- USE_DLL = Yes
-endif
-
-ifeq "$(TEC_UNAME)" "dll10_64"
- COMPILER = $(VC10)
- USE_DLL = Yes
- BUILD64 = Yes
-endif
-
-ifeq "$(COMPILER)" "$(VC6)"
- TEC_CC = vc
- # Use the VC7 Platform SDK, no harm if VC7 is not installed
- PLATSDK ?= $(VC7)/PlatformSDK
- OLD_OPENGL = Yes
-endif
-
-ifeq "$(COMPILER)" "$(VC7)"
- TEC_CC = vc
- PLATSDK ?= $(VC7)/PlatformSDK
- OLD_OPENGL = Yes
-endif
-
-ifeq "$(COMPILER)" "$(VC8)"
- NEW_VC_COMPILER = Yes
- TEC_CC = vc
- STDDEFS += -DMSVC8
- PLATSDK ?= $(VC8)/PlatformSDK
- OLD_OPENGL = Yes
- ifdef USE_DLL
- GEN_MANIFEST ?= Yes
- else
- #there is no single thread RTL in VC8
- USE_MT = Yes
- endif
-endif
-
-ifeq "$(COMPILER)" "$(VC9)"
- NEW_VC_COMPILER = Yes
- TEC_CC = vc
- STDDEFS += -DMSVC9
- ifdef USE_DLL
- GEN_MANIFEST ?= Yes
- else
- #there is no single thread RTL in VC9
- USE_MT = Yes
- endif
- ifdef VC9SDK
- PLATSDK ?= $(VC9SDK)
- else
- # Not the real folder, we copied from "C:\Program Files\Microsoft SDKs\Windows\v6.0A"
- PLATSDK ?= $(VC9)/WinSDK
- endif
- RESBIN := $(PLATSDK)/bin
- ifdef BUILD64
- RESBIN := $(RESBIN)/x64
- endif
-endif
-
-ifeq "$(COMPILER)" "$(VC10)"
- NEW_VC_COMPILER = Yes
- TEC_CC = vc
- STDDEFS += -DMSVC10
- ifdef USE_DLL
- GEN_MANIFEST ?= Yes
- else
- #there is no single thread RTL in VC10
- USE_MT = Yes
- endif
- ifdef VC10SDK
- PLATSDK ?= $(VC10SDK)
- else
- # Not the real folder, we copied from "C:\Program Files\Microsoft SDKs\Windows\v7.1"
- PLATSDK ?= $(VC10)/WinSDK
- endif
- RESBIN := $(PLATSDK)/bin
- ifdef BUILD64
- RESBIN := $(RESBIN)/x64
- endif
-endif
-
-ifeq "$(TEC_CC)" "vc"
- ifdef BUILD64
- STDDEFS += -DWIN64
- MACHINE = X64
- GTK := $(GTK)_x64
- VCLIBBIN = /amd64
- SDKLIBBIN ?= /x64
- ifdef USE_X86_CL64
- BIN = $(COMPILER)/bin/x86_amd64
- else
- BIN = $(COMPILER)/bin/amd64
- endif
- else
- VCLIBBIN =
- SDKLIBBIN =
- MACHINE = X86
- BIN = $(COMPILER)/bin
- endif
- RESBIN ?= $(COMPILER)/bin
- CC = $(BIN)/cl -nologo
- CPPC = $(BIN)/cl -nologo
- LIBC = $(BIN)/link -lib -nologo
- LINKER = $(BIN)/link -nologo
- MT = $(RESBIN)/mt -nologo
- RCC = $(RESBIN)/rc -fo
- STDINCS = $(PLATSDK)/include $(COMPILER)/include
- STDFLAGS = -c -Fo$(OBJDIR)/ -W3
- STDLFLAGS =
- DEPDEFS = -D_WIN32 -D_M_IX86 -D_STDCALL_SUPPORTED
- STDLIBDIR = -LIBPATH:$(COMPILER)/lib$(VCLIBBIN) -LIBPATH:$(PLATSDK)/lib$(SDKLIBBIN)
- OPTFLAGS := -O2
- DEBUGFLAGS := -Z7 -Od -GZ
- ifdef NEW_VC_COMPILER
- DEBUGFLAGS := -Z7 -Od -RTC1
- STDDEFS += -D_CRT_SECURE_NO_DEPRECATE
- ifndef CPP_NARROW_INLINES
- STDDEFS += -D_CPP_NARROW_INLINES_DEFINED
- endif
- STDFLAGS += -EHsc
- else # Exception Handling Model
- STDFLAGS += -GX
- endif
- ifneq ($(MAKETYPE), LIB)
- ifeq "$(COMPILER)" "$(VC6)"
- STDLFLAGS += -pdb:none -incremental:no -machine:$(MACHINE)
- else
- STDLFLAGS += -incremental:no -machine:$(MACHINE)
- endif
- ifdef DBG
- STDLFLAGS += -debug
- endif
- ifdef NEW_VC_COMPILER
- ifndef GEN_MANIFEST
- STDLFLAGS += -MANIFEST:NO
- else
- ifeq ($(GEN_MANIFEST), No)
- STDLFLAGS += -MANIFEST:NO
- else
- STDLFLAGS += -MANIFEST
- endif
- endif
- endif
- endif
- ifeq ($(MAKETYPE), APP)
- ifeq "$(COMPILER)" "$(VC6)"
- STDFLAGS += -GA
- else
- OPTFLAGS += -GL
- ifdef OPT
- STDLFLAGS += -LTCG
- endif
- endif
- STDLFLAGS += -subsystem:$(APPTYPE) -out:$(TARGETEXE)
- else
- ifeq ($(MAKETYPE), DLL)
- ifeq "$(COMPILER)" "$(VC6)"
- STDFLAGS += -GD
- else
- OPTFLAGS += -GL
- STDLFLAGS += -LTCG
- endif
- STDLFLAGS += -dll -subsystem:$(APPTYPE) -out:$(TARGETDLL) -implib:$(TARGETLIB) -def:$(DEF_FILE)
- else
- STDLFLAGS += -out:$(TARGETLIB)
- endif
- endif
- ifdef USE_DLL
- ifdef DBG
- STDFLAGS += -MDd
- else
- STDFLAGS += -MD
- endif
- else
- ifdef USE_MT
- ifdef DBG
- STDFLAGS += -MTd
- else
- STDFLAGS += -MT
- endif
- else
- ifdef DBG
- STDFLAGS += -MLd
- else
- STDFLAGS += -ML
- endif
- endif
- endif
-endif
-
-ifeq "$(TEC_UNAME)" "owc1"
- COMPILER = $(OWC1)
- TEC_CC = wc
- STDLFLAGS =
-endif
-
-ifeq "$(TEC_CC)" "wc"
- WIN_OTHER = YES
- BIN = $(COMPILER)/binnt
- CC = $(SLASH) $(BIN)/wcc386
- CPPC = $(SLASH) $(BIN)/wpp386
- LIBC = $(SLASH) $(BIN)/wlib
- LINKER = $(SLASH) $(BIN)/wlink
- RCC = $(SLASH) $(BIN)/rc -fo
- STDINCS = $(COMPILER)/h $(COMPILER)/h/nt
- STDFLAGS += -od -w4 -5r -bt=nt -mf -e25 -zq -fo$(OBJDIR)/
- STDLIBDIR = LIBP $(COMPILER)/lib386 LIBP $(COMPILER)/lib386/nt
- DEBUGFLAGS := -d2
- OPTFLAGS := -ot
- ifeq ($(MAKETYPE), APP)
- STDLFLAGS = OP maxe=25 OP quiet FORM windows nt NAME $(TARGETEXE)
- ifeq ($(APPTYPE), CONSOLE)
- STDLFLAGS += RU con
- endif
- else
- STDLFLAGS += -b -c -n -q -p=512 $(TARGETLIB)
- endif
- ifdef USE_DLL
- STDFLAGS += -bm -br
- endif
-endif
-
-ifeq "$(TEC_UNAME)" "bc55"
- COMPILER = $(BC55)
- TEC_CC = bc
- OLD_OPENGL = Yes
-endif
-
-ifeq "$(TEC_UNAME)" "bc56"
- COMPILER = $(BC56)
- TEC_CC = bc
- OLD_OPENGL = Yes
-endif
-
-ifeq "$(TEC_UNAME)" "bc6"
- COMPILER = $(BC6)
- TEC_CC = bc
- OLD_OPENGL = Yes
-endif
-
-ifeq "$(TEC_CC)" "bc"
- WIN_OTHER = YES
- TEC_CC = bc
- BIN = $(COMPILER)/bin
- CC = $(BIN)/bcc32
- CPPC = $(BIN)/bcc32
- LIBC = $(BIN)/tlib /P32
- RCC = $(BIN)/brc32 -r -fo
- LINKER = $(SLASH) $(BIN)/ilink32
- STDINCS = $(COMPILER)/include $(COMPILER)/include/dinkumware
- STDLIBDIR = -L$(COMPILER)/lib -L$(COMPILER)/lib/PSDK
- STDFLAGS = -c -n$(OBJDIR)/
- STDLIB := cw32 import32 $(STDLIB)
- ifeq ($(MAKETYPE), APP)
- STDLFLAGS = -Tpe #-x -c -Gn
- ifeq ($(APPTYPE), CONSOLE)
- STARTUP = c0x32.obj
- STDLFLAGS += -ap
- else
- STARTUP = c0w32.obj
- STDLFLAGS += -aa
- endif
- else
- STDLFLAGS = $(TARGETLIB)
- endif
- OPTFLAGS := -O2
- DEBUGFLAGS := -v -x -xp
- ifdef USE_DLL
- STDFLAGS += -tWDMR
- endif
-endif
-
-ifeq "$(TEC_UNAME)" "gcc3"
- COMPILER = $(GCC3)
- TEC_CC = gcc
- ifdef USE_OPENGL
- STDDEFS += -DUSE_OPENGL32
- endif
-endif
-
-ifeq "$(TEC_UNAME)" "gcc4"
- COMPILER = $(GCC4)
- TEC_CC = gcc
- ifdef USE_OPENGL
- STDDEFS += -DUSE_OPENGL32
- endif
-endif
-
-ifeq "$(TEC_UNAME)" "mingw3"
- COMPILER = $(MINGW3)
- TEC_CC = gcc
- OLD_OPENGL = Yes
-endif
-
-ifeq "$(TEC_UNAME)" "mingw4"
- COMPILER = $(MINGW4)
- TEC_CC = gcc
- OLD_OPENGL = Yes
-endif
-
-ifeq "$(TEC_UNAME)" "dllg4"
- # USE_DLL is unused by gcc but we define it anyway
- USE_DLL = Yes
- COMPILER = $(GCC4)
- TEC_CC = gcc
- ifdef USE_OPENGL
- STDDEFS += -DUSE_OPENGL32
- endif
-endif
-
-ifeq "$(TEC_UNAME)" "dllw4"
- # USE_DLL is unused by gcc but we define it anyway
- USE_DLL = Yes
- COMPILER = $(MINGW4)
- TEC_CC = gcc
- OLD_OPENGL = Yes
-endif
-
-ifeq "$(TEC_CC)" "gcc"
- WIN_OTHER = YES
- ifneq "$(findstring mingw, $(COMPILER))" ""
- BIN = $(COMPILER)/bin/
- endif
- CC = $(BIN)gcc
- CPPC = $(BIN)g++
- LIBC = $(BIN)ar
- RCC = $(BIN)windres -O coff -o
- ifndef LINKER
- ifneq "$(findstring .cpp, $(SRC))" ""
- LINKER := $(CPPC)
- else
- LINKER := $(CC)
- endif
- endif
- RANLIB = $(BIN)ranlib
- ifneq "$(findstring mingw, $(COMPILER))" ""
- STDINCS = $(COMPILER)/include
- STDLIBDIR = -L$(COMPILER)/lib
- endif
- STDFLAGS += -Wall
- DEBUGFLAGS := -g
- OPTFLAGS := -O2
- OBJEXT=o
- LIBEXT=a
- ifeq ($(MAKETYPE), APP)
- STDLFLAGS = -Wl,-subsystem,$(APPTYPE)
- else
- ifeq ($(MAKETYPE), DLL)
- STDLFLAGS =
- else
- STDLFLAGS = r
- endif
- endif
-endif
-
-ifdef DBG
- STDFLAGS += $(DEBUGFLAGS)
- STDDEFS += -DDEBUG
-else
- STDDEFS += -DNDEBUG
- ifdef OPT
- STDFLAGS += $(OPTFLAGS)
- endif
-endif
-
-# allows an extra configuration file.
-ifdef EXTRA_CONFIG
-include $(EXTRA_CONFIG)
-endif
-
-.PHONY: system-check
-system-check:
- ifndef TEC_UNAME
- @echo ''; echo 'Tecmake: check failed, TEC_UNAME not defined.'; echo '';
- @exit 1;
- endif
- ifndef TEC_WIN32
- ifndef TEC_WIN64
- @echo ''; echo 'Tecmake: check failed, TEC_UNAME not recognized.'; echo '';
- @exit 1;
- endif
- endif
- ifdef CHECK_GDIPLUS
- ifdef WIN_OTHER
- @echo ''; echo 'Tecmake: check failed, GDI+ NOT available in this system.'; echo '';
- @exit 1;
- endif
- endif
-
-
-#---------------------------------#
-# Tecgraf Libraries Location
-TECTOOLS_HOME ?= ../..
-
-IUP ?= $(TECTOOLS_HOME)/iup
-CD ?= $(TECTOOLS_HOME)/cd
-IM ?= $(TECTOOLS_HOME)/im
-LUA ?= $(TECTOOLS_HOME)/lua
-LUA51 ?= $(TECTOOLS_HOME)/lua5.1
-LUA52 ?= $(TECTOOLS_HOME)/lua52
-
-
-#---------------------------------#
-# Pre-defined libraries
-
-# Library order:
-# user + iupcd + cd + iup + motif + X
-# Library path order is reversed
-
-ifdef USE_LUA
- LUA_SUFFIX ?=
- LIBLUASUFX := 3
-endif
-
-ifdef USE_LUA4
- LUA_SUFFIX ?= 4
- LIBLUASUFX := 4
- override USE_LUA = Yes
- LUA := $(LUA4)
-endif
-
-ifdef USE_LUA5
- LUA_SUFFIX ?= 5
- LIBLUASUFX := 5
- override USE_LUA = Yes
- LUA := $(LUA5)
-endif
-
-ifdef USE_LUA50
- LUA_SUFFIX ?= 50
- LIBLUASUFX := 5
- override USE_LUA = Yes
- LUA := $(LUA50)
- NO_LUALIB := Yes
-endif
-
-ifdef USE_LUA51
- LUA_SUFFIX ?= 5.1
- LIBLUASUFX := 51
- override USE_LUA = Yes
- LUA := $(LUA51)
- NO_LUALIB := Yes
-endif
-
-ifdef USE_LUA52
- LUA_SUFFIX ?= 52
- LIBLUASUFX := 52
- override USE_LUA = Yes
- LUA := $(LUA52)
- NO_LUALIB := Yes
-endif
-
-ifdef USE_IUP3
- override USE_IUP = Yes
-# Inside Tecgraf only
-# IUP := $(IUP)3
-endif
-
-ifdef USE_IUPBETA
- IUP := $(IUP)/beta
-endif
-
-ifdef USE_CDBETA
- CD := $(CD)/beta
-endif
-
-ifdef USE_IMBETA
- IM := $(IM)/beta
-endif
-
-ifdef USE_GLUT
- override USE_OPENGL = Yes
- LIBS += glut32
- LDIR += $(GLUT)/lib
- STDINCS += $(GLUT)/include
-endif
-
-ifdef USE_GDK
- override USE_GTK = Yes
-endif
-
-ifdef USE_IUPCONTROLS
- override USE_CD = Yes
- override USE_IUP = Yes
- ifdef USE_IUPLUA
- LIBS += iupluacontrols$(LIBLUASUFX)
- override USE_CDLUA = Yes
- endif
- LIBS += iupcontrols
-endif
-
-ifdef USE_IMLUA
- override USE_IM = Yes
- LIBS += imlua$(LIBLUASUFX)
-endif
-
-ifdef USE_CDLUA
- override USE_CD = Yes
- LIBS += cdlua$(LIBLUASUFX)
-endif
-
-ifdef USE_IUPLUA
- override USE_IUP = Yes
- ifdef USE_CD
- LIBS += iupluacd$(LIBLUASUFX)
- endif
- ifdef USE_OPENGL
- LIBS += iupluagl$(LIBLUASUFX)
- endif
- LIBS += iuplua$(LIBLUASUFX)
-endif
-
-ifdef USE_LUA
- ifndef NO_LUALIB
- LIBS += lualib$(LUA_SUFFIX)
- endif
- LIBS += lua$(LUA_SUFFIX)
-
- LUA_LIB ?= $(LUA)/lib/$(TEC_UNAME)
- LDIR += $(LUA_LIB)
-
- LUA_INC ?= $(LUA)/include
- INCLUDES += $(LUA_INC)
-
- LUA_BIN ?= $(LUA)/bin/$(TEC_SYSNAME)
- BIN2C := $(LUA_BIN)/bin2c$(LUA_SUFFIX)
- LUAC := $(LUA_BIN)/luac$(LUA_SUFFIX)
- LUABIN := $(LUA_BIN)/lua$(LUA_SUFFIX)
-endif
-
-ifdef USE_IUP
- ifdef USE_CD
- LIBS += iupcd
- endif
- ifdef USE_GTK
- LIBS += iupgtk
- else
- LIBS += iup
- endif
- LDIR += $(IUP)/lib/$(TEC_UNAME)
- ifdef USE_OPENGL
- LIBS += iupgl
- endif
- ifdef USE_DLL
- ifeq ($(MAKETYPE), APP)
- LIBS += iupstub
- endif
- endif
- INCLUDES += $(IUP)/include
-endif
-
-ifdef USE_CD
- ifdef USE_GDIPLUS
- CHECK_GDIPLUS = Yes
- LIBS += cdcontextplus gdiplus
- endif
- ifdef USE_CAIRO
- # To use Cairo with Win32 base driver (NOT for GDK)
- # Can NOT be used together with GDI+
- LIBS += cdcairo pangocairo-1.0 cairo
- endif
- ifdef USE_GDK
- LIBS += cdgdk
- else
- LIBS += cd
- endif
- LIBS += freetype6
- LDIR += $(CD)/lib/$(TEC_UNAME)
- INCLUDES += $(CD)/include
-endif
-
-ifdef USE_IM
- LIBS += im
- LDIR += $(IM)/lib/$(TEC_UNAME)
- INCLUDES += $(IM)/include
-endif
-
-ifdef USE_OPENGL
- ifdef OLD_OPENGL
- LIBS += glaux glu32 opengl32
- else
- LIBS += glu32 opengl32
- endif
-endif
-
-ifdef USE_GTK
- STDINCS += $(GTK)/include/atk-1.0 $(GTK)/include/gtk-2.0 $(GTK)/include/cairo $(GTK)/include/pango-1.0 $(GTK)/include/glib-2.0 $(GTK)/lib/glib-2.0/include $(GTK)/lib/gtk-2.0/include
- ifeq "$(TEC_CC)" "gcc"
- STDFLAGS += -mms-bitfields
- endif
- LDIR += $(GTK)/lib
- LIBS += gtk-win32-2.0 gdk-win32-2.0 gdk_pixbuf-2.0 pango-1.0 pangowin32-1.0 gobject-2.0 gmodule-2.0 glib-2.0
-endif
-
-ifdef USE_QT
- #STDFLAGS += -Zm200 -w34100 -w34189 -Zm200 -w34100 -w34189 -w34100 -w34189
- STDINCS += $(QT)/include $(QT)/include/QtCore $(QT)/include/QtGui $(QT)/include/ActiveQt $(QT)/mkspecs/win32-msvc2005
- STDDEFS += -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT
- LDIR += $(QT)/lib
- LIBS += QtMain QtGui4 QtCore4
-endif
-
-
-#---------------------------------#
-# Building compilation flags that are sets
-
-# INCLUDES for dependencies, remove references to "c:" and similars
-DEPINCS := $(patsubst c:%, /cygdrive/c%, $(INCLUDES))
-DEPINCS := $(patsubst d:%, /cygdrive/d%, $(DEPINCS))
-DEPINCS := $(patsubst x:%, /cygdrive/x%, $(DEPINCS))
-DEPINCS := $(patsubst t:%, /cygdrive/t%, $(DEPINCS))
-DEPINCS := $(addprefix -I, $(DEPINCS))
-
-INCLUDES := $(addprefix -I, $(INCLUDES))
-STDINCS := $(addprefix -I, $(STDINCS))
-EXTRAINCS := $(addprefix -I, $(EXTRAINCS))
-DEFINES := $(addprefix -D, $(DEFINES))
-
-# For aplications and DLLs
-ifneq ($(MAKETYPE), LIB)
- LIBS += $(STDLIB)
- LIBS := $(addsuffix .$(LIBEXT), $(LIBS))
-
- ifeq ($(TEC_CC), vc)
- ifdef LDIR
- LDIR := $(addprefix -LIBPATH:, $(LDIR))
- endif
-
- STDLFLAGS += $(LDIR) $(STDLIBDIR) $(LIBS)
- endif
-
- ifeq ($(TEC_CC), bc)
- ifdef LDIR
- LDIR := $(addprefix -L, $(LDIR))
- endif
- endif
-
- ifeq ($(TEC_CC), wc)
- ifdef LDIR
- LDIR := $(addprefix LIBP , $(LDIR))
- endif
-
- LIBS := $(addprefix LIB , $(LIBS))
-
- STDLFLAGS += $(LDIR) $(STDLIBDIR) $(LIBS)
- endif
-
- ifeq ($(TEC_CC), gcc)
- LIBS := $(addprefix -l, $(LIBS))
- LIBS := $(LIBS:.a=)
- ifdef LDIR
- LDIR := $(addprefix -L, $(LDIR))
- endif
-
- STDLFLAGS += $(LDIR) $(STDLIBDIR) $(LIBS)
- endif
-
-endif
-
-
-#---------------------------------#
-# Definitions of private variables
-
-# C, C++ and RC compiler flags
-CFLAGS = $(FLAGS) $(STDFLAGS) $(INCLUDES) $(STDINCS) $(EXTRAINCS) $(DEFINES) $(STDDEFS)
-CXXFLAGS = $(CPPFLAGS) $(STDFLAGS) $(INCLUDES) $(STDINCS) $(EXTRAINCS) $(DEFINES) $(STDDEFS)
-RCFLAGS = $(INCLUDES) $(STDINCS) $(EXTRAINCS) $(DEFINES) $(STDDEFS)
-
-# Sources with relative path
-SOURCES = $(addprefix $(SRCDIR)/, $(SRC))
-
-# Target for applications or libraries
-ifeq ($(MAKETYPE), APP)
- TARGET := $(TARGETEXE)
-else
- ifeq ($(MAKETYPE), DLL)
- TARGET := $(TARGETDLL) $(TARGETLIB) $(TARGETDIR)/$(TARGETNAME).exp
- else
- TARGET := $(TARGETLIB)
- endif
-endif
-
-# OBJ: list of .o, without path
-# OBJS: list of .o with relative path
-OBJ = $(notdir $(SRC))
-OBJ := $(OBJ:.c=.$(OBJEXT))
-OBJ := $(OBJ:.cpp=.$(OBJEXT))
-OBJ := $(OBJ:.cxx=.$(OBJEXT))
-OBJ := $(OBJ:.cc=.$(OBJEXT))
-OBJ := $(OBJ:.rc=.res)
-OBJS = $(addprefix $(OBJDIR)/, $(OBJ))
-
-# Construct VPATH variable
-P-SRC = $(dir $(SRC))
-P-SRC += $(dir $(SRCLUA))
-VPATH = .:$(foreach dir,$(P-SRC),$(if $(dir)="./",:$(dir)))
-
-#---------------------------------#
-ifdef LOHPACK
- # Pacote LOH unificado com todos scripts Lua precompilados
- LOHS := $(LOHDIR)/$(LOHPACK)
- LOHDIRS :=
-else
- # LOH: lista dos arquivos .loh, sem path
- # LOHS: lista dos arquivos .loh, com path relativo
- LO = $(notdir $(SRCLUA))
- LO := $(LO:.lua=$(LO_SUFFIX).lo)
- LOS = $(addprefix $(OBJROOT)/, $(LO))
-
- LOH = $(notdir $(SRCLUA))
- LOH := $(LOH:.lua=$(LO_SUFFIX).loh)
- LOHS = $(addprefix $(LOHDIR)/, $(LOH))
-endif
-
-#---------------------------------#
-# Compiler depedent adjusts
-
-# CFLAGS: parametros passados ao linker e librarian
-LINKFLAGS := $(LFLAGS) $(STDLFLAGS) $(OBJS) $(SLIB)
-LIBFLAGS := $(LCFLAGS) $(STDLFLAGS) $(OBJS) $(SLIB)
-
-ifeq ($(TEC_CC), bc)
- ifeq ($(MAKETYPE), APP)
- LINKFLAGS = $(LFLAGS) $(STDLFLAGS) $(LDIR) $(STDLIBDIR) $(STARTUP) $(OBJS), $(TARGETEXE), , $(LIBS) $(SLIB),
- else
- LIBFLAGS = $(LCFLAGS) $(subst /,\\, $(STDLFLAGS) $(addprefix +,$(OBJS) $(SLIB)))
- endif
-endif
-
-ifeq ($(TEC_CC), wc)
- ifeq ($(MAKETYPE), APP)
- LINKFLAGS = $(LFLAGS) $(STDLFLAGS) $(addprefix F , $(OBJS) $(SLIB))
- else
- #wlib adds files using "+" as an option
- LIBFLAGS := $(LCFLAGS) $(STDLFLAGS) $(addprefix +, $(OBJS) $(SLIB))
- endif
-endif
-
-ifeq ($(TEC_CC), gcc)
- ifeq ($(MAKETYPE), APP)
- LINKFLAGS = -o $(TARGETEXE) $(OBJS) $(SLIB) $(LFLAGS) $(STDLFLAGS)
- endif
- ifeq ($(MAKETYPE), DLL)
- LINKFLAGS = -shared -o $(TARGETDLL) -Wl,--out-implib=$(TARGETLIB) $(OBJS) $(DEF_FILE) $(SLIB) $(LFLAGS) $(STDLFLAGS)
- endif
-endif
-
-#---------------------------------#
-# Dynamic Library Build
-
-.PHONY: dynamic-lib
-dynamic-lib: $(TARGETDLL) addmanifest
-
-$(TARGETDLL) : $(LOHS) $(OBJS) $(EXTRADEPS) $(DEF_FILE)
- @echo ''; echo Tecmake: linking $(@F) ...
- $(ECHO)$(LINKER) $(LINKFLAGS)
- @echo ''; echo 'Tecmake: Dynamic Library ($@) Done'; echo ''
-
-
-#---------------------------------#
-# Static Library Build
-
-.PHONY: static-lib
-static-lib: $(TARGETLIB)
-
-$(TARGETDIR)/$(TARGETNAME).lib : $(LOHS) $(OBJS) $(EXTRADEPS)
- @echo ''; echo Tecmake: librarian $(@F) ...
- $(ECHO)$(LIBC) $(LIBFLAGS)
- @echo ''; echo 'Tecmake: Static Library ($@) Done'; echo ''
-
-$(TARGETDIR)/lib$(TARGETNAME).a : $(LOHS) $(OBJS) $(EXTRADEPS)
- @echo ''; echo Tecmake: librarian $(@F) ...
- $(ECHO)$(LIBC) $(ARFLAGS) $@ $(OBJS) $(SLIB)
- @echo ''; echo Tecmake: updating lib TOC $(@F) ...
- $(ECHO)-$(RANLIB) $@
- @echo ''; echo 'Tecmake: Static Library ($@) Done'; echo ''
-
-
-#---------------------------------#
-# Application Build
-
-.PHONY: application
-application: $(TARGETEXE) addmanifest
-
-$(TARGETEXE) : $(LOHS) $(OBJS) $(EXTRADEPS)
- @echo ''; echo Tecmake: linking $(@F) ...
- $(ECHO)$(LINKER) $(LINKFLAGS)
- @echo ''; echo 'Tecmake: Application ($@) Done.'; echo ''
-
-
-#---------------------------------#
-# Application Scripts
-
-# Nomes dos scripts
-SRELEASE = $(SRCDIR)/$(TARGETNAME).bat
-EXEC := $(subst /,\,$(TARGETEXE))
-
-.PHONY: scripts
-ifdef NO_SCRIPTS
- scripts: ;
-else
- scripts: $(SRELEASE) ;
-endif
-
-$(SRELEASE): $(TARGETEXE)
- @echo ''; echo 'Tecmake: generating script $(@F)'
- @echo '@echo off' > $@
- @echo 'REM Script generated automatically by tecmake v$(VERSION)' >> $@
- @echo '$(EXEC) %*' >> $@
-
-
-#---------------------------------#
-# Directories Creation
-
-.PHONY: directories
-directories: $(OBJDIR) $(TARGETDIR) $(EXTRADIR) $(LOHDIR)
-
-$(OBJDIR) $(TARGETDIR):
- if [ ! -d $@ ] ; then mkdir -p $@ ; fi
-
-ifdef EXTRADIR
- $(EXTRADIR):
- if [ ! -d $@ ] ; then mkdir -p $@ ; fi
-else
- $(EXTRADIR): ;
-endif
-
-ifdef LOHDIR
- $(LOHDIR):
- if [ ! -d $@ ] ; then mkdir -p $@ ; fi
-else
- $(LOHDIR): ;
-endif
-
-
-#---------------------------------#
-# Compilation Rules
-
-$(OBJDIR)/%.o: $(SRCDIR)/%.c
- @echo ''; echo Tecmake: compiling $( $@
-
-$(OBJROOT)/%$(LO_SUFFIX).lo: $(SRCLUADIR)/%.lua
- @echo ''; echo Tecmake: compiling $( $(DEPEND)
- @which gcc 2> /dev/null 1>&2 ;\
- if [ $$? -eq 0 ]; then \
- echo "Tecmake: Building Dependencies ... (can be slow)" ;\
- g++ $(DEPINCS) $(DEFINES) $(STDDEFS) $(DEPDEFS) -MM $(SOURCES) | \
- sed -e '1,$$s/^\([^ ]*\)\.o/$$(OBJDIR)\/\1.$(OBJEXT)/' > $(DEPEND) ;\
- else \
- echo "" ;\
- echo "Tecmake: error, g++ not found. Dependencies can not be built." ;\
- echo "Must set NO_DEPEND=Yes" ;\
- echo "" ;\
- exit 1 ;\
- fi
- endif
-
-ifdef USE_NODEPEND
- NO_DEPEND:=Yes
-endif
-
-###################
-ifndef NO_DEPEND
-include $(DEPEND)
-endif
-###################
-
-
-#---------------------------------#
-# Management Rules
-
-.PHONY: clean-dir
-clean-dir:
- rm -fr $(OBJROOT) $(TARGETROOT)
-
-# Remove extra files
-.PHONY: clean-extra
-clean-extra:
- rm -f $(DEPEND) $(SRELEASE)
-
-# Remove Lua object inclusion files
-.PHONY: clean-lohs
-clean-lohs:
- rm -f $(LOS) $(LOHS)
-
-# Remove object files
-.PHONY: clean-obj
-clean-obj:
- rm -f $(OBJS)
-
-# Remove target
-.PHONY: clean-target
-clean-target:
- rm -f $(TARGET)
-
-# Remove target and object files
-.PHONY: clean-all-obj
-clean-all-obj:
- @for d in $(UNAMES); do \
- (cd $(OBJROOT)/$$d; echo $(OBJ) | xargs rm -f) ;\
- done
-
-# Remove libraries and executables for all platforms
-.PHONY: clean-all-target
-clean-all-target:
- @for d in $(UNAMES); do \
- (rm -f $(TARGETROOT)/$$d/$(TARGETNAME).exe $(TARGETROOT)/$$d/$(TARGETNAME).$(LIBEXT) $(TARGETROOT)/$$d/$(TARGETNAME).dll $(TARGETROOT)/$$d/$(TARGETNAME).exp) ;\
- done
-
-.PHONY: clean
-clean: clean-target clean-obj
-
-.PHONY: clean-all
-clean-all: clean-extra clean-lohs clean-all-target clean-all-obj
-
-# Rebuild target and object files
-.PHONY: rebuild
-rebuild: clean-extra clean-lohs clean-obj clean-target tecmake
-
-# Rebuild target without rebuilding object files
-.PHONY: relink
-relink: clean-target tecmake
-
-
-#---------------------------------#
-
-.PHONY: version
-version:
- @echo "Tecmake Windows Version $(VERSION)"
-
-#---------------------------------#
diff --git a/tecmake.mak b/tecmake.mak
new file mode 100644
index 0000000..2426d5b
--- /dev/null
+++ b/tecmake.mak
@@ -0,0 +1,1358 @@
+#-------------------------------------------------------------------------#
+#- Tecmake (POSIX Version) -#
+#- Generic Makefile to build applications and libraries at TeCGraf -#
+#- The user makefile usually has the name "config.mak". -#
+#-------------------------------------------------------------------------#
+
+#---------------------------------#
+# Tecmake Version
+VERSION = 4.3
+
+
+#---------------------------------#
+# First target
+.PHONY: build
+build: tecmake
+
+
+#---------------------------------#
+# System Variables Definitions
+
+ifndef TEC_UNAME
+ # Base Defintions
+ TEC_SYSNAME:=$(shell uname -s)
+ TEC_SYSVERSION:=$(shell uname -r|cut -f1 -d.)
+ TEC_SYSMINOR:=$(shell uname -r|cut -f2 -d.)
+ TEC_SYSARCH:=$(shell uname -m)
+
+ # Fixes
+ ifeq ($(TEC_SYSNAME), SunOS)
+ TEC_SYSARCH:=$(shell uname -p)
+ endif
+ ifeq ($(TEC_SYSNAME), IRIX)
+ TEC_SYSARCH:=$(shell uname -p)
+ endif
+ ifeq ($(TEC_SYSNAME), FreeBSD)
+ TEC_SYSMINOR:=$(shell uname -r|cut -f2 -d.|cut -f1 -d-)
+ endif
+ ifeq ($(TEC_SYSNAME), AIX)
+ TEC_SYSVERSION:=$(shell uname -v)
+ TEC_SYSMINOR:=$(shell uname -r)
+ TEC_SYSARCH:=ppc
+ endif
+ ifeq ($(TEC_SYSNAME), Darwin)
+ TEC_SYSNAME:=MacOS
+ TEC_SYSVERSION:=$(shell sw_vers -productVersion|cut -f1 -d.)
+ TEC_SYSMINOR:=$(shell sw_vers -productVersion|cut -f2 -d.)
+ TEC_SYSARCH:=$(shell uname -p)
+ endif
+
+ ifeq ($(TEC_SYSARCH), i686)
+ TEC_SYSARCH:=x86
+ endif
+ ifeq ($(TEC_SYSARCH), i386)
+ TEC_SYSARCH:=x86
+ endif
+ ifeq ($(TEC_SYSARCH), powerpc)
+ TEC_SYSARCH:=ppc
+ endif
+ ifeq ($(TEC_SYSARCH), x86_64)
+ TEC_SYSARCH:=x64
+ endif
+ ifeq ($(TEC_SYSARCH), amd64)
+ TEC_SYSARCH:=x64
+ endif
+
+ # Compose
+ TEC_SYSRELEASE:=$(TEC_SYSVERSION).$(TEC_SYSMINOR)
+ TEC_UNAME:=$(TEC_SYSNAME)$(TEC_SYSVERSION)$(TEC_SYSMINOR)
+
+ # Cygwin
+ ifneq ($(findstring CYGWIN, $(TEC_SYSNAME)), )
+ TEC_SYSNAME:=CYGWIN
+ TEC_UNAME:=cygw$(TEC_SYSVERSION)$(TEC_SYSMINOR)
+ endif
+
+ # Linux 2.4 and GCC 3.x
+ ifeq ($(TEC_UNAME), Linux24)
+ GCCVER:=$(shell gcc -dumpversion|cut -f1 -d.)
+ ifeq ($(GCCVER), 3)
+ TEC_UNAME:=$(TEC_UNAME)g3
+ endif
+ endif
+
+ # Linux 2.6 and GCC 4.x
+ ifeq ($(TEC_UNAME), Linux26)
+ GCCVER:=$(shell gcc -dumpversion|cut -f1 -d.)
+ ifeq ($(GCCVER), 4)
+ TEC_UNAME:=$(TEC_UNAME)g4
+ endif
+ endif
+
+ # Linux and PowerPC
+ ifeq ($(TEC_SYSNAME), Linux)
+ ifeq ($(TEC_SYSARCH), ppc)
+ TEC_UNAME:=$(TEC_UNAME)ppc
+ endif
+ endif
+
+ # 64-bits Linux
+ ifeq ($(TEC_SYSNAME), Linux)
+ ifeq ($(TEC_SYSARCH), x64)
+ BUILD_64=Yes
+ TEC_UNAME:=$(TEC_UNAME)_64
+ endif
+
+ ifeq ($(TEC_SYSARCH), ia64)
+ BUILD_64=Yes
+ TEC_UNAME:=$(TEC_UNAME)_ia64
+ endif
+ endif
+
+ # 64-bits FreeBSD
+ ifeq ($(TEC_SYSNAME), FreeBSD)
+ ifeq ($(TEC_SYSARCH), x64)
+ BUILD_64=Yes
+ TEC_UNAME:=$(TEC_UNAME)_64
+ endif
+ endif
+
+ # Solaris and Intel
+ ifeq ($(TEC_SYSNAME), SunOS)
+ ifeq ($(TEC_SYSARCH) , x86)
+ TEC_UNAME:=$(TEC_UNAME)x86
+ endif
+ endif
+
+ # MacOS and Intel
+ ifeq ($(TEC_SYSNAME), MacOS)
+ ifeq ($(TEC_SYSMINOR), 6)
+ TEC_SYSARCH:=x64
+ else
+ ifeq ($(TEC_SYSARCH), x86)
+ TEC_UNAME:=$(TEC_UNAME)x86
+ endif
+ endif
+ endif
+endif
+
+
+#---------------------------------#
+# System Info
+.PHONY: sysinfo
+sysinfo:
+ @echo ''; echo 'Tecmake: System Info'
+ @echo 'TEC_SYSNAME = $(TEC_SYSNAME)'
+ @echo 'TEC_SYSVERSION = $(TEC_SYSVERSION)'
+ @echo 'TEC_SYSMINOR = $(TEC_SYSMINOR)'
+ @echo 'TEC_SYSARCH = $(TEC_SYSARCH)'
+ @echo 'TEC_UNAME = $(TEC_UNAME)'
+ @echo 'GTK_BASE = $(GTK_BASE)'
+ @echo 'X11_LIB = $(X11_LIB)'
+ @echo 'X11_INC = $(X11_INC)'
+ @echo 'MOTIF_LIB = $(MOTIF_LIB)'
+ @echo 'MOTIF_INC = $(MOTIF_INC)'
+ @echo 'GLUT_LIB = $(GLUT_LIB)'
+ @echo 'GLUT_INC = $(GLUT_INC)'
+ @echo 'OPENGL_LIB = $(OPENGL_LIB)'
+ @echo 'OPENGL_INC = $(OPENGL_INC)'
+ @echo ''
+
+
+#---------------------------------#
+# Known Platforms
+
+UNAMES = Linux24 Linux24g3 Linux24g3_64 Linux26 Linux26_64 Linux26g4 Linux26g4_64 Linux26_ia64 FreeBSD54 SunOS57 SunOS58 SunOS510 SunOS510_x86 AIX43 IRIX65 IRIX6465
+
+
+#---------------------------------#
+# Directories Definitions
+
+PROJDIR = ..
+SRCDIR = .
+OBJROOT = $(PROJDIR)/obj
+
+
+#---------------------------------#
+# Byte Order and Word Size
+
+ifneq ($(findstring x86, $(TEC_SYSARCH)), )
+ TEC_BYTEORDER = TEC_LITTLEENDIAN
+else
+ifeq ($(TEC_SYSARCH), arm)
+ TEC_BYTEORDER = TEC_LITTLEENDIAN
+else
+ TEC_BYTEORDER = TEC_BIGENDIAN
+endif
+endif
+
+ifeq ($(TEC_SYSARCH), x64)
+ TEC_BYTEORDER = TEC_LITTLEENDIAN
+ TEC_WORDSIZE = TEC_64
+else
+ifdef BUILD_64
+ TEC_WORDSIZE = TEC_64
+else
+ TEC_WORDSIZE = TEC_32
+endif
+endif
+
+# Itanium Exception
+ifeq ($(TEC_SYSARCH), ia64)
+ TEC_BYTEORDER = TEC_LITTLEENDIAN
+ TEC_WORDSIZE = TEC_64
+endif
+
+
+#---------------------------------#
+# Compilation Flags
+STDFLAGS := -Wall
+STDDEFS := -DTEC_UNAME=$(TEC_UNAME) -DTEC_SYSNAME=$(TEC_SYSNAME) -D$(TEC_SYSNAME)=$(TEC_SYSRELEASE) -D$(TEC_BYTEORDER) -D$(TEC_WORDSIZE) -DFUNCPROTO=15
+STDINCS :=
+OPTFLAGS := -O2
+STDLFLAGS := r
+DEBUGFLAGS := -g
+STDLDFLAGS := -shared
+DLIBEXT := so
+DLIBPRE := lib
+APPEXT :=
+
+ifneq ($(findstring Linux24, $(TEC_UNAME)), )
+ NO_GTK_DEFAULT = Yes
+endif
+ifeq ($(TEC_UNAME), Linux26)
+ NO_GTK_DEFAULT = Yes
+endif
+ifeq ($(TEC_UNAME), Linux26_64)
+ NO_GTK_DEFAULT = Yes
+endif
+
+ifndef NO_GTK_DEFAULT
+ ifneq ($(findstring cygw, $(TEC_UNAME)), )
+ GTK_DEFAULT = Yes
+ endif
+ ifneq ($(findstring Linux, $(TEC_UNAME)), )
+ GTK_DEFAULT = Yes
+ endif
+ ifneq ($(findstring MacOS, $(TEC_UNAME)), )
+ GTK_DEFAULT = Yes
+ endif
+ ifneq ($(findstring FreeBSD, $(TEC_UNAME)), )
+ GTK_DEFAULT = Yes
+ endif
+endif
+
+#---------------------------------#
+# Tools
+
+CC := $(TEC_TOOLCHAIN)gcc
+CPPC := $(TEC_TOOLCHAIN)g++
+FF := $(TEC_TOOLCHAIN)g77
+RANLIB := $(TEC_TOOLCHAIN)ranlib
+AR := $(TEC_TOOLCHAIN)ar
+DEBUGGER := $(TEC_TOOLCHAIN)gdb
+RCC := $(TEC_TOOLCHAIN)windres
+
+# Remote build script
+REMOTE = $(TECMAKE_HOME)/remote
+
+# Packed LOHs script
+LUAPRE = $(TECMAKE_HOME)/luapre.lua
+
+
+#---------------------------------#
+# User Configuration File
+
+MAKENAME = config.mak
+
+ifdef MF
+ MAKENAME = $(MF).mak
+endif
+
+###################
+include $(MAKENAME)
+###################
+
+
+#---------------------------------#
+# Definitions of public variables
+
+ifdef LIBNAME
+ TARGETNAME = $(LIBNAME)
+ MAKETYPE = LIB
+else
+ TARGETNAME = $(APPNAME)
+ MAKETYPE = APP
+endif
+
+ifndef TARGETNAME
+ $(error LIBNAME nor APPNAME defined in $(MAKENAME))
+endif
+
+PROJNAME ?= $(TARGETNAME)
+
+DEPEND := $(TARGETNAME).dep
+
+ifdef DEPENDDIR
+ DEPEND := $(DEPENDDIR)/$(TARGETNAME).dep.$(TEC_UNAME)
+endif
+
+ifeq ($(MAKETYPE), APP)
+ TARGETROOT ?= $(PROJDIR)/bin
+else
+ TARGETROOT ?= $(PROJDIR)/lib
+endif
+
+ifneq ($(PROJNAME), $(TARGETNAME))
+ OBJROOT := $(OBJROOT)/$(TARGETNAME)
+endif
+
+ifdef DBG
+ STDFLAGS += $(DEBUGFLAGS)
+ STDDEFS += -DDEBUG
+else
+ STDDEFS += -DNDEBUG
+ ifdef OPT
+ STDFLAGS += $(OPTFLAGS)
+ STRIP ?= Yes
+ endif
+endif
+
+ifdef BUILD_64
+ ifneq ($(findstring SunOS, $(TEC_UNAME)), )
+ USE_CC = Yes
+ BUILD_64_DIR = Yes
+ endif
+ ifneq ($(findstring AIX, $(TEC_UNAME)), )
+ USE_CC = Yes
+ BUILD_64_DIR = Yes
+ endif
+ ifneq ($(findstring IRIX, $(TEC_UNAME)), )
+ USE_CC = Yes
+ BUILD_64_DIR = Yes
+ endif
+endif
+
+ifdef USE_CC
+ CC := cc
+ CPPC := CC
+ STDFLAGS =
+ UNAMES := $(UNAMES_CC)
+ ifdef USE_CC_DIR
+ TEC_UNAME := $(TEC_UNAME)cc
+ endif
+endif
+
+ifdef BUILD_64
+ ifdef BUILD_64_DIR
+ TEC_UNAME := $(TEC_UNAME)_64
+ endif
+endif
+
+TEC_UNAME_DIR ?= $(TEC_UNAME)
+TEC_UNAME_LIB_DIR ?= $(TEC_UNAME)
+ifdef DBG
+ ifdef DBG_LIB_DIR
+ TEC_UNAME_LIB_DIR := $(TEC_UNAME_DIR)d
+ endif
+ ifdef DBG_DIR
+ TEC_UNAME_DIR := $(TEC_UNAME_DIR)d
+ endif
+endif
+
+OBJDIR := $(OBJROOT)/$(TEC_UNAME_DIR)
+TARGETDIR := $(TARGETROOT)/$(TEC_UNAME_DIR)
+
+# Change linker if any C++ source
+ifndef LINKER
+ ifneq "$(findstring .cpp, $(SRC))" ""
+ LINKER := $(CPPC)
+ LD := $(CPPC)
+ else
+ LINKER := $(CC)
+ LD := $(CC)
+ endif
+endif
+
+ifdef NO_ECHO
+ ECHO:=@
+endif
+
+#---------------------------------#
+# LO and LOH Suffix
+
+SRCLUADIR ?= $(SRCDIR)
+LOHDIR ?= $(SRCLUADIR)
+
+ifdef USE_LOH_SUBDIR
+ ifeq ($(TEC_BYTEORDER), TEC_BIGENDIAN)
+ ifeq ($(TEC_WORDSIZE), TEC_64)
+ LOH_SUBDIR ?= be64
+ else
+ LOH_SUBDIR ?= be32
+ endif
+ else
+ ifeq ($(TEC_WORDSIZE), TEC_64)
+ LOH_SUBDIR ?= le64
+ else
+ LOH_SUBDIR ?= le32
+ endif
+ endif
+ LOHDIR := $(LOHDIR)/$(LOH_SUBDIR)
+ INCLUDES += $(LOHDIR)
+else
+ ifeq ($(TEC_BYTEORDER), TEC_BIGENDIAN)
+ ifeq ($(TEC_WORDSIZE), TEC_64)
+ LO_SUFFIX ?= _be64
+ else
+ LO_SUFFIX ?= _be32
+ endif
+ else
+ ifeq ($(TEC_WORDSIZE), TEC_64)
+ LO_SUFFIX ?= _le64
+ else
+ LO_SUFFIX ?=
+ endif
+ endif
+endif
+
+
+
+#---------------------------------#
+# Platform specific variables
+
+# Definitions for X11
+X11_LIBS := Xmu Xt Xext X11
+#X11_LIB :=
+#X11_INC := #include
+
+# Definitions for OpenGL
+OPENGL_LIBS := GLU GL
+#OPENGL_LIB :=
+#OPENGL_INC := #include and possibly
+MOTIFGL_LIB := GLw #include
+
+# Definitions for Motif
+#MOTIF_LIB :=
+#MOTIF_INC := #include
+
+# Definitions for GLUT
+#GLUT_LIB :=
+#GLUT_INC :=
+
+# Definitions for GTK
+ifdef GTK_BASE
+ GTK := $(GTK_BASE)
+else
+ ifneq ($(findstring MacOS, $(TEC_UNAME)), )
+ # Option 1 - Fink GTK port
+ GTK = /sw
+ # Option 3 - GTK-OSX Framework
+ # GTK := /Users/cpts/gtk/inst
+ else
+ GTK = /usr
+ endif
+endif
+
+ifneq ($(findstring Linux, $(TEC_UNAME)), )
+ UNIX_LINUX = Yes
+ ifdef BUILD_64
+ ifeq ($(TEC_SYSARCH), ia64)
+ STDFLAGS += -fPIC
+ X11_LIB := /usr/X11R6/lib
+ else
+ STDFLAGS += -m64 -fPIC
+ X11_LIB := /usr/X11R6/lib64
+ endif
+ else
+ X11_LIB := /usr/X11R6/lib
+ endif
+ X11_INC := /usr/X11R6/include
+ MOTIFGL_LIB :=
+endif
+
+ifneq ($(findstring IRIX, $(TEC_UNAME)), )
+ UNIX_POSIX = Yes
+ LD = ld
+ STDLDFLAGS := -elf -shared -rdata_shared -soname lib$(TARGETNAME).so
+ RANLIB := /bin/true
+ X11_LIBS := Xmu Xt X11
+ ifdef BUILD_64
+ ifdef USE_CC
+ STDFLAGS += -64 -KPIC
+ STDLDFLAGS += -64
+ LINKER += -64
+ endif
+ X11_LIB := /usr/lib64
+ MOTIF_LIB := /usr/Motif-2.1/lib64
+ else
+ X11_LIB := /usr/lib32
+ MOTIF_LIB := /usr/Motif-2.1/lib32
+ endif
+ MOTIF_INC = /usr/Motif-2.1/include
+endif
+
+ifneq ($(findstring AIX, $(TEC_UNAME)), )
+ UNIX_POSIX = Yes
+ NO_DYNAMIC ?= Yes
+ ifdef BUILD_64
+ ifdef USE_CC
+ STDFLAGS += -q64 # to compilers C and C++
+ STDLFLAGS := -X64 $(STDLFLAGS) # to librarian
+ STDLDFLAGS += -64
+ LINKER += -q64 # to linker
+ endif
+ endif
+endif
+
+ifneq ($(findstring HP-UX, $(TEC_UNAME)), )
+ UNIX_POSIX = Yes
+ NO_DYNAMIC ?= Yes
+ MOTIF_INC := /usr/include/Motif2.1
+ X11_LIBS := Xt Xext X11
+ OPENGL_LIB := /opt/graphics/OpenGL/lib
+ OPENGL_INC := /opt/graphics/OpenGL/include
+ STDDEFS := -DTEC_UNAME=$(TEC_UNAME) -DTEC_SYSNAME=$(TEC_SYSNAME) -D$(TEC_BYTEORDER) -D$(TEC_WORDSIZE) -DFUNCPROTO=15
+ CC := aCC
+ CPPC := aCC
+ LINKER := aCC
+endif
+
+ifneq ($(findstring SunOS, $(TEC_UNAME)), )
+ UNIX_POSIX = Yes
+ LD = ld
+ STDLDFLAGS := -G
+ X11_INC := /usr/openwin/share/include
+ X11_LIB := /usr/openwin/lib
+ MOTIF_INC := /usr/dt/share/include
+ MOTIF_LIB := /usr/dt/lib
+ OPENGL_INC := /usr/openwin/share/include/X11
+ GLUT_LIB := /usr/local/glut-3.7/lib/glut
+ GLUT_INC := /usr/local/glut-3.7/include
+ ifdef BUILD_64
+ ifdef USE_CC
+ STDFLAGS += -xarch=v9 -KPIC
+ # have to force these PATHs because of a conflict with standard PATHs
+ STDLDFLAGS += -64 -L/usr/lib/64 -L/usr/ucblib/sparcv9
+ LINKER += -xarch=v9
+ endif
+ endif
+endif
+
+ifneq ($(findstring MacOS, $(TEC_UNAME)), )
+ UNIX_BSD = Yes
+ X11_LIBS := Xmu Xp Xt Xext X11
+ X11_LIB := /usr/X11R6/lib
+ X11_INC := /usr/X11R6/include
+ MOTIF_INC := /usr/OpenMotif/include
+ MOTIF_LIB := /usr/OpenMotif/lib
+ ifdef BUILD_DYLIB
+ STDLDFLAGS := -dynamiclib -Wl -fno-common -headerpad_max_install_names -undefined dynamic_lookup -install_name lib$(TARGETNAME).dylib
+ DLIBEXT := dylib
+ STDFLAGS += -fno-common
+ else
+ STDLDFLAGS := -bundle -undefined dynamic_lookup
+ endif
+ ifdef USE_OPENGL
+ ifeq ($(TEC_SYSMINOR), 5)
+ #Darwin9 Only - OpenGL bug fix for Fink, when the message bellow appears
+ # ld: cycle in dylib re-exports with /usr/X11R6/lib/libGL.dylib
+ LFLAGS += -dylib_file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
+ endif
+ endif
+endif
+
+ifneq ($(findstring FreeBSD, $(TEC_UNAME)), )
+ BSD = Yes
+ X11_LIB := /usr/X11R6/lib
+ X11_INC := /usr/X11R6/include
+ ifeq ($(TEC_SYSARCH), x64)
+ STDFLAGS += -fPIC
+ endif
+endif
+
+#---------------------------------#
+# Allows an extra configuration file.
+ifdef EXTRA_CONFIG
+include $(EXTRA_CONFIG)
+endif
+
+
+#---------------------------------#
+# Tecgraf Libraries Location
+TECTOOLS_HOME ?= ../..
+
+IUP ?= $(TECTOOLS_HOME)/iup
+CD ?= $(TECTOOLS_HOME)/cd
+IM ?= $(TECTOOLS_HOME)/im
+LUA ?= $(TECTOOLS_HOME)/lua
+LUA51 ?= $(TECTOOLS_HOME)/lua5.1
+LUA52 ?= $(TECTOOLS_HOME)/lua52
+
+
+#---------------------------------#
+# Pre-defined libraries
+
+# Library order:
+# user + iupcd + cd + iup + motif + X
+# Library path order is reversed
+
+ifdef USE_LUA
+ LUA_SUFFIX ?=
+ LIBLUASUFX := 3
+endif
+
+ifdef USE_LUA4
+ LUA_SUFFIX ?= 4
+ LIBLUASUFX := 4
+ override USE_LUA = Yes
+ LUA := $(LUA4)
+endif
+
+ifdef USE_LUA5
+ LUA_SUFFIX ?= 5
+ LIBLUASUFX := 5
+ override USE_LUA = Yes
+ LUA := $(LUA5)
+endif
+
+ifdef USE_LUA50
+ LUA_SUFFIX ?= 50
+ LIBLUASUFX := 5
+ override USE_LUA = Yes
+ LUA := $(LUA50)
+ NO_LUALIB := Yes
+endif
+
+ifdef USE_LUA51
+ LUA_SUFFIX ?= 5.1
+ LIBLUASUFX := 51
+ override USE_LUA = Yes
+ LUA := $(LUA51)
+ NO_LUALIB := Yes
+endif
+
+ifdef USE_LUA52
+ LUA_SUFFIX ?= 52
+ LIBLUASUFX := 52
+ override USE_LUA = Yes
+ LUA := $(LUA52)
+ NO_LUALIB := Yes
+endif
+
+ifdef USE_IUP3
+ override USE_IUP = Yes
+# Inside Tecgraf only
+ ifndef IUP3_BUILD
+# IUP := $(IUP)3
+ endif
+endif
+
+ifdef USE_IUPBETA
+ IUP := $(IUP)/beta
+endif
+
+ifdef USE_CDBETA
+ CD := $(CD)/beta
+endif
+
+ifdef USE_IMBETA
+ IM := $(IM)/beta
+endif
+
+ifdef USE_GLUT
+ override USE_OPENGL = Yes
+endif
+
+ifdef USE_GDK
+ override USE_GTK = Yes
+endif
+
+ifdef USE_IUPCONTROLS
+ override USE_CD = Yes
+ override USE_IUP = Yes
+ ifdef USE_IUPLUA
+ ifdef USE_STATIC
+ SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiupluacontrols$(LIBLUASUFX).a
+ else
+ LIBS += iupluacontrols$(LIBLUASUFX)
+ endif
+ override USE_CDLUA = Yes
+ endif
+ ifdef USE_STATIC
+ SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiupcontrols.a
+ else
+ LIBS += iupcontrols
+ endif
+endif
+
+ifdef USE_IMLUA
+ override USE_IM = Yes
+ ifdef USE_STATIC
+ SLIB += $(IM)/lib/$(TEC_UNAME_LIB_DIR)/libimlua$(LIBLUASUFX).a
+ else
+ LIBS += imlua$(LIBLUASUFX)
+ endif
+endif
+
+ifdef USE_CDLUA
+ override USE_CD = Yes
+ ifdef USE_STATIC
+ SLIB += $(CD)/lib/$(TEC_UNAME_LIB_DIR)/libcdlua$(LIBLUASUFX).a
+ else
+ LIBS += cdlua$(LIBLUASUFX)
+ endif
+endif
+
+ifdef USE_IUPLUA
+ override USE_IUP = Yes
+ ifdef USE_STATIC
+ ifdef USE_CD
+ SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiupluacd$(LIBLUASUFX).a
+ endif
+ ifdef USE_OPENGL
+ SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiupluagl$(LIBLUASUFX).a
+ endif
+ SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiuplua$(LIBLUASUFX).a
+ else
+ ifdef USE_CD
+ LIBS += iupluacd$(LIBLUASUFX)
+ endif
+ ifdef USE_OPENGL
+ LIBS += iupluagl$(LIBLUASUFX)
+ endif
+ LIBS += iuplua$(LIBLUASUFX)
+ endif
+endif
+
+ifdef USE_LUA
+ LUA_LIB ?= $(LUA)/lib/$(TEC_UNAME_LIB_DIR)
+ ifdef USE_STATIC
+ ifndef NO_LUALIB
+ SLIB += $(LUA_LIB)/liblualib$(LUA_SUFFIX).a
+ endif
+ SLIB += $(LUA_LIB)/liblua$(LUA_SUFFIX).a
+ else
+ ifndef NO_LUALIB
+ LIBS += lualib$(LUA_SUFFIX)
+ endif
+ ifndef NO_LUALINK
+ LIBS += lua$(LUA_SUFFIX)
+ LDIR += $(LUA_LIB)
+ else
+ ifneq ($(findstring cygw, $(TEC_UNAME)), )
+ LIBS += lua$(LUA_SUFFIX)
+ LDIR += $(LUA_LIB)
+ endif
+ endif
+ endif
+
+ LUA_INC ?= $(LUA)/include
+ INCLUDES += $(LUA_INC)
+
+ LUA_BIN ?= $(LUA)/bin/$(TEC_UNAME)
+ BIN2C := $(LUA_BIN)/bin2c$(LUA_SUFFIX)
+ LUAC := $(LUA_BIN)/luac$(LUA_SUFFIX)
+ LUABIN := $(LUA_BIN)/lua$(LUA_SUFFIX)
+endif
+
+ifdef USE_IUP
+ IUP_SUFFIX ?=
+ ifdef USE_IUP3
+ ifdef GTK_DEFAULT
+ ifdef USE_MOTIF
+ IUP_SUFFIX := mot
+ else
+ override USE_GTK = Yes
+ override USE_GDK = Yes
+ endif
+ else
+ ifdef USE_GTK
+ IUP_SUFFIX := gtk
+ else
+ override USE_MOTIF = Yes
+ endif
+ endif
+ else
+ override USE_MOTIF = Yes
+ endif
+ ifdef USE_STATIC
+ ifdef USE_CD
+ SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiupcd.a
+ endif
+ ifdef USE_OPENGL
+ SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiupgl.a
+ endif
+ SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiup$(IUP_SUFFIX).a
+ else
+ ifdef USE_CD
+ LIBS += iupcd
+ endif
+ ifdef USE_OPENGL
+ LIBS += iupgl
+ endif
+ LIBS += iup$(IUP_SUFFIX)
+ LDIR += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)
+ endif
+ INCLUDES += $(IUP)/include
+endif
+
+ifdef USE_CD
+ CD_SUFFIX ?=
+ override USE_X11 = Yes
+ ifndef USE_CD_OLD
+ ifdef GTK_DEFAULT
+ ifdef USE_MOTIF
+ CD_SUFFIX := x11
+ endif
+ else
+ ifdef USE_GTK
+ CD_SUFFIX := gdk
+ endif
+ endif
+ endif
+ ifdef USE_STATIC
+ ifdef USE_XRENDER
+ CHECK_XRENDER = Yes
+ SLIB += $(CD)/lib/$(TEC_UNAME_LIB_DIR)/libcdcontextplus.a
+ LIBS += Xrender Xft
+ endif
+ ifdef USE_CAIRO
+ # To use Cairo with X11 base driver (NOT for GDK)
+ # Can NOT be used together with XRender
+ SLIB += $(CD)/lib/$(TEC_UNAME_LIB_DIR)/libcdcairo.a
+ LIBS += pangocairo-1.0 cairo
+ endif
+ SLIB += $(CD)/lib/$(TEC_UNAME_LIB_DIR)/libcd$(CD_SUFFIX).a
+ ifndef USE_GTK
+ # Freetype is already included in GTK
+ SLIB += $(CD)/lib/$(TEC_UNAME_LIB_DIR)/libfreetype.a
+ endif
+ else
+ ifdef USE_XRENDER
+ CHECK_XRENDER = Yes
+ LIBS += cdcontextplus
+ LIBS += Xrender Xft
+ endif
+ ifdef USE_CAIRO
+ # To use Cairo with X11 base driver (NOT for GDK)
+ # Can NOT be used together with XRender
+ LIBS += cdcairo
+ LIBS += pangocairo-1.0 cairo
+ endif
+ LIBS += cd$(CD_SUFFIX)
+ LDIR += $(CD)/lib/$(TEC_UNAME_LIB_DIR)
+ ifndef USE_GTK
+ # Freetype is already included in GTK
+ ifneq ($(findstring cygw, $(TEC_UNAME)), )
+ LIBS += freetype-6
+ else
+ LIBS += freetype
+ endif
+ endif
+ endif
+ INCLUDES += $(CD)/include
+endif
+
+ifdef USE_IM
+ ifdef USE_STATIC
+ SLIB += $(IM)/lib/$(TEC_UNAME_LIB_DIR)/libim.a
+ else
+ LIBS += im
+ LDIR += $(IM)/lib/$(TEC_UNAME_LIB_DIR)
+ endif
+ INCLUDES += $(IM)/include
+endif
+
+ifdef USE_GLUT
+ LIBS += glut
+ LDIR += $(GLUT_LIB)
+ STDINCS += $(GLUT_INC)
+endif
+
+ifdef USE_OPENGL
+ override USE_X11 = Yes
+ ifdef USE_MOTIF
+ ifndef USE_IUP3
+ LIBS += $(MOTIFGL_LIB)
+ endif
+ endif
+ LIBS += $(OPENGL_LIBS)
+ LDIR += $(OPENGL_LIB)
+ STDINCS += $(OPENGL_INC)
+endif
+
+ifdef USE_MOTIF
+ override USE_X11 = Yes
+ LIBS += Xm
+ LDIR += $(MOTIF_LIB)
+ STDINCS += $(MOTIF_INC)
+ ifneq ($(findstring Linux, $(TEC_UNAME)), )
+ X11_LIBS := Xpm $(X11_LIBS)
+ endif
+ ifneq ($(findstring cygw, $(TEC_UNAME)), )
+ X11_LIBS := Xpm $(X11_LIBS)
+ endif
+endif
+
+ifdef USE_GTK
+ ifdef USE_PKGCONFIG
+ # get compile/link flags via pkg-config
+ STDFLAGS += $(shell pkg-config --cflags gtk+-2.0 gdk-2.0)
+ LIBS += $(shell pkg-config --libs gtk+-2.0 gdk-2.0)
+ else
+ CHECK_GTK = Yes
+ ifneq ($(findstring MacOS, $(TEC_UNAME)), )
+ # Option 1 - Fink GTK port
+ LDIR += $(GTK)/lib
+ override USE_X11 = Yes
+ LIBS += gtk-x11-2.0 gdk-x11-2.0 pangox-1.0
+ # Option 2 - Imendio Framework
+ # STDINCS += /Library/Frameworks/Gtk.framework/Headers
+ # STDINCS += /Library/Frameworks/GLib.framework/Headers
+ # STDINCS += /Library/Frameworks/Cairo.framework/Headers
+ # LFLAGS += -framework Gtk
+ # Option 3 - GTK-OSX Framework
+ # LDIR += $(GTK)/lib
+ # LFLAGS += -framework Carbon
+ # LIBS += gtk-quartz-2.0 gdk-quartz-2.0 pangoft2-1.0
+
+ LIBS += freetype
+ else
+ # if not the default, then include it for linker
+ # must be before the default
+ ifdef GTK_BASE
+ LDIR += $(GTK)/lib
+ endif
+ override USE_X11 = Yes
+ LIBS += gtk-x11-2.0 gdk-x11-2.0 pangox-1.0
+ endif
+
+ LIBS += gdk_pixbuf-2.0 pango-1.0 gobject-2.0 gmodule-2.0 glib-2.0
+ STDINCS += $(GTK)/include/atk-1.0 $(GTK)/include/gtk-2.0 $(GTK)/include/cairo $(GTK)/include/pango-1.0 $(GTK)/include/glib-2.0
+
+ ifeq ($(TEC_SYSARCH), x64)
+ STDINCS += $(GTK)/lib64/glib-2.0/include $(GTK)/lib64/gtk-2.0/include
+ # Add also these to avoid errors in systems that lib64 does not exists
+ STDINCS += $(GTK)/lib/glib-2.0/include $(GTK)/lib/gtk-2.0/include
+ else
+ ifeq ($(TEC_SYSARCH), ia64)
+ STDINCS += $(GTK)/lib64/glib-2.0/include $(GTK)/lib64/gtk-2.0/include
+ else
+ STDINCS += $(GTK)/lib/glib-2.0/include $(GTK)/lib/gtk-2.0/include
+ endif
+ endif
+ ifneq ($(findstring FreeBSD, $(TEC_UNAME)), )
+ STDINCS += /lib/X11R6/include/gtk-2.0
+ endif
+ endif
+endif
+
+ifdef USE_QT
+ override USE_X11 = Yes
+ LIBS += QtGui QtCore
+ QT_BASE_INC := /usr/include/qt4
+ STDINCS += $(QT_BASE_INC) $(QT_BASE_INC)/QtCore $(QT_BASE_INC)/QtGui
+ STDDEFS += -DQT_DLL -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT
+endif
+
+ifdef USE_X11
+ LIBS += $(X11_LIBS)
+ LDIR += $(X11_LIB)
+ STDINCS += $(X11_INC)
+endif
+
+LIBS += m
+
+ifneq ($(findstring cygw, $(TEC_UNAME)), )
+ WIN_OTHER := Yes
+
+ # INCLUDES for dependencies, remove references to "c:" and similars
+ DEPINCS := $(patsubst c:%, /cygdrive/c%, $(INCLUDES))
+ DEPINCS := $(patsubst d:%, /cygdrive/d%, $(DEPINCS))
+ DEPINCS := $(patsubst x:%, /cygdrive/x%, $(DEPINCS))
+ DEPINCS := $(patsubst t:%, /cygdrive/t%, $(DEPINCS))
+
+ DLIBEXT := dll
+ APPEXT := .exe
+ # Use the cyg prefix to indicate that it is a Cygwin Posix DLL
+ DLIBPRE := cyg
+
+ STDLDFLAGS += -Wl,--out-implib=$(TARGETDIR)/lib$(TARGETNAME).dll.a
+endif
+
+#---------------------------------#
+# Building compilation flags that are sets
+
+DEPINCS ?= $(INCLUDES)
+DEPINCS := $(addprefix -I, $(DEPINCS))
+
+INCLUDES := $(addprefix -I, $(INCLUDES))
+STDINCS := $(addprefix -I, $(STDINCS))
+EXTRAINCS := $(addprefix -I, $(EXTRAINCS))
+DEFINES := $(addprefix -D, $(DEFINES))
+
+LIBS := $(addprefix -l, $(LIBS))
+ifdef LDIR
+ LDIR := $(addprefix -L, $(LDIR))
+endif
+
+
+#---------------------------------#
+# Definitions of private variables
+
+# Library flags for application and dynamic library linker
+LFLAGS += $(LDIR) $(LIBS)
+# C compiler flags
+CFLAGS = $(FLAGS) $(STDFLAGS) $(INCLUDES) $(STDINCS) $(EXTRAINCS) $(DEFINES) $(STDDEFS)
+# C++ compiler flags
+CXXFLAGS = $(CPPFLAGS) $(STDFLAGS) $(INCLUDES) $(STDINCS) $(EXTRAINCS) $(DEFINES) $(STDDEFS)
+
+# Sources with relative path
+SOURCES := $(addprefix $(SRCDIR)/, $(SRC))
+
+TARGETAPPNAME := $(TARGETNAME)$(APPEXT)
+TARGETSLIBNAME := lib$(TARGETNAME).a
+TARGETDLIBNAME := $(DLIBPRE)$(TARGETNAME).$(DLIBEXT)
+
+# Target for applications or libraries
+ifeq ($(MAKETYPE), APP)
+ TARGET := $(TARGETDIR)/$(TARGETAPPNAME)
+else
+ ifeq ($(NO_DYNAMIC), Yes)
+ TARGET := $(TARGETDIR)/$(TARGETSLIBNAME)
+ else
+ ifeq ($(NO_STATIC), Yes)
+ TARGET := $(TARGETDIR)/$(TARGETDLIBNAME)
+ else
+ TARGET := $(TARGETDIR)/$(TARGETSLIBNAME) $(TARGETDIR)/$(TARGETDLIBNAME)
+ endif
+ endif
+endif
+
+# OBJ: list of .o, without path
+# OBJS: list of .o with relative path
+OBJ = $(notdir $(SRC))
+OBJ := $(OBJ:.c=.o)
+OBJ := $(OBJ:.cpp=.o)
+OBJ := $(OBJ:.cxx=.o)
+OBJ := $(OBJ:.cc=.o)
+OBJ := $(OBJ:.f=.o)
+OBJ := $(OBJ:.for=.o)
+OBJ := $(OBJ:.rc=.ro)
+OBJS = $(addprefix $(OBJDIR)/, $(OBJ))
+
+ifdef LOHPACK
+ # Package with all LOHs
+ LOHS := $(LOHDIR)/$(LOHPACK)
+ LOHDIRS :=
+else
+ # LOH: list of .loh, without path
+ # LOHS: list of .loh, with relative path
+ LO = $(notdir $(SRCLUA))
+ LO := $(LO:.lua=$(LO_SUFFIX).lo)
+ LOS = $(addprefix $(OBJROOT)/, $(LO))
+
+ LOH = $(notdir $(SRCLUA))
+ LOH := $(LOH:.lua=$(LO_SUFFIX).loh)
+ LOHS = $(addprefix $(LOHDIR)/, $(LOH))
+endif
+
+# Construct VPATH variable
+P-SRC = $(dir $(SRC))
+P-SRC += $(dir $(SRCLUA))
+VPATH = .:$(foreach dir,$(P-SRC),$(if $(dir)="./",:$(dir)))
+
+
+#---------------------------------#
+# Main Rule - Build Everything that it is necessary
+
+.PHONY: tecmake
+ifeq ($(MAKETYPE), APP)
+ tecmake: print-start system-check directories application scripts
+else
+ ifeq ($(NO_DYNAMIC), Yes)
+ tecmake: print-start system-check directories static-lib
+ else
+ ifeq ($(NO_STATIC), Yes)
+ tecmake: print-start system-check directories dynamic-lib
+ else
+ tecmake: print-start system-check directories static-lib dynamic-lib
+ endif
+ endif
+endif
+
+.PHONY: print-start
+print-start:
+ @echo ''; echo 'Tecmake: starting [ $(TARGETNAME):$(TEC_UNAME) ]'
+
+.PHONY: system-check
+system-check:
+ ifdef CHECK_XRENDER
+ ifdef UNIX_POSIX
+ @echo ''; echo 'Tecmake: check failed, XRender NOT available in this system.'; echo ''; exit 1;
+ endif
+ endif
+ ifdef CHECK_GTK
+ ifndef GTK_BASE
+ ifdef UNIX_POSIX
+ @echo ''; echo 'Tecmake: check failed, GTK NOT available in this system.'; echo ''; exit 1;
+ else
+ ifneq ($(findstring Linux24, $(TEC_UNAME)), )
+ @echo ''; echo 'Tecmake: check failed, GTK too OLD in this system.'; echo ''; exit 1;
+ endif
+ endif
+ endif
+ endif
+ ifdef CHECK_GDIPLUS
+ ifdef WIN_OTHER
+ @echo ''; echo 'Tecmake: check failed, GDI+ NOT available in this system.'; echo ''; exit 1;
+ endif
+ endif
+
+#---------------------------------#
+# Dynamic Library Build
+
+.PHONY: dynamic-lib
+dynamic-lib: $(TARGETDIR)/$(TARGETDLIBNAME)
+
+$(TARGETDIR)/$(TARGETDLIBNAME) : $(LOHS) $(OBJS) $(EXTRADEPS)
+ @echo ''; echo Tecmake: linking $(@F) ...
+ $(ECHO)$(LD) $(STDLDFLAGS) -o $@ $(OBJS) $(SLIB) $(LFLAGS)
+ @echo ''; echo 'Tecmake: Dynamic Library ($@) Done.'; echo ''
+
+
+#---------------------------------#
+# Static Library Build
+
+.PHONY: static-lib
+static-lib: $(TARGETDIR)/$(TARGETSLIBNAME)
+
+$(TARGETDIR)/$(TARGETSLIBNAME) : $(LOHS) $(OBJS) $(EXTRADEPS)
+ @echo ''; echo Tecmake: librarian $(@F) ...
+ $(ECHO)$(AR) $(STDLFLAGS) $@ $(OBJS) $(SLIB) $(LCFLAGS)
+ @echo ''; echo Tecmake: updating lib TOC $(@F) ...
+ $(ECHO)-$(RANLIB) $@
+ @echo ''; echo 'Tecmake: Static Library ($@) Done.'; echo ''
+
+
+#---------------------------------#
+# Application Build
+
+.PHONY: application
+application: $(TARGETDIR)/$(TARGETAPPNAME)
+
+$(TARGETDIR)/$(TARGETAPPNAME) : $(LOHS) $(OBJS) $(EXTRADEPS)
+ @echo ''; echo Tecmake: linking $(@F) ...
+ $(ECHO)$(LINKER) -o $@ $(OBJS) $(SLIB) $(LFLAGS)
+ @if [ ! -z "$(STRIP)" ]; then \
+ echo ''; echo 'Tecmake: striping debug information' ;\
+ strip $@ ;\
+ fi
+ @echo ''; echo 'Tecmake: Application ($@) Done.'; echo ''
+
+
+#---------------------------------#
+# Application Scripts
+
+# Script name
+SRELEASE := $(SRCDIR)/$(TARGETNAME)
+
+.PHONY: scripts
+ifdef NO_SCRIPTS
+ scripts: ;
+else
+ scripts: $(SRELEASE) ;
+endif
+
+$(SRELEASE): $(MAKENAME)
+ @echo ''; echo 'Tecmake: building script $(@F)'
+ @echo "#!/bin/csh" > $@
+ @echo "# Script generated automatically by tecmake v$(VERSION)" >> $@
+ @echo "# Remove the comment bellow to set the LD_LIBRARY_PATH if needed." >> $@
+ @echo '#setenv LD_LIBRARY_PATH $(MYLIB1)/lib/$${TEC_UNAME}:$(MYLIB2)/lib/$${TEC_UNAME}:$$LD_LIBRARY_PATH' >> $@
+ @echo 'if ( -r app.env ) source app.env' >> $@
+ @echo 'exec $(TARGETROOT)/$$TEC_UNAME/$(TARGETNAME) $$*' >> $@
+ @chmod a+x $@
+
+
+#---------------------------------#
+# Directories Creation
+
+.PHONY: directories
+directories: $(OBJDIR) $(TARGETDIR) $(EXTRADIR) $(LOHDIR)
+
+$(OBJDIR) $(TARGETDIR):
+ if [ ! -d $@ ] ; then mkdir -p $@ ; fi
+
+ifdef EXTRADIR
+ $(EXTRADIR):
+ if [ ! -d $@ ] ; then mkdir -p $@ ; fi
+else
+ $(EXTRADIR): ;
+endif
+
+ifdef LOHDIR
+ $(LOHDIR):
+ if [ ! -d $@ ] ; then mkdir -p $@ ; fi
+else
+ $(LOHDIR): ;
+endif
+
+
+#---------------------------------#
+# Compilation Rules
+
+$(OBJDIR)/%.o: $(SRCDIR)/%.c
+ @echo ''; echo Tecmake: compiling $( $@
+
+$(OBJROOT)/%$(LO_SUFFIX).lo: $(SRCLUADIR)/%.lua
+ @echo ''; echo Tecmake: compiling $( $(DEPEND)
+ @which $(CPPC) 2> /dev/null 1>&2 ;\
+ if [ $$? -eq 0 ]; then \
+ echo "Tecmake: Building Dependencies ... [ $(DEPEND) ] (can be slow)" ;\
+ $(CPPC) $(DEPINCS) $(DEFINES) $(STDDEFS) -MM $(SOURCES) | \
+ sed -e '1,$$s/^\([^ ]\)/$$(OBJDIR)\/\1/' > $(DEPEND) ;\
+ else \
+ echo "" ;\
+ echo "Tecmake: error, $(CPPC) not found. Dependencies can not be built." ;\
+ echo "Must set NO_DEPEND=Yes." ;\
+ echo "" ;\
+ exit 1 ;\
+ fi
+ endif
+
+ifdef USE_NODEPEND
+ NO_DEPEND:=Yes
+endif
+
+###################
+ifndef NO_DEPEND
+include $(DEPEND)
+endif
+###################
+
+
+#---------------------------------#
+# Management Rules
+
+# Remove extra files
+.PHONY: clean-extra
+clean-extra:
+ rm -f $(DEPEND) $(SRELEASE) so_locations
+
+# Remove Lua object inclusion files
+.PHONY: clean-lohs
+clean-lohs:
+ rm -f $(LOS) $(LOHS)
+
+# Remove object files
+.PHONY: clean-obj
+clean-obj:
+ rm -f $(OBJS)
+
+# Remove target
+.PHONY: clean-target
+clean-target:
+ rm -f $(TARGET)
+
+.PHONY: clean-dir
+clean-dir:
+ rm -fr $(OBJROOT) $(TARGETROOT)
+
+# Remove target and object files
+.PHONY: clean
+clean: clean-target clean-obj
+
+# Remove symbols from executables
+.PHONY: strip
+strip:
+ test -r $(TARGETDIR)/$(TARGETAPPNAME) && strip $(TARGETDIR)/$(TARGETAPPNAME)
+
+# Rebuild target and object files
+.PHONY: rebuild
+rebuild: clean-extra clean-lohs clean-obj clean-target tecmake
+
+# Rebuild target without rebuilding object files
+.PHONY: relink
+relink: clean-target tecmake
+
+# Remove target and object files
+.PHONY: clean-all-obj
+clean-all-obj:
+ @for d in $(UNAMES); do \
+ (cd $(OBJROOT)/$$d; echo $(OBJ) | xargs rm -f) ;\
+ done
+
+# Remove libraries and executables for all platforms
+.PHONY: clean-all-target
+clean-all-target:
+ @for d in $(UNAMES); do \
+ (rm -f $(TARGETROOT)/$$d/$(TARGETNAME) $(TARGETROOT)/$$d/$(TARGETSLIBNAME) $(TARGETROOT)/$$d/$(TARGETDLIBNAME)) ;\
+ done
+
+#---------------------------------#
+# Remote build
+# There must be aliases in DNS for the known UNAMES
+.PHONY: $(UNAMES)
+$(UNAMES):
+ @cwd=`csh -c "\\pwd"` ; home=`csh -c "cd;\\pwd"` ;\
+ dir=`echo $$cwd | sed -e "s|$$home/||"` ;\
+ xterm -bg black -fg lightblue -T "Tecmake: $@ ($(TARGETNAME))" -e ssh $@ $(REMOTE) $$dir $(TECMAKEFLAGS) $(MAKEFLAGS) & 2> /dev/null
+
+
+#---------------------------------#
+
+.PHONY: version
+version:
+ @echo "Tecmake Posix Version $(VERSION)"
+
+#---------------------------------#
diff --git a/tecmakewin.mak b/tecmakewin.mak
new file mode 100644
index 0000000..71987d9
--- /dev/null
+++ b/tecmakewin.mak
@@ -0,0 +1,1384 @@
+#-------------------------------------------------------------------------#
+#- Tecmake (Windows Version) -#
+#- Generic Makefile to build applications and libraries at TeCGraf -#
+#- The user makefile usually has the name "config.mak". -#
+#-------------------------------------------------------------------------#
+
+#---------------------------------#
+# Tecmake Version
+VERSION = 4.3
+
+
+#---------------------------------#
+# First target
+.PHONY: build
+build: tecmake
+
+
+#---------------------------------#
+# Location of this file
+TECMAKE = $(TECMAKE_HOME)/tecmakewin.mak
+
+
+#---------------------------------#
+# System Variables Definitions
+
+# If tecmake.bat is not used,
+# then at least define main system variables.
+
+WIN32UNAMES = vc10 vc9 vc8 vc7 vc6 owc1 bc55 bc56 bc6 gcc3 gcc4 mingw3 mingw4 dllw4 dllg4 dll dll7 dll8 dll9 dll10
+WIN64UNAMES = vc10_64 vc9_64 vc8_64 dll8_64 dll9_64 dll10_64
+
+ifdef TEC_UNAME
+ ifneq ($(findstring $(TEC_UNAME), $(WIN32UNAMES)), )
+ TEC_WIN32 = Yes
+ else
+ ifneq ($(findstring $(TEC_UNAME), $(WIN64UNAMES)), )
+ TEC_WIN64 = Yes
+ endif
+ endif
+endif
+
+ifdef TEC_WIN64
+ TEC_SYSNAME=Win64 TEC_SYSARCH=x64
+ ifeq ($(PROCESSOR_ARCHITECTURE), x86)
+ # Define this if compiling for 64-bits in a 32bits environment
+ USE_X86_CL64=Yes
+ endif
+else
+ TEC_SYSNAME=Win32
+ TEC_SYSARCH=x86
+endif
+
+
+#---------------------------------#
+# System Info
+.PHONY: sysinfo
+sysinfo:
+ @echo ''; echo 'Tecmake: System Info'
+ @echo 'TEC_SYSNAME = $(TEC_SYSNAME)'
+ @echo 'TEC_SYSARCH = $(TEC_SYSARCH)'
+ @echo 'TEC_UNAME = $(TEC_UNAME)'; echo ''
+
+
+#---------------------------------#
+# Known platforms
+
+UNAMES = $(WIN32UNAMES) $(WIN64UNAMES)
+
+
+#---------------------------------#
+# Directories Definitions
+
+PROJDIR = ..
+SRCDIR = .
+OBJROOT = $(PROJDIR)/obj
+
+
+# ---------------------------------------------------------
+# Byte Order and Word Size
+
+ifneq ($(findstring x86, $(TEC_SYSARCH)), )
+ TEC_BYTEORDER = TEC_LITTLEENDIAN
+else
+ifeq ($(TEC_SYSARCH), arm)
+ TEC_BYTEORDER = TEC_LITTLEENDIAN
+else
+ TEC_BYTEORDER = TEC_BIGENDIAN
+endif
+endif
+
+ifeq ($(TEC_SYSARCH), x64)
+ TEC_BYTEORDER = TEC_LITTLEENDIAN
+ TEC_WORDSIZE = TEC_64
+else
+ TEC_WORDSIZE = TEC_32
+endif
+
+# Itanium Exception
+ifeq ($(TEC_SYSARCH), ia64)
+ TEC_BYTEORDER = TEC_LITTLEENDIAN
+ TEC_WORDSIZE = TEC_64
+endif
+
+
+#---------------------------------#
+# Tools
+
+SHELL = bash
+SLASH = slash_parser
+
+# Packed LOHs script
+LUAPRE = "$(TECMAKE_PATH)"/luapre.lua
+
+
+#---------------------------------#
+# Defaults
+APPTYPE = windows
+INCLUDES =
+LIBS =
+LIB =
+
+
+#---------------------------------#
+# User Configuration File
+
+MAKENAME = config.mak
+
+ifdef MF
+ MAKENAME = $(MF).mak
+endif
+
+###################
+include $(MAKENAME)
+###################
+
+
+#---------------------------------#
+# Definitions of public variables
+
+ifdef LIBNAME
+ TARGETNAME = $(LIBNAME)
+ MAKETYPE = LIB
+else
+ TARGETNAME = $(APPNAME)
+ MAKETYPE = APP
+endif
+
+ifndef TARGETNAME
+ $(error LIBNAME nor APPNAME defined in $(MAKENAME))
+endif
+
+PROJNAME ?= $(TARGETNAME)
+
+ifneq ($(PROJNAME), $(TARGETNAME))
+ OBJROOT := $(OBJROOT)/$(TARGETNAME)
+endif
+
+ifneq ($(findstring dll, $(TEC_UNAME)), )
+ ifneq ($(MAKETYPE), APP)
+ MAKETYPE = DLL
+ DEF_FILE ?= $(TARGETNAME).def
+ DEF_FILE := $(SRCDIR)/$(DEF_FILE)
+ endif
+endif
+
+DEPEND := $(TARGETNAME).wdep
+
+ifdef DEPENDDIR
+ DEPEND := $(DEPENDDIR)/$(TARGETNAME).dep.$(TEC_UNAME)
+endif
+
+
+# ---------------------------------------------------------
+# LO and LOH Suffix
+
+SRCLUADIR ?= $(SRCDIR)
+LOHDIR ?= $(SRCLUADIR)
+
+ifdef USE_LOH_SUBDIR
+ ifeq ($(TEC_BYTEORDER), TEC_BIGENDIAN)
+ ifeq ($(TEC_WORDSIZE), TEC_64)
+ LOH_SUBDIR ?= be64
+ else
+ LOH_SUBDIR ?= be32
+ endif
+ else
+ ifeq ($(TEC_WORDSIZE), TEC_64)
+ # longs in 64-bits Windows are 32 bits!!!
+ LOH_SUBDIR ?= le64w
+ else
+ LOH_SUBDIR ?= le32
+ endif
+ endif
+ LOHDIR := $(LOHDIR)/$(LOH_SUBDIR)
+ INCLUDES += $(LOHDIR)
+else
+ ifeq ($(TEC_BYTEORDER), TEC_BIGENDIAN)
+ ifeq ($(TEC_WORDSIZE), TEC_64)
+ LO_SUFFIX ?= _be64
+ else
+ LO_SUFFIX ?= _be32
+ endif
+ else
+ ifeq ($(TEC_WORDSIZE), TEC_64)
+ # longs in 64-bits Windows are 32 bits!!!
+ LO_SUFFIX ?= _le64w
+ else
+ LO_SUFFIX ?=
+ endif
+ endif
+endif
+
+
+#---------------------------------#
+# Main Rule - Build Everything that it is necessary
+
+.PHONY: tecmake
+ifeq ($(MAKETYPE), APP)
+ tecmake: print-start system-check directories application scripts
+else
+ ifeq ($(MAKETYPE), DLL)
+ tecmake: print-start system-check directories dynamic-lib
+ else
+ tecmake: print-start system-check directories static-lib
+ endif
+endif
+
+.PHONY: print-start
+print-start:
+ @echo ''; echo 'Tecmake: Starting [ $(TARGETNAME):$(TEC_UNAME) ]'
+
+
+#---------------------------------#
+# Definitions of public variables
+
+ifeq ($(MAKETYPE), APP)
+ TARGETROOT ?= $(PROJDIR)/bin
+else
+ TARGETROOT ?= $(PROJDIR)/lib
+endif
+
+ifeq ($(MAKETYPE), APP)
+ TEC_UNAME_DIR ?= $(TEC_SYSNAME)
+else
+ TEC_UNAME_DIR ?= $(TEC_UNAME)
+endif
+
+ifdef DBG
+ ifdef DBG_DIR
+ TEC_UNAME_DIR := $(TEC_UNAME_DIR)d
+ endif
+endif
+
+OBJDIR := $(OBJROOT)/$(TEC_UNAME_DIR)
+TARGETDIR := $(TARGETROOT)/$(TEC_UNAME_DIR)
+
+TARGETEXE := $(TARGETDIR)/$(TARGETNAME).exe
+TARGETDLL := $(TARGETDIR)/$(TARGETNAME).dll
+TARGETLIB := $(TARGETDIR)/$(TARGETNAME).lib
+ifneq ($(findstring gcc, $(TEC_UNAME)), )
+ TARGETLIB := $(TARGETDIR)/lib$(TARGETNAME).a
+endif
+ifneq ($(findstring mingw, $(TEC_UNAME)), )
+ TARGETLIB := $(TARGETDIR)/lib$(TARGETNAME).a
+endif
+ifneq ($(findstring dllg4, $(TEC_UNAME)), )
+ TARGETLIB := $(TARGETDIR)/$(TARGETNAME).a
+endif
+ifneq ($(findstring dllw4, $(TEC_UNAME)), )
+ TARGETLIB := $(TARGETDIR)/$(TARGETNAME).a
+endif
+
+ifdef NO_ECHO
+ ECHO:=@
+endif
+
+#---------------------------------#
+# Platform/Compiler dependend parameters
+
+STDDEFS = -DTEC_UNAME=$(TEC_UNAME) -DTEC_SYSNAME=$(TEC_SYSNAME) -D$(TEC_BYTEORDER) -D$(TEC_WORDSIZE) -DWIN32
+STDLIB = kernel32 user32 gdi32 winspool comdlg32 advapi32 shell32 ole32 oleaut32 uuid comctl32
+
+#Compilers
+VC6 ?= x:/lng/vc6
+VC7 ?= x:/lng/vc7
+VC8 ?= x:/lng/vc8
+VC9 ?= x:/lng/vc9
+VC10 ?= x:/lng/vc10
+OWC1 ?= x:/lng/owc1
+BC55 ?= x:/lng/bc55
+BC56 ?= x:/lng/cbuilderx
+BC6 ?= x:/lng/bc6
+MINGW3 ?= x:/lng/mingw3
+MINGW4 ?= x:/lng/mingw4
+# The default location is in the PATH
+#GCC3 ?= x:/lng/cygw15
+#GCC4 ?= x:/lng/cygw17
+
+#Tools
+QT ?= x:/lng/qt
+GTK ?= x:/lng/gtk
+GLUT ?= x:/lng/glut
+
+OBJEXT = obj
+LIBEXT = lib
+
+ifeq "$(TEC_UNAME)" "vc6"
+ COMPILER = $(VC6)
+endif
+
+ifeq "$(TEC_UNAME)" "vc7"
+ COMPILER = $(VC7)
+endif
+
+ifeq "$(TEC_UNAME)" "vc8"
+ COMPILER = $(VC8)
+endif
+
+ifeq "$(TEC_UNAME)" "vc8_64"
+ COMPILER = $(VC8)
+ BUILD64 = Yes
+ SDKLIBBIN = /amd64
+endif
+
+ifeq "$(TEC_UNAME)" "vc9"
+ COMPILER = $(VC9)
+endif
+
+ifeq "$(TEC_UNAME)" "vc9_64"
+ COMPILER = $(VC9)
+ BUILD64 = Yes
+endif
+
+ifeq "$(TEC_UNAME)" "vc10"
+ COMPILER = $(VC10)
+endif
+
+ifeq "$(TEC_UNAME)" "vc10_64"
+ COMPILER = $(VC10)
+ BUILD64 = Yes
+endif
+
+ifeq "$(TEC_UNAME)" "dll"
+ COMPILER = $(VC6)
+ USE_DLL = Yes
+endif
+
+ifeq "$(TEC_UNAME)" "dll7"
+ COMPILER = $(VC7)
+ USE_DLL = Yes
+endif
+
+ifeq "$(TEC_UNAME)" "dll8"
+ COMPILER = $(VC8)
+ USE_DLL = Yes
+ ifdef DBG
+ #debug info not working for dll8 linker
+ define DBG
+ endef
+ endif
+endif
+
+ifeq "$(TEC_UNAME)" "dll8_64"
+ COMPILER = $(VC8)
+ USE_DLL = Yes
+ BUILD64 = Yes
+ SDKLIBBIN = /amd64
+endif
+
+ifeq "$(TEC_UNAME)" "dll9"
+ COMPILER = $(VC9)
+ USE_DLL = Yes
+endif
+
+ifeq "$(TEC_UNAME)" "dll9_64"
+ COMPILER = $(VC9)
+ USE_DLL = Yes
+ BUILD64 = Yes
+endif
+
+ifeq "$(TEC_UNAME)" "dll10"
+ COMPILER = $(VC10)
+ USE_DLL = Yes
+endif
+
+ifeq "$(TEC_UNAME)" "dll10_64"
+ COMPILER = $(VC10)
+ USE_DLL = Yes
+ BUILD64 = Yes
+endif
+
+ifeq "$(COMPILER)" "$(VC6)"
+ TEC_CC = vc
+ # Use the VC7 Platform SDK, no harm if VC7 is not installed
+ PLATSDK ?= $(VC7)/PlatformSDK
+ OLD_OPENGL = Yes
+endif
+
+ifeq "$(COMPILER)" "$(VC7)"
+ TEC_CC = vc
+ PLATSDK ?= $(VC7)/PlatformSDK
+ OLD_OPENGL = Yes
+endif
+
+ifeq "$(COMPILER)" "$(VC8)"
+ NEW_VC_COMPILER = Yes
+ TEC_CC = vc
+ STDDEFS += -DMSVC8
+ PLATSDK ?= $(VC8)/PlatformSDK
+ OLD_OPENGL = Yes
+ ifdef USE_DLL
+ GEN_MANIFEST ?= Yes
+ else
+ #there is no single thread RTL in VC8
+ USE_MT = Yes
+ endif
+endif
+
+ifeq "$(COMPILER)" "$(VC9)"
+ NEW_VC_COMPILER = Yes
+ TEC_CC = vc
+ STDDEFS += -DMSVC9
+ ifdef USE_DLL
+ GEN_MANIFEST ?= Yes
+ else
+ #there is no single thread RTL in VC9
+ USE_MT = Yes
+ endif
+ ifdef VC9SDK
+ PLATSDK ?= $(VC9SDK)
+ else
+ # Not the real folder, we copied from "C:\Program Files\Microsoft SDKs\Windows\v6.0A"
+ PLATSDK ?= $(VC9)/WinSDK
+ endif
+ RESBIN := $(PLATSDK)/bin
+ ifdef BUILD64
+ RESBIN := $(RESBIN)/x64
+ endif
+endif
+
+ifeq "$(COMPILER)" "$(VC10)"
+ NEW_VC_COMPILER = Yes
+ TEC_CC = vc
+ STDDEFS += -DMSVC10
+ ifdef USE_DLL
+ GEN_MANIFEST ?= Yes
+ else
+ #there is no single thread RTL in VC10
+ USE_MT = Yes
+ endif
+ ifdef VC10SDK
+ PLATSDK ?= $(VC10SDK)
+ else
+ # Not the real folder, we copied from "C:\Program Files\Microsoft SDKs\Windows\v7.1"
+ PLATSDK ?= $(VC10)/WinSDK
+ endif
+ RESBIN := $(PLATSDK)/bin
+ ifdef BUILD64
+ RESBIN := $(RESBIN)/x64
+ endif
+endif
+
+ifeq "$(TEC_CC)" "vc"
+ ifdef BUILD64
+ STDDEFS += -DWIN64
+ MACHINE = X64
+ GTK := $(GTK)_x64
+ VCLIBBIN = /amd64
+ SDKLIBBIN ?= /x64
+ ifdef USE_X86_CL64
+ BIN = $(COMPILER)/bin/x86_amd64
+ else
+ BIN = $(COMPILER)/bin/amd64
+ endif
+ else
+ VCLIBBIN =
+ SDKLIBBIN =
+ MACHINE = X86
+ BIN = $(COMPILER)/bin
+ endif
+ RESBIN ?= $(COMPILER)/bin
+ CC = $(BIN)/cl -nologo
+ CPPC = $(BIN)/cl -nologo
+ LIBC = $(BIN)/link -lib -nologo
+ LINKER = $(BIN)/link -nologo
+ MT = $(RESBIN)/mt -nologo
+ RCC = $(RESBIN)/rc -fo
+ STDINCS = $(PLATSDK)/include $(COMPILER)/include
+ STDFLAGS = -c -Fo$(OBJDIR)/ -W3
+ STDLFLAGS =
+ DEPDEFS = -D_WIN32 -D_M_IX86 -D_STDCALL_SUPPORTED
+ STDLIBDIR = -LIBPATH:$(COMPILER)/lib$(VCLIBBIN) -LIBPATH:$(PLATSDK)/lib$(SDKLIBBIN)
+ OPTFLAGS := -O2
+ DEBUGFLAGS := -Z7 -Od -GZ
+ ifdef NEW_VC_COMPILER
+ DEBUGFLAGS := -Z7 -Od -RTC1
+ STDDEFS += -D_CRT_SECURE_NO_DEPRECATE
+ ifndef CPP_NARROW_INLINES
+ STDDEFS += -D_CPP_NARROW_INLINES_DEFINED
+ endif
+ STDFLAGS += -EHsc
+ else # Exception Handling Model
+ STDFLAGS += -GX
+ endif
+ ifneq ($(MAKETYPE), LIB)
+ ifeq "$(COMPILER)" "$(VC6)"
+ STDLFLAGS += -pdb:none -incremental:no -machine:$(MACHINE)
+ else
+ STDLFLAGS += -incremental:no -machine:$(MACHINE)
+ endif
+ ifdef DBG
+ STDLFLAGS += -debug
+ endif
+ ifdef NEW_VC_COMPILER
+ ifndef GEN_MANIFEST
+ STDLFLAGS += -MANIFEST:NO
+ else
+ ifeq ($(GEN_MANIFEST), No)
+ STDLFLAGS += -MANIFEST:NO
+ else
+ STDLFLAGS += -MANIFEST
+ endif
+ endif
+ endif
+ endif
+ ifeq ($(MAKETYPE), APP)
+ ifeq "$(COMPILER)" "$(VC6)"
+ STDFLAGS += -GA
+ else
+ OPTFLAGS += -GL
+ ifdef OPT
+ STDLFLAGS += -LTCG
+ endif
+ endif
+ STDLFLAGS += -subsystem:$(APPTYPE) -out:$(TARGETEXE)
+ else
+ ifeq ($(MAKETYPE), DLL)
+ ifeq "$(COMPILER)" "$(VC6)"
+ STDFLAGS += -GD
+ else
+ OPTFLAGS += -GL
+ STDLFLAGS += -LTCG
+ endif
+ STDLFLAGS += -dll -subsystem:$(APPTYPE) -out:$(TARGETDLL) -implib:$(TARGETLIB) -def:$(DEF_FILE)
+ else
+ STDLFLAGS += -out:$(TARGETLIB)
+ endif
+ endif
+ ifdef USE_DLL
+ ifdef DBG
+ STDFLAGS += -MDd
+ else
+ STDFLAGS += -MD
+ endif
+ else
+ ifdef USE_MT
+ ifdef DBG
+ STDFLAGS += -MTd
+ else
+ STDFLAGS += -MT
+ endif
+ else
+ ifdef DBG
+ STDFLAGS += -MLd
+ else
+ STDFLAGS += -ML
+ endif
+ endif
+ endif
+endif
+
+ifeq "$(TEC_UNAME)" "owc1"
+ COMPILER = $(OWC1)
+ TEC_CC = wc
+ STDLFLAGS =
+endif
+
+ifeq "$(TEC_CC)" "wc"
+ WIN_OTHER = YES
+ BIN = $(COMPILER)/binnt
+ CC = $(SLASH) $(BIN)/wcc386
+ CPPC = $(SLASH) $(BIN)/wpp386
+ LIBC = $(SLASH) $(BIN)/wlib
+ LINKER = $(SLASH) $(BIN)/wlink
+ RCC = $(SLASH) $(BIN)/rc -fo
+ STDINCS = $(COMPILER)/h $(COMPILER)/h/nt
+ STDFLAGS += -od -w4 -5r -bt=nt -mf -e25 -zq -fo$(OBJDIR)/
+ STDLIBDIR = LIBP $(COMPILER)/lib386 LIBP $(COMPILER)/lib386/nt
+ DEBUGFLAGS := -d2
+ OPTFLAGS := -ot
+ ifeq ($(MAKETYPE), APP)
+ STDLFLAGS = OP maxe=25 OP quiet FORM windows nt NAME $(TARGETEXE)
+ ifeq ($(APPTYPE), CONSOLE)
+ STDLFLAGS += RU con
+ endif
+ else
+ STDLFLAGS += -b -c -n -q -p=512 $(TARGETLIB)
+ endif
+ ifdef USE_DLL
+ STDFLAGS += -bm -br
+ endif
+endif
+
+ifeq "$(TEC_UNAME)" "bc55"
+ COMPILER = $(BC55)
+ TEC_CC = bc
+ OLD_OPENGL = Yes
+endif
+
+ifeq "$(TEC_UNAME)" "bc56"
+ COMPILER = $(BC56)
+ TEC_CC = bc
+ OLD_OPENGL = Yes
+endif
+
+ifeq "$(TEC_UNAME)" "bc6"
+ COMPILER = $(BC6)
+ TEC_CC = bc
+ OLD_OPENGL = Yes
+endif
+
+ifeq "$(TEC_CC)" "bc"
+ WIN_OTHER = YES
+ TEC_CC = bc
+ BIN = $(COMPILER)/bin
+ CC = $(BIN)/bcc32
+ CPPC = $(BIN)/bcc32
+ LIBC = $(BIN)/tlib /P32
+ RCC = $(BIN)/brc32 -r -fo
+ LINKER = $(SLASH) $(BIN)/ilink32
+ STDINCS = $(COMPILER)/include $(COMPILER)/include/dinkumware
+ STDLIBDIR = -L$(COMPILER)/lib -L$(COMPILER)/lib/PSDK
+ STDFLAGS = -c -n$(OBJDIR)/
+ STDLIB := cw32 import32 $(STDLIB)
+ ifeq ($(MAKETYPE), APP)
+ STDLFLAGS = -Tpe #-x -c -Gn
+ ifeq ($(APPTYPE), CONSOLE)
+ STARTUP = c0x32.obj
+ STDLFLAGS += -ap
+ else
+ STARTUP = c0w32.obj
+ STDLFLAGS += -aa
+ endif
+ else
+ STDLFLAGS = $(TARGETLIB)
+ endif
+ OPTFLAGS := -O2
+ DEBUGFLAGS := -v -x -xp
+ ifdef USE_DLL
+ STDFLAGS += -tWDMR
+ endif
+endif
+
+ifeq "$(TEC_UNAME)" "gcc3"
+ COMPILER = $(GCC3)
+ TEC_CC = gcc
+ ifdef USE_OPENGL
+ STDDEFS += -DUSE_OPENGL32
+ endif
+endif
+
+ifeq "$(TEC_UNAME)" "gcc4"
+ COMPILER = $(GCC4)
+ TEC_CC = gcc
+ ifdef USE_OPENGL
+ STDDEFS += -DUSE_OPENGL32
+ endif
+endif
+
+ifeq "$(TEC_UNAME)" "mingw3"
+ COMPILER = $(MINGW3)
+ TEC_CC = gcc
+ OLD_OPENGL = Yes
+endif
+
+ifeq "$(TEC_UNAME)" "mingw4"
+ COMPILER = $(MINGW4)
+ TEC_CC = gcc
+ OLD_OPENGL = Yes
+endif
+
+ifeq "$(TEC_UNAME)" "dllg4"
+ # USE_DLL is unused by gcc but we define it anyway
+ USE_DLL = Yes
+ COMPILER = $(GCC4)
+ TEC_CC = gcc
+ ifdef USE_OPENGL
+ STDDEFS += -DUSE_OPENGL32
+ endif
+endif
+
+ifeq "$(TEC_UNAME)" "dllw4"
+ # USE_DLL is unused by gcc but we define it anyway
+ USE_DLL = Yes
+ COMPILER = $(MINGW4)
+ TEC_CC = gcc
+ OLD_OPENGL = Yes
+endif
+
+ifeq "$(TEC_CC)" "gcc"
+ WIN_OTHER = YES
+ ifneq "$(findstring mingw, $(COMPILER))" ""
+ BIN = $(COMPILER)/bin/
+ endif
+ CC = $(BIN)gcc
+ CPPC = $(BIN)g++
+ LIBC = $(BIN)ar
+ RCC = $(BIN)windres -O coff -o
+ ifndef LINKER
+ ifneq "$(findstring .cpp, $(SRC))" ""
+ LINKER := $(CPPC)
+ else
+ LINKER := $(CC)
+ endif
+ endif
+ RANLIB = $(BIN)ranlib
+ ifneq "$(findstring mingw, $(COMPILER))" ""
+ STDINCS = $(COMPILER)/include
+ STDLIBDIR = -L$(COMPILER)/lib
+ endif
+ STDFLAGS += -Wall
+ DEBUGFLAGS := -g
+ OPTFLAGS := -O2
+ OBJEXT=o
+ LIBEXT=a
+ ifeq ($(MAKETYPE), APP)
+ STDLFLAGS = -Wl,-subsystem,$(APPTYPE)
+ else
+ ifeq ($(MAKETYPE), DLL)
+ STDLFLAGS =
+ else
+ STDLFLAGS = r
+ endif
+ endif
+endif
+
+ifdef DBG
+ STDFLAGS += $(DEBUGFLAGS)
+ STDDEFS += -DDEBUG
+else
+ STDDEFS += -DNDEBUG
+ ifdef OPT
+ STDFLAGS += $(OPTFLAGS)
+ endif
+endif
+
+# allows an extra configuration file.
+ifdef EXTRA_CONFIG
+include $(EXTRA_CONFIG)
+endif
+
+.PHONY: system-check
+system-check:
+ ifndef TEC_UNAME
+ @echo ''; echo 'Tecmake: check failed, TEC_UNAME not defined.'; echo '';
+ @exit 1;
+ endif
+ ifndef TEC_WIN32
+ ifndef TEC_WIN64
+ @echo ''; echo 'Tecmake: check failed, TEC_UNAME not recognized.'; echo '';
+ @exit 1;
+ endif
+ endif
+ ifdef CHECK_GDIPLUS
+ ifdef WIN_OTHER
+ @echo ''; echo 'Tecmake: check failed, GDI+ NOT available in this system.'; echo '';
+ @exit 1;
+ endif
+ endif
+
+
+#---------------------------------#
+# Tecgraf Libraries Location
+TECTOOLS_HOME ?= ../..
+
+IUP ?= $(TECTOOLS_HOME)/iup
+CD ?= $(TECTOOLS_HOME)/cd
+IM ?= $(TECTOOLS_HOME)/im
+LUA ?= $(TECTOOLS_HOME)/lua
+LUA51 ?= $(TECTOOLS_HOME)/lua5.1
+LUA52 ?= $(TECTOOLS_HOME)/lua52
+
+
+#---------------------------------#
+# Pre-defined libraries
+
+# Library order:
+# user + iupcd + cd + iup + motif + X
+# Library path order is reversed
+
+ifdef USE_LUA
+ LUA_SUFFIX ?=
+ LIBLUASUFX := 3
+endif
+
+ifdef USE_LUA4
+ LUA_SUFFIX ?= 4
+ LIBLUASUFX := 4
+ override USE_LUA = Yes
+ LUA := $(LUA4)
+endif
+
+ifdef USE_LUA5
+ LUA_SUFFIX ?= 5
+ LIBLUASUFX := 5
+ override USE_LUA = Yes
+ LUA := $(LUA5)
+endif
+
+ifdef USE_LUA50
+ LUA_SUFFIX ?= 50
+ LIBLUASUFX := 5
+ override USE_LUA = Yes
+ LUA := $(LUA50)
+ NO_LUALIB := Yes
+endif
+
+ifdef USE_LUA51
+ LUA_SUFFIX ?= 5.1
+ LIBLUASUFX := 51
+ override USE_LUA = Yes
+ LUA := $(LUA51)
+ NO_LUALIB := Yes
+endif
+
+ifdef USE_LUA52
+ LUA_SUFFIX ?= 52
+ LIBLUASUFX := 52
+ override USE_LUA = Yes
+ LUA := $(LUA52)
+ NO_LUALIB := Yes
+endif
+
+ifdef USE_IUP3
+ override USE_IUP = Yes
+# Inside Tecgraf only
+# IUP := $(IUP)3
+endif
+
+ifdef USE_IUPBETA
+ IUP := $(IUP)/beta
+endif
+
+ifdef USE_CDBETA
+ CD := $(CD)/beta
+endif
+
+ifdef USE_IMBETA
+ IM := $(IM)/beta
+endif
+
+ifdef USE_GLUT
+ override USE_OPENGL = Yes
+ LIBS += glut32
+ LDIR += $(GLUT)/lib
+ STDINCS += $(GLUT)/include
+endif
+
+ifdef USE_GDK
+ override USE_GTK = Yes
+endif
+
+ifdef USE_IUPCONTROLS
+ override USE_CD = Yes
+ override USE_IUP = Yes
+ ifdef USE_IUPLUA
+ LIBS += iupluacontrols$(LIBLUASUFX)
+ override USE_CDLUA = Yes
+ endif
+ LIBS += iupcontrols
+endif
+
+ifdef USE_IMLUA
+ override USE_IM = Yes
+ LIBS += imlua$(LIBLUASUFX)
+endif
+
+ifdef USE_CDLUA
+ override USE_CD = Yes
+ LIBS += cdlua$(LIBLUASUFX)
+endif
+
+ifdef USE_IUPLUA
+ override USE_IUP = Yes
+ ifdef USE_CD
+ LIBS += iupluacd$(LIBLUASUFX)
+ endif
+ ifdef USE_OPENGL
+ LIBS += iupluagl$(LIBLUASUFX)
+ endif
+ LIBS += iuplua$(LIBLUASUFX)
+endif
+
+ifdef USE_LUA
+ ifndef NO_LUALIB
+ LIBS += lualib$(LUA_SUFFIX)
+ endif
+ LIBS += lua$(LUA_SUFFIX)
+
+ LUA_LIB ?= $(LUA)/lib/$(TEC_UNAME)
+ LDIR += $(LUA_LIB)
+
+ LUA_INC ?= $(LUA)/include
+ INCLUDES += $(LUA_INC)
+
+ LUA_BIN ?= $(LUA)/bin/$(TEC_SYSNAME)
+ BIN2C := $(LUA_BIN)/bin2c$(LUA_SUFFIX)
+ LUAC := $(LUA_BIN)/luac$(LUA_SUFFIX)
+ LUABIN := $(LUA_BIN)/lua$(LUA_SUFFIX)
+endif
+
+ifdef USE_IUP
+ ifdef USE_CD
+ LIBS += iupcd
+ endif
+ ifdef USE_GTK
+ LIBS += iupgtk
+ else
+ LIBS += iup
+ endif
+ LDIR += $(IUP)/lib/$(TEC_UNAME)
+ ifdef USE_OPENGL
+ LIBS += iupgl
+ endif
+ ifdef USE_DLL
+ ifeq ($(MAKETYPE), APP)
+ LIBS += iupstub
+ endif
+ endif
+ INCLUDES += $(IUP)/include
+endif
+
+ifdef USE_CD
+ ifdef USE_GDIPLUS
+ CHECK_GDIPLUS = Yes
+ LIBS += cdcontextplus gdiplus
+ endif
+ ifdef USE_CAIRO
+ # To use Cairo with Win32 base driver (NOT for GDK)
+ # Can NOT be used together with GDI+
+ LIBS += cdcairo pangocairo-1.0 cairo
+ endif
+ ifdef USE_GDK
+ LIBS += cdgdk
+ else
+ LIBS += cd
+ endif
+ LIBS += freetype6
+ LDIR += $(CD)/lib/$(TEC_UNAME)
+ INCLUDES += $(CD)/include
+endif
+
+ifdef USE_IM
+ LIBS += im
+ LDIR += $(IM)/lib/$(TEC_UNAME)
+ INCLUDES += $(IM)/include
+endif
+
+ifdef USE_OPENGL
+ ifdef OLD_OPENGL
+ LIBS += glaux glu32 opengl32
+ else
+ LIBS += glu32 opengl32
+ endif
+endif
+
+ifdef USE_GTK
+ STDINCS += $(GTK)/include/atk-1.0 $(GTK)/include/gtk-2.0 $(GTK)/include/cairo $(GTK)/include/pango-1.0 $(GTK)/include/glib-2.0 $(GTK)/lib/glib-2.0/include $(GTK)/lib/gtk-2.0/include
+ ifeq "$(TEC_CC)" "gcc"
+ STDFLAGS += -mms-bitfields
+ endif
+ LDIR += $(GTK)/lib
+ LIBS += gtk-win32-2.0 gdk-win32-2.0 gdk_pixbuf-2.0 pango-1.0 pangowin32-1.0 gobject-2.0 gmodule-2.0 glib-2.0
+endif
+
+ifdef USE_QT
+ #STDFLAGS += -Zm200 -w34100 -w34189 -Zm200 -w34100 -w34189 -w34100 -w34189
+ STDINCS += $(QT)/include $(QT)/include/QtCore $(QT)/include/QtGui $(QT)/include/ActiveQt $(QT)/mkspecs/win32-msvc2005
+ STDDEFS += -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT
+ LDIR += $(QT)/lib
+ LIBS += QtMain QtGui4 QtCore4
+endif
+
+
+#---------------------------------#
+# Building compilation flags that are sets
+
+# INCLUDES for dependencies, remove references to "c:" and similars
+DEPINCS := $(patsubst c:%, /cygdrive/c%, $(INCLUDES))
+DEPINCS := $(patsubst d:%, /cygdrive/d%, $(DEPINCS))
+DEPINCS := $(patsubst x:%, /cygdrive/x%, $(DEPINCS))
+DEPINCS := $(patsubst t:%, /cygdrive/t%, $(DEPINCS))
+DEPINCS := $(addprefix -I, $(DEPINCS))
+
+INCLUDES := $(addprefix -I, $(INCLUDES))
+STDINCS := $(addprefix -I, $(STDINCS))
+EXTRAINCS := $(addprefix -I, $(EXTRAINCS))
+DEFINES := $(addprefix -D, $(DEFINES))
+
+# For aplications and DLLs
+ifneq ($(MAKETYPE), LIB)
+ LIBS += $(STDLIB)
+ LIBS := $(addsuffix .$(LIBEXT), $(LIBS))
+
+ ifeq ($(TEC_CC), vc)
+ ifdef LDIR
+ LDIR := $(addprefix -LIBPATH:, $(LDIR))
+ endif
+
+ STDLFLAGS += $(LDIR) $(STDLIBDIR) $(LIBS)
+ endif
+
+ ifeq ($(TEC_CC), bc)
+ ifdef LDIR
+ LDIR := $(addprefix -L, $(LDIR))
+ endif
+ endif
+
+ ifeq ($(TEC_CC), wc)
+ ifdef LDIR
+ LDIR := $(addprefix LIBP , $(LDIR))
+ endif
+
+ LIBS := $(addprefix LIB , $(LIBS))
+
+ STDLFLAGS += $(LDIR) $(STDLIBDIR) $(LIBS)
+ endif
+
+ ifeq ($(TEC_CC), gcc)
+ LIBS := $(addprefix -l, $(LIBS))
+ LIBS := $(LIBS:.a=)
+ ifdef LDIR
+ LDIR := $(addprefix -L, $(LDIR))
+ endif
+
+ STDLFLAGS += $(LDIR) $(STDLIBDIR) $(LIBS)
+ endif
+
+endif
+
+
+#---------------------------------#
+# Definitions of private variables
+
+# C, C++ and RC compiler flags
+CFLAGS = $(FLAGS) $(STDFLAGS) $(INCLUDES) $(STDINCS) $(EXTRAINCS) $(DEFINES) $(STDDEFS)
+CXXFLAGS = $(CPPFLAGS) $(STDFLAGS) $(INCLUDES) $(STDINCS) $(EXTRAINCS) $(DEFINES) $(STDDEFS)
+RCFLAGS = $(INCLUDES) $(STDINCS) $(EXTRAINCS) $(DEFINES) $(STDDEFS)
+
+# Sources with relative path
+SOURCES = $(addprefix $(SRCDIR)/, $(SRC))
+
+# Target for applications or libraries
+ifeq ($(MAKETYPE), APP)
+ TARGET := $(TARGETEXE)
+else
+ ifeq ($(MAKETYPE), DLL)
+ TARGET := $(TARGETDLL) $(TARGETLIB) $(TARGETDIR)/$(TARGETNAME).exp
+ else
+ TARGET := $(TARGETLIB)
+ endif
+endif
+
+# OBJ: list of .o, without path
+# OBJS: list of .o with relative path
+OBJ = $(notdir $(SRC))
+OBJ := $(OBJ:.c=.$(OBJEXT))
+OBJ := $(OBJ:.cpp=.$(OBJEXT))
+OBJ := $(OBJ:.cxx=.$(OBJEXT))
+OBJ := $(OBJ:.cc=.$(OBJEXT))
+OBJ := $(OBJ:.rc=.res)
+OBJS = $(addprefix $(OBJDIR)/, $(OBJ))
+
+# Construct VPATH variable
+P-SRC = $(dir $(SRC))
+P-SRC += $(dir $(SRCLUA))
+VPATH = .:$(foreach dir,$(P-SRC),$(if $(dir)="./",:$(dir)))
+
+#---------------------------------#
+ifdef LOHPACK
+ # Pacote LOH unificado com todos scripts Lua precompilados
+ LOHS := $(LOHDIR)/$(LOHPACK)
+ LOHDIRS :=
+else
+ # LOH: lista dos arquivos .loh, sem path
+ # LOHS: lista dos arquivos .loh, com path relativo
+ LO = $(notdir $(SRCLUA))
+ LO := $(LO:.lua=$(LO_SUFFIX).lo)
+ LOS = $(addprefix $(OBJROOT)/, $(LO))
+
+ LOH = $(notdir $(SRCLUA))
+ LOH := $(LOH:.lua=$(LO_SUFFIX).loh)
+ LOHS = $(addprefix $(LOHDIR)/, $(LOH))
+endif
+
+#---------------------------------#
+# Compiler depedent adjusts
+
+# CFLAGS: parametros passados ao linker e librarian
+LINKFLAGS := $(LFLAGS) $(STDLFLAGS) $(OBJS) $(SLIB)
+LIBFLAGS := $(LCFLAGS) $(STDLFLAGS) $(OBJS) $(SLIB)
+
+ifeq ($(TEC_CC), bc)
+ ifeq ($(MAKETYPE), APP)
+ LINKFLAGS = $(LFLAGS) $(STDLFLAGS) $(LDIR) $(STDLIBDIR) $(STARTUP) $(OBJS), $(TARGETEXE), , $(LIBS) $(SLIB),
+ else
+ LIBFLAGS = $(LCFLAGS) $(subst /,\\, $(STDLFLAGS) $(addprefix +,$(OBJS) $(SLIB)))
+ endif
+endif
+
+ifeq ($(TEC_CC), wc)
+ ifeq ($(MAKETYPE), APP)
+ LINKFLAGS = $(LFLAGS) $(STDLFLAGS) $(addprefix F , $(OBJS) $(SLIB))
+ else
+ #wlib adds files using "+" as an option
+ LIBFLAGS := $(LCFLAGS) $(STDLFLAGS) $(addprefix +, $(OBJS) $(SLIB))
+ endif
+endif
+
+ifeq ($(TEC_CC), gcc)
+ ifeq ($(MAKETYPE), APP)
+ LINKFLAGS = -o $(TARGETEXE) $(OBJS) $(SLIB) $(LFLAGS) $(STDLFLAGS)
+ endif
+ ifeq ($(MAKETYPE), DLL)
+ LINKFLAGS = -shared -o $(TARGETDLL) -Wl,--out-implib=$(TARGETLIB) $(OBJS) $(DEF_FILE) $(SLIB) $(LFLAGS) $(STDLFLAGS)
+ endif
+endif
+
+#---------------------------------#
+# Dynamic Library Build
+
+.PHONY: dynamic-lib
+dynamic-lib: $(TARGETDLL) addmanifest
+
+$(TARGETDLL) : $(LOHS) $(OBJS) $(EXTRADEPS) $(DEF_FILE)
+ @echo ''; echo Tecmake: linking $(@F) ...
+ $(ECHO)$(LINKER) $(LINKFLAGS)
+ @echo ''; echo 'Tecmake: Dynamic Library ($@) Done'; echo ''
+
+
+#---------------------------------#
+# Static Library Build
+
+.PHONY: static-lib
+static-lib: $(TARGETLIB)
+
+$(TARGETDIR)/$(TARGETNAME).lib : $(LOHS) $(OBJS) $(EXTRADEPS)
+ @echo ''; echo Tecmake: librarian $(@F) ...
+ $(ECHO)$(LIBC) $(LIBFLAGS)
+ @echo ''; echo 'Tecmake: Static Library ($@) Done'; echo ''
+
+$(TARGETDIR)/lib$(TARGETNAME).a : $(LOHS) $(OBJS) $(EXTRADEPS)
+ @echo ''; echo Tecmake: librarian $(@F) ...
+ $(ECHO)$(LIBC) $(ARFLAGS) $@ $(OBJS) $(SLIB)
+ @echo ''; echo Tecmake: updating lib TOC $(@F) ...
+ $(ECHO)-$(RANLIB) $@
+ @echo ''; echo 'Tecmake: Static Library ($@) Done'; echo ''
+
+
+#---------------------------------#
+# Application Build
+
+.PHONY: application
+application: $(TARGETEXE) addmanifest
+
+$(TARGETEXE) : $(LOHS) $(OBJS) $(EXTRADEPS)
+ @echo ''; echo Tecmake: linking $(@F) ...
+ $(ECHO)$(LINKER) $(LINKFLAGS)
+ @echo ''; echo 'Tecmake: Application ($@) Done.'; echo ''
+
+
+#---------------------------------#
+# Application Scripts
+
+# Nomes dos scripts
+SRELEASE = $(SRCDIR)/$(TARGETNAME).bat
+EXEC := $(subst /,\,$(TARGETEXE))
+
+.PHONY: scripts
+ifdef NO_SCRIPTS
+ scripts: ;
+else
+ scripts: $(SRELEASE) ;
+endif
+
+$(SRELEASE): $(TARGETEXE)
+ @echo ''; echo 'Tecmake: generating script $(@F)'
+ @echo '@echo off' > $@
+ @echo 'REM Script generated automatically by tecmake v$(VERSION)' >> $@
+ @echo '$(EXEC) %*' >> $@
+
+
+#---------------------------------#
+# Directories Creation
+
+.PHONY: directories
+directories: $(OBJDIR) $(TARGETDIR) $(EXTRADIR) $(LOHDIR)
+
+$(OBJDIR) $(TARGETDIR):
+ if [ ! -d $@ ] ; then mkdir -p $@ ; fi
+
+ifdef EXTRADIR
+ $(EXTRADIR):
+ if [ ! -d $@ ] ; then mkdir -p $@ ; fi
+else
+ $(EXTRADIR): ;
+endif
+
+ifdef LOHDIR
+ $(LOHDIR):
+ if [ ! -d $@ ] ; then mkdir -p $@ ; fi
+else
+ $(LOHDIR): ;
+endif
+
+
+#---------------------------------#
+# Compilation Rules
+
+$(OBJDIR)/%.o: $(SRCDIR)/%.c
+ @echo ''; echo Tecmake: compiling $( $@
+
+$(OBJROOT)/%$(LO_SUFFIX).lo: $(SRCLUADIR)/%.lua
+ @echo ''; echo Tecmake: compiling $( $(DEPEND)
+ @which gcc 2> /dev/null 1>&2 ;\
+ if [ $$? -eq 0 ]; then \
+ echo "Tecmake: Building Dependencies ... (can be slow)" ;\
+ g++ $(DEPINCS) $(DEFINES) $(STDDEFS) $(DEPDEFS) -MM $(SOURCES) | \
+ sed -e '1,$$s/^\([^ ]*\)\.o/$$(OBJDIR)\/\1.$(OBJEXT)/' > $(DEPEND) ;\
+ else \
+ echo "" ;\
+ echo "Tecmake: error, g++ not found. Dependencies can not be built." ;\
+ echo "Must set NO_DEPEND=Yes" ;\
+ echo "" ;\
+ exit 1 ;\
+ fi
+ endif
+
+ifdef USE_NODEPEND
+ NO_DEPEND:=Yes
+endif
+
+###################
+ifndef NO_DEPEND
+include $(DEPEND)
+endif
+###################
+
+
+#---------------------------------#
+# Management Rules
+
+.PHONY: clean-dir
+clean-dir:
+ rm -fr $(OBJROOT) $(TARGETROOT)
+
+# Remove extra files
+.PHONY: clean-extra
+clean-extra:
+ rm -f $(DEPEND) $(SRELEASE)
+
+# Remove Lua object inclusion files
+.PHONY: clean-lohs
+clean-lohs:
+ rm -f $(LOS) $(LOHS)
+
+# Remove object files
+.PHONY: clean-obj
+clean-obj:
+ rm -f $(OBJS)
+
+# Remove target
+.PHONY: clean-target
+clean-target:
+ rm -f $(TARGET)
+
+# Remove target and object files
+.PHONY: clean-all-obj
+clean-all-obj:
+ @for d in $(UNAMES); do \
+ (cd $(OBJROOT)/$$d; echo $(OBJ) | xargs rm -f) ;\
+ done
+
+# Remove libraries and executables for all platforms
+.PHONY: clean-all-target
+clean-all-target:
+ @for d in $(UNAMES); do \
+ (rm -f $(TARGETROOT)/$$d/$(TARGETNAME).exe $(TARGETROOT)/$$d/$(TARGETNAME).$(LIBEXT) $(TARGETROOT)/$$d/$(TARGETNAME).dll $(TARGETROOT)/$$d/$(TARGETNAME).exp) ;\
+ done
+
+.PHONY: clean
+clean: clean-target clean-obj
+
+.PHONY: clean-all
+clean-all: clean-extra clean-lohs clean-all-target clean-all-obj
+
+# Rebuild target and object files
+.PHONY: rebuild
+rebuild: clean-extra clean-lohs clean-obj clean-target tecmake
+
+# Rebuild target without rebuilding object files
+.PHONY: relink
+relink: clean-target tecmake
+
+
+#---------------------------------#
+
+.PHONY: version
+version:
+ @echo "Tecmake Windows Version $(VERSION)"
+
+#---------------------------------#
--
cgit v1.2.3