makelib/config.make
author Jan Vrany <jan.vrany@fit.cvut.cz>
Fri, 06 Oct 2017 10:27:58 +0100
branchstx-8.0.0
changeset 193 099cc5f9ff8e
parent 192 5e372c1fe64c
child 194 0695650e9b20
permissions -rw-r--r--
Makefiles: refactored flags for X11 to use `pkg-config` ...rather than use hardcoded paths and override them for each platform. `pkg-config` is now available on most UNIX platforms and also under Windows with MSYS2. Definitions were moved to common `config.make`.

#------------------ start of COMMON/defines ---------------------
#
# MIMEType: application/x-make (for editor to knows the comment chars)
#
# $Header: /cvs/stx/stx/configurations/COMMON/defines,v 1.136 2016-11-08 09:37:06 cg Exp $
#
# NOTICE:
#   all of these definitions can be overwritten in
#       vendor/COMMON/defines
#   and/or in
#     vendor/configuration/defines
#
# do not change anything here, but create a new configuration file
# redefining only things that need to be.
# Since Makefiles are created by sequentially concatenating
# the various 'defines'-files, almost everything can be redefined

# This file sets up defaults which fit on most systems -
# see redefinitions in vendor-define, config-define or individual Make.proto files

#
# Define C compiler "optimization: flags to use.
#
# * `-fno-strict-aliasing` since it's almost impossible to write a memory
#   manager without breaking C's aliasing rules. Better be on a safe side.
#   Nice post about these things: http://blog.regehr.org/archives/1307
#
# * `-Wno-strict-aliasing` to turn of warnings about breaking aliasing rules.
#   While one would think these wanings should be turned off when
#   `-fno-strict-aliasing` is passed, apparently some GCCs bark anyway.
#
# * `-fno-stack-protector` is (was) required on Ubuntu brands where it's
#   by default on. Smalltalk/X green thread implementation does not wotk
#   well with it.
#
# * `-U_FORTIFY_SOURCE` is (was) required on Gentoo as a workaround for failing
#   longjmp check when _FORTIFY_SOURCE is defined (which is enabled by default
#   on Gentoo. Remove when fixed.
#
OPT=-fPIC -O2 -fno-strict-aliasing -Wno-strict-aliasing -fno-stack-protector -ggdb3 -pipe -U_FORTIFY_SOURCE


CONF=$(BUILD_TARGET)
CONF_VENDOR=$(BUILD_TARGET)

ARCH=$(CONF)
ARCH_NAME=$(ARCH)
DISTRIB_NAME=$(ARCH)


#
# target for local make
#
TARGET_DIR=$(TOP)/projects/smalltalk

#-------------
# optional subPackages
# can be redefined to empty in concrete packages
#-------------

OPTIONAL_GOODIES_BENCHMARKS=benchmarks
OPTIONAL_GOODIES_PATHS=paths
OPTIONAL_GOODIES_TGEN=tgen
OPTIONAL_SUPPORT_UTILITIES=

OPTIONAL_LIBJAVA=libjava

# ------------
# architecture
# ------------

ARCH=unknown

# -------------
# how to deploy
# redefined in mac to "dmg"
# -------------
DEPLOY_PACKAGE=tgz

# --------
# commands
# --------

SHELL=/bin/sh
# MAKE is defined implicitly by make or gmake. Do not define here!
# MAKE=make

# c-compiler to use
CC=cc
AS_CC=$(CC)
AS_CC_CFLAG=-c
CPP=/lib/cpp

# assembler for librun/asmhelp
AS=as

# linker for final executable
LD=$(CC)
# linker for classlibs
CLASSLIB_LD=ld

# lex (can be replaced by flex)
LEX=lex

# yacc (can be replaced by bison)
YACC=yacc

# librarian
AR=ar
AR_LIB_FLAG=r
RANLIB=ranlib

# symbolic link
LNS=ln -s

# misc
STRIP=strip
DIRNAME=dirname
#
# all BSD-based expr-implementations are missing the substring function
#
# RIGHTSTR="expr substr"
RIGHTSTR=$(TOP)/rules/rightstr
TOUCH=touch

# installer (to bring files to the INSTALLTOPDIR)
INSTALL=cp
INSTALL_BIN_CMD=$(INSTALL)
INSTALL_SCRIPT_CMD=$(INSTALL)
INSTALL_LIB_CMD=$(INSTALL)
INSTALL_AUX_CMD=$(INSTALL)
COMPRESSOR=
COMPRESSED_FILETYPE=

# in a vendorConf, you can define:
#
# INSTALL=install
# INSTALL_BIN_CMD=install -s -m 0555
# INSTALL_LIB_CMD=install -m 0444
# INSTALL_AUX_CMD=install -m 0444

#
# programs to install
#
INSTALL_PROGS=$(PROGS)

# --------------
# compiler flags
# --------------

# stc default optimization

DEFAULT_STCOPT=+optinline
STCOPT=$(DEFAULT_STCOPT)

# default stc optimization to use in various lib-directories
# (used in Make.protos)

LIBBASIC_STCOPT=$(DEFAULT_STCOPT) +optinline2 -warnNonStandard
LIBBOSS_STCOPT=$(LIBBASIC_STCOPT)
LIBBASIC2_STCOPT=+optspace2 -warnNonStandard
LIBBASIC3_STCOPT=+optspace2 -warnNonStandard
LIBCOMP_STCOPT=$(DEFAULT_STCOPT) -warnNonStandard
LIBVIEW_STCOPT=$(DEFAULT_STCOPT) -warnNonStandard
LIBVIEW2_STCOPT=+optspace2 -warnNonStandard
LIBWIDG_STCOPT=+optspace2 -warnNonStandard
LIBWIDG2_STCOPT=+optspace2
LIBWIDG3_STCOPT=+optspace3 -warnNonStandard
#LIBUI_STCOPT=+optspace2 -warnNonStandard
LIBUI_STCOPT=-warnNonStandard
LIBHTML_STCOPT=+optspace2 -warnNonStandard
LIBTOOL_STCOPT=+optspace2 -warnNonStandard -warnUnusedLocals -warnUseBeforeSet
LIBTOOL2_STCOPT=+optspace3 -warnNonStandard
LIBTABLE_STCOPT=+optspace2 -warnNonStandard
CLIENT_STCOPT=+optspace2
GOODIES_STCOPT=+optspace2

# common for all:
STCCOMMONOPT=
CCCOMMONOPT=$(OPTIONAL_HAVE_FFI_ARG)

# to be redefined in arch/COMMON/defines
STCARCHCOMMONOPT=
CCARCHCOMMONOPT=

# top be redefined in arch/<conf>/defines
STCARCHOPT=
CCARCHOPT=

# this could be set per-configuration:
# STCCONFOPT=

# this could be set per-subdirectory:
# STCLOCALOPT=


# all st-objects depend on these:

