Makefiles: use our own makefiles rather than eXept's
...found in `stx/rules`. eXept's makefiles doesn't really
fit Smalltalk/X jv-branch needs - they're cluttered with
workarounds for long unsupported tools and platforms. In the
past we had to monkey-patch them here and there.
From this commit on, building requires GNU Make on UNUX-like
and GCC or Clang toolchain on both UNIX-like and Windows.
There we use MSYS2 environment.
This is a followup for 6fcb351d23a7.
--- a/bin/stmkmf.rb Mon Jul 31 23:03:46 2017 +0100
+++ b/bin/stmkmf.rb Thu Aug 03 09:37:46 2017 +0100
@@ -21,12 +21,20 @@
return 3
end
if top.nil? then
- m = /^TOP=(.*)$/.match(File.read(File.join(cwd, 'Make.proto')))
- if m.nil? then
+ # Spuriously it happens the `Make.proto` is somehow corrupted and not properly
+ # UTF8 encoded. This would result in error like
+ #
+ # `match': invalid byte sequence in UTF-8 (ArgumentError)
+ #
+ # To prevent, replace all invalid character by $?. Not a safest
+ # approach, though.
+ make_proto_contents = File.read(File.join(cwd, 'Make.proto')).encode("UTF-8", :invalid=>:replace, :replace=>"?").encode('UTF-8')
+ match = /^TOP=(.*)$/.match(make_proto_contents)
+ if match.nil? then
STDERR.puts "error: could not ectract TOP from Make.proto (missing TOP=.. definition?)"
return 4
end
- top = m[1]
+ top = match[1]
end
if not File.directory? top then
STDERR.puts "error: TOP not a cwd: #{top}"
@@ -41,17 +49,18 @@
f.puts <<-CONTENTS
#
# Do not edit! Automatically generated by stmkmf.
-#
-include #{top}/rules/stdHeader
-include #{top}/configurations/COMMON/defines
+#
+
+MAKELIB ?= #{top}/../../makelib
+
+include $(MAKELIB)/stdHeader
include #{top}/configurations/vendorConf
-include #{top}/configurations/myConf
-include #{top}/rules/stdHeader2
+include $(MAKELIB)/stdHeader2
include Make.spec
include Make.proto
-include #{top}/rules/stdRules
+include $(MAKELIB)/stdRules
CONTENTS
end
return 0
--- a/makelib/README.md Mon Jul 31 23:03:46 2017 +0100
+++ b/makelib/README.md Thu Aug 03 09:37:46 2017 +0100
@@ -1,16 +1,16 @@
# Makefile library for Smalltalk/X jv-branch
-This directory contains makefile definitions for building individual
+This directory contains makefiles for building individual
Smalltalk/X packages.
## Background & Rationale
Essentially this is a replacement for eXept's definitions in
-`stx/configurations`. However, they don't fit Smalltalk/X jv-branch
-needs. In the past, we used to monkey-patch eXept's definitions and tweak
-them here and there, but this lead to a big mess (not a surprise) in
-`rakelib/compile.rake`.
+`stx/configurations` and `stx/rules`. eXept's makefiles don't fit
+Smalltalk/X jv-branch needs. In the past, we used to monkey-patch eXept's
+makefiles and tweak them here and there, but this lead to a big mess (not a
+surprise) in `rakelib/compile.rake`.
As we want to support more OS/CPU combinations, thing would go rather
wild and truly messy. Hence we provide our own, starting off with
@@ -19,7 +19,6 @@
packages to unify *NIX and Windows builds (since Windows now use different
schema based on ancient, unmaintained Borland make).
-It is likely that in a future this directory will also contain make rules
-for actual compilation - stuff now located `stx/rules` (pulled from eXept's
-CVS)
+Time will show if this ever become true. Let's hope.
+
--- a/makelib/config-linux-i386.make Mon Jul 31 23:03:46 2017 +0100
+++ b/makelib/config-linux-i386.make Thu Aug 03 09:37:46 2017 +0100
@@ -4,7 +4,7 @@
#
# $Header: /cvs/stx/stx/configurations/linux-elf/amd64_mode32/defines,v 1.25 2016-03-17 22:32:46 stefan Exp $
-include $(MAKELIB_DIR)/config-linux.make
+include $(MAKELIB)/config-linux.make
CONF=config-linux-i386
--- a/makelib/config-linux-x86_64.make Mon Jul 31 23:03:46 2017 +0100
+++ b/makelib/config-linux-x86_64.make Thu Aug 03 09:37:46 2017 +0100
@@ -4,7 +4,7 @@
#
# $Header: /cvs/stx/stx/configurations/linux-elf/x86_64/defines,v 1.18 2016-08-29 08:52:44 stefan Exp $
-include $(MAKELIB_DIR)/config-linux.make
+include $(MAKELIB)/config-linux.make
CONF=config-linux-x86_64
--- a/makelib/config-linux.make Mon Jul 31 23:03:46 2017 +0100
+++ b/makelib/config-linux.make Thu Aug 03 09:37:46 2017 +0100
@@ -1,7 +1,7 @@
#------------------ start of linux-elf/COMMON/defines ---------------------
#
# $Header: /cvs/stx/stx/configurations/linux-elf/COMMON/defines,v 1.92 2016-07-19 19:56:46 stefan Exp $
-include $(MAKELIB_DIR)/config.make
+include $(MAKELIB)/config.make
CONF_VENDOR=linux
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/makelib/stdHeader Thu Aug 03 09:37:46 2017 +0100
@@ -0,0 +1,174 @@
+#
+# MIMEType: application/x-make
+#
+# this Makefile was generated by CONFIG / make Makefile
+#
+# do not change here
+# - change in Make.proto, stdRules or stdHeader
+#
+# otherwise your changes are lost when Makefiles are recreated
+#
+# if your system is not the one described below (CONF=),
+# you have to rerun config in stc's TOP directory !
+#
+
+default:: redefinableAll
+
+#------------------ start of rules/stdHeader ---------------------
+#
+# $Header: /cvs/stx/stx/rules/stdHeader,v 1.33 2014-11-20 16:24:40 cg Exp $
+#
+
+#
+# the default target;
+# this is redefined for HP and AIX, to compile some individual files
+# using different options
+# (due to exponential grows of their cc, they cannot compile certain files with -O/-O2)
+#
+ALL_TARGET=all
+
+#
+# where things get collected when building
+#
+BUILD_DIR=$(TOP)/build
+BUILD_BIN_DIR=$(BUILD_DIR)/bin
+BUILD_PACKAGE_DIR=$(BUILD_DIR)/packages
+
+# -------------------------------------------
+# installation directories (for make install)
+# -------------------------------------------
+
+INSTALLBASE=/opt/smalltalk/$(RELEASE)
+
+INSTALLTOP_DIR=$(INSTALLBASE)/packages/$(MODULE)/$(MODULE_DIR)
+INSTALLLIB_DIR=$(INSTALLTOP_DIR)
+INSTALLBIN_DIR=$(INSTALLBASE)/bin
+
+INSTALLBITMAPSLIB_DIR=$(INSTALLLIB_DIR)
+INSTALLDOCLIB_DIR=$(INSTALLLIB_DIR)
+DOC_DIR=doc
+
+INSTALL_SUBDIRS=$(ALLSUBDIRS)
+
+#
+# if found in a directory,
+# those are also installed
+#
+INSTALLED_LOAD_SCRIPTS=loadAll
+
+#
+# LIB is used for recursive make-invocations;
+# it needs a non-empty default for make to accept the Makefile
+#
+LIB=none
+
+H=H
+OUTDIR=
+
+INCL=$(INCLUDE)/
+
+STCHDR=$(INCLUDE)/stc.h $(INCLUDE)/stcIntern.h
+# STC_MSGFORMAT= -messageFormat: gcc
+STC_MSGFORMAT= -messageFormat: gcc-jenkins
+SYSDEP_OBJS=$(UNIX_OBJS)
+AR_OBJS=$(OBJS) $(AUXOBJS)
+
+UNCRITICALOBJS='xxx.o'
+UNCRITICALOPT=+optspace3
+AUTOLOADEDOBJS='yyy.o'
+
+#
+# SUBDIRS is used to make targets;
+# ALLSUBDIRS are those in which makefiles are created
+# (i.e. this allows passive directories, like all in
+# clients to be added)
+#
+
+SUBDIRS=
+ALLSUBDIRS=$(SUBDIRS)
+
+RULEDIR=$(TOP)/rules
+
+STBC=$(RULEDIR)/stbc
+STDHEADER=stdHeader
+STDRULES=stdRules
+STDHEADER_NT=stdHeader_nt
+STDRULES_NT=stdRules_nt
+
+#
+# files to be rcs managed
+# this is ok for classlib directories;
+# c directories (librun, stc) must redefine it
+#
+RCSSOURCES=*.st Make.proto
+
+#
+# files to be symlinked to a common source tree
+# this is ok for classlib directories;
+# c directories (librun, stc) must redefine it
+#
+LINKSOURCES=*.st Make.proto
+
+#
+# files to be delivered by default.
+# to be redefined in sub-Make.protos
+#
+DELIVERSOURCES=$(RCSSOURCES)
+DELIVERMISC=Makefile *.stc .dir.info README*
+DELIVERBINARIES=lib*.o lib*.so lib*.a
+
+#
+# rule for object file creation.
+# If redefined, there must be a corresponding rule in
+# the architecture specific config file
+# This is extra tricky and not recommended
+#
+O_RULE=__STANDARD_O_RULE__
+C_RULE=__STANDARD_C_RULE__
+S_RULE=__STANDARD_S_RULE__
+H_RULE=__STANDARD_H_RULE__
+
+SPACEOPT_O_RULE=__STANDARD_O_RULE__
+SPEEDOPT_O_RULE=__STANDARD_O_RULE__
+
+CC_SPEEDOPT=
+CC_SPACEOPT=
+
+#
+# rules to link .o files into a classLibrary
+#
+LINKOBJRULE=newobj_link
+SEPINITLINKOBJRULE=newobj_link
+
+#
+# rule to create a classList & to edit it into a .c file
+#
+CLASSLISTRULE=genClassList
+CLASSLISTEDITRULE=classListEdit
+
+#
+# special kludge for HP's stupid cpp limitations
+#
+# allows definition of another rule for big-st files,
+# and setting of BIG_ST_RULE=some_other_rule
+# see libview/Make.proto for an example
+#
+
+BIG_STFILE_RULE=BIG_STFILE_NORMAL
+BIG_STFILE_NORMAL:
+ $(STC) -CC="$(CC)" $(STCFLAGS) $(CFLAGS) -c $(BIG_FILE).st
+
+#
+# special kludge for a bug in NeXT's (2.1) assembler,
+# which dumps core for some long identifiers
+# (funny, only happens with SeqColl)
+#
+LONGNAME_RULE=LONGNAME_NORMAL
+LONGNAME_NORMAL:
+ $(STC) -CC="$(CC)" $(STCFLAGS) $(CFLAGS) -c $(LONGNAME_FILE).st
+
+SHAREDCLASSLIBRARIES=""
+
+UPDATETARGET=all
+
+#------------------ end of rules/stdHeader ---------------------
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/makelib/stdHeader2 Thu Aug 03 09:37:46 2017 +0100
@@ -0,0 +1,23 @@
+#------------------ start of rules/stdHeader2 ---------------------
+
+# collected compiler flags
+
+CC_OPTS=$(CCCOMMONOPT) $(CCARCHCOMMONOPT) $(CCARCHOPT) $(OPT) $(CCCONFOPT) $(CC_CMD_OPT)
+
+STC_OPTS=$(STCCOMMONOPT) $(STCARCHCOMMONOPT) $(STCARCHOPT) $(STCOPT) $(STCCONFOPT) $(STCLOCALOPT) $(STC_CMD_OPT)
+
+CC_DEFS=$(DEFS) $(COMMONDEFS) $(ARCHCOMMONDEFS) $(ARCHDEFS) $(OTHERDEFS) $(LOCALDEFS)
+
+CFLAGS = -I$(INCLUDE) $(LOCALINCLUDES) $(OS) $(CC_OPTS) $(DBG) $(CC_DEFS) $(CCLOCALOPT)
+
+MAIN_CFLAGS= -I$(INCLUDE) $(OS) $(ARCHOPT) $(CCCONFOPT) $(MAIN_OPT) $(DBG) $(CC_DEFS)
+
+STCFLAGS = -CC="$(CC)" -Y$(INCLUDE) -I$(INCLUDE_IN) $(STCOPT) $(STC_OPTS) $(LIMITSUPERINCLUDE) $(FORCEAUTOLOAD) -scmType: auto -sha1
+
+SNMP_CC_OPT=$(ARCHOPT) $(OPT)
+
+DLD_CFLAGS=$(CC_OPTS) $(DBG) $(CC_DEFS)
+
+LINKOBJS = $(OBJS)
+
+#------------------ end of rules/stdHeader2 ---------------------
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/makelib/stdHeader_bc Thu Aug 03 09:37:46 2017 +0100
@@ -0,0 +1,765 @@
+#
+# $Header: /cvs/stx/stx/rules/stdHeader_bc,v 1.197 2017-06-14 13:36:25 cg Exp $
+#
+# MIMEType: application/x-make
+# EOLMode: msdos
+#
+# The name of this rules file is now misleading; it used to be used only for
+# borland, but now also contains visualC and other compiler definitions.
+# actually, it is used for all Windows builds.
+#
+# defaults to borland-build (USEBC=1), unless invoked with any of:
+# USEVC=1 - visualC-make
+# USELCC=1 - lcc make (suspended work - unfinished)
+# USETCC=1 - tiny-C (tcc) (suspended work - unfinished)
+# USEMINGW64=1 - mingw-C (ongoing work)
+
+!ifdef USEVC
+! undef USEBC
+!endif
+
+# use borland-cc by default
+!ifndef USEBC
+! ifndef USEVC
+! ifndef USELCC
+! ifndef USETCC
+! ifndef USEMINGW32
+! ifndef USEMINGW64
+USEBC=1
+! endif
+! endif
+! endif
+! endif
+! endif
+!endif
+
+MAKENSIS=makensis
+MAKENSIS=c:\programme\nsis\makensis
+MAKENSIS="$(PROGRAMFILES)\nsis\makensis.exe"
+
+#STC_MSGFORMAT= -messageFormat: gcc
+STC_MSGFORMAT= -messageFormat: gcc-jenkins
+
+COMMONSYMBOLS=+commonSymbols
+
+# uncomment this, if the stc compiled C files should be kept for debugging
+# KEEPCFILE=1
+
+# borland cbuilder version
+CBUILDER5=1
+#CBUILDER6=1
+
+!ifdef WINVER_5
+IPHLPAPI_LIB=iphlpapi.lib
+!else
+IPHLPAPI_LIB=
+!endif
+
+# all compiler specific libs are now under lib (used to be at top level)
+LIBDIR_PARENT=lib
+
+#
+# extensions
+#
+O=obj
+H=STH
+RES=res
+
+MAKE=make.exe
+
+!ifdef USEBC
+
+# ----------------
+# Borland C
+# ----------------
+
+# LIBDIR: final destination directory for lib's lib\bc, lib\vc, lib\lcc etc.
+# OUTDIR: temporary output directory (path) .\objbc\ .\objvc\ .\objlc\
+# OBJDIR: name of object directory (not path) - objbc, objvc or objlc
+LIBDIR_NAME=$(LIBDIR_PARENT)\bc
+LIBDIR=$(TOP)\$(LIBDIR_NAME)
+LIBDIR_LIBRUN=$(LIBDIR)
+OBJDIR=objbc
+OBJDIR_LIBRUN=$(OBJDIR)
+OUTDIR=objbc\\
+
+# the stxc32i is a stripped down version
+# of the original cw32i for CBuilder3
+#
+# cs32i is for CBuilder4
+#
+# CAUTION:
+# We need special build borland libraries for STX/X,
+# (they have to be linked to a different base address).
+# Look into support\win32\borland\not_delivered for more information
+# and build procedures. The generated libraries are in support\win32\borland.
+
+# CBUILDER5
+# RT_LIB = cs32mt.lib
+# The libraries from BCC 5.1 have not yet been adapted,
+# don't use them!
+#RT_LIB = cw32i.lib
+#RT_DLL = cc3250.dll
+
+# Use libraries from BCC 4
+RT_LIB = cs32i.lib
+RT_DLL = cs3245.dll
+
+X11_DLL = X11.dll
+XEXT_DLL = Xext.dll
+
+#
+# where are the bctools ?
+#
+! ifndef BCB
+# BCB = $(MAKEDIR)\..
+BCB=c:\Borland\bcc55
+! endif
+
+
+# FOR BORLAND default (as installed, in path)
+# CC=bcc32.exe
+# RC=brcc32 -DWIN32
+# LINK32=ilink32.exe
+
+# FOR BORLAND 5.5 (CBuilder5, free command line tools)
+# BCB=c:\Borland\bcc55
+
+# FOR BORLAND 5.6 (CBuilder6)
+# BCB=c:\Borland\bcc56
+
+CC=$(BCB)\bin\bcc32.exe
+RC=$(BCB)\bin\brcc32 -DWIN32
+LINK32=$(BCB)\bin\ilink32.exe
+LIB32=$(BCB)\bin\tlib.exe
+AS=tasm32.exe
+MAKE_BAT=bmake
+USE_ARG=-DUSEBC
+APP_LINKER=$(LINK32)
+# APP_LFLAGS = -L$(LIBDIR);$(BCB)\lib;$(DEBUGLIBPATH) -H:0x400000 -Hc:0x100000 -S:0x40000 -Sc:0x10000 -ap -Tpe -x -Gn -v -Ao:0x10000
+APP_LFLAGS = -L$(LIBDIR);$(BCB)\lib -S:0x40000 -Sc:0x10000 -Tpe -x -Gn -v -Ao:0x10000
+APP_RT_LIB=
+APP_IMPORTLIBS=import32.lib
+CRT_STARTUP_CONSOLE=c0x32.obj
+CRT_STARTUP_NOCONSOLE=c0w32.obj
+LFLAGS_CONSOLE=-ap
+LFLAGS_NOCONSOLE=-aa
+
+!else
+! ifdef USEVC
+
+# ----------------
+# MS visual c
+# ----------------
+
+# !MESSAGE WINDOWSSDKDIR is $(WINDOWSSDKDIR)
+# !MESSAGE VSINSTALLDIR is $(VSINSTALLDIR)
+
+LIBDIR_NAME=$(LIBDIR_PARENT)\vc
+LIBDIR=$(TOP)\$(LIBDIR_NAME)
+# LIBDIR=$(TOP)\librun\Debug
+LIBDIR_LIBRUN=$(LIBDIR)
+OBJDIR=objvc
+OBJDIR_LIBRUN=$(OBJDIR)
+OUTDIR=objvc\\
+
+! if "$(WINDOWSSDKDIR)x" == "x"
+
+SDK6=$(PROGRAMS)\Microsoft SDKs\Windows\v6.0A
+SDK70a=$(PROGRAMS)\Microsoft SDKs\Windows\v7.0A
+SDK70a_x86=$(PROGRAMS86)\Microsoft SDKs\Windows\v7.0A
+SDK71=$(PROGRAMS)\Microsoft SDKs\Windows\v7.1
+SDK71_x86=$(PROGRAMS86)\Microsoft SDKs\Windows\v7.1
+
+SDK=$(SDK71_x86)\\
+SDK=$(SDK70a_x86)\\
+
+
+!MESSAGE WINDOWSSDKDIR not set; assuming $(SDK)...
+
+! else
+
+SDK=$(WINDOWSSDKDIR)
+
+! endif
+
+! if "$(VSINSTALLDIR)x" == "x"
+!ERROR VSINSTALLDIR not set. Please call the appropriate setup script (typically: C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat)
+# VSINSTDIR=%ProgramFiles%\Microsoft Visual Studio 8\\
+# VSINSTDIR=%ProgramFiles%\Microsoft Visual Studio 9.0\\
+VSINSTDIR=%ProgramFiles%\Microsoft Visual Studio 10.0\\
+
+! else
+
+VSINSTDIR=$(VSINSTALLDIR)
+
+! endif
+
+VCINSTALLDIR=$(VSINSTDIR)VC
+VCBINDIR=$(VCINSTALLDIR)\bin\\
+VCLIBDIR=$(VCINSTALLDIR)\lib\\
+
+VS80COMNTOOLS=$(VSINSTDIR)Common7\Tools\\
+WINDOWSKIT=c:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt
+INCLUDE_WINDOWSKIT=-I"$(WINDOWSKIT)"
+
+# VCBINDIR=
+LINK32="$(VCBINDIR)link.exe"
+CC="$(VCBINDIR)cl.exe"
+LIB32="$(VCBINDIR)lib.exe"
+MAKE_BAT=vcmake
+MAKE=make.exe
+USE_ARG=-DUSEVC
+RC="$(SDK)bin\rc.exe"
+APP_LINKER=$(LINK32)
+CRT_STARTUP_CONSOLE=
+CRT_STARTUP_NOCONSOLE=
+LFLAGS_CONSOLE=/nologo /DEBUG /DYNAMICBASE:NO /MACHINE:X86 /ERRORREPORT:PROMPT
+LFLAGS_NOCONSOLE=/nologo /DEBUG /DYNAMICBASE:NO /MACHINE:X86 /ERRORREPORT:PROMPT
+APP_RT_LIB=
+APP_IMPORTLIBS=kernel32.lib
+
+! else
+! ifdef USELCC
+
+# ------------
+# lcc compiler
+# ------------
+LIBDIR_NAME=$(LIBDIR_PARENT)\lcc
+LIBDIR=$(TOP)\$(LIBDIR_NAME)
+LIBDIR_LIBRUN=$(TOP)\$(LIBDIR_PARENT)\vc
+LIBDIR_LIBRUN=$(LIBDIR)
+OBJDIR=objlcc
+OBJDIR_LIBRUN=objvc
+OUTDIR=objlcc\\
+
+LCCDIR=c:\lcc
+LCCBINDIR=$(LCCDIR)\bin
+CC=$(LCCBINDIR)\lcc.exe
+RC=$(LCCBINDIR)\lrc
+LINK32=$(LCCBINDIR)\lcclnk.exe
+LINK32_DLL=$(LCCBINDIR)\lcclnk.exe
+MAKE_BAT=lccmake
+USE_ARG=-DUSELCC
+APP_LINKER=$(LINK32)
+# APP_LFLAGS = -L$(LIBDIR);$(BCB)\lib;$(DEBUGLIBPATH) -H:0x400000 -Hc:0x100000 -S:0x40000 -Sc:0x10000 -ap -Tpe -x -Gn -v -Ao:0x10000
+CRT_STARTUP_CONSOLE=
+CRT_STARTUP_NOCONSOLE=
+LFLAGS_DLL=-dll
+LFLAGS_CONSOLE=
+LFLAGS_NOCONSOLE=
+APP_RT_LIB=
+APP_IMPORTLIBS=kernel32.lib
+
+! else
+! ifdef USETCC
+
+# ------------
+# tcc compiler
+# ------------
+O=o
+
+LIBDIR_NAME=$(LIBDIR_PARENT)\tcc
+LIBDIR=$(TOP)\$(LIBDIR_NAME)
+# LIBDIR=$(TOP)\librun\Debug
+LIBDIR_LIBRUN=$(TOP)\$(LIBDIR_PARENT)\vc
+OBJDIR=objtcc
+OBJDIR_LIBRUN=objvc
+OUTDIR=objtcc\\
+
+TCCDIR=$(TOP)\support\tcc
+CC=$(TCCDIR)\tcc.exe
+LINK32=$(TCCDIR)\tcc.exe
+MAKE_BAT=tccmake
+USE_ARG=-DUSETCC
+APP_LINKER=$(LINK32)
+# APP_LFLAGS = -L$(LIBDIR);$(BCB)\lib;$(DEBUGLIBPATH) -H:0x400000 -Hc:0x100000 -S:0x40000 -Sc:0x10000 -ap -Tpe -x -Gn -v -Ao:0x10000
+CRT_STARTUP_CONSOLE=
+CRT_STARTUP_NOCONSOLE=
+LFLAGS_CONSOLE=
+LFLAGS_NOCONSOLE=
+APP_RT_LIB=
+APP_IMPORTLIBS=kernel32.lib
+
+! else
+! if defined(USEMINGW32) || defined(USEMINGW64)
+
+# ------------
+# mingw gcc compiler
+# ------------
+
+LIBDIR_NAME=$(LIBDIR_PARENT)\mingw
+LIBDIR=$(TOP)\$(LIBDIR_NAME)
+# LIBDIR=$(TOP)\librun\Debug
+LIBDIR_LIBRUN=$(TOP)\$(LIBDIR_PARENT)\mingw
+OBJDIR=objmingw
+OBJDIR_LIBRUN=objmingw
+OUTDIR=objmingw/
+
+
+! ifndef MINGW_DIR
+ echo "MINGW_DIR is not set"
+MINGW_DIR="C:\\MINGW"
+! endif
+
+# do not quote here;
+# must already be quoted in the shell-env, if it contains spaces (program files\...)
+MINGWDIR=$(MINGW_DIR)
+MINGWBINDIR=$(MINGWDIR)\bin
+MINGWLIBDIR=$(MINGWDIR)\lib
+
+CC=$(MINGWBINDIR)\gcc.exe
+# LINK32=$(MINGWBINDIR)\ld.exe
+LINK32=$(CC)
+LINK32_DLL=$(CC)
+MAKE_BAT=mingwmake
+RC=$(MINGWBINDIR)\windres
+RFLAGS=
+RES=$(O)
+APP_LINKER=$(CC)
+
+! if defined(USEMINGW32)
+USE_ARG=-DUSEMINGW32=1
+! else
+USE_ARG=-DUSEMINGW64=1
+! endif
+
+# the following generates a correct exe, but with console!
+CRT_STARTUP_CONSOLE=
+CRT_STARTUP_NOCONSOLE=
+
+LFLAGS_DLL=-g -shared
+# -L$(MINGWDIR)\lib
+LFLAGS_CONSOLE=-g
+# -L$(MINGWDIR)\lib
+LFLAGS_NOCONSOLE=-g -mwindows
+# -L$(MINGWDIR)\lib
+APP_RT_LIB=
+#APP_IMPORTLIBS=$(MINGWLIBDIR)\libkernel32.a
+APP_IMPORTLIBS=
+
+
+
+! else
+error error error
+! endif
+! endif
+! endif
+! endif
+!endif
+
+#slashified OUTDIR, because MIGNW does not handle backslashes correctly in a response file (sigh)
+!if defined(USEMINGW32) || defined(USEMINGW64)
+OUTDIR_SLASH=objmingw/
+!else
+OUTDIR_SLASH=$(OUTDIR)
+!endif
+
+STC_BINDIR=$(TOP)\stc
+GENDATE_UTILITY=$(TOP)\librun\genDate.com
+
+#
+# give disjount base addresses
+# (its not fatal, if libs overlap;
+# however, startup time and sharability are affected if they do ...)
+#
+
+LIBORACLE_BASE =0x03d00000
+LIBJAVA_BASE =0x04000000
+LIBOPENGL_BASE =0x04400000
+
+
+WORKFLOW_BASE =0x66000000
+# 680000
+# 7fffff
+EXPECCO_BASE =0x67000000
+# 807000
+# dfffff
+EXPECCOREPORT_BASE =0x67e00000
+# 69000
+# fffff
+EXPECCOSTORAGE_BASE =0x67f00000
+# 4C000
+# 7ffff
+EXEPT_PDF_BASE =0x67f80000
+# 55000
+# dffff
+EXEPT_SIGNEDZIP_BASE =0x67fe0000
+# E000
+# 1ffff
+
+DAPASX_BASE =0x66000000
+
+LIBRUN_BASE =0x69000000
+# 181000
+# 2FFFFF
+LIBSOAP_BASE =0x69300000
+# 98000
+# fffff space
+# fffff end-addr
+GOODIES_NET_BASE =0x69400000
+# E7000
+# 1fffff space
+# 5fffff end-addr
+GOODIES_AUTH_BASE =0x69600000
+# 12000
+# 3ffff space
+# 3ffff end-addr
+# **FREE** =0x69640000
+#
+# 3ffff space
+# 7ffff end-addr
+GOODIES_POSTSCRIPT_BASE =0x69680000
+# 2A000
+# 3ffff space
+# Bffff end-addr
+GOODIES_RDOIT_BASE =0x696C0000
+# 17000
+# 3ffff space
+# fffff end-addr
+GOODIES_COMM_BASE =0x69700000
+# E1000
+# 1fffff space
+# 8fffff end-addr
+LIBCOMPAT_BASE =0x69900000
+# 4a000
+# fffff space
+# fffff end-addr
+# **FREE** =0x69A00000
+#
+# 5fffff space
+# Ffffff end-addr
+
+LIBBASIC_BASE =0x6A000000
+# 52b000
+# bfffff space
+LIBOSI_ASN1_BASE =0x6AC00000
+# b7000
+# fffff space
+# fffff end-addr
+LIBCRYPT_BASE =0x6AD00000
+# 7B000
+# fffff space
+# fffff end-addr
+LIBBASIC3_BASE =0x6AE00000
+# b2000
+# 1fffff space
+# Ffffff end-addr
+LIBVIEW_BASE =0x6B000000
+# 25d000 used
+# 6fffff space
+# 6fffff end-addr
+LIBVIEW2_BASE =0x6B700000
+# 13e000
+# 2fffff space
+# 9fffff end-addr
+LIBCOMP_BASE =0x6BA00000
+# 138000
+# 2fffff space
+# cfffff end-addr
+LIBBASIC2_BASE =0x6BD00000
+# cd000
+# 1fffff space
+# efffff end-addr
+LIBHTMLTREE_BASE =0x6BF00000
+# ba000
+# fffff space
+# Ffffff end-addr
+
+LIBTOOL_BASE =0x6C000000
+# 623000 used
+# Bfffff space
+# Bfffff end-addr
+LIBTOOL2_BASE =0x6CC00000
+# 12c000 used
+# 3fffff space
+# Ffffff end-addr
+
+LIBWIDG_BASE =0x6D000000
+# 1f8000
+# 4fffff
+LIBWIDG2_BASE =0x6D500000
+# 18a000
+# 7fffff
+LIBWEBSERVER_BASE =0x6D800000
+# 15c000
+# 3fffff
+# Bfffff
+LIBWIDG3_BASE =0x6DC00000
+# 18000
+# 3ffff
+WINWORKSTAT_BASE =0x6DC40000
+# 44000
+# fffff
+XWORKSTAT_BASE =0x6DD00000
+# 3F000
+# fffff
+LIBUI_BASE =0x6DE00000
+# c4000
+# 1fffff
+# Ffffff
+
+LIBREGEX_BASE =0x6E800000
+# 42000
+# 7ffff
+LIBXMLSTX_BASE =0x6E880000
+# 16000
+# 3FFFF
+# bffff
+LIBSOAP_XMLSIG_BASE =0x6E8C0000
+# 17000
+# 3FFFF
+# fffff
+LIBXMLVW_BASE =0x6E900000
+# 79000
+# fffff
+LIBHTMLTREE_BASE =0x6EA00000
+# AB000
+# 1fFFFF
+# Bfffff
+
+
+LIBJAVASCRIPT_BASE =0x6EC00000
+# 64000
+# fffff
+LIBODBC_BASE =0x6ED00000
+# 4a000
+# fffff
+LIBBOSS_BASE =0x6EE00000
+# 2d000
+# 7ffff
+LIBDB_BASE =0x6EE80000
+# 1b000
+# fffff
+LIBHTML_BASE =0x6EF00000
+# 82000
+# fffff
+
+
+LIB_RB_HELPERS_BASE =0x6f000000
+# 2b000
+# 7ffff
+LIB_RB_CHANGES_BASE =0x6f080000
+# 2F000
+# bffff
+LIB_XML_YAXO_BASE =0x6f0c0000
+# 2F000
+# fffff
+LIB_RB_PARSER_BASE =0x6f100000
+# 95000
+# fffff
+LIB_RB_REFACTORING_BASE =0x6f200000
+# 9e000
+# fffff
+
+# 0x6f300000
+
+!ifdef USEBC
+MAKE_ZLIB_ARG= -f win32\Makefile.bor
+MAKE_BZ2LIB_ARG= -f Makefile.bor
+MAKE_FDMLIB_ARG= -f Makefile.bcc
+!else
+! ifdef USELCC
+MAKE_ZLIB_ARG= -f win32\Makefile.lcc
+MAKE_BZ2LIB_ARG= -f Makefile.lcc
+MAKE_FDMLIB_ARG= -f Makefile.lcc
+! else
+! ifdef USEVC
+MAKE_ZLIB_ARG= -f win32\Makefile.msvc
+MAKE_BZ2LIB_ARG= -f Makefile.msvc
+MAKE_FDMLIB_ARG= -f Makefile.msvc
+! else
+! ifdef USETCC
+MAKE_ZLIB_ARG= -f win32\Makefile.tcc
+MAKE_BZ2LIB_ARG= -f Makefile.tcc
+MAKE_FDMLIB_ARG= -f Makefile.tcc
+! else
+! if defined(USEMINGW32) || defined(USEMINGW64)
+MAKE_ZLIB_ARG= -f win32\Makefile.mingw
+MAKE_BZ2LIB_ARG= -f Makefile.mingw
+MAKE_FDMLIB_ARG= -f Makefile.mingw
+! else
+error error error
+! endif
+! endif
+! endif
+! endif
+!endif
+
+!ifdef LIB_BASE
+! ifdef USEBC
+LIB_BASE_LD_ARG=-b:$(LIB_BASE)
+! endif
+! ifdef USEVC
+#LIB_BASE_LD_ARG=/BASE:$(LIB_BASE)
+! endif
+!endif
+
+ZLIB_DIR=$(TOP)\support\zlib-1.2.3
+ZLIB=$(OBJDIR)\zlib.lib
+
+BZ2LIB_DIR=$(TOP)\support\bz2lib
+BZ2LIB=$(BZ2LIB_DIR)\bz2lib.lib
+
+#
+# final destination directory for exe's and dll's
+#
+BINDIR=$(TOP)\projects\smalltalk
+STX=$(BINDIR)\stx.com
+
+#
+# input/output directory for STX-includes
+#
+STX_INCDIR=$(TOP)\include
+INCLUDE=$(STX_INCDIR)
+INCL=$(TOP)\include\\
+
+LIBRUN=$(LIBDIR)\librun.lib
+
+# WINSOCK=wsock32
+WINSOCK=ws2_32
+WINSOCK_LIB=$(WINSOCK).lib
+L_WINSOCK=-l$(WINSOCK)
+
+!ifdef USEBC
+
+# BORLAND
+SYS_INCL=-I$(BCB)\include -I..\support\win32\include
+OPENGL_INCLUDE=-I$(BCB)\include\gl
+
+# Linker definition file for DLL's (generic)
+DEF_FILE=$(TOP)\rules\bc_dll.def
+SYSLIBDIR=$(BCB)\lib\release
+IPHLPAPI_LIB=$(BCB)\lib\PSDK\iphlpapi.lib
+
+!else
+! ifdef USEVC
+
+# VISUALC
+SYS_INCL=-I"$(VCINSTALLDIR)\include" -I"$(SDK)Include" -I"$(SDK2)Include" -I"$(SDK3)Include" -I..\librun
+SYS_INCL=-I"$(VCINSTALLDIR)\include" -I"$(SDK)Include" -I..\librun
+SYS_INCL=-I"$(VCINSTALLDIR)\include" -I"$(SDK)Include" $(INCLUDE_WINDOWSKIT) -I..\librun
+OPENGL_INCLUDE=-I$(SDK)\include\gl
+
+DEF_FILE=$(TOP)\rules\vc_dll.def
+SYSLIBDIR=$(SDK)lib\\
+
+LINK32_LIBS=\
+ kernel32.lib \
+ user32.lib \
+ gdi32.lib\
+ shell32.lib\
+ comdlg32.lib \
+ ole32.lib \
+ oleaut32.lib \
+ advapi32.lib \
+ Mpr.lib \
+ uuid.lib \
+ iphlpapi.lib \
+ winmm.lib \
+ winspool.lib \
+# wingdi.lib \
+ version.lib \
+ $(WINSOCK_LIB) \
+ "$(VCLIBDIR)oldnames.lib" \
+# "$(VCLIBDIR)libcmt.lib" \
+ $(LOCALLIBS)
+
+# LINK32_INCREMENTAL=/INCREMENTAL:yes
+
+LINK32_FLAGS=\
+ $(LINK32_LIBS) \
+ $(LIBRUN) \
+ /NOLOGO \
+ /SUBSYSTEM:$(LIB_SUBSYSTEM) \
+ $(LINK32_INCREMENTAL) \
+ /PDB:$(OUTDIR)$(LIBNAME).pdb \
+ /DEBUG \
+ /DLL \
+ /DYNAMICBASE:NO \
+ /MACHINE:X86 \
+ /LARGEADDRESSAWARE \
+ /ERRORREPORT:PROMPT \
+ /OUT:$(OUTDIR)$(LIBNAME).dll
+
+! else
+! ifdef USELCC
+
+# LCC
+SYS_INCL=-I$(LCCDIR)\include
+OPENGL_INCLUDE=-I$(LCCDIR)\include\gl
+
+! else
+! ifdef USETCC
+
+# TCC
+SYS_INCL=-I$(TCCDIR)\include
+OPENGL_INCLUDE=-I$(TCCDIR)\include\gl
+STC_CMD_OPT=-commonRefs
+
+! else
+! if defined(USEMINGW32) || defined(USEMINGW64)
+
+# MINGW
+SYS_INCL=-I$(MINGWDIR)\include
+OPTIONAL_SUPPORT_XLIB_INCLUDE=-I$(TOP)\support\win32\include -I$(TOP)\support\win32\include\x11
+OPENGL_INCLUDE=-I$(MINGWDIR)\include\gl
+# STC_CMD_OPT=-commonRefs
+! if defined(USEMINGW32)
+L_WINSOCK=-lws2_32 -lwsock32
+WINSOCK_LIB=
+! else
+L_WINSOCK=-lws2_32 -lwsock32
+WINSOCK_LIB=
+! endif
+
+! else
+error error error
+! endif
+! endif
+! endif
+! endif
+!endif
+
+STC=$(STC_BINDIR)\stc
+STX_INCL=-I"$(STX_INCDIR)"
+LIBINIT_FILE=$(OUTDIR_SLASH)ntLibInit.$(O)
+
+SYS_LIBS=\
+ "$(SYSLIBDIR)kernel32.lib" \
+ "$(SYSLIBDIR)user32.lib" \
+ "$(SYSLIBDIR)gdi32.lib" \
+ "$(SYSLIBDIR)comdlg32.lib" \
+ "$(SYSLIBDIR)ole32.lib" \
+ "$(SYSLIBDIR)oleaut32.lib" \
+ "$(SYSLIBDIR)advapi32.lib" \
+ "$(SYSLIBDIR)Mpr.lib" \
+ "$(SYSLIBDIR)uuid.lib" \
+ "$(SYSLIBDIR)PSDK\iphlpapi.lib" \
+ "$(SYSLIBDIR)$(WINSOCK_LIB)" \
+ "$(SYSLIBDIR)version.lib" \
+ "$(SYSLIBDIR)libc.lib" \
+ "$(SYSLIBDIR)oldnames.lib"
+
+SYS_LIB_FLAGS=\
+ -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lole32 -loleaut32 -ladvapi32 \
+ -lMpr -luuid -liphlpapi $(L_WINSOCK) -lversion -lwinmm
+
+! if defined(USEMINGW32) || defined(USEMINGW64)
+ODBC32_LIB=-lodbc32
+! else
+ODBC32_LIB=odbc32.lib
+! endif
+
+INTDIR=.
+
+#
+# defaults ...
+#
+
+LIB_SUBSYSTEM=console
+
+!if defined(USEMINGW32) || defined(USEMINGW64)
+OPT=-fPIC -O2 -fno-strict-aliasing -Wno-strict-aliasing -fno-stack-protector -ggdb3 -pipe -U_FORTIFY_SOURCE
+CFLAGS=$(OPT) $(CFLAGS1) $(CFLAGS2) $(LOCALINCLUDES) $(CLOCAL_INCL) $(CFLAGS_LOCAL)
+!endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/makelib/stdRules Thu Aug 03 09:37:46 2017 +0100
@@ -0,0 +1,2995 @@
+#------------------ start of rules/stdRules ---------------------
+#
+# $Header: /cvs/stx/stx/rules/stdRules,v 1.439 2017-02-21 17:10:56 cg Exp $
+#
+# MIMEType: application/x-make
+#
+# Notice: on systems where make does not support the include
+# directive, this file is included as a whole into the generated
+# Makefile, and the following comment applies:
+# these rules come from $(TOP)/rules/stdRules - do not change
+# anything below, the changes will be lost when Makefiles are
+# recreated.
+# If the make command does support include, this file is
+# referenced to by the generated Makefile with an include directive.
+#
+# Do not blame me about the complexity here - nowadays, I would use
+# configure. But I am happy to have a setup which runs on all those wierd
+# machines and have other things to do ...
+#
+# these rules enable the Makefiles to:
+#
+# make mf -- recreate the makefile after a definition change
+#
+# make Makefiles -- recursively walk down and (re)create Makefiles
+#
+# make depend -- extract dependencies from ST sourcefiles
+# and replace BEGINMAKEDEPEND..ENDMAKEDEPEND
+# in Makefile
+#
+# make check -- syntax check all ST-files
+#
+# make <Class>.check -- check syntax of an individual ST-file
+#
+# make debug -- compile without -O / -g instead
+#
+# make objs -- compile to all .o-files
+#
+# make obj -- make a prelinked obj-library file
+#
+# make clobber -- remove all that can be reconstructed
+#
+# make clean -- remove all .o-files, but leave libraries and executables
+#
+# make cleanjunk -- clean junk (intermediate) files
+#
+# make notes -- for stc-developpers only
+# output notes about internal actions
+#
+# make warnings -- for stc-developpers only
+# output warning messages
+#
+# make abbrev.stc -- process local ST-files and collect
+# classname-to-filename abbreviations in
+# a local abbrev.stc file
+#
+# make updAbbrev -- merge all local abbreviations into the
+# global abbrev.stc file (in include/)
+#
+# make rmLocalAbbrevs -- remove all local abbreviations from the
+# global abbrev.stc file (in include/)
+#
+# make collectAbbrev -- recursively process all ST-files and collect
+# className-to-fileName abbreviations
+# in $(INCLUDE)/abbrev.stc
+# (i.e. a recursive updAbbrev)
+#
+# ---- internal rules
+#
+# make newobj -- make a prelinked obj-library file
+# including a classlibrary init-function
+#
+# make sharedobj -- make a prelinked shared obj-library file
+# including a classlibrary init-function
+
+
+# controls if a 'lib' subdirectory is to be made
+# when linking against shared objects
+NO_LINK_LIBDIR="yes"
+
+
+# redefinableAll: Makefile $(ALL_TARGET) postMake
+redefinableAll: $(ALL_TARGET) postMake
+
+postMake::
+
+#
+# notice: the rule below used to be the Makefile rule;
+# however, since gmake automatically executes this rule upon entry,
+# this may lead to trouble, if you are on an NFS mounted file system,
+# and the machines times are not completely in sync (i.e. withing a second).
+# To avoid endless make recursion, this rule is now called 'mf'
+#
+
+MAKEFILE=makefile
+#MAKEFILE=makefile.gen
+RELEASE=`cat $(TOP)/RELEASE`
+MF=mf
+
+.PHONY: $(MF) $(MF)_2 additionalMakefiles
+
+#
+# creates a Makefile from Make.proto, rules and configuration
+#
+$(MF): Make.proto $(RULEDIR)/stdHeader $(RULEDIR)/stdHeader2 $(RULEDIR)/stdRules \
+ $(CONFDIR)/COMMON/defines \
+ $(CONFDIR)/vendorConf \
+ $(CONFDIR)/myConf
+ @-echo "making $(MAKEFILE) for $(CONF) $(CONF_PACKS) ..."
+ @$(MAKE) additionalMakefiles
+ @$(MAKE) $(MF)_2
+
+additionalMakefiles::
+
+$(MF)_2:
+ @-rm -f $(MAKEFILE).bak
+ @-mv $(MAKEFILE) $(MAKEFILE).bak
+ @echo '#' > $(MAKEFILE)
+ @echo '# DO NOT EDIT ' >> $(MAKEFILE)
+ @echo '# automagically generated from Make.proto (by make mf)' >> $(MAKEFILE)
+ @echo "#" >> $(MAKEFILE)
+ @-if [ "$(MAKE_INCLUDE)" != "" ]; then \
+ echo "$(MAKE_INCLUDE) $(TOP)/rules/stdHeader" >>$(MAKEFILE); \
+ else \
+ cat $(RULEDIR)/stdHeader >> $(MAKEFILE) ; \
+ echo "$(MAKEFILE):: $(TOP)/rules/stdHeader" >>$(MAKEFILE); \
+ fi
+ @-if [ -r $(CONFDIR)/COMMON/defines ]; then \
+ if [ "$(MAKE_INCLUDE)" != "" ]; then \
+ echo "$(MAKE_INCLUDE) $(TOP)/configurations/COMMON/defines" >> $(MAKEFILE); \
+ else \
+ cat $(CONFDIR)/COMMON/defines >> $(MAKEFILE); \
+ echo "$(MAKEFILE):: $(CONFDIR)/COMMON/defines" >>$(MAKEFILE); \
+ fi ;\
+ fi
+ @-if [ -r $(CONFDIR)/vendorConf ]; then \
+ if [ "$(MAKE_INCLUDE)" != "" ]; then \
+ echo "$(MAKE_INCLUDE) $(TOP)/configurations/vendorConf" >> $(MAKEFILE); \
+ else \
+ cat $(CONFDIR)/vendorConf >> $(MAKEFILE); \
+ fi ; \
+ fi
+ @-if [ -r $(CONFDIR)/myTools ]; then \
+ if [ "$(MAKE_INCLUDE)" != "" ]; then \
+ echo "$(MAKE_INCLUDE) $(TOP)/configurations/myTools" >> $(MAKEFILE); \
+ else \
+ cat $(CONFDIR)/myTools >> $(MAKEFILE); \
+ fi ;\
+ else \
+ if [ "$(CONF_TOOLS)" != "" ]; then \
+ if [ -r $(CONFDIR)/COMMON/$(CONF_TOOLS) ]; then \
+ cat $(CONFDIR)/COMMON/$(CONF_TOOLS) >>$(MAKEFILE) ; \
+ fi ; \
+ fi ;\
+ fi
+ @-if [ "$(MAKE_INCLUDE)" != "" ]; then \
+ echo "$(MAKE_INCLUDE) $(TOP)/configurations/myConf" >> $(MAKEFILE); \
+ else \
+ cat $(CONFDIR)/myConf >>$(MAKEFILE); \
+ fi
+ @-if [ -r $(CONFDIR)/myPack ]; then \
+ if [ "$(MAKE_INCLUDE)" != "" ]; then \
+ echo "$(MAKE_INCLUDE) $(TOP)/configurations/myPack" >> $(MAKEFILE); \
+ else \
+ cat $(CONFDIR)/myPack >> $(MAKEFILE); \
+ echo "$(MAKEFILE):: $(CONFDIR)/myPack" >>$(MAKEFILE); \
+ fi ;\
+ else \
+ if [ "$(CONF_PACKS)" != "" ]; then \
+ if [ -r $(CONFDIR)/PACKS/$(CONF_PACKS) ]; then \
+ cat $(CONFDIR)/PACKS/$(CONF_PACKS) >>$(MAKEFILE) ; \
+ fi ;\
+ fi ;\
+ fi
+ @-if [ "$(MAKE_INCLUDE)" != "" ]; then \
+ echo "$(MAKE_INCLUDE) $(TOP)/rules/stdHeader2" >>$(MAKEFILE); \
+ else \
+ cat $(RULEDIR)/stdHeader2 >>$(MAKEFILE); \
+ echo "$(MAKEFILE):: $(RULEDIR)/stdHeader2" >>$(MAKEFILE); \
+ fi
+ @-if [ -r Make.spec ]; then \
+ if [ "$(MAKE_INCLUDE)" != "" ]; then \
+ echo "$(MAKE_INCLUDE) Make.spec" >> $(MAKEFILE); \
+ else \
+ cat Make.spec >>$(MAKEFILE); \
+ fi; \
+ fi
+ @-if [ $$TOP"x" != "x" ]; then \
+ echo "TOP="$$TOP >>$(MAKEFILE); \
+ sed '/^TOP=/d' < Make.proto > Make.proto.edit; \
+ cat Make.proto.edit >>$(MAKEFILE); \
+ else \
+ if [ $(TOPOVERWRITE)"x" != "x" ]; then \
+ echo "TOP="$(TOP) >>$(MAKEFILE); \
+ sed '/^TOP=/d' < Make.proto > Make.proto.edit; \
+ cat Make.proto.edit >>$(MAKEFILE); \
+ else \
+ if [ "$(MAKE_INCLUDE)" != "" ]; then \
+ echo $(MAKE_INCLUDE) Make.proto >>$(MAKEFILE); \
+ else \
+ cat Make.proto >>$(MAKEFILE); \
+ echo "$(MAKEFILE):: Make.proto" >>$(MAKEFILE); \
+ fi ;\
+ fi ;\
+ fi
+ @echo "" >>$(MAKEFILE)
+ @echo "BASE_CONF="$(CONF) >>$(MAKEFILE)
+ @echo "BASE_CONF_VENDOR="$(CONF_VENDOR) >>$(MAKEFILE)
+ @echo "CONF_PACKS="$(CONF_PACKS) >>$(MAKEFILE)
+ @echo "CONF_TOOLS="$(CONF_TOOLS) >>$(MAKEFILE)
+ @-if [ $$TOP"x" != "x" ]; then \
+ echo "TOP="$$TOP >>$(MAKEFILE); \
+ echo "TOPOVERWRITE="$$TOP >>$(MAKEFILE); \
+ echo "STC="stc >>$(MAKEFILE); \
+ echo "INCLUDE="$(INCLUDE) >>$(MAKEFILE); \
+ echo "INCLUDE_OUT="$(INCLUDE_OUT) >>$(MAKEFILE); \
+ else \
+ if [ $(TOPOVERWRITE)"x" != "x" ]; then \
+ echo "TOP="$(TOP) >>$(MAKEFILE); \
+ echo "TOPOVERWRITE="$(TOP) >>$(MAKEFILE); \
+ echo "STC="stc >>$(MAKEFILE); \
+ echo "INCLUDE="$(INCLUDE) >>$(MAKEFILE); \
+ echo "INCLUDE_OUT="$(INCLUDE_OUT) >>$(MAKEFILE); \
+ fi; \
+ fi
+ @echo "" >>$(MAKEFILE)
+ @-if [ "$(MAKE_INCLUDE)" != "" ]; then \
+ echo "$(MAKE_INCLUDE) $(TOP)/rules/stdRules" >> $(MAKEFILE); \
+ else \
+ cat $(RULEDIR)/stdRules >>$(MAKEFILE); \
+ echo "$(MAKEFILE):: $(RULEDIR)/stdRules" >>$(MAKEFILE); \
+ fi
+ @-if [ "$(TOUCH)" != "echo" ]; then \
+ $(TOUCH) $(MAKEFILE); \
+ fi
+ @if [ "$(OTHER_MAKE_FILES)" != "" ]; then \
+ $(MAKE) $(OTHER_MAKE_FILES); \
+ fi
+# No longer -- dependencies, abbrev and libInit.stc
+# are created by smalltalk!
+#
+# @$(MAKE) depend MAKEFILE=$(MAKEFILE)
+# @-if [ "$(MAKE_NT_MAKEFILES)" = "yes" ]; then \
+# $(MAKE) nt.mak; \
+# $(MAKE) bmake.bat; \
+# fi
+# @-if [ "$(MAKE_VMS_MAKEFILES)" = "yes" ]; then \
+# $(MAKE) vms.mak; \
+# fi
+# @-if [ "$(SUPPRESS_LOCAL_ABBREVS)" = "" ]; then \
+# $(MAKE) updateAbbrev; \
+# fi
+ #cp $(TOP)/rules/samples/Makefile .
+
+#
+# unconditionally makes a new makefile
+# obsolete.
+#
+makeMakefile:
+ @echo "making $(MAKEFILE) for $(CONF) $(CONF_PACKS) ..."
+ @echo "1b"
+ @-rm -f $(MAKEFILE).bak
+ @-mv $(MAKEFILE) $(MAKEFILE).bak
+ @cat $(RULEDIR)/stdHeader >$(MAKEFILE)
+ @-if [ -r $(CONFDIR)/COMMON/defines ]; then \
+ cat $(CONFDIR)/COMMON/defines >> $(MAKEFILE); \
+ fi
+ @-if [ -r $(CONFDIR)/vendorConf ]; then \
+ cat $(CONFDIR)/vendorConf >> $(MAKEFILE); \
+ fi
+ @-if [ -r $(CONFDIR)/myTools ]; then \
+ cat $(CONFDIR)/myTools >> $(MAKEFILE); \
+ fi
+ @cat $(CONFDIR)/myConf >>$(MAKEFILE)
+ @-if [ -r $(CONFDIR)/myPack ]; then \
+ cat $(CONFDIR)/myPack >> $(MAKEFILE); \
+ else \
+ if [ "$(CONF_PACKS)" != "" ]; then \
+ if [ -r $(CONFDIR)/PACKS/$(CONF_PACKS) ]; then \
+ cat $(CONFDIR)/PACKS/$(CONF_PACKS) >>$(MAKEFILE) ; \
+ fi; \
+ fi; \
+ fi
+ @cat $(RULEDIR)/stdHeader2 >>$(MAKEFILE)
+ @-if [ -r Make.spec ]; then \
+ cat Make.spec >>$(MAKEFILE); \
+ fi
+ @cat Make.proto >>$(MAKEFILE)
+ @echo "" >>$(MAKEFILE)
+ @echo "BASE_CONF="$(CONF) >>$(MAKEFILE)
+ @echo "BASE_CONF_VENDOR="$(CONF_VENDOR) >>$(MAKEFILE)
+ @echo "CONF_PACKS="$(CONF_PACKS) >>$(MAKEFILE)
+ @echo "CONF_TOOLS="$(CONF_TOOLS) >>$(MAKEFILE)
+ @-if [ $$TOP"x" != "x" ]; then \
+ echo "TOP="$$TOP >>$(MAKEFILE); \
+ echo "TOPOVERWRITE="$$TOP >>$(MAKEFILE); \
+ echo "STC="stc >>$(MAKEFILE); \
+ echo "INCLUDE="$(INCLUDE) >>$(MAKEFILE); \
+ echo "INCLUDE_OUT="$(INCLUDE_OUT) >>$(MAKEFILE); \
+ else \
+ if [ $(TOPOVERWRITE)"x" != "x" ]; then \
+ echo "TOP="$(TOP) >>$(MAKEFILE); \
+ echo "TOPOVERWRITE="$(TOP) >>$(MAKEFILE); \
+ echo "STC="stc >>$(MAKEFILE); \
+ echo "INCLUDE="$(INCLUDE) >>$(MAKEFILE); \
+ echo "INCLUDE_OUT="$(INCLUDE_OUT) >>$(MAKEFILE); \
+ fi; \
+ fi
+ @echo "" >>$(MAKEFILE)
+ @cat $(RULEDIR)/stdRules >>$(MAKEFILE)
+ @-if [ "$(TOUCH)" != "echo" ]; then \
+ $(TOUCH) $(MAKEFILE); \
+ fi
+ @if [ "$(OTHER_MAKE_FILES)" != "" ]; then \
+ $(MAKE) $(OTHER_MAKE_FILES); \
+ fi
+# No longer -- dependencies, abbrev and libInit.stc
+# are created by smalltalk!
+#
+# @-if [ "$(SUPPRESS_DEPEND)" = "" ]; then \
+# $(MAKE) depend MAKEFILE=$(MAKEFILE); \
+# fi
+# @-if [ "$(MAKE_NT_MAKEFILES)" = "yes" ]; then \
+# $(MAKE) nt.mak; \
+# $(MAKE) bmake.bat; \
+# fi
+# @-if [ "$(MAKE_VMS_MAKEFILES)" = "yes" ]; then \
+# $(MAKE) vms.mak; \
+# fi
+# @-if [ "$(SUPPRESS_LOCAL_ABBREVS)" = "" ]; then \
+# $(MAKE) updateAbbrev; \
+# fi
+
+#
+# same, without make depend
+#
+qmakeMakefile:
+ $(MAKE) makeMakefile SUPPRESS_DEPEND=y MAKEFILE=$(MAKEFILE)
+
+#
+# same - lazy of typing
+#
+qmf: qmakeMakefile
+
+# $(MAKEFILE): Make.proto
+# $(MAKE) mf
+
+#
+# recursively goes down SUBDIRS and creates Makefiles
+#
+Makefiles:: checkForSTC
+ @echo "making Makefiles for $(CONF) $(CONF_PACKS) ..."
+ @$(MAKE) Makefiles_2
+
+Makefiles_2:
+ @-if [ "$(ALLSUBDIRS)"x != x ]; then \
+ $(MAKE) subMakefiles MAKEFILE=$(MAKEFILE); \
+ fi
+
+checkForSTC:
+ @-if [ ! -f $(STC) ]; then \
+ (cd $(TOP)/stc && $(MAKE)); \
+ fi
+
+#
+# same without make depend
+#
+qMakefiles::
+ @-if [ "$(ALLSUBDIRS)"x != x ]; then \
+ $(MAKE) subMakefiles SUPPRESS_DEPEND=y MAKEFILE=$(MAKEFILE); \
+ fi
+
+subMakefiles::
+ @-for i in $(ALLSUBDIRS); do \
+ if [ -d $$i ]; then \
+ if [ -f $$i/Make.proto ]; then \
+ $(MAKE) subMakefile SUBDIR=$$i ; \
+ else \
+ echo "*** oops no Make.proto in directory $$i ?? (non fatal)"; \
+ fi; \
+ else \
+ echo "*** oops where is directory $$i ?? in "`pwd`" (non fatal)"; \
+ fi; \
+ done
+
+subMakefile::
+ $(RULEDIR)/stmkmf --cd $(SUBDIR)
+
+#
+# sorry - the -nt operator is not available on most shells ... shame to them
+#
+
+# CHECKMAKEFILEISUPTODATE=checkMakefileIsUpToDate
+
+checkMakefileIsUpToDate:
+ @-if [ Make.proto -nt $(MAKEFILE) ]; then \
+ $(MAKE) mf; \
+ fi
+
+
+#
+# cross-make of makefiles & config files
+# for systems with poor make/sed/awk etc. support
+#
+# bmake.bat:
+# @echo "mkdir objbc" > bmake.bat
+# @echo "make.exe -N -f nt.mak %1 %2" >> bmake.bat
+
+bmake.bat:
+ @echo "make.exe -N -f nt.mak %1 %2" >> bmake.bat
+
+nt.mak: Make.proto $(TOP)/rules/stdRules
+ @$(MAKE) SYSDEP_OBJS="$(WIN32_OBJS)" do_nt.mak
+
+NT_ADDITIONAL_DEFS::
+ @echo "#"
+ @echo "# additional defines"
+ @echo "#"
+
+NT_ADDITIONAL_RULES::
+ @echo "#"
+ @echo "# additional rules"
+ @echo "#"
+
+do_nt.mak:
+ @echo "making nt.mak from Make.proto ..."
+ @echo '#' > nt_mak
+ @echo '# DO NOT EDIT ' >> nt_mak
+ @echo '# automagically generated from Make.proto (by make nt.mak)' >> nt_mak
+ @echo "#" >> nt_mak
+ @echo -n "TOP=" >> nt_mak
+ @echo $(TOP) | sed -e 's:/:\\:g' >> nt_mak
+ @echo "#" >> nt_mak
+ @echo '!INCLUDE $$(TOP)\rules\'$(STDHEADER_NT) >> nt_mak
+ @echo "#" >> nt_mak
+ @-if [ "$(LIBNAME)" != "" ]; then \
+ echo "MODULE="$(MODULE) >> nt_mak; \
+ echo "MODULE_DIR="$(MODULE_DIR) >> nt_mak; \
+ echo "PACKAGE=$$"'('MODULE')'":$$"'('MODULE_DIR')' >> nt_mak; \
+ echo "LIBNAME="$(LIBNAME) >> nt_mak; \
+ if [ "$(NM_LIB_BASE)" != "" ]; then \
+ echo "LIB_BASE=$$"'('$(NM_LIB_BASE)')' >> nt_mak; \
+ echo '!ifdef USEBC' >> nt_mak; \
+ echo "LIB_BASE_LD_ARG=-b:$$"'('$(NM_LIB_BASE)')' >> nt_mak; \
+ echo '!endif' >> nt_mak; \
+ fi; \
+ echo LOCALINCLUDES='"'$(LOCALINCLUDES)'"' | sed -e 's:/:\\:g' >> nt_mak; \
+ echo 'CLOCAL_INCL=$$(LOCALINCLUDES)' >>nt_mak; \
+ echo STCOPT='"'$(STCOPT)'"' >> nt_mak; \
+ echo 'STCLOCALOPT=-package=$$(PACKAGE) $$(COMMONSYMBOLS) $$(SEPINITCODE) $$(RELOCINSTVARS) -varPrefix=$$(LIBNAME) $$(LOCALINCLUDES)' >> nt_mak; \
+ echo '#STCLOCALOPT="'$(STCLOCALOPT)'"' >> nt_mak; \
+ echo >> nt_mak; \
+ echo 'ALL: $(NT_ADDITIONAL_ALL_TARGETS) $$(LIBDIR)\$$(LIBNAME).lib $$(BINDIR)\$$(LIBNAME).dll' >>nt_mak; \
+ echo >> nt_mak; \
+ fi
+ @$(MAKE) NT_ADDITIONAL_DEFS >> nt_mak
+ @echo >> nt_mak
+ @echo 'OBJS=\' >> nt_mak
+ @for i in $(OBJS); do \
+ BASE=`basename $$i .$(O)`; \
+ W32BASE=`basename $$i .$(O)`_win32; \
+ W32ST=`basename $$i .$(O)`_win32.st; \
+ if [ -f $$W32ST ]; then \
+ BASE=$$W32BASE; \
+ fi; \
+ if [ "$$BASE" != "XWorkstation" ]; then \
+ if [ "$$BASE" != "GLXWorkstation" ]; then \
+ if [ "$$BASE" != "WinWorkstation" ]; then \
+ echo ' $$(OUTDIR)'$$BASE'.$$(O)'" \\" >> nt_mak; \
+ fi; \
+ fi; \
+ fi; \
+ done
+ @echo >> nt_mak
+ @echo >> nt_mak
+ @echo '!INCLUDE $$(TOP)\rules\'$(STDRULES_NT) >> nt_mak
+ @echo >> nt_mak
+ @$(MAKE) NT_ADDITIONAL_RULES >> nt_mak
+ @echo >> nt_mak
+ @echo "# BEGINMAKEDEPEND --- do not remove this line; make depend needs it" >> nt_mak
+ @for i in $(OBJS); do \
+ BASE=`basename $$i .$(O)`; \
+ W32BASE=`basename $$i .$(O)`_win32; \
+ W32ST=`basename $$i .$(O)`_win32.st; \
+ if [ -f $$W32ST ]; then \
+ BASE=$$W32BASE; \
+ fi; \
+ if [ "$$BASE" != "XWorkstation" ]; then \
+ if [ "$$BASE" != "GLXWorkstation" ]; then \
+ if [ "$$BASE" != "WinWorkstation" ]; then \
+ echo '$$(OUTDIR)'$$BASE'.$$(O): '$$BASE'.st' >> nt_mak; \
+ fi; \
+ fi; \
+ fi; \
+ done
+ @echo "# ENDMAKEDEPEND --- do not remove this line" >> nt_mak
+ @-if [ -f nt.mak ]; then \
+ mv nt.mak nt.mak.bak; \
+ fi
+ @$(MAKE) stDepend MAKEFILE=nt_mak
+ @mv nt_mak nt.mak
+
+nt.def: $(MAKEFILE) $(TOP)/rules/stdRules
+ @echo "making nt.def from Make.proto ..."
+ @echo 'LIBRARY '$(LIBNAME) > nt_def
+ @echo 'CODE EXECUTE READ SHARED' >> nt_def
+ @echo 'DATA READ WRITE' >> nt_def
+ @echo 'SECTIONS' >> nt_def
+ @echo ' INITCODE READ EXECUTE SHARED' >> nt_def
+ @echo ' INITDATA READ WRITE' >> nt_def
+ @echo ' RODATA READ SHARED' >> nt_def
+ @echo 'EXPORTS ' >> nt_def
+ @echo ' _'$(LIBNAME)'_Init' >> nt_def
+ @-mv nt.def nt.def.bak
+ @mv nt_def nt.def
+
+bc.def: $(MAKEFILE) $(TOP)/rules/stdRules
+ @echo "making bc.def from Make.proto ..."
+ @echo 'LIBRARY '$(LIBNAME) > bc_def
+ @echo 'CODE PRELOAD MOVEABLE DISCARDABLE' >> bc_def
+ @echo 'SEGMENTS' >> bc_def
+ @echo ' INITCODE PRELOAD DISCARDABLE' >> bc_def
+ @echo 'EXPORTS ' >> bc_def
+ @echo ' _'$(LIBNAME)'_Init @1' >> bc_def
+ @-mv bc.def bc.def.bak
+ @mv bc_def bc.def
+
+vms.mak: $(MAKEFILE) $(TOP)/rules/stdRules
+ @$(MAKE) SYSDEP_OBJS="$(VMS_OBJS)" do_vms.mak
+
+do_vms.mak:
+ @echo "making vms.mak from Make.proto ..."
+ @echo '#' > vms_mak
+ @echo '# DO NOT EDIT ' >> vms_mak
+ @echo '# automagically generated from Make.proto (by make vms.mak)' >> vms_mak
+ @echo "#" >> vms_mak
+ @echo "TOP="$(TOP) >> vms_mak
+# @echo '!INCLUDE $$(TOP)\rules\stdHeader_vms' >> vms_mak
+ @echo "LIBNAME="$(LIBNAME) >> vms_mak
+# @grep $(GREP_ARGS) "LIB_BASE=" Make.proto >> vms_mak
+ @echo STCOPT='"'$(STCOPT)'"' >> vms_mak
+ @echo 'STCLOCALOPT=-package=$$(MODULE):$$(MODULE_DIR) $$(COMMONSYMBOLS) $$(SEPINITCODE) $$(RELOCINSTVARS) -varPrefix=$$(LIBNAME)' >> vms_mak
+ @echo 'ALL: $$(LIBDIR)\$$(LIBNAME).olb' >>vms_mak
+ @echo >>vms_mak
+ @echo 'OBJS=\' >> vms_mak
+ @for i in $(OBJS); do \
+ BASE=`basename $$i .$(O)`; \
+ echo ' $$(OUTDIR)'$$BASE'.$$(O)'" \\" >> vms_mak; \
+ done
+ @echo >> vms_mak
+ @echo >> vms_mak
+ @echo 'theLib:: $$(LIBNAME).olb' >> vms_mak
+ @echo 'Xwrite sys$$output "making class objects ..."' | tr X "\\011" >> vms_mak
+ @echo 'X$$(MAKE) objs' | tr X "\\011" >> vms_mak
+ @echo 'X$$(MAKE) libinit' | tr X "\\011" >> vms_mak
+ @echo 'Xwrite sys$$output "classlibrary $$(LIBNAME).olb made."' | tr X "\\011" >> vms_mak
+ @echo >> vms_mak
+ @echo '$$(LIBNAME).olb:' >> vms_mak
+ @echo 'Xwrite sys$$output "creating initial $$(LIBNAME).olb ..."' | tr X "\\011" >> vms_mak
+ @echo 'Xlib/cre $$(LIBNAME).olb' | tr X "\\011" >> vms_mak
+ @echo >> vms_mak
+ @echo 'objs: $$(OBJS1)' >> vms_mak
+ @echo >> vms_mak
+ @echo >> vms_mak
+ @echo >> vms_mak
+ @echo '# BEGINMAKEDEPEND' >> vms_mak
+ @for i in $(OBJS); do \
+ BASE=`basename $$i .$(O)`; \
+ echo '$$(OUTDIR)'$$BASE'.$$(O): '$$BASE'.st' >> vms_mak; \
+ done
+ @echo '# ENDMAKEDEPEND' >> vms_mak
+ @-mv vms.mak vms.mak.bak
+ @$(MAKE) stDepend MAKEFILE=vms_mak
+ @mv vms_mak vms.mak
+
+# libInit.cc is now in CVS - do not overwrite!
+#
+#libInit.cc: Make.proto Make.spec $(MAKEFILE) $(TOP)/rules/stdRules
+libInit.cc:
+ $(MAKE) doLibInit.cc SYSDEP_OBJS=
+
+doLibInit.cc:
+ @echo "making libInit.cc from Make.proto ..."
+ @echo '/*' > libInit_cc
+ @echo ' * DO NOT EDIT ' >> libInit_cc
+ @echo ' * automagically generated from Make.proto (by make libInit.cc)' >> libInit_cc
+ @echo ' */' >> libInit_cc
+ @echo '#define __INDIRECTVMINITCALLS__' >> libInit_cc
+ @echo '#include <stc.h>' >> libInit_cc
+ @echo '#define INIT_TEXT_SECT /* as nothing */' >> libInit_cc
+ @echo '#ifdef WIN32' >> libInit_cc
+ @echo '# pragma codeseg INITCODE "INITCODE"' >> libInit_cc
+ @echo '#else /* not WIN32 */' >> libInit_cc
+ @echo '# if defined(__GNUC__) && !defined(NO_SECTION_ATTRIBUTES)' >> libInit_cc
+ @echo '# if (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) || __GNUC__ > 2' >> libInit_cc
+ @echo '# undef INIT_TEXT_SECT' >> libInit_cc
+ @echo '# define INIT_TEXT_SECT __attribute__((section(".stxitext")))' >> libInit_cc
+ @echo '# endif' >> libInit_cc
+ @echo '# endif /* not GNUC */' >> libInit_cc
+ @echo '#endif /* not WIN32 */' >> libInit_cc
+ @echo '#ifdef INIT_TEXT_SECT' >> libInit_cc
+ @echo 'extern void _'$(LIBNAME)'_Init() INIT_TEXT_SECT;' >> libInit_cc
+ @echo '#endif' >> libInit_cc
+ @echo 'void _'$(LIBNAME)'_Init(pass, __pRT__, snd)' >> libInit_cc
+ @echo 'OBJ snd; struct __vmData__ *__pRT__; {' >> libInit_cc
+ @echo '__BEGIN_PACKAGE2__("'$(LIBNAME)'", _'$(LIBNAME)'_Init, "'$(PACKAGE)'");' >> libInit_cc
+ @for i in $(OBJS); do \
+ BASE=`basename $$i .$(O)`; \
+ if [ "$$BASE" = "XWorkstation" ]; then \
+ echo "#ifdef WANT_XWorkstation" >> libInit_cc; \
+ fi; \
+ if [ "$$BASE" = "GLXWorkstation" ]; then \
+ echo "#ifdef WANT_GLXWorkstation" >> libInit_cc; \
+ fi; \
+ if [ "$$BASE" = "WinWorkstation" ]; then \
+ echo "#ifdef WANT_WinWorkstation" >> libInit_cc; \
+ fi; \
+ CLASS=`$(STC) -extractCInit $$BASE.st`; \
+ echo "_"$$CLASS'_Init(pass,__pRT__,snd);' >> libInit_cc; \
+ if [ "$$BASE" = "XWorkstation" ]; then \
+ echo "#endif" >> libInit_cc; \
+ fi; \
+ if [ "$$BASE" = "GLXWorkstation" ]; then \
+ echo "#endif" >> libInit_cc; \
+ fi; \
+ if [ "$$BASE" = "WinWorkstation" ]; then \
+ echo "#endif" >> libInit_cc; \
+ fi; \
+ done
+ @if [ "$(WIN32_OBJS)" != "" ]; then \
+ $(MAKE) libInit_xxx xxx_OBJS="$(WIN32_OBJS)" xxx_define=WIN32; \
+ fi
+ @if [ "$(VMS_OBJS)" != "" ]; then \
+ $(MAKE) libInit_xxx xxx_OBJS="$(VMS_OBJS)" xxx_define=VMS; \
+ fi
+ @if [ "$(UNIX_OBJS)" != "" ]; then \
+ $(MAKE) libInit_xxx xxx_OBJS="$(UNIX_OBJS)" xxx_define=UNIX; \
+ fi
+ @if [ "$(MACOS_OBJS)" != "" ]; then \
+ $(MAKE) libInit_xxx xxx_OBJS="$(MACOS_OBJS)" xxx_define=MACOS; \
+ fi
+ @if [ "$(OS2_OBJS)" != "" ]; then \
+ $(MAKE) libInit_xxx xxx_OBJS="$(OS2_OBJS)" xxx_define=OS2; \
+ fi
+ @if [ "$(BEOS_OBJS)" != "" ]; then \
+ $(MAKE) libInit_xxx xxx_OBJS="$(BEOS_OBJS)" xxx_define=BEOS; \
+ fi
+ @echo '__END_PACKAGE__();' >> libInit_cc
+ @echo '}' >> libInit_cc
+ @-if [ -f libInit.cc ]; then \
+ mv libInit.cc libInit.cc.bak; \
+ fi
+ @mv libInit_cc libInit.cc
+
+libInit_xxx:
+ @echo "#ifdef "$(xxx_define) >> libInit_cc
+ @for i in $(xxx_OBJS); do \
+ BASE=`basename $$i .$(O)`; \
+ if [ -f $$BASE.st ]; then \
+ CLASS=`$(STC) -extractCInit $$BASE.st`; \
+ echo "_"$$CLASS'_Init(pass,__pRT__,snd);' >> libInit_cc; \
+ else \
+ echo "skipped missing classFile: "$$BASE.st; \
+ fi \
+ done
+ @echo "#endif" >> libInit_cc
+
+#
+# check:
+# quick ST-syntax check over all st-files
+#
+check::
+ @-if [ "*.st" != '\*.st' ]; then \
+ for i in *.st; do \
+ echo checking $$i ...; \
+ $(STC) -check $(STCFLAGS) $(STC_MSGFORMAT) $$i;\
+ done; \
+ fi
+ @-if [ "$(SUBDIRS)"x != x ]; then \
+ for i in $(SUBDIRS)" "; do \
+ if [ -d $$i ]; then \
+ echo "checking in $$i"; \
+ (cd $$i && $(MAKE) check ); \
+ fi; \
+ done; \
+ fi
+
+#
+# debug - make with -g instead of -O
+#
+debug:
+ $(MAKE) OPT="-g $(OPT)" LIBRUN_OPT="-g $(LIBRUN_OPT)" STCOPT="$(STCOPT) +lineInfo +stLineInfo"
+
+cfiles:
+ for i in ""*.st""; do \
+ $(MAKE) $$(echo $$i | sed "s/\.st/\.c/1"); \
+ done; \
+
+#
+# notes:
+# output notes on st-code (for compiler writer only)
+#
+notes::
+ @-if [ "*.st" != '\*.st' ]; then \
+ for i in ""*.st""; do \
+ echo notes on $$i ...; \
+ $(STC) -check +notice +hint $(STCFLAGS) $(STC_MSGFORMAT) $$i; \
+ done; \
+ fi
+ @-if [ "$(SUBDIRS)"x != x ]; then \
+ for i in $(SUBDIRS)" "; do \
+ if [ -d $$i ]; then \
+ echo "notes in $$i"; \
+ (cd $$i && $(MAKE) notes ); \
+ fi; \
+ done; \
+ fi
+
+#
+# warnings:
+# output warning on st-code (for compiler writer only)
+#
+warnings::
+ @-if [ "*.st" != '\*.st' ]; then \
+ for i in ""*.st""; do \
+ echo warnings on $$i ...; \
+ $(STC) -check +hint $(STCFLAGS) $(STC_MSGFORMAT) $$i; \
+ done; \
+ fi
+ @-if [ "$(SUBDIRS)"x != x ]; then \
+ for i in $(SUBDIRS)" "; do \
+ if [ -d $$i ]; then \
+ echo "warnings in $$i"; \
+ (cd $$i && $(MAKE) warnings ); \
+ fi; \
+ done; \
+ fi
+
+#
+# hints:
+# output hints on st-code (mostly for compiler writer)
+#
+hints::
+ @-for i in *.st; do \
+ echo hints on $$i ...; \
+ $(STC) -check +hint $(STCFLAGS) $(STC_MSGFORMAT) $$i; \
+ done
+
+#
+# fullcheck:
+# outputs notice + hints
+#
+fullcheck::
+ @-if [ "*.st" != '\*.st' ]; then \
+ for i in *.st; do \
+ echo checking $$i ...; \
+ $(STC) -check $(STCFLAGS) $(STC_MSGFORMAT) +notice +hint $$i; \
+ done; \
+ fi
+ @-if [ "$(SUBDIRS)"x != x ]; then \
+ for i in $(SUBDIRS)" "; do \
+ if [ -d $$i ]; then \
+ echo "check in $$i"; \
+ (cd $$i && $(MAKE) fullcheck ); \
+ fi; \
+ done; \
+ fi
+
+#
+# defaultMakefile
+# create an initial Make.proto.
+# use as: make -f <some-existing-makefile> Make.proto
+#
+
+Make.spec:
+ @-if [ -r Make.spec ]; then \
+ echo "Make.spec exists"; \
+ exit 1; \
+ fi
+ @echo -n '# $$Header' > Make.spec
+ @echo '$$' >> Make.spec
+ @echo "#" >> Make.spec
+ @echo "# --- Automatically created Make.spec" >> Make.spec
+ @echo >> Make.spec
+ @echo "TOP="$(TOP) >> Make.spec
+ @echo "SUBDIRS=" >> Make.spec
+ @echo >> Make.spec
+ @echo >> Make.spec
+ @echo "# ***************************** modify the next line ***" >> Make.spec
+ @echo "LIBNAME=libprivate" >> Make.spec
+ @echo >> Make.spec
+ @echo >> Make.spec
+ @echo "EXTRA_TARGTES=" >> Make.spec
+ @echo >> Make.spec
+ @echo -n "OBJS= " >> Make.spec
+ @-if [ "*.st" != '\*.st' ]; then \
+ for i in ""*.st""; do \
+ echo " \\" >> Make.spec; \
+ echo -n " " $$(OUTDIR)`basename $$i .st`.'$$(O)' >> Make.spec; \
+ done; \
+ fi
+ @echo >> Make.spec
+ @echo >> Make.spec
+
+
+Make.proto:
+ @-if [ -r Make.proto ]; then \
+ echo "Make.proto exists"; \
+ exit 1; \
+ fi
+ @echo -n '# $$Header' > Make.proto
+ @echo '$$' >> Make.proto
+ @echo "#" >> Make.proto
+ @echo "# --- Automatically created Make.proto" >> Make.proto
+ @echo >> Make.proto
+ @echo "# ***************************** modify the next line ***" >> Make.proto
+ @echo "STCLOCALOPT='-Pprivate-classes-(module:directory)'" >> Make.proto
+ @echo "STCOPT=$(LIBBASIC2_STCOPT)" >> Make.proto
+ @echo >> Make.proto
+ @echo >> Make.proto
+ @echo "all:: classLibRule $(EXTRA_TARGETS)" >> Make.proto
+ @echo >> Make.proto
+ @echo "cleanjunk::" >> Make.proto
+ @echo >> Make.proto
+ @echo "clean::" >> Make.proto
+ @echo " -rm -f *.H" >> Make.proto
+ @echo >> Make.proto
+ @echo "clobber::" >> Make.proto
+ @echo " -rm -f *.o" >> Make.proto
+ @echo >> Make.proto
+ @echo "# BEGINMAKEDEPEND --- do not remove this line; make depend needs it" >> Make.proto
+ @echo "# ENDMAKEDEPEND --- do not remove this line" >> Make.proto
+
+
+#
+# collectAbbrev
+# recursively work thru subdirectories and collect abbreviations
+# into $(INCLUDE)/abbrev.stc for classname-to-filename translations
+#
+#
+collectAbbrev::
+ @-$(MAKE) abbrev.stc
+ @-if [ "$(SUPPRESS_LOCAL_ABBREVS)" = "" ]; then \
+ $(MAKE) updateAbbrev; \
+ fi
+ @-if [ "$(ALLSUBDIRS)"x != x ]; then \
+ $(MAKE) collectSubdirAbbrev; \
+ fi
+
+collectSubdirAbbrev::
+ @-for i in $(ALLSUBDIRS); do \
+ if [ -d $$i ]; then \
+ if [ -f $$i/Make.proto ]; then \
+ if [ -f $$i/$(MAKEFILE) ]; then \
+ echo "collect abbreviations in $$i"; \
+ if [ "$(NOSUBAUTOLOAD)" = "1" ]; then \
+ (cd $$i && $(MAKE) collectAbbrev NOSUBAUTOLOAD=1 NOAUTOLOAD=1 ); \
+ else \
+ (cd $$i && $(MAKE) collectAbbrev); \
+ fi; \
+ fi \
+ fi \
+ fi; \
+ done
+
+UNCRITICAL:
+ $(MAKE) $(SPACEOPT_O_RULE) STFILE=$(NAME) STCOPT="$(STCOPT) $(UNCRITICALOPT)" CLASSLIB_CC="$(CLASSLIB_CC)" CLASSLIB_OPT="$(CLASSLIB_OPT)" CC="$(CLASSLIB_CC)" OPT="$(OPT)"
+
+$(UNCRITICALOBJS):
+ @$(MAKE) UNCRITICAL CC="$(CLASSLIB_CC)" OPT="$(OPT)" CLASSLIB_CC="$(CLASSLIB_CC)" CLASSLIB_OPT="$(CLASSLIB_OPT)" NAME=$*
+
+AUTOLOADED:
+ @-if [ -f i_$(NAME).o ]; then \
+ echo "assuming stubObject i_$(NAME).o is up-to-date"; \
+ else \
+ $(MAKE) $(SPACEOPT_O_RULE) STFILE=$(NAME) STCOPT="$(STCOPT)" FORCEAUTOLOAD="+autoload -sepInitCode" CLASSLIB_CC="$(CLASSLIB_CC)" CLASSLIB_OPT="$(CLASSLIB_OPT)" OPT="$(OPT)" CC="$(CLASSLIB_CC)"; \
+ fi
+
+$(AUTOLOADEDOBJS):
+ @$(MAKE) AUTOLOADED CLASSLIB_CC="$(CLASSLIB_CC)" CLASSLIB_OPT="$(CLASSLIB_OPT)" CC="$(CC)" OPT="$(OPT)" NAME=$*
+
+#
+# objs:
+# generate all .o-files
+#
+
+subDirObjsIfBeforeObjs:
+ @-if [ "$(SUBDIRS_AFTER_OBJS)" = "" ]; then \
+ $(MAKE) subDirObjsIfPresent; \
+ fi
+
+subDirObjsIfAfterObjs:
+ @-if [ "$(SUBDIRS_AFTER_OBJS)" != "" ]; then \
+ $(MAKE) subDirObjsIfPresent; \
+ fi
+
+subDirObjsIfPresent:
+ @-if [ "$(OBJ_SUBDIRS)" != "" ]; then \
+ $(MAKE) subDirObjs; \
+ fi
+
+subDirObjs::
+ @-for i in $(OBJ_SUBDIRS); do \
+ if [ -d $$i ]; then \
+ echo "making obj in $$i ...";\
+ (cd $$i && $(MAKE) CC="$(CC)" OPT="$(OPT)" obj ); \
+ fi; \
+ done
+
+objs:: pre_objs pre_local_objs $(OBJS) post_local_objs
+
+pre_objs::
+
+pre_local_objs::
+ @$(MAKE) subDirObjsIfBeforeObjs
+
+post_local_objs::
+ @$(MAKE) subDirObjsIfAfterObjs
+
+clsFiles:: pre_cls subDirClassFiles
+ @test "$(CLS)" = "" || $(MAKE) cls_files
+
+cls_files:: $(CLS)
+
+#
+# The makefile in SUBDIR may not have been built yet...
+#
+subDirClassFiles::
+ @-if [ "$(SUBDIRS)" != "" ]; then \
+ $(MAKE) subDirClassFilesPresent; \
+ fi
+
+subDirClassFilesPresent::
+ @for i in $(SUBDIRS); do \
+ if [ -d "$$i" ]; then \
+ echo "making cls-files in $$i ..."; \
+ (cd $$i && $(MAKE) makefile && $(MAKE) clsFiles) || exit $? ; \
+ fi; \
+ done
+
+pre_cls::
+
+# systems which support hiding symbols from libs,
+# may add the following lines in the config-file:
+#
+# PRE_LD_ACTION=createHiddenSymFile
+# POST_LD_ACTION=removeHiddenSymFile
+
+
+emptyRule:
+ @true
+
+createHiddenSymFile: hiddenSyms.stc
+ @-echo > /dev/null
+
+removeHiddenSymFile:
+ @-rm -f hiddenSyms.stc
+
+
+#
+# make without optimizer ...
+#
+nonopt:
+ $(MAKE) OPT=
+
+
+#
+# those two are no longer needed
+#
+CLASSLIST_OR_EMPTY=
+
+#
+# rule to build a class Library
+#
+lib: classLibRule
+
+classLibRule: clsFiles $(LOCAL_EXTRA_TARGETS) $(OBJTARGET) registerClassLib
+
+#
+# create a symbolic link to the shared library in the projects/smalltalk/packages
+# folder. This folder can later be scanned quickly and presented in the Launcher's
+# load package menu item.
+#
+REGISTERED_PACKAGES_DIR=$(TOP)/projects/smalltalk/packages
+
+registerClassLib: $(REGISTERED_PACKAGES_DIR)
+ @echo "registering $(MODULE):$(MODULE_DIR)/$(LIBNAME) in $(REGISTERED_PACKAGES_DIR)"
+ rm -f $(REGISTERED_PACKAGES_DIR)/$(LIBNAME)$(SO_NAME)
+ echo "lib ../../../../$(MODULE)/$(MODULE_DIR)/$(LIBNAME)$(SO_NAME)" > $(REGISTERED_PACKAGES_DIR)/$(LIBNAME)$(SO_NAME)
+
+$(REGISTERED_PACKAGES_DIR):
+ @mkdir $(REGISTERED_PACKAGES_DIR)
+
+registerApplication:
+ @-if [ "$(APPNAME)"x != ""x ]; then \
+ echo "registering $(MODULE):$(MODULE_DIR)/$(APPNAME) in $(REGISTERED_PACKAGES_DIR)"; \
+ rm -f $(REGISTERED_PACKAGES_DIR)/$(APPNAME); \
+ echo "app ../../../../$(MODULE)/$(MODULE_PATH)/$(APPNAME)" > $(REGISTERED_PACKAGES_DIR)/$(APPNAME); \
+ fi
+
+#
+# rule to build a program (application)
+#
+progRule:
+ @-if [ "$(PROGS)"x != ""x ]; then \
+ for i in $(PROGS)" "; do \
+ echo "making $$i"; \
+ $(MAKE) PROGTARGET$(TARGET_RULE_EXTENSION) PROG=$$i; \
+ done; \
+ fi
+
+#
+# one of the two below is performed by the $(OBJTARGET) target;
+# create a library for either static or dynamic linking
+# (this is controlled by the TARGET_EXTENSION, set in an architecture specific config file)
+#
+
+obj:: obj$(TARGET_RULE_EXTENSION)
+
+obj_shared: newobj
+ @echo "making shared classObject ..."
+ @-if [ "$(LIBNAME)" != "" ]; then \
+ if [ -f $(LIBNAME)$(OBJNAME) ]; then \
+ echo "making shared object $(LIBNAME)$(SO_NAME)"; \
+ if [ "$(LOCAL_SHARED_LIBS)" != "" ]; then \
+ echo " local libs: $(LOCAL_SHARED_LIBS)"; \
+ fi; \
+ $(MAKE) $(LIBNAME)$(SO_NAME) LOCAL_SHARED_LIBS="$(LOCAL_SHARED_LIBS)"; \
+ else \
+ echo " ** $(LIBNAME)$(SO_NAME) not made - no $(LIBNAME)$(OBJNAME)"; \
+ fi \
+ fi
+ @-if [ "$(STUBLIBNAME)" != "" ]; then \
+ $(MAKE) obj_shared_stub; \
+ fi
+
+obj_shared_stub:
+ @-if [ -f $(STUBLIBNAME)$(OBJNAME) ]; then \
+ echo "making shared stub object $(STUBLIBNAME)$(SO_NAME)"; \
+ $(MAKE) $(STUBLIBNAME)$(SO_NAME); \
+ else \
+ echo " ** $(STUBLIBNAME)$(SO_NAME) not made - no $(STUBLIBNAME)$(OBJNAME)"; \
+ fi
+
+obj_static: newobj
+
+static_obj:
+ $(MAKE) newobj LINKOBJRULE=newobj_staticLink
+
+#
+# newobj:
+# generate all .o-files, pre-link them into one big lib.o file
+# create a lib-init function and include it in library
+#
+
+newobj_prelink::
+ @true "nothing done here"
+
+newobj_postlink::
+ @true "nothing done here"
+
+newobj: $(LIBNAME)Init.c objs $(LINKOBJS)
+ @if [ "$(NEWOBJ_SUBDIRS)"x != x ]; then \
+ for i in "$(NEWOBJ_SUBDIRS)"; do \
+ if [ -d $$i ]; then \
+ echo "making newobj in $$i"; \
+ (cd $$i && $(MAKE) newobj); \
+ fi; \
+ done; \
+ fi
+ @if [ "$(LIBNAME)" != "" ]; then \
+ if [ "$(LINKOBJS)" != "" ]; then \
+ echo "making objs ..."; \
+ $(MAKE) objs && \
+ echo "making init code ..." && \
+ $(MAKE) $(LIBNAME)Init.o LIBNAME=$(LIBNAME) CC=$(CC) &&\
+ $(MAKE) $(PRE_LD_ACTION) && \
+ $(MAKE) newobj_prelink LIBNAME=$(LIBNAME) && \
+ $(MAKE) $(LINKOBJRULE) LINKOBJS="$(LINKOBJS)" LIBNAME=$(LIBNAME) && \
+ $(MAKE) newobj_postlink LIBNAME=$(LIBNAME) && \
+ chmod -x,+w $(LIBNAME)$(OBJNAME) && \
+ $(MAKE) $(POST_LD_ACTION); \
+ else \
+ echo " ** $(LIBNAME)$(OBJNAME) not made - no object files (LINKOBJS=) defined"; \
+ fi \
+ else \
+ echo " ** no library name (LIBNAME=) defined"; \
+ fi
+ @if [ "$(STUBLIBNAME)" != "" ]; then \
+ $(MAKE) stubobj STUBLIBNAME=$(STUBLIBNAME) LIBNAME=$(LIBNAME); \
+ fi
+
+stubobj:
+ @echo "making stubobj ..."
+ @echo "making stub init code ..."
+ @$(MAKE) $(STUBLIBNAME)Stub.o STUBLIBNAME=$(STUBLIBNAME) LIBNAME=$(LIBNAME)
+ @rm -f $(STUBLIBNAME)$(OBJNAME)
+ @$(MAKE) stub_link LIBNAME=$(LIBNAME)
+ @chmod -x,+w $(STUBLIBNAME)$(OBJNAME)
+ @rm -f $(STUBLIBNAME)Stub.o $(STUBLIBNAME)Stub.c
+
+newobj_link::
+ @echo "linking class object ..."
+ $(CLASSLIB_LD) $(LD_REL_FLAG) $(LD_OBJ_FLAGS) $(LIBNAME)Init.o $(LINKOBJS) $(LD_OBJ_LIBS) $(LD_REL_OBJ_LIBS) -o $(LIBNAME)$(OBJNAME)
+
+newobj_staticLink::
+ @echo "linking static classLib object ..."
+ @$(CLASSLIB_LD) $(LD_REL_FLAG) $(LD_OBJ_FLAGS) \
+ $(LIBNAME)Init.o $(LINKOBJS) $(LD_OBJ_LIBS) $(LD_REL_OBJ_LIBS) -o $(LIBNAME).$(O)
+
+newobj_linkSep::
+ @-echo "linking sepInit class object ..."
+ @-echo $(CLASSLIB_LD) $(LD_REL_FLAG) $(LD_OBJ_FLAGS) \
+ $(LIBNAME)Init.o `$(TOP)/rules/i_list $(LINKOBJS)` $(LINKOBJS) $(LD_OBJ_LIBS) $(LD_REL_OBJ_LIBS) -o $(LIBNAME)$(OBJNAME)
+ @$(CLASSLIB_LD) $(LD_REL_FLAG) $(LD_OBJ_FLAGS) \
+ $(LIBNAME)Init.o `$(TOP)/rules/i_list $(LINKOBJS)` $(LINKOBJS) $(LD_OBJ_LIBS) $(LD_REL_OBJ_LIBS) -o $(LIBNAME)$(OBJNAME)
+
+newobj_link_sepInitCode::
+ @-if [ "$(SEPINITCODE)" != "" ]; then \
+ $(MAKE) newobj_linkSep LINKOBJS="$(LINKOBJS)" LIBNAME=$(LIBNAME); \
+ else \
+ echo "** oops - sepInit rule but no +sepInit specified (non fatal)"; \
+ $(MAKE) newobj_link LINKOBJS="$(LINKOBJS)" LIBNAME=$(LIBNAME); \
+ fi
+
+stub_link::
+ @-echo "linking stub class object ..."
+ @-echo $(CLASSLIB_LD) $(LD_REL_FLAG) $(LD_OBJ_FLAGS) $(STUBLIBNAME)Stub.o $(LINKOBJS) -o $(STUBLIBNAME)$(OBJNAME)
+ @$(CLASSLIB_LD) $(LD_REL_FLAG) $(LD_OBJ_FLAGS) $(STUBLIBNAME)Stub.o $(LINKOBJS) -o $(STUBLIBNAME)$(OBJNAME)
+
+iobjs:
+ echo "making sepInit objs ..."
+ @-if [ "$(OBJS)"x != x ]; then \
+ for i in $(OBJS); do \
+ $(MAKE) i_$$i ; \
+ done; \
+ fi
+
+#
+# to force creation of a shared object, even if not defined in config
+#
+sharedobj: newobj
+ @echo "making shared object $(LIBNAME)$(SO_NAME)"
+ $(MAKE) $(LIBNAME)$(SO_NAME)
+
+#
+# objstrip:
+# like make obj, but strip debug syms
+#
+objstrip::
+ @if [ "$(OBJ_SUBDIRS)"x != x ]; then \
+ for i in $(OBJ_SUBDIRS)" "; do \
+ if [ -d $$i ]; then \
+ echo "making obj in $$i"; \
+ (cd $$i && $(MAKE) obj ); \
+ fi; \
+ done; \
+ fi
+ @if [ "$(LIBNAME)" != "" ]; then \
+ $(MAKE) objs && \
+ echo $(CLASSLIB_LD) $(LD_REL_FLAG) $(LD_STRIP_FLAG) $(LD_OBJ_FLAGS) $(LINKOBJS) -o $(LIBNAME)$(OBJNAME) && \
+ rm -f $(LIBNAME)$(OBJNAME) && \
+ $(CLASSLIB_LD) $(LD_REL_FLAG) $(LD_STRIP_FLAG) $(LD_OBJ_FLAGS) $(LINKOBJS) -o $(LIBNAME)$(OBJNAME) && \
+ chmod -x,+w $(LIBNAME)$(OBJNAME); \
+ fi
+
+# cleanjunk:
+# remove all temporary stuff
+#
+cleanjunk::
+ @echo cleaning junk
+ @echo no -rm -f .dependencies
+ @-rm -f nohup.out out .errors *.bak core .dir.*.old *.old *~ Make.log
+ @-rm -f bitmaps/*.bak bitmaps/*~
+ @-rm -f resources/*.bak resources/*~ resources/*.old
+ @echo no $(MAKE) cleanLIBjunk
+ @-if [ "$(ALLSUBDIRS)" != "" ]; then \
+ $(MAKE) cleanjunkALLSUBDIRS; \
+ fi
+ @-if [ "$(CLEANSUBDIRS)" != "" ]; then \
+ $(MAKE) cleanjunkCLEANSUBDIRS; \
+ fi
+
+cleanLIBjunk:
+ @-if [ "$(LIBNAME)"x != x ]; then \
+ rm -f $(LIBNAME)Init.[co] $(STUBLIBNAME)Stub.[co]; \
+ if [ -f $(LIBNAME).so ]; then \
+ rm -f $(LIBNAME).o; \
+ fi; \
+ fi
+
+cleanjunkALLSUBDIRS::
+ @-for i in $(ALLSUBDIRS); do \
+ if [ -d $$i ]; then \
+ if [ -f $$i/Make.proto ]; then \
+ if [ -f $$i/$(MAKEFILE) ]; then \
+ echo "cleaning junk in $$i ..."; \
+ (cd $$i && $(MAKE) cleanjunk ); \
+ fi \
+ fi \
+ fi; \
+ done
+
+cleanjunkCLEANSUBDIRS::
+ @-for i in $(CLEANSUBDIRS); do \
+ if [ -d $$i ]; then \
+ if [ -f $$i/Make.proto ]; then \
+ if [ -f $$i/$(MAKEFILE) ]; then \
+ echo "cleaning junk in $$i ...";\
+ (cd $$i && $(MAKE) cleanjunk ); \
+ fi \
+ fi \
+ fi; \
+ done
+
+#
+# clean:
+# remove all that is not needed to run/link
+#
+
+clean::
+ @echo cleaning
+ @-rm -f err out *.bak core .dir.*.old *.old *~ *.H ttt* i_[A-Z]*.[cso]
+ @-rm -f .dependencies
+ @-if [ "$(LIBNAME)"x != x ]; then \
+ rm -f $(LIBNAME)Init.[co] $(STUBLIBNAME)Stub.[co]; \
+ if [ -f $(LIBNAME).so ]; then \
+ rm -f $(LIBNAME).o; \
+ fi; \
+ fi
+ @-rm -f bitmaps/*.bak bitmaps/*~
+ @-rm -f resources/*.bak resources/*~ resources/*.old
+ @-if [ "$(ALLSUBDIRS)"x != x ]; then \
+ $(MAKE) cleanALLSUBDIRS; \
+ fi
+ @-if [ "$(CLEANSUBDIRS)"x != x ]; then \
+ $(MAKE) cleanCLEANSUBDIRS; \
+ fi
+
+cleanALLSUBDIRS::
+ @-for i in $(ALLSUBDIRS); do \
+ if [ -d $$i ]; then \
+ if [ -f $$i/Make.proto ]; then \
+ echo "cleaning $$i ..."; \
+ (cd $$i && $(MAKE) clean); \
+ fi; \
+ fi; \
+ done
+
+cleanCLEANSUBDIRS::
+ @-for i in $(CLEANSUBDIRS); do \
+ if [ -d $$i ]; then \
+ if [ -f $$i/Make.proto ]; then \
+ echo "cleaning $$i ..."; \
+ (cd $$i && $(MAKE) clean); \
+ fi; \
+ fi; \
+ done
+
+#
+# clobber:
+# remove all that can be regenerated
+#
+CLOBBERED_OBJS=*.o
+
+clobber::
+ @-rm -f err out *.bak core .dir.*.old *.old *~ $(CLOBBERED_OBJS) \
+ *.H *.so *.obj obj \
+ liblist.stc \
+ .listOfSTfiles* .dependencies
+ @rm -f *.a $(PROGS) $(TESTPROGS)
+ @-if [ "$(LIBNAME)"x != x ]; then \
+ rm -f $(LIBNAME)Init.[co] $(STUBLIBNAME)Stub.[co] $(LIBNAME)zip; \
+ fi
+ @-rm -f bitmaps/*.bak bitmaps/*~
+ @-rm -f resources/*.bak resources/*~ resources/*.old
+ @-if [ "$(ALLSUBDIRS)"x != x ]; then \
+ $(MAKE) clobberALLSUBDIRS; \
+ fi
+ @-if [ "$(CLEANSUBDIRS)"x != x ]; then \
+ $(MAKE) clobberCLEANSUBDIRS; \
+ fi
+
+clobberALLSUBDIRS::
+ @-for i in $(ALLSUBDIRS); do \
+ if [ -d $$i ]; then \
+ echo "clobbering $$i ..."; \
+ (cd $$i && $(MAKE) clobber); \
+ fi; \
+ done
+
+clobberCLEANSUBDIRS::
+ @-for i in $(CLEANSUBDIRS); do \
+ if [ -d $$i ]; then \
+ echo "clobbering $$i ..."; \
+ (cd $$i && $(MAKE) clobber); \
+ fi; \
+ done
+
+#
+# distClean:
+# cleanup for distribution
+#
+distClean:: clobber
+ @-if [ "$(ALLSUBDIRS)"x != x ]; then \
+ $(MAKE) distCleanALLSUBDIRS; \
+ fi
+ @-if [ "$(CLEANSUBDIRS)"x != x ]; then \
+ $(MAKE) distCleanCLEANSUBDIRS; \
+ fi
+
+distCleanALLSUBDIRS::
+ @-for i in $(ALLSUBDIRS); do \
+ if [ -d $$i ]; then \
+ if [ -f $$i/$(MAKEFILE) ]; then \
+ echo "distClean $$i ..."; \
+ (cd $$i && $(MAKE) distClean); \
+ fi; \
+ fi; \
+ done
+
+distCleanCLEANSUBDIRS::
+ @-for i in $(CLEANSUBDIRS); do \
+ if [ -d $$i ]; then \
+ if [ -f $$i/$(MAKEFILE) ]; then \
+ echo "distClean $$i ..."; \
+ (cd $$i && $(MAKE) distClean); \
+ fi; \
+ fi; \
+ done
+#
+# copy all relevant files to $(DELIVERDIR)/full
+#
+preDeliverFull::
+
+postDeliverFull::
+
+deliverFull::
+ @if [ "$(RELDIR)" = "" ]; then \
+ echo "no RELDIR defined"; \
+ exit 1; \
+ fi
+ @if [ "$(DELIVERDIR)" = "" ]; then \
+ echo "no DELIVERDIR defined"; \
+ exit 1; \
+ fi
+ -$(MAKE) preDeliverFull RELDIR=$(RELDIR) DELIVERDIR=$(DELIVERDIR)
+ -$(MAKE) deliverFullLocal RELDIR=$(RELDIR) DELIVERDIR=$(DELIVERDIR)
+ @-if [ "$(ALLSUBDIRS)"x != x ]; then \
+ $(MAKE) deliverFullALLSUBDIRS RELDIR=$(RELDIR) DELIVERDIR=$(DELIVERDIR); \
+ fi
+ @-if [ "$(DELIVERSUBDIRS)"x != x ]; then \
+ $(MAKE) deliverFullDELIVERSUBDIRS RELDIR=$(RELDIR) DELIVERDIR=$(DELIVERDIR); \
+ fi
+ $(MAKE) postDeliverFull RELDIR=$(RELDIR) DELIVERDIR=$(DELIVERDIR)
+
+deliverFullLocal::
+ @if [ "$(RELDIR)" = "" ]; then \
+ echo "no RELDIR defined"; \
+ exit 1; \
+ fi
+ @if [ "$(DELIVERDIR)" = "" ]; then \
+ echo "no DELIVERDIR defined"; \
+ exit 1; \
+ fi
+ @test -d $(DELIVERDIR) || mkdir $(DELIVERDIR)
+ @test -d $(DELIVERDIR)/$(RELDIR) || mkdir $(DELIVERDIR)/$(RELDIR)
+ @-if [ "$(DELIVERSOURCES)" != "" ]; then \
+ (tar cf - $(DELIVERSOURCES) | (cd $(DELIVERDIR)/$(RELDIR) && tar xvf -)); \
+ fi
+ @-if [ "$(DELIVERMISC)" != "" ]; then \
+ (tar cf - $(DELIVERMISC) | (cd $(DELIVERDIR)/$(RELDIR) && tar xvf -)); \
+ fi
+ @-if [ "$(DELIVERBINARIES)" != "" ]; then \
+ (tar cf - $(DELIVERBINARIES) | (cd $(DELIVERDIR)/$(RELDIR) && tar xvf -)); \
+ fi
+
+deliverFullALLSUBDIRS::
+ @-for i in $(ALLSUBDIRS); do \
+ if [ -d $$i ]; then \
+ echo "deliver files in $$i ..."; \
+ (cd $$i && $(MAKE) deliverFull RELDIR=$(RELDIR)/$$i DELIVERDIR=$(DELIVERDIR)); \
+ fi; \
+ done
+
+deliverFullDELIVERSUBDIRS::
+ @-for i in $(DELIVERSUBDIRS); do \
+ if [ -d $$i ]; then \
+ echo "deliver files in $$i ..."; \
+ (cd $$i && $(MAKE) deliverFull RELDIR=$(RELDIR)/$$i DELIVERDIR=$(DELIVERDIR)); \
+ fi; \
+ done
+
+#
+# remake:
+# a clean followed my make
+#
+remake:
+ $(MAKE) clean
+ $(MAKE)
+
+#
+# update: first get any changed versions from cvs,
+# then make all here.
+#
+update:
+ @-if [ -d CVS ]; then \
+ cvs update; \
+ $(MAKE) mf; \
+ $(MAKE) Makefiles; \
+ $(MAKE) $(UPDATETARGET); \
+ else \
+ echo "no CVS directory"; \
+ fi
+
+pre_all::
+
+#
+# all:
+# make what is appropriate here (library or application)
+#
+all:: pre_all
+ @-if [ "$(SUBDIRS)"x != ""x ]; then \
+ $(MAKE) allSubDirs; \
+ fi
+
+# full:
+# in addition to all, this also builds support stuff needed
+# by some subsystems using ant and possibly other tools.
+# for now, this is libjava only
+full:: all
+
+allSubDirs:
+ @-for i in $(SUBDIRS); do \
+ if [ -d $$i ]; then \
+ $(MAKE) subDirMake SUBDIR=$$i; \
+ else \
+ echo "*** oops where is directory $$i ?? in "`pwd`" (non fatal)"; \
+ fi; \
+ done
+
+subDirMake:
+ @-if [ -f $(SUBDIR)/$(MAKEFILE) ] ; then \
+ true; \
+ else \
+ $(MAKE) subMakefile SUBDIR=$(SUBDIR); \
+ fi
+ @-echo "********************************"
+ @-echo "making all in $(SUBDIR)"
+ @-echo "********************************"
+ @-cd $(SUBDIR) && $(MAKE) all
+
+allLibs::
+ @-if [ "$(LIBNAME)"x != ""x ]; then \
+ $(MAKE) lib; \
+ fi
+ @-if [ "$(SUBDIRS)"x != ""x ]; then \
+ $(MAKE) allSubDirLibs; \
+ fi
+
+allSubDirLibs:
+ @-for i in $(SUBDIRS); do \
+ if [ -d $$i ]; then \
+ $(MAKE) subDirLibsMake SUBDIR=$$i; \
+ else \
+ echo "*** oops where is directory $$i ?? in "`pwd`" (non fatal)"; \
+ fi; \
+ done
+
+subDirLibsMake:
+ @-if [ -f $(SUBDIR)/$(MAKEFILE) ] ; then \
+ true; \
+ else \
+ $(MAKE) subMakefile SUBDIR=$(SUBDIR); \
+ fi
+ @-echo "********************************"
+ @-echo "making libs in $(SUBDIR)"
+ @-echo "********************************"
+ @-cd $(SUBDIR) && $(MAKE) allLibs
+
+APPLICATION:
+ @-rm -f main.o modulList.stc modulList.c modulList.o
+ $(MAKE) main.o \
+ STARTUP_CLASS="$(STARTUP_CLASS)" \
+ STARTUP_SELECTOR="$(STARTUP_SELECTOR)" \
+ MAIN_DEFINES="$(MAIN_DEFINES)"
+ @-echo "OPTIONAL_SHARED_LIBS=" $(OPTIONAL_SHARED_LIBS)
+ $(MAKE) linkTarget \
+ LIBLIST="$(LIBLIST)" \
+ LIBOBJS="$(LIBOBJS)" \
+ LINK_LIBOBJS="$(LINK_LIBOBJS)" \
+ TARGET=$(TARGET) \
+ ADDITIONAL_CLASSES="$(APPLICATION_CLASSES)" \
+ ADDITIONAL_OBJS="$(APPLICATION_OBJS)" \
+ ADDITIONAL_LINK_OBJS="$(APPLICATION_LINK_OBJS)"
+ @-rm -f main.o modulList.stc modulList.c modulList.o
+
+#
+# a standAlone target without graphical user interface
+#
+NON_GUI_APPLICATION:
+ @-rm -f main.o modulList.stc modulList.c modulList.o
+ $(MAKE) main.o \
+ STARTUP_CLASS="$(STARTUP_CLASS)" \
+ STARTUP_SELECTOR="$(STARTUP_SELECTOR)" \
+ MAIN_DEFINES="$(MAIN_DEFINES)"
+ @-echo "OPTIONAL_SHARED_LIBS=" $(OPTIONAL_SHARED_LIBS)
+ $(MAKE) linkTarget \
+ LIBLIST="$(APPLICATION_LIBLIST)" \
+ LIBOBJS="$(APPLICATION_LIBOBJS)" \
+ LINK_LIBOBJS="$(APPLICATION_LINK_LIBOBJS)" \
+ TARGET=$(TARGET) \
+ ADDITIONAL_CLASSES="$(APPLICATION_CLASSES)" \
+ ADDITIONAL_OBJS="$(APPLICATION_OBJS)" \
+ ADDITIONAL_LINK_OBJS="$(APPLICATION_LINK_OBJS)"
+ @-rm -f main.o modulList.stc modulList.c modulList.o
+
+xNON_GUI_APPLICATION:
+ @-rm -f main.o modulList.stc modulList.c modulList.o
+ $(MAKE) main.o \
+ STARTUP_CLASS="$(STARTUP_CLASS)" \
+ STARTUP_SELECTOR="$(STARTUP_SELECTOR)" \
+ MAIN_DEFINES="$(MAIN_DEFINES)"
+ @-echo "OPTIONAL_SHARED_LIBS=" $(OPTIONAL_SHARED_LIBS)
+ $(MAKE) linkTarget \
+ LIBLIST="$(MINI_LIST) libstx_libbasic2 libstx_libboss $(APPLICATION_LIBLIST)" \
+ LIBOBJS="$(MINI_LIB) $(LIBBASIC2) $(LIBBOSS) $(APPLICATION_LIBOBJS)" \
+ LINK_LIBOBJS="$(LINK_MINI_LIB) $(LINK_LIBBASIC2) $(LINK_LIBBOSS) $(APPLICATION_LINK_LIBOBJS)" \
+ TARGET=$(TARGET) \
+ ADDITIONAL_CLASSES="$(APPLICATION_CLASSES)" \
+ ADDITIONAL_OBJS="$(APPLICATION_OBJS)" \
+ ADDITIONAL_LINK_OBJS="$(APPLICATION_LINK_OBJS)"
+ @-rm -f main.o modulList.stc modulList.c modulList.o
+
+#
+# a minimum standAlone target without graphical user interface
+# (only links libbasic - no compiler etc.)
+#
+BARE_NON_GUI_APPLICATION:
+ @-rm -f main.o modulList.stc modulList.c modulList.o
+ $(MAKE) main.o \
+ STARTUP_CLASS="$(STARTUP_CLASS)" \
+ STARTUP_SELECTOR="$(STARTUP_SELECTOR)" \
+ MAIN_DEFINES="$(MAIN_DEFINES)"
+ @-echo "OPTIONAL_SHARED_LIBS=" $(OPTIONAL_SHARED_LIBS)
+ $(MAKE) linkTarget \
+ LIBLIST="$(BARE_LIST) $(APPLICATION_LIBLIST)" \
+ LIBOBJS="$(BARE_LIB) $(APPLICATION_LIBOBJS)" \
+ LINK_LIBOBJS="$(LINK_BARE_LIB) $(APPLICATION_LINK_LIBOBJS)" \
+ TARGET=$(TARGET) \
+ ADDITIONAL_CLASSES="$(APPLICATION_CLASSES)" \
+ ADDITIONAL_OBJS="$(APPLICATION_OBJS)" \
+ ADDITIONAL_LINK_OBJS="$(APPLICATION_LINK_OBJS)"
+ @-rm -f main.o modulList.stc modulList.c modulList.o
+
+#
+# with graphical user interface
+#
+BARE_GUI_APPLICATION:
+ @-rm -f main.o modulList.stc modulList.c modulList.o
+ $(MAKE) main.o \
+ STARTUP_CLASS="$(STARTUP_CLASS)" \
+ STARTUP_SELECTOR="$(STARTUP_SELECTOR)" \
+ MAIN_DEFINES="$(MAIN_DEFINES)"
+ @-echo "OPTIONAL_SHARED_LIBS=" $(OPTIONAL_SHARED_LIBS)
+ $(MAKE) linkTarget \
+ LIBLIST="$(EXTRA_UI_CLASSES) $(APPLICATION_LIBLIST)" \
+ LIBOBJS="$(EXTRA_UI_OBJ) $(APPLICATION_LIBOBJS)" \
+ LINK_LIBOBJS="$(EXTRA_LINK_UI_OBJ) $(APPLICATION_LINK_LIBOBJS)" \
+ TARGET=$(TARGET) \
+ ADDITIONAL_CLASSES="$(APPLICATION_CLASSES)" \
+ ADDITIONAL_OBJS="$(APPLICATION_OBJS)" \
+ ADDITIONAL_LINK_OBJS="$(APPLICATION_LINK_OBJS)"
+ @-rm -f main.o modulList.stc modulList.c modulList.o
+
+#
+# with tool libraries
+#
+GUI_APPLICATION:
+ @echo making GUI_APPLICATION...
+ @echo EXTRA_UI_CLASSES=$(EXTRA_UI_CLASSES)
+ @echo EXTRA_UI_OBJ=$(EXTRA_UI_OBJ)
+ @echo EXTRA_LINK_UI_OBJ=$(EXTRA_LINK_UI_OBJ)
+ @-rm -f main.o modulList.stc modulList.c modulList.o
+ $(MAKE) main.o \
+ STARTUP_CLASS="$(STARTUP_CLASS)" \
+ STARTUP_SELECTOR="$(STARTUP_SELECTOR)" \
+ MAIN_DEFINES="$(MAIN_DEFINES)"
+ @-echo "OPTIONAL_SHARED_LIBS=" $(OPTIONAL_SHARED_LIBS)
+ $(MAKE) linkTarget \
+ LIBLIST="$(EXTRA_UI_CLASSES) $(APPLICATION_LIBLIST)" \
+ LIBOBJS="$(EXTRA_UI_OBJ) $(APPLICATION_LIBOBJS)" \
+ LINK_LIBOBJS="$(EXTRA_LINK_UI_OBJ) $(APPLICATION_LINK_LIBOBJS)" \
+ TARGET=$(TARGET) \
+ ADDITIONAL_CLASSES="$(APPLICATION_CLASSES)" \
+ ADDITIONAL_OBJS="$(APPLICATION_OBJS)" \
+ ADDITIONAL_LINK_OBJS="$(APPLICATION_LINK_OBJS)"
+ @-rm -f main.o modulList.stc modulList.c modulList.o
+ @$(MAKE) registerClassLib
+
+#
+# a program target
+# needs: CLASSLIBRARIES,
+# STARTUP_SELECTOR, STARTUP_CLASS
+# LIBOBJS
+#
+PROGTARGET_shared::
+ @-echo "OPTIONAL_SHARED_LIBS=" $(OPTIONAL_SHARED_LIBS)
+ @-echo "Making PROGTARGET_shared ..."
+ $(MAKE) linkTarget \
+ LIBOBJS="$(LIBOBJS_SHARED)" \
+ ADDITIONAL_OBJS="$(ADDITIONAL_OBJS)" \
+ ADDITIONAL_CLASSES="$(ADDITIONAL_CLASSES)" \
+ ADDITIONAL_LIBS="$(ADDITIONAL_LIBS)" \
+ EXTRA_LIBS="$(EXTRA_LIBS)" \
+ LINK_LIBRUN="$(LINK_LIBRUN)" \
+ LIBRUN=$(LIBRUN)
+
+PROGTARGET_static:
+ @-echo "OPTIONAL_SHARED_LIBS=" $(OPTIONAL_SHARED_LIBS)
+ @-echo "Making PROGTARGET_static ..."
+ $(MAKE) linkTarget \
+ LIBOBJS="$(STATIC_LIBOBJS)" \
+ LINK_LIBOBJS="$(STATIC_LIBOBJS)" \
+ ADDITIONAL_OBJS="$(STATIC_ADDITIONAL_OBJS)" \
+ ADDITIONAL_CLASSES="$(ADDITIONAL_CLASSES)" \
+ ADDITIONAL_LIBS="$(ADDITIONAL_LIBS)" \
+ EXTRA_LIBS="$(STATIC_EXTRA_LIBS)" \
+ EXTRA_UI_OBJ="$(STATIC_EXTRA_UI_OBJ)" \
+ LINK_LIBRUN="$(LIBRUN)" \
+ LIBRUN="$(LIBRUN)"
+
+PROGTARGET_fullstatic:
+ @-echo "OPTIONAL_SHARED_LIBS=" $(OPTIONAL_SHARED_LIBS)
+ @-echo "Making PROGTARGET_fullstatic ..."
+ $(MAKE) linkTarget \
+ LIBOBJS="$(STATIC_LIBOBJS)" \
+ LINK_LIBOBJS="$(STATIC_LIBOBJS)" \
+ ADDITIONAL_OBJS="$(STATIC_ADDITIONAL_OBJS)" \
+ ADDITIONAL_CLASSES="$(ADDITIONAL_CLASSES)" \
+ ADDITIONAL_LIBS="$(ADDITIONAL_LIBS)" \
+ LINK_LIBRUN="$(LIBRUN)" \
+ LIBRUN="$(LIBRUN)" \
+ MATHLIB="$(STATIC_MATHLIB)" \
+ EXTRA_LIBS="$(STATIC_EXTRA_LIBS)" \
+ EXTRA_UI_OBJ="$(STATIC_EXTRA_UI_OBJ)" \
+ SYSLIBS="$(STATIC_SYSLIBS)"
+
+PROGTARGET::
+ @-echo "OPTIONAL_SHARED_LIBS=" $(OPTIONAL_SHARED_LIBS)
+ @-echo "Making PROGTARGET_shared ..."
+ $(MAKE) linkTarget \
+ LIBOBJS="$(LIBOBJS_SHARED)" \
+ ADDITIONAL_OBJS="$(ADDITIONAL_OBJS)" \
+ ADDITIONAL_CLASSES="$(ADDITIONAL_CLASSES)" \
+ ADDITIONAL_LIBS="$(ADDITIONAL_LIBS)" \
+ EXTRA_LIBS="$(EXTRA_LIBS)" \
+ LINK_LIBRUN="$(LINK_LIBRUN)" \
+ LIBRUN=$(LIBRUN)
+
+nullRebaseRule:
+ @-echo "No rebase done for this architecture/configuration"
+
+linkTarget: main.$(O) $(LIBOBJS) checkSymbolsInLibrunAreUpToDate $(LIBRUN) $(EXTRA_OBJ)
+ @-echo "Making modulList (PACK = " $(CONF_PACKS) ") ..."
+ @-echo "LIBLIST=" $(LIBLIST)
+ @-echo "ADDITIONAL_CLASSES=" $(ADDITIONAL_CLASSES)
+ $(MAKE) modulList.$(O) \
+ LIBS="$(LIBOBJS)" \
+ LIBLIST="$(LIBLIST)" \
+ ADDITIONAL_CLASSES="$(ADDITIONAL_CLASSES)"
+ @-echo "OPTIONAL_SHARED_LIBS=" $(OPTIONAL_SHARED_LIBS)
+ @-echo "linking ..."
+ $(MAKE) linkLibs LINK_LIBDIR="$(LINK_LIBDIR)" LINK_LIBOBJS="$(LINK_LIBOBJS)" LIBOBJS="$(LIBOBJS)"
+ $(MAKE) $(rebaseLibsRule) LINK_LIBRUN="$(LINK_LIBRUN)" LINK_LIBOBJS="$(LINK_LIBOBJS)" LINK_ADDITIONAL_OBJS="$(LINK_ADDITIONAL_OBJS)"
+ $(LD) $(ST_LDFLAG) $(LDFLAGS) -o $(TARGET)$(EXE) \
+ $(CRT0) modulList.$(O) main.$(O) \
+ $(OPTIONAL_SHARED_LIBS) \
+ $(LINK_LIBOBJS) $(LINK_ADDITIONAL_OBJS) \
+ $(LINK_LIBRUN) \
+ $(ADDITIONAL_LIBS) $(MATHLIB) $(EXTRA_LIBS) $(SYSLIBS) $(CRTN)
+ @if [ "$(POST_LD)" != "" ]; then \
+ echo $(POST_LD) $(TARGET)$(EXE); \
+ $(POST_LD) $(TARGET)$(EXE); \
+ fi
+ @if [ "$(POST_LD2)" != "" ]; then \
+ echo $(POST_LD2) $(TARGET)$(EXE); \
+ $(POST_LD2) $(TARGET)$(EXE); \
+ fi
+
+# a pure C library
+cLibRule:
+ @-echo "linking ..."
+ $(LD) $(ST_LDFLAG) $(LDFLAGS) -shared -o $(CLIB)$(SO_NAME) \
+ $(CRT0) \
+ $(OPTIONAL_SHARED_LIB_PATH) \
+ $(COBJS) $(LINK_ADDITIONAL_OBJS) \
+ $(ADDITIONAL_LIBS) $(MATHLIB) $(EXTRA_LIBS) $(SYSLIBS) $(CRTN)
+
+checkSymbolsInLibrunAreUpToDate:
+ if [ -f $(LIBRUNDIR)/symbolAddress.h.timestamp ]; then \
+ $(MAKE) reallyCheckSymbolsInLibrunAreUpToDate; \
+ fi
+
+reallyCheckSymbolsInLibrunAreUpToDate: $(LIBRUNDIR)/symbolAddress.h.timestamp
+
+$(LIBRUNDIR)/symbolAddress.h.timestamp: $(INCLUDE)/symbols.stc $(LIBRUNDIR)/symbols.h
+ @-echo "Making librun for changed symbolList..."
+ cd $(LIBRUNDIR); $(MAKE)
+
+#
+# install:
+# make all then install
+#
+
+install:: checkTargetPresent
+ @if [ "$(VERBOSE)"x != "x" ]; then \
+ echo "making install in `pwd` ..."; \
+ fi
+ @$(MAKE) qinstall installSubdirsIf RELEASE=$(RELEASE)
+
+verboseInstall::
+ @$(MAKE) install VERBOSE=yes
+
+installHere:: checkTargetPresent
+ @$(MAKE) qinstall RELEASE=$(RELEASE)
+
+installLocal:: checkTargetPresent
+ @if [ "$(SILENT)"x = "x" ]; then \
+ echo "making installLocal in `pwd` ..."; \
+ fi
+ @$(MAKE) qinstall installSubdirsIf INSTALLBASE=$(TOP)/build
+
+installHereLocal:: checkTargetPresent
+ @$(MAKE) qinstall INSTALLBASE=$(TOP)/build
+
+installBinOnly::
+ @$(MAKE) qinstall installSubdirsIf RELEASE=$(RELEASE) SUPPRESS_INSTALL_SRC="yes"
+
+#
+# generate a self-extracting archive
+#
+installerFile::
+ @if [ "$(INSTALLED_DIR)"x != ""x ]; then \
+ $(MAKE) createInstallerFile \
+ INSTALLED_DIR=$(INSTALLED_DIR) \
+ INSTALL_FILE=inst_$(MODULE)-`$(TOP)/support/check/config.guess`.sh; \
+ else \
+ if [ "$(MODULE)"x = ""x ]; then \
+ $(MAKE) createInstallerFile \
+ INSTALLED_DIR=$(INSTALLBASE)/$(RELEASE) \
+ INSTALL_FILE=inst_STX$(RELEASE)-`$(TOP)/support/check/config.guess`.sh; \
+ else \
+ $(MAKE) createInstallerFile \
+ INSTALLED_DIR=$(INSTALLBASE)/$(RELEASE)/packages/$(MODULE) \
+ INSTALL_FILE=inst_$(MODULE)-`$(TOP)/support/check/config.guess`.sh; \
+ fi \
+ fi
+
+createInstallerFile::
+ @if [ "$(VERBOSE)"x != "x" ]; then \
+ echo "Generating tar-file for "$(INSTALLED_DIR)"..."; \
+ fi
+ @( \
+ here=`pwd` ; \
+ cd / ; \
+ tar cf $$here/installFile.tar $(INSTALLED_DIR) \
+ )
+ @if [ "$(COMPRESSOR)"x != "x" ]; then \
+ if [ "$(VERBOSE)"x != "x" ]; then \
+ echo $(COMPRESSOR)"-ing tar-file..."; \
+ fi; \
+ $(COMPRESSOR) installFile.tar; \
+ fi
+ @if [ "$(VERBOSE)"x != "x" ]; then \
+ echo "Generating self extracting shell-command-file ..."; \
+ fi
+ @$(TOP)/support/mk-selfinstall \
+ --outfile=$(INSTALL_FILE) \
+ --type=$(COMPRESSED_FILETYPE) \
+ --installDirMsg="$(INSTALLED_DIR)"\
+ installFile.tar.*
+ @rm installFile.tar.*
+
+checkTargetPresent::
+
+#$(INSTALLTOP_DIR)/bin:: $(INSTALLTOP_DIR)
+# @test -d $@ || mkdir $@
+#
+#$(INSTALLTOP_DIR)/lib:: $(INSTALLTOP_DIR)
+# @test -d $@ || mkdir $@
+#
+#$(INSTALLLIB_DIR)/lib:: $(INSTALLLIB_DIR)
+# @test -d $@ || mkdir $@
+#
+$(INSTALLLIB_DIR)/bitmaps:: $(INSTALLLIB_DIR)
+ @test -d $@ || mkdir $@
+
+$(INSTALLLIB_DIR)/fonts:: $(INSTALLLIB_DIR)
+ test -d $(INSTALLLIB_DIR)/fonts || mkdir $(INSTALLLIB_DIR)/fonts
+
+$(INSTALLLIB_DIR)/resources:: $(INSTALLLIB_DIR)
+ @test -d $@ || mkdir $@
+
+$(INSTALLLIB_DIR)/source:: $(INSTALLLIB_DIR)
+ @test -d $@ || mkdir $@
+
+$(INSTALLBASE)::
+ @test -d $@ || mkdir $@
+
+$(INSTALLBASE)/bin:: $(INSTALLBASE)
+ @test -d $@ || mkdir $@
+
+$(INSTALLBASE)/lib:: $(INSTALLBASE)
+ @test -d $@ || mkdir $@
+
+$(INSTALLBASE)/lib/lib:: $(INSTALLBASE)/lib
+ @test -d $@ || mkdir $@
+
+$(INSTALLBASE)/lib/bitmaps:: $(INSTALLBASE)/lib
+ @test -d $@ || mkdir $@
+
+$(INSTALLBASE)/packages:: $(INSTALLBASE)
+ @test -d $@ || mkdir $@
+
+$(INSTALLBASE)/packages/$(MODULE):: $(INSTALLBASE)/packages
+ @test -d $@ || mkdir $@
+
+$(INSTALLBASE)/packages/$(MODULE)/$(MODULE_DIR):: $(INSTALLBASE)/packages/$(MODULE)
+ @case "$(MODULE_DIR)" in \
+ "") \
+ ;; \
+ */*) \
+ ( md=`dirname $(MODULE_DIR)`; $(MAKE) installDir MODULE_DIR=$$md ); \
+ ;; \
+ esac
+ @test -d $@ || mkdir $@
+
+installDir: $(INSTALLBASE)/packages/$(MODULE)/$(MODULE_DIR)
+
+#
+# qinstall: (quick install)
+# install only - assumes make all was done previously
+#
+qinstall:: installAux installProgsIf installLibsIf installSources
+
+installProgsIf::
+ @-if [ "$(INSTALLPROGS)"x != x ]; then \
+ $(MAKE) installProgs; \
+ fi
+
+installProgs:: $(INSTALLBIN_DIR)
+ @-for i in $(INSTALLPROGS); do \
+ if [ "$(VERBOSE)"x != "x" ]; then \
+ echo "installing program: "$$i"..."; \
+ fi; \
+ $(INSTALL_BIN_CMD) $$i $(INSTALLBIN_DIR); \
+ done
+
+installLibsIf::
+ @-if [ "$(LIBNAME)" != "" ]; then \
+ $(MAKE) installLibs; \
+ fi
+ @-if [ "$(INSTALLED_LOAD_SCRIPTS)"x != ""x ]; then \
+ $(MAKE) installLoadScripts; \
+ fi
+ @-if [ -f $(LIBNAME).prj ]; then \
+ $(MAKE) installPrjFile; \
+ fi
+
+installLibs::
+ @-if [ -f $(LIBNAME)$(SO_NAME) ]; then \
+ $(MAKE) installSharedLib; \
+ else \
+ if [ -f $(LIBNAME)$(OBJNAME) ]; then \
+ $(MAKE) installStaticLib; \
+ fi \
+ fi
+ @-if [ -f $(LIBNAME).zip ]; then \
+ $(MAKE) installZippedClassFile; \
+ fi
+
+installSharedLib:: $(INSTALLLIB_DIR)
+ @if [ "$(VERBOSE)"x != "x" ]; then \
+ echo "installing dynamic library: "$(LIBNAME)$(SO_NAME)" in "$(INSTALLLIB_DIR)" ..."; \
+ fi
+ $(INSTALL_LIB_CMD) $(LIBNAME)$(SO_NAME) $(INSTALLLIB_DIR)
+ @-if [ "$(THIS_IS_A_BASE_LIBRARY)"x != ""x ]; then \
+ if [ "$(MODULE)"x != ""x ]; then \
+ if [ "$(MODULE_DIR)"x != ""x ]; then \
+ if [ "$(INSTALLLIB_DIR)" = "$(INSTALLBASE)/packages/$(MODULE)/$(MODULE_DIR)" ]; then \
+ if [ "$(INSTALLBASE)/lib" != "$(INSTALLLIB_DIR)" ]; then \
+ $(MAKE) installSharedLibSymbolicLink;\
+ fi \
+ fi \
+ fi \
+ fi \
+ fi
+
+installSharedLibSymbolicLink:: $(INSTALLBASE)/lib/lib
+ @if [ "$(VERBOSE)"x != "x" ]; then \
+ echo "generating symbolic link to shared object in $(INSTALLBASE)/lib/lib ..."; \
+ fi
+ @cd $(INSTALLBASE)/lib/lib && $(LNS) -f ../../packages/$(MODULE)/$(MODULE_DIR)/$(LIBNAME)$(SO_NAME) .
+
+installStaticLib:: $(INSTALLLIB_DIR)
+ @if [ "$(VERBOSE)"x != "x" ]; then \
+ echo "installing static library: "$(LIBNAME)$(OBJNAME)" in "$(INSTALLLIB_DIR)" ..."; \
+ fi
+ $(INSTALL_LIB_CMD) $(LIBNAME)$(OBJNAME) $(INSTALLLIB_DIR)
+
+installZippedClassFile:: $(INSTALLLIB_DIR)
+ @if [ "$(VERBOSE)"x != "x" ]; then \
+ echo "installing zip package: "$(LIBNAME).zip" in "$(INSTALLLIB_DIR)" ..."; \
+ fi
+ $(INSTALL_AUX_CMD) $(LIBNAME).zip $(INSTALLLIB_DIR)
+
+installPrjFile:: $(INSTALLLIB_DIR)
+ @if [ "$(VERBOSE)"x != "x" ]; then \
+ echo "installing prj file: "$(LIBNAME).prj" in "$(INSTALLLIB_DIR)" ..."; \
+ fi
+ $(INSTALL_AUX_CMD) $(LIBNAME).prj $(INSTALLLIB_DIR)
+
+installLoadScript:: $(INSTALLLIB_DIR)
+ @if [ "$(VERBOSE)"x != "x" ]; then \
+ echo "installing "$(LOAD_SCRIPT)" in "$(INSTALLLIB_DIR)" ..."; \
+ fi
+ $(INSTALL_AUX_CMD) $(LOAD_SCRIPT) $(INSTALLLIB_DIR)
+
+installLoadScripts::
+ @-for i in $(INSTALLED_LOAD_SCRIPTS); do \
+ if [ -f $$i ]; then \
+ $(MAKE) installLoadScript LOAD_SCRIPT=$$i; \
+ fi \
+ done
+
+installSources:: installSTSourceIf
+
+installSTSourceIf::
+ @-if [ "$(MODULE)"x != ""x ]; then \
+ if [ "$(MODULE_DIR)"x != ""x ]; then \
+ if [ "$(SUPPRESS_INSTALL_SRC)"x = ""x ]; then \
+ if [ "*.st" != '\*.st' ]; then \
+ if ( zip -h >/dev/null ) ; then \
+ $(MAKE) installSTZipSource; \
+ else \
+ $(MAKE) installSTSource; \
+ fi \
+ fi \
+ fi \
+ fi \
+ fi
+
+installSTSource:: $(INSTALLLIB_DIR)/source
+ @if [ "$(VERBOSE)"x != "x" ]; then \
+ echo "installing sources in $(INSTALLLIB_DIR)/source..."; \
+ fi
+ @-for i in *.st; do \
+ $(INSTALL_AUX_CMD) $$i $(INSTALLLIB_DIR)/source;\
+ done
+
+#
+# only store (i.e. do not compress);
+# ZipArchive cannot deflate/uncompress right now.
+#
+installSTZipSource:: $(INSTALLLIB_DIR)
+ @if [ "$(VERBOSE)"x != "x" ]; then \
+ echo "installing zipped sources in $(INSTALLLIB_DIR)/source.zip..."; \
+ fi
+ @zip -0 /tmp/source.zip *.st > /dev/null
+ @-rm -f $(INSTALLLIB_DIR)/source.zip
+ @mv /tmp/source.zip $(INSTALLLIB_DIR)/source.zip
+ @chmod 0644 $(INSTALLLIB_DIR)/source.zip
+
+installSubdirsIf::
+ @-if [ "$(INSTALL_SUBDIRS)" != "" ]; then \
+ $(MAKE) installSubDirs; \
+ fi
+
+installSubDirs::
+ @-for i in $(INSTALL_SUBDIRS); do \
+ if [ -d $$i ]; then \
+ if [ -f $$i/$(MAKEFILE) ]; then \
+ (cd $$i && $(MAKE) install INSTALLBASE=$(INSTALLBASE)); \
+ fi; \
+ fi; \
+ done
+
+installLocalSubdirsIf::
+ @-if [ "$(INSTALL_SUBDIRS)" != "" ]; then \
+ $(MAKE) installLocalSubDirs; \
+ fi
+
+installLocalSubDirs::
+ @-for i in $(INSTALL_SUBDIRS); do \
+ if [ -d $$i ]; then \
+ if [ -f $$i/$(MAKEFILE) ]; then \
+ (cd $$i && $(MAKE) installLocal); \
+ fi; \
+ fi; \
+ done
+
+installAux:: installAbbrevIf installBitmapsIf installResourcesIf
+
+installAbbrevIf::
+ @-if [ -f abbrev.stc ]; then \
+ if [ "$(MODULE)"x != ""x ]; then \
+ if [ "$(MODULE_DIR)"x != ""x ]; then \
+ $(MAKE) installAbbrev; \
+ fi \
+ fi \
+ fi
+
+installAbbrev:: $(INSTALLTOP_DIR)
+ @if [ "$(VERBOSE)"x != "x" ]; then \
+ echo "installing abbrev.stc..."; \
+ fi
+ @$(MAKE) abbrev.stc
+ cp abbrev.stc $(INSTALLTOP_DIR)
+
+installBitmapsIf::
+ @-if [ -d bitmaps ]; then \
+ if [ "$(SUPPRESS_INSTALL_BITMAPS)"x = "x" ]; then \
+ $(MAKE) installBitmaps; \
+ fi \
+ fi
+
+installBitmaps:: $(INSTALLBITMAPSLIB_DIR)
+ @-if [ "$(VERBOSE)"x != "x" ]; then \
+ echo "installing bitmaps..."; \
+ fi
+ -tar cf - bitmaps | (cd $(INSTALLBITMAPSLIB_DIR) && tar xf -)
+ @-find $(INSTALLBITMAPSLIB_DIR)/bitmaps -name 'CVS' -exec rm -rf {} \; 2>/dev/null
+ @-find $(INSTALLBITMAPSLIB_DIR)/bitmaps -name 'not_delivered' -exec rm -rf {} \; 2>/dev/null
+
+installFonts:: $(INSTALLLIB_DIR)/fonts
+ @if [ "$(VERBOSE)"x != "x" ]; then \
+ echo "installing fonts..."; \
+ fi
+ -(tar cf - fonts | (cd $(INSTALLLIB_DIR) ; tar xf -))
+ @-find $(INSTALLLIB_DIR)/fonts -name 'CVS' -exec rm -rf {} \; 2>/dev/null
+ @-find $(INSTALLLIB_DIR)/fonts -name 'not_delivered' -exec rm -rf {} \; 2>/dev/null
+
+installResourcesIf::
+ @-if [ -d resources ]; then \
+ if [ "$(SUPPRESS_INSTALL_RESOURCES)"x = "x" ]; then \
+ $(MAKE) installResources; \
+ fi \
+ fi
+
+installResources:: $(INSTALLLIB_DIR)/resources
+ @if [ "$(VERBOSE)"x != "x" ]; then \
+ echo "installing resources..."; \
+ fi
+ -tar cf - resources | (cd $(INSTALLLIB_DIR) && tar xf -)
+ @-find $(INSTALLLIB_DIR)/resources -name 'CVS' -exec rm -rf {} \; 2>/dev/null
+ @-find $(INSTALLLIB_DIR)/resources -name 'not_delivered' -exec rm -rf {} \; 2>/dev/null
+
+#
+# rule to make an archive
+#
+$(LIB): pre_lib $(DEPOBJS) $(DEPAUXOBJS) $(LIB_HELPER)
+ -cp $(LIB) $(LIB).sav
+ rm -f $(LIB)
+ $(AR) $(AR_LIB_FLAG) $(LIB) $(AR_OBJS)
+ -$(RANLIB) $(LIB)
+
+pre_lib::
+
+CONF_STRING="$(CONF):$(CONF_PACKS)"
+
+#
+# rule to make a main (either in smalltalk or application)
+# main.o depends on Makefile, to be recompiled when the configuration
+# changes (used to be in libbasic/Smalltalk.st)
+#
+# Now always rebuild main.o, to get the newest build number/date
+
+#main.o:: $(MAIN) $(INCLUDE)/stc.h $(MAKEFILE)
+main.o::
+ $(MAIN_CC) -o main.o -c $(MAIN_CFLAGS) $(MAIN_DEFINES) \
+ -DSTARTUP_CLASS="\"$(STARTUP_CLASS)\"" \
+ -DSTARTUP_SELECTOR="\"$(STARTUP_SELECTOR)\"" \
+ -DCONFIGURATION_STRING="\"$(CONF_STRING)\"" \
+ -DBUILD_DATE="\"`date '+%Y-%m-%d %R %Z'`\"" \
+ -DBUILD_NUMBER="\"${BUILD_NUMBER}\"" \
+ -I$(INCLUDE) -I. $(MAIN)
+
+#
+# liblist.stc:
+# automatic generate a liblist.stc - libinfo file from all OBJ files
+#
+liblist.stc:: Make.proto Make.spec
+ @-if [ "*.st" != '\*.st' ]; then \
+ if [ "$(LIBNAME)" != "" ]; then \
+ echo ""; \
+ echo "generating libinfo liblist.stc ..."; \
+ echo ""; \
+ if [ -f liblist.stc ]; then \
+ rm -f liblist.stc; \
+ fi; \
+ for i in ""*.st"" ; do \
+ NAME=`basename $$i .st`; \
+ if [ -f "$$NAME".o ]; then \
+ CLASS=`$(STC) -extractClass $$i`; \
+ if [ "$$CLASS" != "" ]; then \
+ echo " adding "$$i; \
+ echo $$CLASS" "$(LIBNAME) >> liblist.stc; \
+ fi; \
+ fi; \
+ done; \
+ $(MAKE) patchLiblist; \
+ fi; \
+ fi
+
+
+forceAbbrev::
+ @-$(MAKE) saveAbbrev
+ @-$(MAKE) abbrev.stc
+
+saveAbbrev:
+ @-if [ -f abbrev.stc ]; then \
+ rm -f abbrev.stc.bak ; \
+ mv abbrev.stc abbrev.stc.bak ; \
+ fi
+
+#
+# abbrev.stc:
+# generate an abbrev.stc - abbreviation file
+# from all .st files found here; leave as is, if no change
+#
+abbrev.stc:: Make.proto Make.spec $(TOP)/rules/rightstr .listOfSTfiles
+ @-if [ "`echo *.st`" != "*.st" ]; then \
+ echo "generating abbrev.stc in "$(MODULE_DIR)"..."; \
+ LC_COLLATE=POSIX; export LC_COLLATE; \
+ $(MAKE) genAbbrev; \
+ if [ "$(TOUCH)" != "echo" ]; then \
+ $(TOUCH) abbrev.stc; \
+ fi; \
+ if [ -f abbrev.stc.bak ]; then \
+ if (cmp abbrev.stc.bak abbrev.stc >/dev/null); then \
+ echo " abbrev.stc unchanged"; \
+ mv abbrev.stc.bak abbrev.stc; \
+ else \
+ echo " abbrev has changed"; \
+ fi \
+ fi \
+ else \
+ echo " no st-files -> no abbrevs"; \
+ fi
+
+#
+# unconditionally generate a local abbrev.stc file
+#
+genAbbrev::
+ @rm -f abbrev.stc
+ echo RELNAME=`$(RULEDIR)/relname $(TOP) $(DIRNAME) $(RIGHTSTR)`
+ @RELNAME=`$(RULEDIR)/relname $(TOP) $(DIRNAME) $(RIGHTSTR)`
+ @for i in *.st ; do \
+ case $$i in \
+ m_*) \
+ echo " ** skipping "$$i; \
+ ;; \
+ *_win32.st) \
+ echo " ** skipping win32 specific file in abbrev: "$$i;\
+ ;; \
+ *_vms.st) \
+ echo " ** skipping vms specific file in abbrev: "$$i; \
+ ;; \
+ *_macos.st) \
+ echo " ** skipping mac specific file in abbrev: "$$i; \
+ ;; \
+ *_beos.st) \
+ echo " ** skipping be specific file in abbrev: "$$i; \
+ ;; \
+ *_os2.st) \
+ echo " ** skipping os2 specific file in abbrev: "$$i; \
+ ;; \
+ *_unix.st) \
+ echo " ** skipping unix specific file in abbrev: "$$i; \
+ ;; \
+ *) \
+ if [ "$(VERBOSE)" != "" ]; then \
+ echo " processing "$$i;\
+ fi; \
+ CLASS=`$(STC) -extractClass $$i 2>/dev/null`; \
+ if [ "$(PACKAGE)" != "" ]; then \
+ PACKAGE=$(PACKAGE); \
+ else \
+ echo "Cannot figure out the package of $$i when generating abbrev.stc in "`pwd`; \
+ exit 1; \
+ PACKAGE=unknown; \
+ fi; \
+ if [ "$(NOAUTOLOAD)" = "1" ]; then \
+ if [ "$$CLASS" != "" ]; then \
+ NAME=`basename $$i .st`; \
+ if [ "$$CLASS" != "$$NAME" ]; then \
+ echo " warning: className ~= fileName: "$$NAME".st" > /dev/null; \
+ fi; \
+ echo $$CLASS" "$$NAME" "$$PACKAGE >> abbrev.stc; \
+ echo " added " $$CLASS" -> "$$NAME >/dev/null; \
+ else \
+ echo " ** ignore "$$i" in abbrevs (no valid class source ?)"; \
+ fi; \
+ else \
+ NCIVARS=`$(STC) -extractNumClassInstvars $$i 2>/dev/null`; \
+ CAT=`$(STC) -extractCategory $$i 2>/dev/null`; \
+ if [ "$$CLASS" != "" ]; then \
+ NAME=`basename $$i .st`; \
+ if [ "$$CLASS" != "$$NAME" ]; then \
+ echo " warning: className ~= fileName: "$$NAME".st" > /dev/null; \
+ fi; \
+ echo $$CLASS" "$$NAME" "$$PACKAGE $$CAT $$NCIVARS>> abbrev.stc; \
+ echo " added " $$CLASS" -> "$$NAME >/dev/null; \
+ else \
+ echo " ** ignore "$$i" in abbrevs (no valid class source ?)"; \
+ fi; \
+ fi; \
+ ;; \
+ esac; \
+ done
+ @sort < abbrev.stc | uniq > abbrev.stc.sorted
+ @mv abbrev.stc.sorted abbrev.stc
+
+$(TOP)/rules/rightstr:
+ @-if [ "$(CONF)" = "NT/cygwin32-bc" ]; then \
+ (cd $(TOP)/rules && $(CC) -c rightstr.c); \
+ (cd $(TOP)/rules && $(CC) rightstr.$(O)); \
+ else \
+ (cd $(TOP)/rules && $(CC) -o rightstr rightstr.c); \
+ fi
+
+
+#
+# recursively walk down, updating abbrev file
+#
+updAbbrev:
+ @$(MAKE) updLocalAbbrev
+ @-if [ "$(ALLSUBDIRS)x" != "x" ]; then \
+ $(MAKE) updSubdirAbbrev; \
+ fi
+
+updSubdirAbbrev::
+ @-for i in $(ALLSUBDIRS); do \
+ if [ -d $$i ]; then \
+ if [ -f $$i/Make.proto ]; then \
+ if [ -f $$i/$(MAKEFILE) ]; then \
+ echo "update abbreviations in $$i"; \
+ if [ "$(NOSUBAUTOLOAD)" = "1" ]; then \
+ (cd $$i && $(MAKE) updAbbrev NOSUBAUTOLOAD=1 NOAUTOLOAD=1 ); \
+ else \
+ (cd $$i && $(MAKE) updAbbrev); \
+ fi; \
+ fi \
+ fi \
+ fi; \
+ done
+
+
+.listOfSTfiles: .
+ @-if [ -r .listOfSTfiles ]; then \
+ ls *.st > .listOfSTfiles.new; \
+ if cmp .listOfSTfiles .listOfSTfiles.new; then \
+ rm -f .listOfSTfiles.new; \
+ else \
+ rm -f .listOfSTfiles; \
+ mv .listOfSTfiles.new .listOfSTfiles; \
+ fi; \
+ else \
+ ls *.st > .listOfSTfiles; \
+ fi
+
+
+modulList.o: modulList.c
+ $(CC) -c $(CFLAGS) -I$(INCLUDE) modulList.c
+ @-echo "done with modulList.o"
+
+modulList.c: modulList.stc
+ @$(MAKE) $(CLASSLISTEDITRULE) CLASSLIST=modulList
+ @-echo "done with modulList.c"
+
+modulList.stc: $(MAKEFILE)
+ @-rm -f modulList.stc modulList.c
+ @$(MAKE) GENERICLIST CLASSLIST=modulList \
+ ADDITIONAL_CLASSES="$(ADDITIONAL_CLASSES)" \
+ LIBLIST="$(LIBLIST)" \
+ CLASSLIBRARIES=" \
+ $(LIBLIST) \
+ $(OTHERLIBRARIES) \
+ " \
+ CLASSLISTS=" \
+ $(EXTRACLASSLISTS) \
+ $(CLIENTCLASSLISTS) \
+ "
+
+#
+# edit a modulList.c file from a modulList.stc file
+#
+classListEdit:
+ @echo "making $(CLASSLIST).c from $(CLASSLIST).stc"
+ @echo "#include <stcIntern.h>" > $(CLASSLIST).c
+ @echo "typedef void (*vf)();" >> $(CLASSLIST).c
+ @sed '/^$$/d' < $(CLASSLIST).stc > $(CLASSLIST).tmp1
+ @sed 's/ $$//' < $(CLASSLIST).tmp1 > $(CLASSLIST).tmp2
+ @sed 's/ $$//' < $(CLASSLIST).tmp2 > $(CLASSLIST).tmp1
+ @sed 's/^/extern void _/' < $(CLASSLIST).tmp1 > $(CLASSLIST).tmp2
+ @sed -e '/[A-Za-z]/s/$$/_Init();/' -e 's/::/__/' < $(CLASSLIST).tmp2 >> $(CLASSLIST).c
+ @echo "static vf modules[] = {" >> $(CLASSLIST).c
+ @sed 's/^/_/' < $(CLASSLIST).tmp1 > $(CLASSLIST).tmp2
+ @sed 's/::/__/' < $(CLASSLIST).tmp2 > $(CLASSLIST).tmp1
+ @sed 's/$$/_Init,/' < $(CLASSLIST).tmp1 >> $(CLASSLIST).c
+ @echo "(vf)0" >> $(CLASSLIST).c
+ @echo "};" >> $(CLASSLIST).c
+ @echo "vf *__modules__ = modules;" >> $(CLASSLIST).c
+ @-rm -f $(CLASSLIST).tmp1 $(CLASSLIST).tmp2
+ @-echo "done with classListEdit"
+
+#
+# generate a classList.stc/modulList.stc
+# from LIBLIST, CLASSLISTS and EXTRA_CLASSES
+# requires CLASSLIST to be set
+#
+GENERICLIST: $(CLASSLISTS)
+ @echo "making $(CLASSLIST)"
+ @-rm -f $(CLASSLIST)
+ @-if [ "$(LIBLIST)" != "" ]; then \
+ echo " included class libraries:"; \
+ $(MAKE) addNamesToList NAMES="$(LIBLIST)"; \
+ fi
+ @-if [ "$(CLASSLISTS)" = "" ]; then \
+ echo "(ignore any following syntax error ...)" >/dev/null; \
+ fi
+ @-if [ "$(CLASSLISTS)" != "" ]; then \
+ echo " included individual classes:"; \
+ for i in "$(CLASSLISTS)"; do \
+ echo " $$i"; \
+ done; \
+ cat $(CLASSLISTS) >> $(CLASSLIST).stc; \
+ fi
+ @-if [ "$(ADDITIONAL_CLASSES)" != "" ]; then \
+ echo " included additional (user) classes:"; \
+ for i in $(ADDITIONAL_CLASSES); do \
+ echo " $$i" | sed 's/_/_137/g'; \
+ echo $$i | sed 's/_/_137/g' >> $(CLASSLIST).stc; \
+ done; \
+ fi
+ @echo
+
+addNamesToList:
+ @-for i in $(NAMES); do \
+ echo " $$i"; \
+ echo $$i >> $(CLASSLIST).stc; \
+ done
+
+#
+# generate a libXXXInit.c file from classList/modulList.stc
+#
+$(LIBNAME)Init.c: Make.proto Make.spec libInit.cc
+ @cp libInit.cc $(LIBNAME)Init.c
+
+ntLibInit.c: $(LIBNAME)Init.c
+ mv $(LIBNAME)Init.c ntLibInit.c
+
+
+#
+# generate a zip file containing the sources.
+#
+$(LIBNAME).zip:
+ zip -0 $(LIBNAME).zip *.st
+
+#
+# generate an export file for AIX sharedlibrary building
+#
+#old$(LIBNAME).exp: $(CLASSLIST).stc
+# @-if [ -f $(CLASSLIST).stc ]; then \
+# echo "making export file $(LIBNAME).exp from $(CLASSLIST).stc"; \
+# echo "#! /usr/local/lib/smalltalk/lib/$(LIBNAME).so" > $(LIBNAME).exp; \
+# sed '/^$$/d' < $(CLASSLIST).stc > $(LIBNAME).tmp1; \
+# sed 's/ $$//' < $(LIBNAME).tmp1 > $(LIBNAME).tmp2; \
+# sed 's/ $$//' < $(LIBNAME).tmp2 > $(LIBNAME).tmp1; \
+# sed 's/^/_/' < $(LIBNAME).tmp1 > $(LIBNAME).tmp2; \
+# sed 's/::/__/' < $(LIBNAME).tmp2 > $(LIBNAME).tmp1; \
+# sed '/[A-Za-z]/s/$$/_Init/' < $(LIBNAME).tmp1 >> $(LIBNAME).exp ;\
+# rm -f $(LIBNAME).tmp1 $(LIBNAME).tmp2; \
+# echo "done with $(LIBNAME).exp"; \
+# else \
+# echo "skip making of $(LIBNAME).exp - no classList"; \
+# fi
+
+$(LIBNAME).exp: $(LIB)
+ @-echo "making export file $(LIBNAME).exp"
+ @-echo "#! /usr/local/lib/smalltalk/lib/$(LIBNAME).so" > $(LIBNAME).exp
+ @-echo "_"$(LIBNAME)"_Init" >> $(LIBNAME).exp
+
+#
+# generate a file containing symbols to be hidden in
+# a classlib. Use for classLibs which are to be loaded completely
+#
+hiddenSyms.stc: $(CLASSLIST).stc
+ @echo "making list of hidden syms ..."
+ @sed '/^$$/d' < $(CLASSLIST).stc > hiddenSyms.tmp1
+ @sed 's/ $$//' < hiddenSyms.tmp1 > hiddenSyms.tmp2
+ @sed 's/ $$//' < hiddenSyms.tmp2 > hiddenSyms.tmp1
+ @sed 's/^/_/' < hiddenSyms.tmp1 > hiddenSyms.tmp2
+ @sed 's/::/__/' < hiddenSyms.tmp2 > hiddenSyms.tmp1
+ @sed '/[A-Za-z]/s/$$/_Init/' < hiddenSyms.tmp1 > hiddenSyms.stc
+ @rm -f hiddenSyms.tmp1 hiddenSyms.tmp2
+ @-echo "done with hiddenSyms.stc"
+
+#depend:
+# @-if grep "xx"STDEPEND $(MAKEFILE); then \
+# sed '/"xx"STDEPEND/, $$ d' < $(MAKEFILE) > mf.tmp; \
+# echo "# xx""STDEPENDxx" >> mf.tmp ; \
+# echo mv mf.tmp $(MAKEFILE); \
+# fi
+#
+allDepend:
+ @-$(MAKE) depend
+ @-if [ "$(SUBDIRS)"x != x ]; then \
+ for i in $(SUBDIRS)" "; do \
+ if [ -d $$i ]; then \
+ (cd $$i && $(MAKE) depend); \
+ fi; \
+ done; \
+ fi
+
+depend:
+ @-if grep "^# BEGINMAKEDEPEND" Make.proto > /dev/null; then \
+ if [ -f $(TOP)/stc/stc ]; then \
+ $(MAKE) STC=$(STC) stDepend; \
+ else \
+ if ($(STC) --version 2>/dev/null); then \
+ $(MAKE) STC=$(STC) stDepend; \
+ else \
+ echo "**** oops, no stc ("$(STC)"). Cannot make dependencies"; \
+ fi \
+ fi \
+ fi
+
+.dependencies:
+ @-echo " extracting dependencies ..."
+ @-for i in *.st ; do \
+ if [ -f `basename $$i .st`_win32.st ]; then \
+ echo " skipping $$i in dependencies"; \
+ else \
+ echo " extracting dependencies for $$i ..." >/dev/null; \
+ $(STC) $(LOCALINCLUDES) -I$(INCLUDE) -I. -makeDepend $$i >> .dependencies 2>/dev/null; \
+ rslt=$$?; \
+ if [ $$rslt != 0 ]; then \
+ echo " *** superclass not compiled / no valid class source in "$$i" ? [exitCode="$$rslt"]" >/dev/null; \
+ fi \
+ fi \
+ done
+
+stDepend::
+ @-rm -f .dependencies
+ @$(MAKE) .dependencies
+ @-sed 's/^\(.\)/$$(OUTDIR)\1/' < .dependencies > ttt1
+ @-sed 's/\.H/\.$$(H)/g' < ttt1 > .dependencies
+ @-for i in *.st ; do \
+ echo "genAbbrev:: $$i" >> .dependencies; \
+ done
+ @-sed '1,/^# BEGINMAKEDEPEND/w ttt1' < $(MAKEFILE) > /dev/null
+ @-sed '/^# ENDMAKEDEPEND/,$$w ttt2' < $(MAKEFILE) > /dev/null
+ @-cat ttt1 > $(MAKEFILE).new
+ @-if grep "^# BEGINMAKEDEPEND" ttt1 > /dev/null; then \
+ echo "found BEGIN line" > /dev/null; \
+ else \
+ echo "# BEGINMAKEDEPEND --- do not remove this line; make depend needs it" >> $(MAKEFILE).new; \
+ fi
+ @-cat .dependencies >> $(MAKEFILE).new
+ @-if grep "^# ENDMAKEDEPEND" ttt2 > /dev/null; then \
+ echo "found END line" > /dev/null; \
+ else \
+ echo "# ENDMAKEDEPEND --- do not remove this line" >> $(MAKEFILE).new; \
+ fi
+ @-cat ttt2 >> $(MAKEFILE).new
+ @-rm -f ttt1 ttt2
+ @-rm -f $(MAKEFILE)
+ @-rm -f .dependencies
+ @-mv $(MAKEFILE).new $(MAKEFILE)
+
+showDepend:: abbrev.stc
+ @-for i in *.st ; do \
+ $(STC) $(LOCALINCLUDES) -I$(INCLUDE) -I. -makeDepend $$i; \
+ done
+
+unlink:
+ @-for i in * ; do \
+ if [ -h $i ]; then \
+ echo $i; \
+ cp $i $i.X; mv $i.X $i; \
+ fi; \
+ done
+
+#
+# create symbolic links for all used libraries in the LINK_LIBDIR
+# directory. Req'd for sharedLib links.
+#
+mkLinkLibDir:
+ @test -d $(LINK_LIBDIR) || mkdir $(LINK_LIBDIR)
+
+linkLibsDir:
+ @-if [ "$(LINK_LIBDIR)" = "" ]; then \
+ if [ "$(NO_LINK_LIBDIR)" != "yes" ]; then \
+ test -d lib || mkdir lib; \
+ fi \
+ else \
+ $(MAKE) mkLinkLibDir LINK_LIBDIR="$(LINK_LIBDIR)"; \
+ fi
+
+linkLibs:
+ @if [ "$(LINK_LIBOBJS)" != "$(LIBOBJS)" ]; then \
+ if [ "$(LIBOBJS)" != "" ]; then \
+ $(MAKE) linkLibsDir LINK_LIBDIR="$(LINK_LIBDIR)"; \
+ $(MAKE) linkObjs LIBOBJS="$(LIBOBJS)"; \
+ fi; \
+ fi
+ @if [ "$(LINK_LIBRUN)" != "$(LIBRUN)" ]; then \
+ $(MAKE) linkLibsDir LINK_LIBDIR="$(LINK_LIBDIR)"; \
+ if [ "$(LINK_LIBDIR)" = "" ]; then \
+ if [ "$(LIBRUN)" = "" ]; then \
+ echo " symlinking to $(LIBRUNDIR)/$(LINK_LIBRUN) for linkage ..."; \
+ rm -f `basename $(LINK_LIBRUN)` lib/`basename $(LINK_LIBRUN)`; \
+ $(LNS) $(LIBRUNDIR)/$(LINK_LIBRUN) .; \
+ if [ "$(NO_LINK_LIBDIR)" != "yes" ]; then \
+ (cd lib && $(LNS) ../$(LIBRUNDIR)/$(LINK_LIBRUN) .); \
+ fi; \
+ else \
+ echo " symlinking to $(LIBRUN) for linkage ..."; \
+ rm -f `basename $(LIBRUN)` lib/`basename $(LIBRUN)`; \
+ $(LNS) $(LIBRUN) .; \
+ if [ "$(NO_LINK_LIBDIR)" != "yes" ]; then \
+ (cd lib && $(LNS) ../$(LIBRUN) .); \
+ fi; \
+ fi; \
+ else \
+ if [ "$(FORCE_LINK_LIBRUN)" != "" ]; then \
+ echo " symlinking to $(LIBRUNDIR)/$(LINK_LIBRUN) for linkage ..."; \
+ rm -f `basename $(LINK_LIBRUN)` lib/`basename $(LINK_LIBRUN)`; \
+ $(LNS) $(LIBRUNDIR)/$(LINK_LIBRUN) .; \
+ if [ "$(NO_LINK_LIBDIR)" != "yes" ]; then \
+ (cd lib && $(LNS) ../$(LIBRUNDIR)/$(LINK_LIBRUN) .); \
+ fi; \
+ else \
+ if [ "$(LINK_LIBDIR)" != "" ]; then \
+ echo " symlinking to ../$(LIBRUN) for linkage ..."; \
+ rm -f $(LINK_LIBDIR)/`basename $(LIBRUN)`; \
+ (cd $(LINK_LIBDIR) && $(LNS) ../$(LIBRUN) .); \
+ fi; \
+ fi; \
+ fi; \
+ fi
+ @if [ "$(LINK_EXTRA_OBJ)" != "$(EXTRA_OBJ)" ]; then \
+ $(MAKE) linkLibsDir LINK_LIBDIR="$(LINK_LIBDIR)"; \
+ $(MAKE) linkExtraObj EXTRA_OBJ="$(EXTRA_OBJ)"; \
+ fi
+
+linkObjs:
+ @for i in $(LIBOBJS); do \
+ echo " symlinking to $$i for linkage ..."; \
+ if [ "$(LINK_LIBDIR)" = "" ]; then \
+ rm -f `basename $$i` lib/`basename $$i`; \
+ $(LNS) $$i .; \
+ if [ "$(NO_LINK_LIBDIR)" != "yes" ]; then \
+ (cd lib && $(LNS) ../$$i .); \
+ fi \
+ else \
+ if [ "$(LINK_LIBDIR)" != "" ]; then \
+ rm -f $(LINK_LIBDIR)/`basename $$i`; \
+ (cd $(LINK_LIBDIR) && $(LNS) ../$$i .); \
+ fi; \
+ fi; \
+ done
+
+linkExtraObj:
+ @for i in $(EXTRA_OBJ); do \
+ echo " symlinking to $$i for linkage ..."; \
+ if [ "$(LINK_LIBDIR)" = "" ]; then \
+ rm -f `basename $$i` lib/`basename $$i`; \
+ $(LNS) $$i .; \
+ if [ "$(NO_LINK_LIBDIR)" != "yes" ]; then \
+ (cd lib && $(LNS) ../$$i .); \
+ fi \
+ else \
+ if [ "$(LINK_LIBDIR)" != "" ]; then \
+ rm -f $(LINK_LIBDIR)/`basename $$i`; \
+ (cd $(LINK_LIBDIR) && $(LNS) ../$$i .); \
+ fi; \
+ fi; \
+ done
+
+removeLinkLibs::
+ @-if [ "$(LINK_LIBDIR)" = "" ]; then \
+ rm -f $(EXTRA_LINK_LIBS) $(EXTRA_LINK_OBJ) \
+ $(LINK_LIBOBJS) $(LINK_LIBRUN); \
+ fi
+
+#
+# linking to bitmap files in a project directory
+#
+bitmapLink:
+ @-if [ "$(COLLECT_BITMAPS)" != "" ]; then \
+ $(MAKE) do_bitmapLink; \
+ fi
+
+do_bitmapLink::
+ test -d bitmaps || mkdir bitmaps
+ for i in $(BITMAPLINK_DIRS) $(EXTRA_BITMAPLINK_DIRS); do \
+ if [ -d $$i ]; then \
+ if [ -d $$i/bitmaps ]; then \
+ if [ "`echo $$i/bitmaps/*`" != '$$i/bitmaps/*' ]; then \
+ echo linking bitmaps from $$i; \
+ (cd bitmaps && $(LNS) ../$$i/bitmaps/* . 2>/dev/null); \
+ (cd bitmaps && rm -f CVS RCS \* not_delivered); \
+ fi; \
+ fi; \
+ fi; \
+ done
+
+#
+# linking to binary files in a project directory
+#
+binaryLink:
+ @-if [ "$(COLLECT_BINARIES)" != "" ]; then \
+ $(MAKE) do_binaryLink; \
+ fi
+
+do_binaryLink::
+ test -d binary || mkdir binary
+ @-for i in $(BINARYLINK_DIRS); do \
+ if [ -d $$i ]; then \
+ if [ "`echo $$i/*$(BIN_O)`" != '$$i/*$(BIN_O)' ]; then \
+ echo linking binaries from $$i; \
+ (cd binary && $(LNS) ../$$i/*$(BIN_O) . 2>/dev/null); \
+ (cd binary && $(LNS) ../$$i/*.cls . 2>/dev/null); \
+ (cd binary && rm -f CVS RCS not_delivered \*.cls \*$(BIN_O) ); \
+ fi; \
+ fi; \
+ done
+ @-if [ "$(EXTRA_BINARYLINK_DIRS)" != "" ]; then \
+ $(MAKE) binaryLinkExtra; \
+ fi
+
+binaryLinkExtra:
+ @-for i in $(EXTRA_BINARYLINK_DIRS); do \
+ echo linking binary $$i; \
+ rm -f binary/`basename $$i`; \
+ (cd binary && $(LNS) ../$$i .); \
+ done
+
+#
+# linking to source files in a project directory
+#
+sourceLink:
+ @-if [ "$(COLLECT_SOURCES)" != "" ]; then \
+ $(MAKE) do_sourceLink; \
+ fi
+
+do_sourceLink::
+ test -d source || mkdir source
+ @-for i in $(SOURCELINK_DIRS); do \
+ if [ -d $$i ]; then \
+ if [ "`echo $$i/*.st`" != $$i'/*.st' ]; then \
+ echo linking sourcefiles from $$i; \
+ (cd source && $(LNS) ../$$i/*.st . 2> /dev/null || true); \
+ (cd source && rm -f CVS RCS not_delivered \*.st); \
+ fi; \
+ else \
+ if [ -d $(TOP)/$$i ]; then \
+ if [ "`echo $(TOP)/$$i/*.st`" != $(TOP)/$$i'/*.st' ]; then \
+ echo linking sourcefiles from $(TOP)/$$i; \
+ (cd source && $(LNS) ../$(TOP)/$$i/*.st . 2> /dev/null || true); \
+ (cd source && rm -f CVS RCS not_delivered \*.st); \
+ fi; \
+ fi; \
+ fi; \
+ done
+
+#
+# create zip files containing sources
+# (do not compress - ZipArchive class cannot do this right now
+#
+sourceZip:
+ test -d source || mkdir source
+ test -d source/stx || mkdir source/stx
+ for i in $(SOURCELINK_DIRS); do \
+ if [ -d $$i ]; then \
+ if [ "`echo $$i/*.zip`" != $$i'/*.zip' ]; then \
+ echo "copy zip-sourcefile from $$i"; \
+ cp $$i/*.zip source/stx; \
+ fi \
+ else \
+ if [ -d $(TOP)/$$i ]; then \
+ if [ "`echo $(TOP)/$$i/*.st`" != $(TOP)/$$i/'*.st' ]; then \
+ echo "copy zip-sourcefile from $(TOP)/$$i"; \
+ cp $(TOP)/$$i/*.zip source/stx; \
+ fi \
+ fi \
+ fi \
+ done
+
+#
+# linking to resource files in a project directory
+#
+resourceLink:
+ @-if [ "$(COLLECT_RESOURCES)" != "" ]; then \
+ $(MAKE) do_resourceLink; \
+ fi
+
+do_resourceLink::
+ @test -d resources || mkdir resources
+ @-for i in $(RESOURCELINK_DIRS); do \
+ if [ -d $$i ]; then \
+ if [ "`echo $$i/*`" != '$$i/*' ]; then \
+ echo linking resource files from $$i ...; \
+ (cd resources && $(LNS) ../$$i/* . 2> /dev/null || true); \
+ (cd resources && rm -f CVS RCS not_delivered \*); \
+ fi; \
+ else \
+ if [ -d $(TOP)/$$i ]; then \
+ if [ "`echo $(TOP)/$$i/*`" != '$(TOP)/$$i/*' ]; then \
+ echo linking resource files from $(TOP)/$$i ...; \
+ (cd resources && $(LNS) ../$(TOP)/$$i/* . 2> /dev/null || true); \
+ (cd resources && rm -f CVS RCS not_delivered \*); \
+ fi; \
+ fi; \
+ fi; \
+ done
+
+styleLink:
+ @-if [ "$(COLLECT_RESOURCES)" != "" ]; then \
+ $(MAKE) do_styleLink; \
+ fi
+
+do_styleLink::
+ @test -d resources || mkdir resources
+ @-echo "linking style files from $(LIBVIEWDIR)/styles ..."
+ @-rm -f resources/*.style resources/*.common
+ @-(cd resources && $(LNS) ../$(LIBVIEWDIR)/styles/* . 2> /dev/null || true)
+ @rm -f resources/RCS resources/CVS resources/not_delivered
+
+includeLink:
+ @test -d include || mkdir include
+ @-for i in $(INCLUDELINK_FILES); do \
+ if [ ! -r include/$$i ]; then \
+ if [ -f $(INCLUDE)/$$i ]; then \
+ echo "linking $$i ..."; \
+ rm -f include/`basename $$i`; \
+ (cd include && $(LNS) ../$(INCLUDE)/$$i .); \
+ else \
+ echo "oops - no $(INCLUDE)/$$i"; \
+ fi; \
+ fi; \
+ done
+
+#
+# checkin all changed files
+#
+checkin::
+ @echo "comment: "
+ @(read comment ; $(MAKE) doCheckin COMMENT="$$comment")
+
+checkinlocal::
+ @echo "comment: "
+ @(read comment ; $(MAKE) doCheckin COMMENT="$$comment" LOCALCHECKIN="yes" )
+
+#
+# checkin; expects $(COMMENT) to be set
+#
+doCheckin::
+ @-if [ -d CVS ]; then \
+ if [ "$(LOCALCHECKIN)" != "yes" ]; then \
+ cvs commit -m"$(COMMENT)"; \
+ else \
+ cvs commit -l -m"$(COMMENT)"; \
+ fi \
+ fi
+
+ident::
+ @-ident *.st Make.proto
+
+releaseDir:
+ @-if [ ! -d $(TOP)/releases ]; then \
+ echo "creating release directory"; \
+ mkdir $(TOP)/releases; \
+ echo 2 > $(TOP)/releases/NEXT_MAJOR; \
+ echo 10 > $(TOP)/releases/NEXT_MINOR; \
+ echo 5 > $(TOP)/releases/NEXT_VSN; \
+ echo 1 > $(TOP)/releases/NEXT_REL; \
+ fi
+
+incRelease:
+ @(read rel < $(TOP)/releases/NEXT_REL ; \
+ expr $$rel + 1 > $(TOP)/releases/NEXT_REL)
+
+incVersion:
+ @(read vsn < $(TOP)/releases/NEXT_VSN ; \
+ expr $$vsn + 1 > $(TOP)/releases/NEXT_VSN)
+ echo 1 > $(TOP)/releases/NEXT_REL
+
+incMinor:
+ @(read min < $(TOP)/releases/NEXT_MIN ; \
+ expr $$min + 1 > $(TOP)/releases/NEXT_MIN)
+ echo 1 > $(TOP)/releases/NEXT_VSN
+ echo 1 > $(TOP)/releases/NEXT_REL
+
+#
+# make a new release
+#
+release:
+ @$(MAKE) releaseDir
+ @$(MAKE) incRelease
+ @(read maj<$(TOP)/releases/NEXT_MAJOR ; \
+ read min<$(TOP)/releases/NEXT_MINOR ; \
+ read vsn<$(TOP)/releases/NEXT_VSN ; \
+ read rel<$(TOP)/releases/NEXT_REL ; \
+ $(MAKE) doRelease REL=$$rel RELEASEID="$$maj.$$min.$$vsn.$$rel" )
+
+#
+# make a new version
+#
+version:
+ @$(MAKE) releaseDir
+ @$(MAKE) incVersion
+ @(read maj<$(TOP)/releases/NEXT_MAJOR ; \
+ read min<$(TOP)/releases/NEXT_MINOR ; \
+ read vsn<$(TOP)/releases/NEXT_VSN ; \
+ read rel<$(TOP)/releases/NEXT_REL ; \
+ $(MAKE) doRelease VSN=$$vsn RELEASEID="$$maj.$$min.$$vsn.$$rel" )
+
+#
+# make a new minor
+#
+minor:
+ @$(MAKE) releaseDir
+ @$(MAKE) incMinor
+ @(read maj<$(TOP)/releases/NEXT_MAJOR ; \
+ read min<$(TOP)/releases/NEXT_MINOR ; \
+ read vsn<$(TOP)/releases/NEXT_VSN ; \
+ read rel<$(TOP)/releases/NEXT_REL ; \
+ $(MAKE) doRelease MIN=$$min RELEASEID="$$maj.$$min.$$vsn.$$rel" )
+
+doRelease:
+ @-if [ -d $(TOP)/releases/$(RELEASEID) ]; then \
+ echo "Release $(RELEASEID) already exists"; \
+ echo; \
+ echo "stop make"; \
+ sh -c "exit 1"; \
+ fi
+ test -d $(TOP)/releases/$(RELEASEID) || \
+ mkdir $(TOP)/releases/$(RELEASEID)
+ @if [ -d $(TOP)/releases/$(RELEASEID) ]; then \
+ echo "making new release $(RELEASEID) ... "; \
+ $(MAKE) manifest RELPATH="." RELEASEID=$(RELEASEID); \
+ fi
+
+#
+# extract rcs ids and add to manifest file
+# as $(TOP)/releases/$(RELEASEID)/MANIFEST
+#
+manifest:
+ @-for i in $(RCSSOURCES); do \
+ rlog -h $$i | grep "head:" | sed "s/head://" >/tmp/ID; \
+ (read id</tmp/ID ; echo $(RELPATH)/$$i $$id >> $(TOP)/releases/$(RELEASEID)/MANIFEST); \
+ tail -1 $(TOP)/releases/$(RELEASEID)/MANIFEST; \
+ done
+ if [ "$(ALLSUBDIRS)"x != x ]; then \
+ for i in $(ALLSUBDIRS)" "; do \
+ if [ -d $$i ]; then \
+ echo ""; \
+ echo "manifest in $$i ... "; \
+ echo ""; \
+ (cd $$i && $(MAKE) makeMakefile); \
+ (cd $$i && $(MAKE) manifest RELPATH="$(RELPATH)/$$i" RELEASEID=$(RELEASEID)); \
+ fi; \
+ done; \
+ fi
+
+
+stcinfo:
+ $(STC) $(STCFLAGS) -V -version
+
+echoObjs:
+ @-if [ "$(OBJS)" != "" ]; then \
+ $(MAKE) doEchoObjs; \
+ fi
+
+doEchoObjs:
+ @-for i in $(OBJS); do \
+ echo `basename $$i .$(O)` ;\
+ done
+
+#
+# additional/changed rules
+#
+.SUFFIXES: .st .chg .c .o .tco .chk .note .i .copt .cls .dep .H .STH
+
+__STANDARD_O_RULE__:
+ $(STC) $(STCFLAGS) $(STC_MSGFORMAT) $(CFLAGS_ARCH) $(CFLAGS) $(CFLAGS_LOCAL) -CC="$(CLASSLIB_CC)" -c $(PWD)/$(STFILE).st && \
+ $(TOUCH) $(PWD)/$(STFILE).$(O)
+
+__STANDARD_C_RULE__:
+ $(STC) $(STCFLAGS) $(STC_MSGFORMAT) $(CFLAGS_ARCH) $(CFLAGS) $(CFLAGS_LOCAL) -CC="$(CLASSLIB_CC)" -C $(PWD)/$(STFILE).st
+
+__STANDARD_S_RULE__:
+ $(STC) $(STCFLAGS) $(STC_MSGFORMAT) $(CFLAGS_ARCH) $(CFLAGS) $(CFLAGS_LOCAL) -CC="$(CLASSLIB_CC)" -S $(PWD)/$(STFILE).st
+
+__STANDARD_H_RULE__:
+ $(STC) $(STCFLAGS) $(STC_MSGFORMAT) -H. -warn -headerOnly $(PWD)/$(STFILE).st && \
+ $(TOUCH) $(PWD)/$(STFILE).$(H)
+
+.st.STH:
+ @$(MAKE) OPT="$(OPT)" STC="$(STC)" STFILE=$* $(H_RULE)
+
+.SUFFIXES: .st .gdb
+.st.gdb:
+ (echo "r $(STCFLAGS) $(STC_MSGFORMAT) $(CFLAGS_ARCH) $(CFLAGS) $(CFLAGS_LOCAL) -CC="$(CLASSLIB_CC)" -C $<" ; echo "bt" ; cat -) | gdb $(STC)
+
+# Now the header files are no longer stored in stx/include, but together
+# with the .st files. The .H files may be older then the .st files (if the
+# class layout didn't change, so they should not be recreated implicitely!
+#
+#.st.H:
+# @$(MAKE) OPT="$(OPT)" STC="$(STC)" STFILE=$* $(H_RULE)
+
+.st.$(O):
+ @$(MAKE) CC="$(CLASSLIB_CC)" OPT="$(OPT)" SEPINITCODE="$(SEPINITCODE)" STC="$(STC)" STFILE=$* $(O_RULE)
+
+.st.c:
+ @$(MAKE) CC="$(CLASSLIB_CC)" OPT="$(CLASSLIB_OPT)" SEPINITCODE="$(SEPINITCODE)" STC="$(STC)" STFILE=$* $(C_RULE)
+
+.c.i:
+ $(CC) $(CFLAGS_ARCH) $(CFLAGS) -E $*.c > $*.i
+
+#.c.s:
+# $(CC) $(CFLAGS_ARCH) $(CFLAGS) -S $*.c
+
+.st.s:
+ @$(MAKE) CC="$(CLASSLIB_CC)" OPT="$(CLASSLIB_OPT)" SEPINITCODE="$(SEPINITCODE)" STC="$(STC)" STFILE=$* $(S_RULE)
+
+.chg.c:
+ $(STC) -VT $(STCFLAGS) $(STC_MSGFORMAT) $(CFLAGS) -C $*.chg
+
+.chg.$(O):
+ $(STC) $(STCFLAGS) $(STC_MSGFORMAT) $(CFLAGS) -c $*.chg
+ @$(TOUCH) $*.$(O)
+
+.st.dep:
+ $(STC) $(STCFLAGS) $(STC_MSGFORMAT) $(CFLAGS) -makeDepend $*.st
+
+.st.chk:
+ $(STC) $(STCFLAGS) $(STC_MSGFORMAT) $(CFLAGS) -check $*.st
+
+.st.note:
+ $(STC) $(STCFLAGS) $(STC_MSGFORMAT) $(CFLAGS) -check +notice +hint $*.st
+
+.st.cls:
+ $(TOP)/projects/smalltalk/stx -I -noInfoPrint -q -f $(TOP)/projects/smalltalk/stbc $(STBC_ARGS) $*.st
+
+#.st.cls:
+# $(TOP)/projects/smalltalk/stx -I -noInfoPrint -q -f $(TOP)/projects/smalltalk/stbc \
+# -s $(TOP)/projects/smalltalk/smalltalk $*.st
+
+#
+# all-rule for Make.protos that dont need one ...
+#
+AIX:: all
+
+HP:: all
+
+HP_ACC32:: all
+
+HP_ACC64:: all
+
+ULTRIX:: all
+
+LINUX_i386:: all
+
+LUNIX_i386_ELF:: all
+
+SGI5:: all
+
+SGI5_gcc:: all
+
+SGI:: all
+
+SGI_gcc:: all
+
+REALIX_88k:: all
+
+SUN_sparc:: all
+
+OSF_ALPHA:: all
+
+#------------------ end of rules/stdRules ---------------------
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/makelib/stdRules_bc Thu Aug 03 09:37:46 2017 +0100
@@ -0,0 +1,647 @@
+#
+# $Header: /cvs/stx/stx/rules/stdRules_bc,v 1.132 2017-01-19 10:28:06 stefan Exp $
+#
+# MIMEType: application/x-make
+# EOLMode: msdos
+#
+# The name of this rules file is now misleading; it used to be used only for
+# borland, but now also contains visualC and other compiler definitions.
+#
+# defaults to borland-build, unless invoked with either
+# USEVC=1 - visualC-make
+# USELCC=1 - lcc make (suspended work - unfinished)
+# USETCC=1 - tcc make (suspended work - unfinished)
+# USEMINGW64=1 - mingw make (ongoing work)
+
+COMMONSYMBOLS=+commonSymbols
+
+!ifdef USETCC
+CSUFFIX=c
+!else
+! if defined(USEMINGW32) || defined(USEMINGW64)
+CSUFFIX=sc
+! else
+CSUFFIX=sc
+! endif
+!endif
+
+#STCFLAGS=-H$(STX_INCDIR) -Y$(STX_INCDIR) $(STCLOCALOPT) $(STCOPT) -cSuffix=$(CSUFFIX)
+#no longer use a common include directory - leave header files where the classes are
+#notice: the -Y cares for the common symbol file
+
+!ifndef SCMTYPE
+SCMTYPE=auto
+!endif
+
+STCFLAGS=-Y$(STX_INCDIR) $(STCLOCALOPT) $(STCOPT) $(STC_MSGFORMAT) $(STC_CMD_OPT) -cSuffix=$(CSUFFIX) -scmType: $(SCMTYPE) -sha1
+
+# KEEPCFILE=1
+
+!ifdef USEBC
+
+#------------------------------------------------------------------
+# borland-c defs here ...
+#------------------------------------------------------------------
+
+DEFS=-D_NO_VCL;WIN32;DEBUG;_RTLDLL
+#DEFS=-D_NO_VCL;WIN32;DEBUG
+
+COPTFLAGS=-O2 -5
+#COPTFLAGS=-O2 -5 -r -a4 -b -d -H
+
+#CFLAGS1= -WD -w- -x- -k- -v- -c -tWD
+# -v source level debugging
+# -y line number info
+# -k standard stack frame
+# -x- no exception handling code
+
+! if !$d(CFLAGS1)
+# CFLAGS1= -WD -w- -x- -r- -k -y -v -vi- -c -tWDR
+CFLAGS1= -WD -w- -w-pro -w-ccc -w-rch -w-aus -w-par -x- -r- -k -y -v -vi- -c -tWDR
+! endif
+
+! if !$d(CFLAGS2)
+CFLAGS2= -RT- -Tkh30000
+! endif
+
+CFLAGS=$(CFLAGS1) $(CFLAGS2) $(LOCALINCLUDES) $(CLOCAL_INCL) $(CFLAGS_LOCAL)
+
+! if !$d(LFLAGS)
+LFLAGS = -L$(LIBDIR) -L$(BCB)\lib;$(BCB)\lib\PSDK;$(DEBUGLIBPATH) -ap -Tpd -s -Gn -Gi -v -w-dup $(LIB_BASE_LD_ARG)
+#LFLAGS = -L$(BCB)\lib;$(DEBUGLIBPATH) -ap -Tpd -s -Gn -Gi -M -v -w-dup
+! endif
+
+LD_BASE_ARG=-b:
+LIBFILES=$(LIBDIR)\librun.lib
+
+ALLLIB = $(LIBFILES) $(LOCALLIBS) import32.lib $(IPHLPAPI_LIB) $(RT_LIB)
+!undef USEVC
+!undef USELCC
+
+!else
+! ifdef USEVC
+
+#------------------------------------------------------------------
+# MS visual-C Compiler defs here
+#------------------------------------------------------------------
+DEFS=-lineInfo -stLineInfo
+CDEFS=/D"DEBUG" /D"WIN32" /D"_CONSOLE" /D"VISUALC" /D"__VISUALC__" /D"__i386__"
+
+# O2 - optimize
+# Ob1 - only inline explicit
+
+# COPTFLAGS=/O2
+# COPTFLAGS=/Ox -- does not work !!!
+COPTFLAGS=/ZI
+
+# GF - merge common strings in data space
+# outdated: GZ - no stack checks (done by stx-code itself)
+# EHsc - catch only C++ exceptions. External functions never throw a C++ exception
+# W2 - warnings
+# w - no warnings
+# Oy - no frame pointer
+# Ox - full optimization (=Oy, O2, Og)
+# ZI - debug info
+# Zi - debug info
+
+CDEBUGFLAGS1=/w /GF /EHsc
+CDEBUGFLAGS2=/FR$(OUTDIR)
+CDEBUGFLAGS3=/Fp"$(OUTDIR)$(LIBNAME).pch" /Fd"$(OUTDIR)$(LIBNAME).pdb"
+
+CDEBUGFLAGS=$(CDEBUGFLAGS1) $(CDEBUGFLAGS2) $(CDEBUGFLAGS3) $(LOCALINCLUDES) $(CLOCAL_INCL) $(CFLAGS_LOCAL)
+
+LD_BASE_ARG=/BASE:
+
+! else
+! ifdef USELCC
+
+#------------------------------------------------------------------
+# LCC defs here (not yet supported)
+#------------------------------------------------------------------
+DEFS=-DWIN32 -D__LCC__ -DDEBUG
+CFLAGS=-nw $(CFLAGS1) $(CFLAGS2) $(LOCALINCLUDES) $(CLOCAL_INCL) $(CFLAGS_LOCAL)
+LFLAGS = -L$(LIBDIR) $(LIB_BASE_LD_ARG)
+LD_BASE_ARG=-b:
+LIBFILES=$(LIBDIR_LIBRUN)\librun.lib
+
+ALLLIB = $(LIBFILES) $(LOCALLIBS) $(IPHLPAPI_LIB) $(RT_LIB)
+
+! else
+! ifdef USETCC
+
+#------------------------------------------------------------------
+# TCC defs here (not yet supported)
+#------------------------------------------------------------------
+DEFS=-DWIN32 -D__TCC__ -DDEBUG
+CFLAGS=$(CFLAGS1) $(CFLAGS2) $(LOCALINCLUDES) $(CLOCAL_INCL) $(CFLAGS_LOCAL)
+LFLAGS = -L$(LIBDIR) $(LIB_BASE_LD_ARG)
+LIBFILES=$(LIBDIR_LIBRUN)\librun.lib
+# no resource compiler
+RESFILES=
+
+ALLLIB = $(LIBFILES) $(LOCALLIBS) $(IPHLPAPI_LIB) $(RT_LIB)
+
+! else
+! ifdef USEMINGW32
+
+#------------------------------------------------------------------
+# MINGW32 defs here
+#------------------------------------------------------------------
+DEFS=-DWIN32 -D__MINGW__ -D__MINGW32__ -DDEBUG
+CFLAGS=$(CFLAGS1) $(CFLAGS2) $(LOCALINCLUDES) $(CLOCAL_INCL) $(CFLAGS_LOCAL)
+LFLAGS = -L$(LIBDIR) $(LIB_BASE_LD_ARG)
+LIBFILES=$(LIBDIR_LIBRUN)\librun.lib
+# no resource compiler
+RESFILES=
+
+ALLLIB = $(LIBFILES) $(LOCALLIBS) $(IPHLPAPI_LIB) $(SYS_LIB_FLAGS) $(RT_LIB)
+
+! else
+! ifdef USEMINGW64
+
+#------------------------------------------------------------------
+# MINGW64 defs here
+#------------------------------------------------------------------
+DEFS=-DWIN32 -D__MINGW__ -D__MINGW64__ -DDEBUG
+#CFLAGS=-O $(CFLAGS1) $(CFLAGS2) $(LOCALINCLUDES) $(CLOCAL_INCL) $(CFLAGS_LOCAL)
+#CFLAGS=-g $(CFLAGS1) $(CFLAGS2) $(LOCALINCLUDES) $(CLOCAL_INCL) $(CFLAGS_LOCAL)
+CWARNFLAGS=-Wno-int-conversion -Wno-pointer-to-int-cast -Wno-incompatible-pointer-types
+CFLAGS=-O2 $(CFLAGS1) $(CFLAGS2) $(CWARNFLAGS) $(LOCALINCLUDES) $(CLOCAL_INCL) $(CFLAGS_LOCAL)
+LFLAGS=-g $(LIB_BASE_LD_ARG)
+LFLAGS2=-L$(LIBDIR)
+LIBFILES=$(LIBDIR_LIBRUN)/librun.lib
+
+ALLLIB = $(LIBFILES) $(LOCALLIBS) $(IPHLPAPI_LIB) $(SYS_LIB_FLAGS) $(RT_LIB)
+
+! else
+error error error
+! endif
+! endif
+! endif
+! endif
+! endif
+!endif
+
+#
+# create a symbolic link to the shared library in the projects/smalltalk/packages
+# folder. This folder can later be scanned quickly and presented in the Launcher's
+# load package menu item.
+#
+REGISTERED_PACKAGES_DIR=$(TOP)\projects\smalltalk\packages
+
+registerClassLib: $(REGISTERED_PACKAGES_DIR)
+ @echo "registering $(MODULE):$(MODULE_DIR)/$(LIBNAME) in $(REGISTERED_PACKAGES_DIR)"
+ @-if exist $(REGISTERED_PACKAGES_DIR)\$(LIBNAME).dll del $(REGISTERED_PACKAGES_DIR)\$(LIBNAME).dll
+ @echo "lib ..\..\..\..\$(MODULE)\$(MODULE_PATH)\$(OUTDIR)$(LIBNAME).dll" > $(REGISTERED_PACKAGES_DIR)\$(LIBNAME).dll
+
+registerApplication:
+ @if "$(APPNAME)" NEQ "" $(MAKE) -N -f bc.mak $(USE_ARG) registerApplicationN
+
+registerApplicationN: $(REGISTERED_PACKAGES_DIR)
+ @echo "registering $(MODULE):$(MODULE_DIR)/$(PROJECT_NOCONSOLE) in $(REGISTERED_PACKAGES_DIR)"
+ @-if exist $(REGISTERED_PACKAGES_DIR)\$(PROJECT_NOCONSOLE) del $(REGISTERED_PACKAGES_DIR)\$(PROJECT_NOCONSOLE)
+ @echo "app ..\..\..\..\$(MODULE)\$(MODULE_PATH)\$(OUTDIR)$(APPNAME)" > $(REGISTERED_PACKAGES_DIR)\$(APPNAME)
+
+$(REGISTERED_PACKAGES_DIR):
+ @-if not exist $(REGISTERED_PACKAGES_DIR)\nul mkdir $(REGISTERED_PACKAGES_DIR)\.
+
+$(LIBDIR_PARENT):
+ @-if not exist $(LIBDIR_PARENT)\nul mkdir $(LIBDIR_PARENT)\.
+
+$(LIBDIR): $(LIBDIR_PARENT)
+ @-if not exist $(LIBDIR)\nul mkdir $(LIBDIR)\.
+
+$(OUTDIR):
+ @-if not exist $(OUTDIR)nul mkdir $(OUTDIR:/=)
+
+$(OUTDIR)$(LIBNAME).lib : $(OUTDIR)$(LIBNAME).dll
+
+$(BINDIR)\include:
+ @if not exist $(BINDIR)\include\nul mkdir $(BINDIR)\include
+
+!ifdef USEBC
+
+$(OUTDIR)$(LIBNAME).dll : $(OUTDIR) $(DEF_FILE) $(OBJS) $(RESFILES) $(LIBFILES) $(LIBINIT_FILE)
+ @echo generating $(LIBNAME).dll / .lib [bc link] ...
+ @type &&!
+ $(LINK32) $(LFLAGS) +
+ c0d32.obj $(LIBINIT_FILE) $(IOBJS) $(OBJS) , +
+ $(OUTDIR)$(LIBNAME).dll,, +
+ $(ALLLIB) $(X11_LIBS), +
+ $(DEF_FILE), +
+ $(RESFILES)
+!
+ $(LINK32) @&&!
+ $(LFLAGS) +
+ c0d32.obj $(LIBINIT_FILE) $(IOBJS) $(OBJS) , +
+ $(OUTDIR)$(LIBNAME).dll,, +
+ $(ALLLIB) $(X11_LIBS), +
+ $(DEF_FILE), +
+ $(RESFILES)
+!
+ del $(OUTDIR)$(LIBNAME).tds
+ $(MAKE) -f bc.mak registerClassLib
+
+# CLIB_STARTUP=c0d32.obj
+CLIB_STARTUP=
+
+cLibRule:
+ @echo generating $(CLIB).dll / .lib [cLibRule clib bc link] ...
+ @type &&!
+ $(LFLAGS) +
+ $(CLIB_STARTUP) $(COBJS) , +
+ $(CLIB).dll,, +
+ $(CLINK_LIBS), +
+ $(CDEF_FILE), +
+ $(CRESFILES)
+!
+ $(LINK32) @&&!
+ $(LFLAGS) +
+ $(CLIB_STARTUP) $(COBJS) , +
+ $(CLIB).dll,, +
+ $(CLINK_LIBS), +
+ $(CDEF_FILE), +
+ $(CRESFILES)
+!
+
+!else
+! ifdef USEVC
+
+$(OUTDIR)$(LIBNAME).dll : $(OUTDIR) $(OBJS) $(LIBINIT_FILE) $(RESFILES) $(LIBFILES)
+ @-if not exist $(OUTDIR)nul mkdir $(OUTDIR:/=)
+ @-if not exist $(LIBDIR)nul mkdir $(LIBDIR)\.
+ @echo generating $(LIBNAME).dll / .lib [vc link] ...
+ @echo RESFILES= $(RESFILES)
+ @type &&!
+ $(LINK32) /DEF:$(DEF_FILE)
+ $(LINK32_FLAGS)
+ $(ALLLIB) $(X11_LIBS) $(LIBINIT_FILE) $(IOBJS)
+ $(OBJS)
+ $(DEF_FILE)
+ $(RESFILES)
+!
+ @echo linking...
+ $(LINK32) /DEF:$(DEF_FILE) @&&!
+ $(LINK32_FLAGS) $(ALLLIB) $(X11_LIBS) $(LIBINIT_FILE) $(IOBJS) $(OBJS) $(RESFILES)
+ $(MAKE) -f bc.mak registerClassLib
+!
+
+cLibRule:
+ @echo generating $(CLIB).dll / .lib [cLibRule vc link] ...
+ @type &&!
+ $(LINK32) $(LINK32_FLAGS)
+ $(CLINK_LIBS)
+ $(COBJS)
+ $(CDEF_FILE)
+ $(CRESFILES)
+!
+ @echo linking...
+ $(LINK32) /DEF:$(CDEF_FILE) @&&!
+ $(LINK32_FLAGS) $(CLINK_LIBS) $(COBJS) $(CRESFILES)
+!
+
+! else
+! ifdef USELCC
+
+$(OUTDIR)$(LIBNAME).dll : $(OUTDIR) $(DEF_FILE) $(OBJS) $(RESFILES) $(LIBINIT_FILE) $(LIBFILES)
+ @echo generating $(LIBNAME).dll / .lib [lcc link] ...
+ $(LINK32_DLL) \
+ $(LFLAGS_DLL) \
+ $(LIBINIT_FILE) $(IOBJS) $(OBJS) \
+ $(ALLLIB) $(X11_LIBS) \
+ $(RESFILES) \
+ -o $(OUTDIR)$(LIBNAME).dll
+
+ @-del $(OUTDIR)$(LIBNAME).exp
+ @-del $(OUTDIR)$(LIBNAME).lib
+ $(MAKE) -f bc.mak registerClassLib
+
+# additional rule to convert visual-c lib files into lcc format
+$(TOP)\$(LIBDIR_PARENT)\lcc\librun.lib: $(TOP)\$(LIBDIR_PARENT)\vc\librun.lib
+ @-if not exist $(TOP)\$(LIBDIR_PARENT)\nul mkdir $(TOP)\$(LIBDIR_PARENT).
+ @-if not exist $(TOP)\$(LIBDIR_PARENT)\lcc\nul mkdir $(TOP)\$(LIBDIR_PARENT)\lcc.
+ $(LCCBINDIR)\pedump /exp $(TOP)\$(LIBDIR_PARENT)\vc\librun.lib > $(TOP)\$(LIBDIR_PARENT)\lcc\librun.exp
+ $(LCCBINDIR)\buildlib $(TOP)\$(LIBDIR_PARENT)\lcc\librun.exp $(TOP)\$(LIBDIR_PARENT)\lcc\librun.lib
+
+! else
+! ifdef USETCC
+
+$(OUTDIR)$(LIBNAME).dll : $(OUTDIR) $(DEF_FILE) $(OBJS) $(RESFILES) $(LIBINIT_FILE) $(LIBFILES)
+ @echo generating $(LIBNAME).dll / .lib [tcc link] ...
+ $(LINK32) -shared \
+ $(LFLAGS) \
+ $(LIBINIT_FILE) $(IOBJS) $(OBJS) \
+ $(ALLLIB) $(X11_LIBS) \
+ $(RESFILES) \
+ -o $(OUTDIR)$(LIBNAME).dll
+
+ del $(OUTDIR)$(LIBNAME).lib
+ $(MAKE) -f bc.mak registerClassLib
+
+# additional rule to copy visual-c lib files into tcc folder
+$(TOP)\$(LIBDIR_PARENT)\tcc\librun.lib: $(TOP)\$(LIBDIR_PARENT)\vc\librun.lib
+ @-if not exist $(TOP)\$(LIBDIR_PARENT)\nul mkdir $(TOP)\$(LIBDIR_PARENT).
+ @-if not exist $(TOP)\$(LIBDIR_PARENT)\mingw\nul mkdir $(TOP)\$(LIBDIR_PARENT)\mingw.
+ copy $(TOP)\$(LIBDIR_PARENT)\vc\librun.lib $(TOP)\$(LIBDIR_PARENT)\tcc\librun.lib
+
+! else
+! if defined(USEMINGW32) || defined(USEMINGW64) || defined(USEMINGW)
+
+$(OUTDIR)$(LIBNAME).dll : $(OUTDIR) $(DEF_FILE) $(OBJS) $(RESFILES) $(LIBINIT_FILE) $(LIBFILES)
+ @echo generating $(LIBNAME).dll / .lib [mingw link] ...
+ type &&!
+ $(LINK32_DLL) \
+ $(LFLAGS_DLL) -L$(MINGWDIR)\lib \
+ $(LIBINIT_FILE) $(IOBJS) $(OBJS) \
+ $(ALLLIB) $(X11_LIBS) \
+ -o $(OUTDIR)$(LIBNAME).dll
+!
+ $(LINK32_DLL) $(LFLAGS_DLL) -L$(MINGWDIR)\lib @&&$
+ $(LIBINIT_FILE) $(IOBJS) $(OBJS)
+$ \
+ $(ALLLIB) $(X11_LIBS) -o $(OUTDIR_SLASH)$(LIBNAME).dll
+
+ $(MAKE) -f bc.mak registerClassLib
+
+cLibRule:
+ @echo generating $(CLIB).dll / .lib [cLibRule mingw link] ...
+ @echo COBJS=$(COBJS)
+ type &&!
+ $(LINK32_DLL) $(LFLAGS_DLL) -L$(MINGWDIR)\lib \
+ $(COBJS) \
+ $(CLINK_LIBS) \
+ -o $(CLIB).dll
+!
+ $(LINK32_DLL) $(LFLAGS_DLL) -L$(MINGWDIR)\lib \
+ $(COBJS) $(CLINK_LIBS) -o $(CLIB).dll
+
+! else
+
+error error error
+
+! endif
+! endif
+! endif
+! endif
+!endif
+
+iObjs : $(IOBJS) $(WIN32_IOBJS)
+
+$(BINDIR)\$(LIBNAME).dll: $(OUTDIR)$(LIBNAME).dll
+ -copy $(OUTDIR)$(LIBNAME).dll $(BINDIR)
+
+$(LIBDIR)\$(LIBNAME).lib: $(OUTDIR)$(LIBNAME).lib
+ -copy $(OUTDIR)$(LIBNAME).lib $(LIBDIR)
+ -touch $(LIBDIR)\$(LIBNAME).lib
+
+# full:
+# in addition to all, this also builds support stuff needed
+# by some subsystems using ant and possibly other tools.
+# for now, this is libjava only
+full:: all
+
+lib: $(BINDIR)\$(LIBNAME).dll
+
+cleanjunk:
+ -del *.sbr
+ -del *.pdb $(OBJDIR)\*.pdb
+ -del *.ilk
+ -del *.sc
+ -del ntLibInit.c
+ -del MAKE*.@@@
+ -del *.$$$$$
+
+clean_obj: cleanjunk
+ -del $(OBJDIR)\*.$(O) $(OBJDIR)\*.obj $(OBJDIR)\*.map $(OBJDIR)\*.tds $(OBJDIR)\*.$(RES)
+ -del $(OBJDIR)\*.sbr $(OBJDIR)\*.idb $(OBJDIR)\*.exp
+ -del *.$(O) *.map *.tds *.$(RES) *.ilk
+
+clean:: clean_obj
+ -del .\#*.*
+ -del *.sc
+ -del ntLibInit.c
+ -del MAKE0000.@@@
+ -del *.$$$$$
+ -del *.$$$
+
+clobber:: clean
+ -del $(OBJDIR)\*.dll $(OBJDIR)\*.lib $(OBJDIR)\*.ilk $(OBJDIR)\*.exp $(OBJDIR)\*.pdb $(OBJDIR)\*.map
+ -del objbc\*.dll objbc\*.lib objbc\*.ilk objbc\*.exp objbc\*.obj objbc\*.pdb objbc\*.map
+ -del objmingw\*.dll objmingw\*.o objmingw\*.lib objmingw\*.ilk objmingw\*.exp objmingw\*.obj objmingw\*.pdb objmingw\*.map
+ -del objvc\*.dll objvc\*.lib objvc\*.ilk objvc\*.exp objvc\*.obj objvc\*.pdb objvc\*.map
+ -del objtcc\*.dll objtcc\*.lib objtcc\*.o
+ -del objlcc\*.dll objlcc\*.lib objlcc\*.obj objlcc\*.exp
+ -rd /S /Q objbc objvc objtcc objlcc obj objmingw
+ -del *.dll *.lib *.sth *.sav
+
+!ifdef USEBC
+
+.SUFFIXES: .st .$(CSUFFIX) .c .cc .$(O)
+
+.$(CSUFFIX).I:
+ cpp32 $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(DEFS) $(COPTFLAGS) $(DBGFLAGS) $(CFLAGS) $<
+
+.$(CSUFFIX).$(O):
+ $(CC) $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(DEFS) $(COPTFLAGS) $(DBGFLAGS) $(CFLAGS) -c -o$@ $<
+
+.st.$(O):
+ $(STC) $(STX_INCL) $(FFLAGS) $(STCFLAGS) $(STC_MSGFORMAT) $(DBGFLAGS) $(DEFS) -C $<
+ $(CC) $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(DEFS) $(COPTFLAGS) $(DBGFLAGS) $(CFLAGS) -c -o$@ $&.$(CSUFFIX)
+! ifndef KEEPCFILE
+ del $&.$(CSUFFIX)
+! endif
+
+.st.$(CSUFFIX):
+ $(STC) $(FFLAGS) $(STCFLAGS) $(STC_CMD_OPT) $(STC_MSGFORMAT) $(DBGFLAGS) $(DEFS) -C $<
+
+# disabled? - leads to double-compile trouble?
+#.st.$(H):
+# $(STC) $(FFLAGS) $(STCFLAGS) $(STC_MSGFORMAT) $(DBGFLAGS) $(DEFS) -C -headerOnly $<
+
+
+.c.obj:
+ $(CC) $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(DEFS) $(COPTFLAGS) $(DBGFLAGS) $(CFLAGS) -c -o$@ $<
+
+!else
+! ifdef USEVC
+
+.SUFFIXES: .st .sc .c .cc .obj
+
+.st.obj:
+ $(STC) $(STX_INCL) $(FFLAGS) $(STCFLAGS) $(STC_MSGFORMAT) $(DBGFLAGS) $(DEFS) -C $<
+ $(CC) /nologo $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(CDEFS) $(COPTFLAGS) $(DBGFLAGS) $(CDEBUGFLAGS) -c /Fo$*.obj /Tc$&.$(CSUFFIX)
+! ifndef KEEPCFILE
+ del $&.$(CSUFFIX)
+! endif
+
+#.st.asm:
+# $(STC) $(STX_INCL) $(FFLAGS) $(STCFLAGS) $(STC_MSGFORMAT) $(DBGFLAGS) $(DEFS) -C $<
+# $(CC) /nologo $(STX_INCL) $(SYS_INCL) $(FFLAGS) /Fa /Fs $(DEFS) $(COPTFLAGS) $(DBGFLAGS) $(CDEBUGFLAGS) -c $*.c
+
+.st.$(CSUFFIX):
+ $(STC) $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(STCFLAGS) $(STC_MSGFORMAT) $(DBGFLAGS) $(DEFS) -C $<
+
+#.c.asm:
+# $(CC) /nologo $(STX_INCL) $(SYS_INCL) $(FFLAGS) /Fa /Fs $(CDEFS) $(COPTFLAGS) $(DBGFLAGS) $(CDEBUGFLAGS) -c $<
+
+.$(CSUFFIX).$(O):
+ $(CC) /nologo $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(CDEFS) $(COPTFLAGS) $(DBGFLAGS) $(CDEBUGFLAGS) -c /Fo$*.$(O) /Tc$<
+
+.c.$(O):
+ $(CC) /nologo $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(CDEFS) $(COPTFLAGS) $(DBGFLAGS) $(CDEBUGFLAGS) -c /Fo$*.$(O) /Tc$<
+
+.$(CSUFFIX).i:
+ $(CC) /nologo $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(CDEFS) $(COPTFLAGS) $(DBGFLAGS) $(CDEBUGFLAGS) /EP /Tc$< >$*.i
+
+
+! else
+! ifdef USELCC
+
+.SUFFIXES: .st .c .sc .$(O)
+
+.sc.$(O):
+ $(CC) $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(DEFS) $(COPTFLAGS) $(DBGFLAGS) $(CFLAGS) -c $<
+
+.c.$(O):
+ $(CC) $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(DEFS) $(COPTFLAGS) $(DBGFLAGS) $(CFLAGS) -c -o $*.$(O) $<
+
+.st.$(O):
+ $(STC) $(STX_INCL) $(FFLAGS) $(STCFLAGS) $(STC_MSGFORMAT) $(DBGFLAGS) $(DEFS) -C $<
+ $(CC) $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(DEFS) $(COPTFLAGS) $(DBGFLAGS) $(CFLAGS) -c -o $*.$(O) $&.$(CSUFFIX)
+! ifndef KEEPCFILE
+ del *.$(CSUFFIX)
+! endif
+
+.st.$(CSUFFIX):
+ $(STC) $(FFLAGS) $(STCFLAGS) $(STC_MSGFORMAT) $(DBGFLAGS) $(DEFS) -C $<
+
+! else
+! ifdef USETCC
+
+.SUFFIXES: .st .c .sc .$(O)
+
+.st.$(O):
+ $(STC) $(STX_INCL) $(FFLAGS) $(STCFLAGS) $(STC_MSGFORMAT) $(DBGFLAGS) $(DEFS) -C $<
+ $(CC) $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(DEFS) $(COPTFLAGS) $(DBGFLAGS) $(CFLAGS) -c -o $*.$(O) $&.$(CSUFFIX)
+! ifndef KEEPCFILE
+ del *.$(CSUFFIX)
+! endif
+
+.st.$(CSUFFIX):
+ $(STC) $(FFLAGS) $(STCFLAGS) $(STC_MSGFORMAT) $(DBGFLAGS) $(DEFS) -C $<
+
+.c.$(O):
+ $(CC) $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(DEFS) $(COPTFLAGS) $(DBGFLAGS) $(CFLAGS) -c -o $@ $<
+
+.sc.$(O):
+ $(CC) $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(DEFS) $(COPTFLAGS) $(DBGFLAGS) $(CFLAGS) -c -o $@ $<
+
+! else
+! if defined(USEMINGW32) || defined(USEMINGW64) || defined(USEMINGW)
+
+# .SUFFIXES: .st $(CSUFFIX) .c .sc .s .$(O) .i
+.SUFFIXES: .st .c .$(O) .i
+
+.st.$(O):
+ $(STC) $(STX_INCL) $(FFLAGS) $(STCFLAGS) $(STC_MSGFORMAT) $(DBGFLAGS) $(DEFS) -C $<
+! ifdef KEEPCFILE
+ copy $&.$(CSUFFIX) $&.c
+! else
+ ren $&.$(CSUFFIX) $&.c
+! endif
+ $(CC) $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(DEFS) $(COPTFLAGS) $(DBGFLAGS) $(CFLAGS) -c -o $*.$(O) $&.c
+ del $&.c
+
+.st.$(CSUFFIX):
+ $(STC) $(STX_INCL) $(FFLAGS) $(STCFLAGS) $(STC_MSGFORMAT) $(DBGFLAGS) $(DEFS) -C $<
+
+.c.$(O):
+ $(CC) $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(DEFS) $(COPTFLAGS) $(DBGFLAGS) $(CFLAGS) -c -o $@ $<
+
+#.sc.$(O):
+# $(CC) $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(DEFS) $(COPTFLAGS) $(DBGFLAGS) $(CFLAGS) -c -o $@ $<
+
+#.c.i:
+# $(CC) $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(DEFS) $(COPTFLAGS) $(DBGFLAGS) $(CFLAGS) -E $< > $*.i
+
+.$(CSUFFIX).$(O):
+ copy $&.$(CSUFFIX) $&.c
+ $(CC) $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(DEFS) $(COPTFLAGS) $(DBGFLAGS) $(CFLAGS) -c -o $@ $&.c
+ del $&.c
+
+.$(CSUFFIX).s:
+ $(CC) $(STX_INCL) $(SYS_INCL) $(FFLAGS) $(DEFS) $(COPTFLAGS) $(DBGFLAGS) $(CFLAGS) -S $<
+
+! else
+
+error error error
+
+! endif
+! endif
+! endif
+! endif
+!endif
+
+!ifdef USEBC
+
+.SUFFIXES: .rc .res
+
+.rc.res:
+ $(RC) -I$(BCB)\include $&.rc @&&|
+$(RCINCLUDEPATH)
+| -fo$@
+
+!else
+! ifdef USEVC
+
+.SUFFIXES: .rc .res
+
+.rc.res:
+ $(RC) /fo $@ $&.rc
+
+! else
+! ifdef USELCC
+
+.SUFFIXES: .rc .res
+
+.rc.res:
+ $(RC) $&.rc
+
+! else
+! ifdef USETCC
+
+# no resource compiler ?
+
+! else
+! if defined(USEMINGW32) || defined(USEMINGW64)
+
+.suffixes .rc .$(RES)
+
+.rc.$(RES):
+ $(RC) -D__MINGW__=1 --input="$<" --output="$@"
+
+.suffixes .rc .res
+
+.rc.res:
+ $(RC) -D__MINGW__=1 --input="$<" --output="$@"
+
+#.rc.res:
+# echo "xxx RC is " $(RC)
+# $(RC) $&.rc -o $&.o
+# -ren $&.o $&.res
+
+! else
+error error error
+! endif
+! endif
+! endif
+! endif
+!endif
+
+$(OUTDIR)ntLibInit.$(O): ntLibInit.c
+
+ntLibInit.c: libInit.cc
+ -copy libInit.cc ntLibInit.c
+
+buildDate.h: $(GENDATE_UTILITY)
+ call $(GENDATE_UTILITY)
--- a/rakelib/compile.rake Mon Jul 31 23:03:46 2017 +0100
+++ b/rakelib/compile.rake Thu Aug 03 09:37:46 2017 +0100
@@ -83,7 +83,7 @@
'librun.a',
'symlist.c',
'Make.proto',
- 'Makefile',
+ 'makefile',
]
LIBRUN_BINARY_FILES2 = []
elsif win32?
@@ -203,29 +203,11 @@
task :'application' => :'setup:dependencies'
- case
- when unix?
- task :'config' => [ STX_CONF_DIR / 'COMMON' / 'defines',
+
+ if unix?
+ mkdir_p STX_CONF_DIR
STX_CONF_DIR / 'vendorConf',
- STX_CONF_DIR / 'myConf' ,
-
- STX_RULES_DIR / 'stdRules' ]
-
-
- task STX_RULES_DIR / 'stdRules' do
- # Sigh, yet another hack here. For a funny reason, target newobj depends on .o files
- # and not on target objs. The problem is that some of the .o may need some third party
- # library being built before (for example, stx:libview2 requires libjpeg-9 being built
- # before!). To workaround this, we have to patch the rule so it depends on target `objs`
- # which depends on `pre_objs` that builds libraries. Triple sigh here. I should fork rules
- # directory...
- sed('newobj: $(LIBNAME)Init.c $(LINKOBJS)' , 'newobj: $(LIBNAME)Init.c objs $(LINKOBJS)', STX_RULES_DIR / 'stdRules', true)
-
- # Yet another hack to pass absolute filenames when compiling. This should help Jenkins's
- # Warning plugin correctly locate files mentioned in compile log - it cannot deal with relative paths
- # (as it cannot track compilation process's working directory, naturally)
- sed(' $(STFILE)', ' $(PWD)/$(STFILE)', STX_RULES_DIR / 'stdRules', true)
- end
+ STX_CONF_DIR / 'myConf' ]
directory STX_CONF_DIR do | t |
mkdir_p t.name()
@@ -261,8 +243,8 @@
# Do not edit! Automatically generated by rake (rakelib/#{__FILE__})
#
TOP ?= #{BUILD_DIR / 'stx'}
- MAKELIB_DIR ?= $(TOP)/#{makelib_dir}
- include $(MAKELIB_DIR)/config-#{os}-#{ARCH}.make
+ MAKELIB ?= $(TOP)/#{makelib_dir}
+ include $(MAKELIB)/config-#{os}-#{ARCH}.make
CONTENTS
end
end
@@ -274,22 +256,7 @@
#
CONTENTS
end
- end
- when win32?
- task :'config' => [ STX_RULES_DIR / 'stdRules_bc_mingwhack.txt' ]
-
- file STX_RULES_DIR / 'stdRules_bc_mingwhack.txt' do
- File.open( STX_RULES_DIR / 'stdRules_bc', 'a') do | f |
- f.puts "!if defined(USEMINGW32) || defined(USEMINGW64)"
- f.puts "CFLAGS=#{GCC_CFLAGS} $(CFLAGS1) $(CFLAGS2) $(LOCALINCLUDES) $(CLOCAL_INCL) $(CFLAGS_LOCAL)"
- f.puts "!endif"
- end
- File.open( STX_RULES_DIR / 'stdRules_bc_mingwhack.txt', 'a') do | f |
- f.puts "stdRules_bc CFLAGS already fixed"
- end
- end
- else
- error "Unsuported platform: #{Config::CONFIG['host_os']}"
+ end
end
rule 'makefile' do | t |
--- a/specs/baseline.rbspec Mon Jul 31 23:03:46 2017 +0100
+++ b/specs/baseline.rbspec Thu Aug 03 09:37:46 2017 +0100
@@ -50,16 +50,45 @@
file BUILD_DIR / 'stx' / 'rules' => BUILD_DIR do | t |
checkout :'exept:public', 'stx/rules'
- if unix? then
- chdir BUILD_DIR / 'stx' / 'rules' do
- rm_f 'stmkmf'
+ top = "#{File.absolute_path(BUILD_DIR).gsub("/", "\\")}\\stx"
+ chdir BUILD_DIR / 'stx' / 'rules' do
+ rm_f 'stmkmf'
+ rm_f 'stdHeader'
+ rm_f 'stdHeader2'
+ rm_f 'stdRules'
+ rm_f 'stdHeader_bc'
+ rm_f 'stdRules_bc'
+ if unix? then
# Argh, cannot use ln_s as it cannot make symlinks with relative
# paths. Sigh,
sh "ln -s \'../../../bin/stmkmf.rb\' stmkmf"
end
+
+ if win32? then
+ File.open('stdHeader_bc', "w") do | f |
+ f.puts <<-CONTENTS
+# Do not edit! Automatically generated by rake (rakelib/#{__FILE__})
+#
+!IF !defined(TOP)
+TOP=#{top}
+!ENDIF
+MAKELIB = $(TOP)\\..\\..\\makelib
+!INCLUDE $(MAKELIB)\\stdHeader_bc
+CONTENTS
+ end
+ File.open('stdRules_bc', "w") do | f |
+ f.puts <<-CONTENTS
+# Do not edit! Automatically generated by rake (rakelib/#{__FILE__})
+#
+!IF !defined(TOP)
+TOP=#{top}
+!ENDIF
+MAKELIB = $(TOP)\\..\\..\\makelib
+!INCLUDE $(MAKELIB)\\stdRules_bc
+CONTENTS
+ end
+ end
end
- # the clear is here to avoid multiple checkouts
- t.clear()
end
file BUILD_DIR / 'stx' / 'RELEASE' => BUILD_DIR do | t |