STCHDR=$(INCLUDE)/stc.h $(INCLUDE)/stcIntern.h $(CPUINTERN_H)

# compile librun with -DDEBUG

DBG=-DDEBUG

#
# some c-preprocessors have a bug in not handling too-deeply nested
# include files. If yours does, some classes have to be compiled with a
# special STC flag, to produce a different kind of header-definition file
# If your machine is one of those, add a line as:
#   LIMITSUPERINCLUDE=+limitSuperInclude
# to the corresponding defines-file
LIMITSUPERINCLUDE=

# default for 'make includeLink'

#INCLUDELINK_FILES= \
#       abbrev.stc \
#       liblist.stc \
#       symbols.stc

INCLUDELINK_FILES= \
	symbols.stc

# -------------------------------------------------------------------------
# normally, the following need not be redefined (they have useful defaults)
# -------------------------------------------------------------------------

# compiler, linker, cflags and lexlib to use when building stc
# you could use a different compiler (gcc vs. cc) here.
# default is to use the same compiler as for classes

STC_CC=$(CC)
STC_LD=$(STC_CC)
STC_CFLAGS=$(CFLAGS)
STC_LEXLIB=-ll

# compiler and optimizer flags to compile main.o
# default is to use the same compiler as for classes

MAIN_CC=$(CC)
MAIN_OPT=$(OPT)

# compiler, and optimizer flags for librun
# default is to use the same compiler as for classes

LIBRUN_CC=$(CC)
LIBRUN_OPT=$(OPT)
LIBRUN_SPECIAL_OPT=$(LIBRUN_OPT)

FFI_CC=$(CC)
FFI_LD=$(LD)
# if ffi.h is to be included from somewhere else...
FFI_INCLUDE=

# compiler to use for big-files
# default is to use the same compiler as for other classes

BIGFILE_CC=$(CC)

# compiler to use for libjpeg
# (only needed for hp, where standard cc cannot compile libjpeg)

# compiler to use for class libraries
# the only system, where this is different is (currently) hpux_
# (their cc crashes for some big files - sigh)

CLASSLIB_CC=$(CC)
CLASSLIB_OPT=$(OPT)
STC_OPT=$(OPT)

# compiler to use for particular class libraries
LIBBASIC_CC=$(CLASSLIB_CC)
LIBBASIC_OPT=$(CLASSLIB_OPT)

LIBBASIC2_CC=$(CLASSLIB_CC)
LIBBASIC2_OPT=$(CLASSLIB_OPT)

LIBBASIC3_OPT=$(CLASSLIB_OPT)
LIBBASIC3_CC=$(CLASSLIB_CC)

LIBCOMP_OPT=$(CLASSLIB_OPT)
LIBCOMP_CC=$(CLASSLIB_CC)

LIBVIEW_OPT=$(CLASSLIB_OPT)
LIBVIEW_CC=$(CLASSLIB_CC)

LIBVIEW2_OPT=$(CLASSLIB_OPT)
LIBVIEW2_CC=$(CLASSLIB_CC)

LIBWIDG_OPT=$(CLASSLIB_OPT)
LIBWIDG_CC=$(CLASSLIB_CC)

LIBWIDG2_OPT=$(CLASSLIB_OPT)
LIBWIDG2_CC=$(CLASSLIB_CC)

LIBWIDG3_OPT=$(CLASSLIB_OPT)
LIBWIDG3_CC=$(CLASSLIB_CC)

LIBTOOL_OPT=$(CLASSLIB_OPT)
LIBTOOL_CC=$(CLASSLIB_CC)

LIBTOOL2_OPT=$(CLASSLIB_OPT)
LIBTOOL2_CC=$(CLASSLIB_CC)

LIBUI_OPT=$(CLASSLIB_OPT)
LIBUI_CC=$(CLASSLIB_CC)

LIBHTML_OPT=$(CLASSLIB_OPT)
LIBHTML_CC=$(CLASSLIB_CC)

#
# flag for prelinking
#
LD_REL_FLAG=-r
#
# additional linker flags for prelinked obj-libraries
# (used when prelinking object modules)
#
LD_OBJ_FLAGS=

#
# optional rebasing rule (to relocate dll's to disjoint address ranges, if supported by the toolchain).
# OS X does provide this
#
rebaseLibsRule=nullRebaseRule
rebaseLibsRule_static=nullRebaseRule

# file name extensions

# name of object files
O=o
O2=o

# name of archives
A=a

# name of executables
EXE=

# name of shared objects
SO=so

# name of prelinked nonshared objects
OBJ=obj
OBJNAME=.obj

# name of individual object files
BIN_O=.o

# extension of linked object files
# (usually either '.a', '.o' or '.obj' on static-link systems
# or '.so' on dynamic link systems.
# (maybe even '.dll' some time later ...)

# static link with prelinked relocatable modules:
O_EXT=$(OBJNAME)
# shared lib link:
# O_EXT=.$(SO)
# library link:
# O_EXT=.$(A)

#
# location of various subdirs
#

INCLUDE    = $(TOP)/include
INCLUDE_IN = $(INCLUDE)
INCLUDE_OUT= $(INCLUDE)
CONFTOP    = $(TOP)
RULETOP    = $(TOP)
STCDIR     = $(TOP)/stc
STC        = $(STCDIR)/stc

CONFDIR    = $(CONFTOP)/configurations
RULEDIR    = $(RULETOP)/rules

LIBBASIC_RELDIR  = libbasic
LIBBASIC2_RELDIR = libbasic2
LIBBASIC3_RELDIR = libbasic3
LIBBOSS_RELDIR   = libboss
LIBCOMP_RELDIR   = libcomp
LIBHTML_RELDIR   = libhtml
LIBVIEW_RELDIR   = libview
LIBVIEW2_RELDIR  = libview2
LIBWIDG_RELDIR   = libwidg
LIBWIDG2_RELDIR  = libwidg2
LIBWIDG3_RELDIR  = libwidg3
LIBTOOL_RELDIR   = libtool
LIBTOOL2_RELDIR  = libtool2
LIBCOMPAT_RELDIR = libcompat
LIBUI_RELDIR     = libui
LIBODBC_RELDIR   = libodbc
LIBOBJC_RELDIR   = libobjc
GOODIES_RELDIR   = goodies
LIBDB_RELDIR     = libdb
SUNIT_RELDIR     = $(GOODIES_RELDIR) $(GOODIES_RELDIR)/sunit
RB_RELDIR        = $(GOODIES_RELDIR) $(GOODIES_RELDIR)/refactoryBrowser

LIBRUNDIR    = $(TOP)/librun
LIBBASICDIR  = $(TOP)/libbasic
LIBBASIC2DIR = $(TOP)/libbasic2
LIBBASIC3DIR = $(TOP)/libbasic3
LIBBOSSDIR   = $(TOP)/libboss
LIBCOMPDIR   = $(TOP)/libcomp
LIBHTMLDIR   = $(TOP)/libhtml
LIBVIEWDIR   = $(TOP)/libview
LIBVIEW2DIR  = $(TOP)/libview2
LIBWIDGDIR   = $(TOP)/libwidg
LIBWIDG2DIR  = $(TOP)/libwidg2
LIBWIDG3DIR  = $(TOP)/libwidg3
LIBTOOLDIR   = $(TOP)/libtool
LIBTOOL2DIR  = $(TOP)/libtool2
LIBTABLEDIR  = $(TOP)/libtable
LIBPRODIR    = $(TOP)/libpro
LIBCOMPATDIR = $(TOP)/libcompat
LIBUIDIR     = $(TOP)/libui
LIBODBCDIR   = $(TOP)/libodbc
CLIENTDIR    = $(TOP)/clients
LIBOBJCDIR   = $(TOP)/libobjc
GOODIESDIR   = $(TOP)/goodies
LIBDBASEDIR  = $(TOP)/goodies/libdbase
SUNITDIR     = $(TOP)/goodies/sunit

RBDIR        = $(TOP)/goodies/refactoryBrowser
LIBRB_HELPERSDIR     = $(RBDIR)/helpers
LIBRB_CHANGESDIR     = $(RBDIR)/changes
LIBRB_PARSERDIR      = $(RBDIR)/parser
LIBRB_REFACTORINGDIR = $(RBDIR)/refactoring
LIBRB_BROWSERDIR     = $(RBDIR)/browser

LIBSCMDIR            = $(TOP)/libscm
LIBSCM_COMMONDIR     = $(LIBSCMDIR)/common
LIBSCM_MERCURIALDIR  = $(LIBSCMDIR)/mercurial

#
# these are not yet released to the public
#
LIBCPLUSPLUSDIR = $(TOP)/libc++
LIBXTDIR        = $(TOP)/libxt
LIBXMDIR        = $(TOP)/libxm

#
# your private directories
#
# OTHERLIBDIRS are directories to be visited by make
#
OTHERLIBDIRS    =
#
# OTHERLIBS are libraries to be linked in at the end
#
OTHERLIBS       =

MAIN       = $(LIBRUNDIR)/main.c
#HIDATA     = $(LIBRUNDIR)/hidata.o
HIDATA=

#
# object files to include in a classlibrary
# default is all upper-case .o-files
#
LINKOBJS=[A-Z]*.$(O)

SA_EXT=.a
A_EXT=.a
STATIC_O_EXT=.o

#
# libraries as in the development tree;
#
LIBRUN   = $(LIBRUNDIR)/librun$(SA_EXT)
LIBBASIC = $(LIBBASICDIR)/libstx_libbasic$(O_EXT)
LIBBOSS  = $(LIBBOSSDIR)/libstx_libboss$(O_EXT)
LIBBASIC2= $(LIBBASIC2DIR)/libstx_libbasic2$(O_EXT)
LIBBASIC3= $(LIBBASIC3DIR)/libstx_libbasic3$(O_EXT)
LIBHTML  = $(LIBHTMLDIR)/libstx_libhtml$(O_EXT)
LIBCOMP  = $(LIBCOMPDIR)/libstx_libcomp$(O_EXT)
LIBCOMPAT= $(LIBCOMPATDIR)/libstx_libcompat$(O_EXT)
LIBVIEW  = $(LIBVIEWDIR)/libstx_libview$(O_EXT)
LIBVIEW2 = $(LIBVIEW2DIR)/libstx_libview2$(O_EXT)
LIBWIDG  = $(LIBWIDGDIR)/libstx_libwidg$(O_EXT)
LIBWIDG2 = $(LIBWIDG2DIR)/libstx_libwidg2$(O_EXT)
LIBWIDG3 = $(LIBWIDG3DIR)/libstx_libwidg3$(O_EXT)
LIBTOOL  = $(LIBTOOLDIR)/libstx_libtool$(O_EXT)
LIBTOOL2 = $(LIBTOOL2DIR)/libstx_libtool2$(O_EXT)
LIBTABLE = $(LIBTABLEDIR)/libstx_libtable$(O_EXT)
LIBUI    = $(LIBUIDIR)/libstx_libui$(O_EXT)
LIBDBASE = $(LIBDBASEDIR)/libstx_goodies_libdbase$(O_EXT)
GOODIES  = $(GOODIESDIR)/libstx_goodies$(O_EXT)
LIBOBJC  = $(LIBOBJCDIR)/libstx_libobjc$(O_EXT)
SUNIT    = $(SUNITDIR)/libstx_goodies_sunit$(O_EXT)

LIBRB_HELPERS     = $(LIBRB_HELPERSDIR)/libstx_goodies_refactoryBrowser_helpers$(O_EXT)
LIBRB_CHANGES     = $(LIBRB_CHANGESDIR)/libstx_goodies_refactoryBrowser_changes$(O_EXT)
LIBRB_PARSER      = $(LIBRB_PARSERDIR)/libstx_goodies_refactoryBrowser_parser$(O_EXT)
LIBRB_REFACTORING = $(LIBRB_REFACTORINGDIR)/libstx_goodies_refactoryBrowser_refactoring$(O_EXT)
LIBRB_BROWSER     = $(LIBRB_BROWSERDIR)/libstx_goodies_refactoryBrowser_browser$(O_EXT)

LIBSCM_COMMON     = $(LIBSCM_COMMONDIR)/libstx_libscm_common$(O_EXT)
LIBSCM_MERCURIAL  = $(LIBSCM_MERCURIALDIR)/libstx_libscm_mercurial$(O_EXT)

#
# additional (depreviated or private/experimental)
# libraries. These are not req'd normally.
#
LIBCPLUSPLUS= $(LIBCPLUSPLUSDIR)/libc++$(O_EXT)
LIBXT       = $(LIBXTDIR)/libxt$(O_EXT)
LIBXM       = $(LIBXMDIR)/libxm$(O_EXT)

#
# libraries which are either provided via the support directory
# or by the system. If a system-library is present, that one should
# usually be used (and then redefined in a platform-specific defines-file)
#

# the following defs are for using the provided (not the system) zlib;
# should work everywhere
ZLIB_DIR=$(TOP)/support/zlib-1.2.3
ZLIB_LD_ARG=-L$(ZLIB_DIR) -lz
ZLIB_MAKE_TARGET=zlib

# the following defs are for using the provided (not the system) bz2lib;
# should work everywhere
BZ2LIB_DIR=$(TOP)/support/bz2lib
BZ2LIB_LD_ARG=-L$(BZ2LIB_DIR) -lbz2
BZ2LIB_MAKE_TARGET=bz2lib

# the following defs are for NOT using any usb lib (only needed in some apps);
# redefined in linux configurations, to use the system lib (-lusb)
USB_LIB_DIR=
USB_LIB_ARG=
USB_MAKE_TARGET=

#
# libraries as linked to the executable.
# For sharedLib links, these must be in a common
# lib-subdirectory while being linked,
# in order to allow those shared libraries to be placed
# into some other directory (LD_LIBRARY_PATH) later.
# This is a bit inconvenient - sorry.
#
#LINK_LIBDIR = lib/
#LINK_LIBDIR = .
LINK_LIBRUN   = $(LINK_LIBDIR)librun$(SA_EXT)
LINK_LIBBASIC = $(LINK_LIBDIR)libstx_libbasic$(O_EXT)
LINK_LIBBOSS  = $(LINK_LIBDIR)libstx_libboss$(O_EXT)
LINK_LIBBASIC2= $(LINK_LIBDIR)libstx_libbasic2$(O_EXT)
LINK_LIBBASIC3= $(LINK_LIBDIR)libstx_libbasic3$(O_EXT)
LINK_LIBHTML  = $(LINK_LIBDIR)libstx_libhtml$(O_EXT)
LINK_LIBCOMP  = $(LINK_LIBDIR)libstx_libcomp$(O_EXT)
LINK_LIBCOMPAT= $(LINK_LIBDIR)libstx_libcompat$(O_EXT)
LINK_LIBVIEW  = $(LINK_LIBDIR)libstx_libview$(O_EXT)
LINK_LIBVIEW2 = $(LINK_LIBDIR)libstx_libview2$(O_EXT)
LINK_LIBWIDG  = $(LINK_LIBDIR)libstx_libwidg$(O_EXT)
LINK_LIBWIDG2 = $(LINK_LIBDIR)libstx_libwidg2$(O_EXT)
LINK_LIBWIDG3 = $(LINK_LIBDIR)libstx_libwidg3$(O_EXT)
LINK_LIBTOOL  = $(LINK_LIBDIR)libstx_libtool$(O_EXT)
LINK_LIBTOOL2 = $(LINK_LIBDIR)libstx_libtool2$(O_EXT)
LINK_LIBTABLE = $(LINK_LIBDIR)libstx_libtable$(O_EXT)
LINK_LIBUI    = $(LINK_LIBDIR)libstx_libui$(O_EXT)
LINK_LIBDBASE = $(LINK_LIBDIR)libstx_goodies_libdbase$(O_EXT)
LINK_GOODIES  = $(LINK_LIBDIR)libstx_goodies$(O_EXT)
LINK_LIBOBJC  = $(LINK_LIBDIR)libstx_libobjc$(O_EXT)
LINK_SUNIT    = $(LINK_LIBDIR)libstx_goodies_sunit$(O_EXT)

LINK_LIBRB_HELPERS     = $(LINK_LIBDIR)libstx_goodies_refactoryBrowser_helpers$(O_EXT)
LINK_LIBRB_CHANGES     = $(LINK_LIBDIR)libstx_goodies_refactoryBrowser_changes$(O_EXT)
LINK_LIBRB_PARSER      = $(LINK_LIBDIR)libstx_goodies_refactoryBrowser_parser$(O_EXT)
LINK_LIBRB_REFACTORING = $(LINK_LIBDIR)libstx_goodies_refactoryBrowser_refactoring$(O_EXT)
LINK_LIBRB_BROWSER     = $(LINK_LIBDIR)libstx_goodies_refactoryBrowser_browser$(O_EXT)

LINK_LIBSCM_COMMON     = $(LINK_LIBDIR)libstx_libscm_common$(O_EXT)
LINK_LIBSCM_MERCURIAL  = $(LINK_LIBDIR)libstx_libscm_mercurial$(O_EXT)

LINK_LIBCPLUSPLUS= $(LINK_LIBDIR)libc++$(O_EXT)
LINK_LIBXT       = $(LINK_LIBDIR)libxt$(O_EXT)
LINK_LIBXM       = $(LINK_LIBDIR)libxm$(O_EXT)

STATIC_LIBRUN      = $(LIBRUNDIR)/librun$(A_EXT)
STATIC_LIBBASIC    = $(LIBBASICDIR)/libstx_libbasic$(STATIC_O_EXT)
STATIC_LIBBOSS     = $(LIBBOSSDIR)/libstx_libboss$(STATIC_O_EXT)
STATIC_LIBBASIC2   = $(LIBBASIC2DIR)/libstx_libbasic2$(STATIC_O_EXT)
STATIC_LIBBASIC3   = $(LIBBASIC3DIR)/libstx_libbasic3$(STATIC_O_EXT)
STATIC_LIBHTML     = $(LIBHTMLDIR)/libstx_libhtml$(STATIC_O_EXT)
STATIC_LIBCOMP     = $(LIBCOMPDIR)/libstx_libcomp$(STATIC_O_EXT)
STATIC_LIBCOMPAT   = $(LIBCOMPATDIR)/libstx_libcompat$(STATIC_O_EXT)
STATIC_LIBVIEW     = $(LIBVIEWDIR)/libstx_libview$(STATIC_O_EXT)
STATIC_LIBVIEW2    = $(LIBVIEW2DIR)/libstx_libview2$(STATIC_O_EXT)
STATIC_LIBWIDG     = $(LIBWIDGDIR)/libstx_libwidg$(STATIC_O_EXT)
STATIC_LIBWIDG2    = $(LIBWIDG2DIR)/libstx_libwidg2$(STATIC_O_EXT)
STATIC_LIBWIDG3    = $(LIBWIDG3DIR)/libstx_libwidg3$(STATIC_O_EXT)
STATIC_LIBTOOL     = $(LIBTOOLDIR)/libstx_libtool$(STATIC_O_EXT)
STATIC_LIBTOOL2    = $(LIBTOOL2DIR)/libstx_libtool2$(STATIC_O_EXT)
STATIC_LIBTABLE    = $(LIBTABLEDIR)/libstx_libtable$(STATIC_O_EXT)
STATIC_LIBUI       = $(LIBUIDIR)/libstx_libui$(STATIC_O_EXT)
STATIC_LIBDBASE    = $(LIBDBASEDIR)/libstx_goodies_libdbase$(STATIC_O_EXT)
STATIC_GOODIES     = $(GOODIESDIR)/libstx_goodies$(STATIC_O_EXT)
STATIC_LIBOBJC     = $(LIBOBJCDIR)/libstx_libobjc$(STATIC_O_EXT)
STATIC_SUNIT       = $(SUNITDIR)/libstx_goodies_sunit$(STATIC_O_EXT)

STATIC_LIBRB_HELPERS     = $(LIBRB_HELPERSDIR)/libstx_goodies_refactoryBrowser_helpers$(STATIC_O_EXT)
STATIC_LIBRB_CHANGES     = $(LIBRB_CHANGESDIR)/libstx_goodies_refactoryBrowser_changes$(STATIC_O_EXT)
STATIC_LIBRB_PARSER      = $(LIBRB_PARSERDIR)/libstx_goodies_refactoryBrowser_parser$(STATIC_O_EXT)
STATIC_LIBRB_REFACTORING = $(LIBRB_REFACTORINGDIR)/libstx_goodies_refactoryBrowser_refactoring$(STATIC_O_EXT)
STATIC_LIBRB_BROWSER     = $(LIBRB_BROWSERDIR)/libstx_goodies_refactoryBrowser_browser$(STATIC_O_EXT)

STATIC_LIBSCM_COMMON     = $(LIBSCM_COMMONDIR)/libstx_libscm_common$(STATIC_O_EXT)
STATIC_LIBSCM_MERCURIAL  = $(LIBSCM_MERCURIALDIR)/libstx_libscm_mercurial$(STATIC_O_EXT)

STATIC_LIBCPLUSPLUS= $(LIBCPLUSPLUSDIR)/libc++$(STATIC_O_EXT)
STATIC_LIBXT       = $(LIBXTDIR)/libxt$(STATIC_O_EXT)
STATIC_LIBXM       = $(LIBXMDIR)/libxm$(STATIC_O_EXT)

# -------------------------------------------
# various package lists (to link)
#
# depending on how the final target is linked,
# either the normal-classlibrary, the shared classlibrary
# or the sep-init libraries are used.
#
# +sepInit is no longer supported - so it may not work
# (no known configurations uses it currently)
# -------------------------------------------
REFACTORY_DIR        = $(LIBRB_HELPERSDIR) $(LIBRB_CHANGESDIR) $(LIBRB_REFACTORINGDIR) $(LIBRB_PARSERDIR) $(LIBRB_BROWSERDIR)
REFACTORY_LIB        = $(LIBRB_HELPERS) $(LIBRB_CHANGES) $(LIBRB_REFACTORING) $(LIBRB_PARSER) $(LIBRB_BROWSER)
REFACTORY_LIST       = libstx_goodies_refactoryBrowser_helpers libstx_goodies_refactoryBrowser_changes libstx_goodies_refactoryBrowser_refactoring libstx_goodies_refactoryBrowser_parser libstx_goodies_refactoryBrowser_browser
LINK_REFACTORY_LIB   = $(LINK_LIBRB_HELPERS) $(LINK_LIBRB_CHANGES) $(LINK_LIBRB_REFACTORING) $(LINK_LIBRB_PARSER) $(LINK_LIBRB_BROWSER)
STATIC_REFACTORY_LIB = $(STATIC_LIBRB_HELPERS) $(STATIC_LIBRB_CHANGES) $(STATIC_LIBRB_REFACTORING) $(STATIC_LIBRB_PARSER) $(STATIC_LIBRB_BROWSER)

SUNIT_DIR        = $(SUNITDIR)
SUNIT_LIB        = $(SUNIT)
SUNIT_LIST       = libstx_goodies_sunit
LINK_SUNIT_LIB   = $(LINK_SUNIT)
STATIC_SUNIT_LIB = $(STATIC_SUNIT)

LIBSCM_DIR        = $(LIBSCM_COMMONDIR) $(LIBSCM_MERCURIALDIR)
LIBSCM_LIB        = $(LIBSCM_COMMON) $(LIBSCM_MERCURIAL)
LIBSCM_LIST       = libstx_libscm_common libstx_libscm_mercurial
LINK_LIBSCM_LIB   = $(LINK_LIBSCM_COMMON) $(LINK_LIBSCM_MERCURIAL)
STATIC_LIBSCM_LIB = $(STATIC_LIBSCM_COMMON) $(STATIC_LIBSCM_MERCURIAL)

#
# barebones
#   absolute minimum - no compiler i.e. no rc files etc.
#
BARE_DIR        = $(LIBBASICDIR) $(PRIVATEOBJ)
BARE_RELDIR     = $(LIBBASIC_RELDIR)
BARE_LIB        = $(LIBBASIC) $(PRIVATEOBJ)
BARE_LIST       = libstx_libbasic $(PRIVATELIBS)
LINK_BARE_LIB   = $(LINK_LIBBASIC) $(LINK_PRIVATE)
STATIC_BARE_LIB = $(STATIC_LIBBASIC) $(STATIC_PRIVATE)

#
# minitalk (non GUI) uses this
#   minimum needed for non GUI applications
#
MINI_DIR        = $(BARE_DIR) $(LIBCOMPDIR)
MINI_RELDIR     = $(BARE_RELDIR) $(LIBCOMP_RELDIR)
MINI_LIB        = $(BARE_LIB) $(LIBCOMP)
MINI_LIST       = $(BARE_LIST) libstx_libcomp
LINK_MINI_LIB   = $(LINK_BARE_LIB) $(LINK_LIBCOMP)
STATIC_MINI_LIB = $(STATIC_BARE_LIB) $(STATIC_LIBCOMP)

#
# fundamental components
#   all that is needed for typical GUI applications
#
FUNDAMENTAL_DIR       = $(MINI_DIR) $(LIBBASIC2DIR) $(LIBVIEWDIR) $(LIBVIEW2DIR) $(LIBWIDGDIR) $(LIBWIDG2DIR) $(LIBUIDIR)
FUNDAMENTAL_RELDIR    = $(MINI_RELDIR) $(LIBBASIC2_RELDIR) $(LIBVIEW_RELDIR) $(LIBVIEW2_RELDIR) $(LIBWIDG_RELDIR) $(LIBWIDG2_RELDIR) $(LIBUI_RELDIR)
FUNDAMENTAL_LIB       = $(MINI_LIB) $(LIBBASIC2) $(LIBVIEW) $(LIBVIEW2) $(LIBWIDG) $(LIBWIDG2) $(LIBUI)
FUNDAMENTAL_LIST      = $(MINI_LIST) libstx_libbasic2 libstx_libview libstx_libview2 libstx_libwidg libstx_libwidg2 libstx_libui
LINK_FUNDAMENTAL_LIB  = $(LINK_MINI_LIB) $(LINK_LIBBASIC2) $(LINK_LIBVIEW) $(LINK_LIBVIEW2) $(LINK_LIBWIDG) $(LINK_LIBWIDG2) $(LINK_LIBUI)
STATIC_FUNDAMENTAL_LIB= $(STATIC_MINI_LIB) $(STATIC_LIBBASIC2) $(STATIC_LIBVIEW) $(STATIC_LIBVIEW2) $(STATIC_LIBWIDG) $(STATIC_LIBWIDG2) $(STATIC_LIBUI)

#
# development components
#   all that is needed for typical GUI applications PLUS development classes
#
DEVELOP_DIR        = $(FUNDAMENTAL_DIR) $(LIBBASIC3DIR) $(REFACTORY_DIR) $(LIBTOOLDIR) $(LIBSCM_DIR) $(SUNITDIR)
DEVELOP_RELDIR     = $(FUNDAMENTAL_RELDIR) $(LIBBASIC3_RELDIR) $(REFACTORY_RELDIR) $(LIBTOOL_RELDIR) $(LIBSCM_RELDIR) $(SUNIT_RELDIR)
DEVELOP_LIB        = $(FUNDAMENTAL_LIB) $(LIBBASIC3) $(REFACTORY_LIB) $(LIBTOOL) $(LIBSCM_LIB) $(SUNIT_LIB)
DEVELOP_LIST       = $(FUNDAMENTAL_LIST) libstx_libbasic3 $(REFACTORY_LIST) libstx_libtool $(LIBSCM_LIST) $(SUNIT_LIST)
LINK_DEVELOP_LIB   = $(LINK_FUNDAMENTAL_LIB) $(LINK_LIBBASIC3) $(LINK_REFACTORY_LIB) $(LINK_LIBTOOL) $(LINK_LIBSCM_LIB) $(LINK_SUNIT_LIB)
STATIC_DEVELOP_LIB = $(STATIC_FUNDAMENTAL_LIB) $(STATIC_LIBBASIC3) $(STATIC_REFACTORY_LIB) $(STATIC_LIBTOOL) $(STATIC_LIBSCM_LIB) $(STATIC_SUNIT_LIB)

#
# standard components
#   all that is needed for typical GUI applications PLUS development classes
#   PLUS persistency PLUS html stuff PLUS some less frequently used classes
#
STANDARD_DIR        = $(DEVELOP_DIR) $(LIBTOOL2DIR) $(LIBHTMLDIR) $(LIBBOSSDIR)
STANDARD_RELDIR     = $(DEVELOP_RELDIR) $(LIBTOOL2_RELDIR) $(LIBHTML_RELDIR) $(LIBBOSS_RELDIR)
STANDARD_LIB        = $(DEVELOP_LIB) $(LIBTOOL2) $(LIBHTML) $(LIBBOSS) $(ADDITIONAL_STANDARD_LIB)
STANDARD_LIST       = $(DEVELOP_LIST) libstx_libtool2 libstx_libhtml libstx_libboss $(ADDITIONAL_STANDARD_LIST)
LINK_STANDARD_LIB   = $(LINK_DEVELOP_LIB) $(LINK_LIBTOOL2) $(LINK_LIBHTML) $(LINK_LIBBOSS) $(ADDITIONAL_LINK_STANDARD_LIB)
STATIC_STANDARD_LIB = $(STATIC_DEVELOP_LIB) $(STATIC_LIBTOOL2) $(STATIC_LIBHTML) $(STATIC_LIBBOSS) $(ADDITIONAL_STATIC_STANDARD_LIB)


#
# all components
#   also includes very seldom used additional widgets
#
EXTENDED_DIR        = $(STANDARD_DIR) $(LIBTABLEDIR) $(LIBWIDG3DIR) $(LIBDBASEDIR) $(LIBCOMPATDIR)
EXTENDED_RELDIR     = $(STANDARD_RELDIR) $(LIBTABLE_RELDIR) $(LIBWIDG3_RELDIR) $(LIBDBASE_RELDIR) $(LIBCOMPAT_RELDIR)
EXTENDED_LIB        = $(STANDARD_LIB) $(LIBTABLE) $(LIBWIDG3) $(LIBDBASE) $(LIBCOMPAT)
EXTENDED_LIST       = $(STANDARD_LIST) libstx_libtable libstx_libwidg3 libstx_goodies_libdbase libstx_libcompat
LINK_EXTENDED_LIB   = $(LINK_STANDARD_LIB) $(LINK_LIBTABLE) $(LINK_LIBWIDG3) $(LINK_LIBDBASE) $(LINK_LIBCOMPAT)
STATIC_EXTENDED_LIB = $(STATIC_STANDARD_LIB) $(STATIC_LIBTABLE) $(STATIC_LIBWIDG3) $(STATIC_LIBDBASE) $(STATIC_LIBCOMPAT)

# -------------------------------------------
# default class package list
# -------------------------------------------
#
# should make all libs req'd by Smalltalk
#
CLASSLIBDIRS     = $(STANDARD_DIR)
CLASSLIB_RELDIRS = $(STANDARD_RELDIR)

LIBOBJS        = $(STANDARD_LIB)
LINK_LIBOBJS   = $(LINK_STANDARD_LIB)
LIBLIST        = $(STANDARD_LIST)
STATIC_LIBLIST = $(LIBLIST)
LINKLIST       = $(LINK_STANDARD_LIB)

#
# those are set to the default values
# (in case no STATIC_ defs are found in a PACKS file)
#
STATIC_OBJS               = $(LINK_OBJS)
STATIC_LIBOBJS            = $(LIBOBJS)
STATIC_ADDITIONAL_OBJS    = $(ADDITIONAL_OBJS)
STATIC_ADDITIONAL_CLASSES = $(ADDITIONAL_CLASSES)
STATIC_EXTRA_OBJ          = $(EXTRA_OBJ)
STATIC_EXTRA_UI_OBJ       = $(EXTRA_UI_OBJ)
LINK_ADDITIONAL_OBJS      = $(ADDITIONAL_OBJS)


# --------------------------------------
# system and other (non-class) libraries
# --------------------------------------

#
# X11 Libraries (X, Xext, Xft and Xinerama)
#
XDEFS    = -DSHAPE
XINCLUDE = $(shell pkg-config --cflags x11 xext)
LIB_X    = $(shell pkg-config --libs   x11 xext)

ifeq (yes, $(shell if pkg-config --exists xft; then echo "yes"; else echo "no"; fi))
XDEFS    += -DXFT -DHAVE_FONTCONFIG
XINCLUDE +=$(shell pkg-config --cflags xft)
LIB_XFT   =$(shell pkg-config --libs   xft)
endif

ifeq (yes, $(shell if pkg-config --exists xinerama; then echo "yes"; else echo "no"; fi))
XDEFS    += -DXINERAMA
XINCLUDE +=$(shell pkg-config --cflags xinerama)
LIB_XINERAMA=$(shell pkg-config --libs xinerama)
endif



# used with sparc only:
# OSI-ACSE library
# redefined to non-empty in sparc config
LIB_OSINET_APLI=
LIB_OSINET_OSI=

WHICH_ODBC=unixodbc

OPTIONAL_LIBS= \
	$(OPTIONAL_LIBXM) \
	$(OPTIONAL_LIBXAW) \
	$(OPTIONAL_LIBXMU) \
	$(OPTIONAL_LIBXT)

MATHLIB     = -lm
SYSLIBS     = \
	$(OTHERLIBS1) \
	$(OPTIONAL_LIBS) \
	$(OTHERLIBS2) \
	$(MATHLIB)

OTHERLIBS1  =
OTHERLIBS2  = $(OTHERLIBS)


STATIC_OPTIONAL_LIBS= \
	$(STATIC_OPTIONAL_LIBXM) \
	$(STATIC_OPTIONAL_LIBXAW) \
	$(STATIC_OPTIONAL_LIBXMU) \
	$(STATIC_OPTIONAL_LIBXT)

STATIC_MATHLIB=/usr/lib/libm.a
STATIC_SYSLIBS     = \
	$(STATIC_OTHERLIBS1) \
	$(STATIC_OPTIONAL_LIBS) \
	$(STATIC_LIBXEXT) $(STATIC_LIBX) \
	$(STATIC_OTHERLIBS2) \
	$(STATIC_MATHLIB)
STATIC_OTHERLIBS1  = $(OTHERLIBS1)
STATIC_OTHERLIBS2  = $(OTHERLIBS2)

SUPPORT_DIR=$(TOP)/support

#
# the makefile to use when building the db1.6 library
#
MAKEFILE_DB  = Makefile.$(MAKEFILE_EXTENSION)

#
# the CTAGS command (for ca's CBrowser, taglist in Filebrowser and cg's STXGDB)
#
#CTAGS_VSN=ctags-3.2.2
CTAGS_VSN=ctags-5.8
CTAGS_DIR=$(TOP)/support/tools/$(CTAGS_VSN)
# CTAGS=$(CTAGS_DIR)/ctags

#
# the CSCOPE command (for cg's STXGDB)
#
CSCOPE_VSN=cscope-15.8a
CSCOPE_DIR=$(TOP)/support/tools/$(CSCOPE_VSN)
# CSCOPE=$(CSCOPE_DIR)/cscope

#
# the SPLINT command (for cg's STXGDB)
#
SPLINT_VSN=splint-3.1.2
SPLINT_DIR=$(TOP)/support/tools/$(SPLINT_VSN)
# SPLINT=$(SPLINT_DIR)/cscope

# --------------------------------------------------
# the MSQL library
#
# those may be redefined in an architecture specific
# defines file, to whereever the stuff is found
#
MSQLDIR=$(TOP)/support/msql/msql-1.0.14

MSQL_INCLUDE_DIR=$(MSQLDIR)/include
MSQL_LIB_DIR=$(MSQLDIR)/lib

#MSQL_INCLUDE_DIR=/usr/local/include
#MSQL_LIB_DIR=/usr/local/lib

# --------------------------------------------------
# The netsnmp library
#
# if already in /usr/lib:
# DYNAMIC_LINK_LIB_NETSNMP=-lnetsnmp
# STATIC_LINK_LIB_NETSNMP=
# TARGET_LIB_NETSNMP=
#
# if a local one should be built and used:
# DYNAMIC_LINK_LIB_NETSNMP=
# STATIC_LINK_LIB_NETSNMP=-L$(NETSNMP_LIBDIR) -L$(NETSNMP_LIBDIR)/.libs $(NETSNMP_LIBDIR)/.libs/libnetsnmp.a
# TARGET_LIB_NETSNMP=$(NETSNMP_LIBDIR)/.libs/libnetsnmp.a

# to not build libsnmp, comment this (or redefine as empty)
ARCH_LIBSNMP=libsnmp

# --------------------------------------------------
#
# the GNU dld library (only works with linux-aout)
#
# has to be explicitely added in the defines file,
# by defining
#       OPTIONAL_LIBDL_TARGET= libdld ...
#       EXTRA_LIBS= ... $(LIB_DLD) ...
# and
#       DLINCLUDE=$(DLD_DIR)
#       DLDEFS= ... -DDLD -I$(DLD_DIR) ...
#
#DLD_REL_DIR  =DLD/dld-3.2.5
DLD_REL_DIR  =dld-3.2.5
DLD_DIR      =$(SUPPORT_DIR)/DLD/$(DLD_REL_DIR)
LIB_DLD      =$(DLD_DIR)/libdld.a
LIB_DLD_SO   =$(DLD_DIR)/libdld$(SO_NAME)
MAKEFILE_DLD =Makefile.$(MAKEFILE_EXTENSION)

# --------------------------------------------------
#
# the gnu BFD binary loader library (not working & EXPERIMENTAL)
#
# has to be explicitely added in the defines file,
# by defining
#       OPTIONAL_LIBDL_TARGET= libbfd
#       EXTRA_LIBS= ... $(LIB_BFD) ...
# and
#       DLINCLUDE=$(BFD_DIR)
#       DLDEFS= ... -DBFD -I$(BFD_DIR) ...
#
#BFD_REL_DIR    =DLD/binutils/bfd
BFD_REL_DIR    =binutils/bfd
BFD_DIR        =$(SUPPORT_DIR)/DLD/$(BFD_REL_DIR)
LIB_BFD        =$(BFD_DIR)/libbfd.a
LIB_BFD_SO     =$(BFD_DIR)/libbfd$(SO_NAME)
MAKEFILE_BFD   =Makefile.$(MAKEFILE_EXTENSION)

# --------------------------------------------------
#
# the dl1.6 COFF loader library (not working & EXPERIMENTAL)
#
# has to be explicitely added in the defines file,
# by defining
#       LIBRUN_EXTRA= ... libdl1_6 ...
#       EXTRA_LIBS= ... $(LIB_DL1_6) ...
# and
#       DLINCLUDE=$(DL1_6_DIR)
#       DLDEFS= ... -DDL1_6 -I$(DLD_DIR) ...
#
#DL1_6_REL_DIR=DLD/dl-1.6
DL1_6_REL_DIR=dl-1.6
DL1_6_DIR    =$(SUPPORT_DIR)/DLD/$(DL1_6_REL_DIR)
LIB_DL1_6    =$(DL1_6_DIR)/libdl.a
LIB_DL1_6_SO =$(DL1_6_DIR)/libdl$(SO_NAME)
MAKEFILE_DL1_6 =Makefile.$(MAKEFILE_EXTENSION)

DLLIB=
DLLIB_SO=
#
# in a vendor configuration, add:
#    DLLIB=$(LIB_DLD)
#    DLLIB_SO=$(LIB_DLD_SO)

#
# additional libs
# undefined elsewhere - should be defined where used, instead of undefined where not
#
ML_LD_OBJ_LIBS=-Lml/lib -lmxlin260 -L/usr/lib -lusb

#
# possible extra arch-specific libraries to be linked in the ld -r pass
#
LD_REL_OBJ_LIBS=

MAKEFILE_SUBX=Makefile.$(MAKEFILE_EXTENSION)

#
# extra targets made in support (old: librun) / libview
#
SUPPORT_EXTRA_TARGETS=$(OPTIONAL_LIBDL_TARGET)

LIBVIEW_EXTRA_TARGETS=

#
# extra asm file in librun
#
LIBRUN_MORE=asmhelp.o

#
# classes from individual objects (not in library-packages)
#
#
# EXTRA_UI_CLASSES    = $(WORKSTAT1) $(WORKSTAT2)
# EXTRA_UI_OBJ        = $(OPTIONAL_XWORKSTATION_OBJ) $(OPTIONAL_GLXWORKSTATION_OBJ)
# STATIC_EXTRA_UI_OBJ = $(STATIC_OPTIONAL_XWORKSTATION_OBJ) $(STATIC_OPTIONAL_GLXWORKSTATION_OBJ)
# EXTRA_LINK_UI_OBJ   = $(OPTIONAL_LINK_XWORKSTATION_OBJ) $(OPTIONAL_LINK_GLXWORKSTATION_OBJ)

#
# default display classes
#
# these are reset in the Make.proto (or PACK-config), as desired
#
WORKSTAT1=XWorkstation
WORKSTAT2=GLXWorkstation

OPTIONAL_XWORKSTATION_OBJ=$(LIBVIEWDIR)/XWorkstation$(BIN_O)
OPTIONAL_GLXWORKSTATION_OBJ=$(LIBVIEWDIR)/GLXWorkstation$(BIN_O)
OPTIONAL_OPENGLWORKSTATION_OBJ=$(LIBVIEWDIR)/OGLWorkstation$(BIN_O)
OPTIONAL_WINWORKSTATION_OBJ=$(LIBVIEWDIR)/WinWorkstation$(BIN_O)
OPTIONAL_NXWORKSTATION_OBJ=$(LIBVIEWDIR)/NXWorkstation$(BIN_O)

# STATIC_OPTIONAL_XWORKSTATION_OBJ=$(LIBVIEWDIR)/XWorkstation$(STATIC_O_EXT)
# STATIC_OPTIONAL_GLXWORKSTATION_OBJ=$(LIBVIEWDIR)/GLXWorkstation$(STATIC_O_EXT)
STATIC_OPTIONAL_WINWORKSTATION_OBJ=$(LIBVIEWDIR)/WinWorkstation$(STATIC_O_EXT)
STATIC_OPTIONAL_NXWORKSTATION_OBJ=$(LIBVIEWDIR)/NXWorkstation$(STATIC_O_EXT)

# OPTIONAL_LINK_XWORKSTATION_OBJ=$(LINK_LIBDIR)XWorkstation$(BIN_O)
# OPTIONAL_LINK_GLXWORKSTATION_OBJ=$(LINK_LIBDIR)GLXWorkstation$(BIN_O)
OPTIONAL_LINK_OPENGLWORKSTATION_OBJ=$(LINK_LIBDIR)OGLWorkstation$(BIN_O)
OPTIONAL_LINK_WINWORKSTATION_OBJ=$(LINK_LIBDIR)WinWorkstation$(BIN_O)
OPTIONAL_LINK_NXWORKSTATION_OBJ=$(LINK_LIBDIR)NXWorkstation$(BIN_O)

# misc optional stuff
#
# these are set in the Make.proto (or PACKS) config, to include those libs
# or left undefined, to exclude them.
# The concrete libs (for example gl vs. vgl) are set in the architecture
# specific configurations.

OPTIONAL_LIBOPENGL_TARGET=
OPTIONAL_OPENGL_LIB=
STATIC_OPTIONAL_OPENGL_LIB=$(OPTIONAL_OPENGL_LIB)
OPTIONAL_LINK_OPENGL_LIB=

OPTIONAL_DL_LIB=
STATIC_OPTIONAL_DL_LIB=$(OPTIONAL_DL_LIB)
OPTIONAL_LINK_DL_LIB=


# to get an ObjectFileLoader,
# you have to decide which dynamic load facility to use;
# for sys5.4 like dlopen, add to the architecture config:
#
#    OPTIONAL_LIBDL_TARGET=
#    OPTIONAL_DL_LIB=-ldl
#
# for GNU dld3.2.5, add to the architecture config:
#
#    OPTIONAL_LIBDL_TARGET=libdld
#    OPTIONAL_DL_LIB=$(LIB_DLD)
#    DLDEFS=-DGNU_DL -I$(DLD_DIR)
#
# for GNU BFD loading (which does not work yet):
#
#    OPTIONAL_LIBDL_TARGET=libbfd
#    OPTIONAL_DL_LIB=$(LIB_BFD)
#    DLDEFS=-DBFD_DL -I$(BFD_DIR)


#extra user C-libraries
EXTRA_C_LIBS=

#EXTRA_LIBS=\
#       $(OPTIONAL_GL_LIB) \
#       $(OPTIONAL_OPENGL_LIB) \
#       $(OPTIONAL_DL_LIB) \
#       $(EXTRA_C_LIBS)

EXTRA_LIBS=\
	$(OPTIONAL_DL_LIB) \
	$(EXTRA_C_LIBS)

#STATIC_EXTRA_LIBS=\
#       $(STATIC_OPTIONAL_GL_LIB) \
#       $(STATIC_OPTIONAL_OPENGL_LIB) \
#       $(STATIC_OPTIONAL_DL_LIB) \
#       $(EXTRA_C_LIBS)

STATIC_EXTRA_LIBS=\
	$(STATIC_OPTIONAL_DL_LIB) \
	$(EXTRA_C_LIBS)

#EXTRA_LINK_LIBS=\
#       $(OPTIONAL_LINK_GL_LIB) \
#       $(OPTIONAL_LINK_OPENGL_LIB) \
#       $(OPTIONAL_LINK_DL_LIB) \
#       $(EXTRA_C_LIBS)

EXTRA_LINK_LIBS=\
	$(OPTIONAL_LINK_DL_LIB) \
	$(EXTRA_C_LIBS)

# -------------
# default rules
# -------------

# rule to generate a self-installing deployable
# setup is for backward compatibility;
# see linux*/COMMON/defines
# and mac/COMMON/defines
SETUP_RULE=setup

#
# rule (from stdRules) for library building
#
OBJTARGET=obj$(TARGET_RULE_EXTENSION)
LIBTARGET=all
LIBRUNTARGET=librun.$(A)

#
# rule for target building
# TARGET_RULE_EXTENSION will be appended
#
TARGET_RULE_EXTENSION=_static
TARGET=stx

# -------------
# default flags
# -------------

# collected compiler flags

ASFLAGS=

#
# rule hooks for vendor specific rules
#

PRE_LD_ACTION=emptyRule
POST_LD_ACTION=emptyRule


BIG_STFILE_RULE=__NORMAL_RULE__
VERYBIG_STFILE_RULE=__NORMAL_RULE__
LONGNAME_RULE=__NORMAL_RULE__

__NORMAL_RULE__:
	$(MAKE) $(O_RULE) STFILE=$(BIG_FILE) CC="$(CC)" STC_OPT="$(STC_OPT)" OPT="$(OPT)" SEPINITCODE="$(SEPINITCODE)" XDEFS="$(XDEFS)"


#------------------ end of COMMON/defines ---------------------