wxWidgets/distrib/msw/tmake/g95.t
Mattia Barbon c448540d81 * SPACE -> TAB in filelist.txt
* Added wxBase support to makefile.g95 makeg95.env
* Added FINAL=0|1 flag to makefile.g95 ( defaults to FINAL=0 )


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14021 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-02-05 21:35:10 +00:00

510 lines
14 KiB
Perl

#!#############################################################################
#! File: g95.t
#! Purpose: tmake template file from which makefile.g95 is generated by running
#! tmake -t g95 wxwin.pro -o makefile.g95
#! Author: Vadim Zeitlin, Robert Roebling, Julian Smart
#! Created: 14.07.99
#! Version: $Id$
#!#############################################################################
#${
#! include the code which parses filelist.txt file and initializes
#! %wxCommon, %wxGeneric and %wxMSW hashes.
IncludeTemplate("filelist.t");
#! now transform these hashes into $project tags
foreach $file (sort keys %wxGeneric) {
#! native wxDirDlg can't be compiled due to GnuWin32/OLE limitations,
#! so take the generic version
$base = ( $wxGeneric{$file} =~ /\bB\b/ ) ? '_BASE' : '';
if ( $wxGeneric{$file} =~ /\b(PS|G|U|16)\b/ ) {
next #! unless $file =~ /^dirdlgg\./;
}
$file =~ s/cp?p?$/\$(OBJSUFF)/;
$project{"WXGENERICOBJS$base"} .= '$(GENDIR)/' . $file . " "
}
foreach $file (sort keys %wxCommon) {
next if $wxCommon{$file} =~ /\b(16|U)\b/;
#! needs extra files (sql*.h) so not compiled by default.
#! next if $file =~ /^odbc\./;
$base = ( $wxCommon{$file} =~ /\bB\b/ ) ? '_BASE' : '';
if ( $file =~ /^odbc\./ )
{
$file =~ s/cp?p?$/\$(OBJSUFF)/;
$project{"ADVANCEDOBJS$base"} .= '$(COMMDIR)/' . $file . " "
}
else
{
$file =~ s/cp?p?$/\$(OBJSUFF)/;
$project{"WXCOMMONOBJS$base"} .= '$(COMMDIR)/' . $file . " "
}
}
foreach $file (sort keys %wxBase) {
$file =~ s/cp?p?$/\$(OBJSUFF)/;
$project{"WXCOMMONOBJS_BASEONLY"} .= '$(COMMDIR)/' . $file . " "
}
foreach $file (sort keys %wxMSW) {
#! native wxDirDlg can't be compiled due to GnuWin32/OLE limitations,
next if $file =~ /^dirdlg\./;
next if $wxMSW{$file} =~ /\b(16)\b/;
$base = ( $wxMSW{$file} =~ /\bB\b/ ) ? '_BASE' : '';
#! Mingw32 doesn't have the OLE headers and has some troubles with
#! socket code, so put in ADVANCEDOBJS
if ( $wxMSW{$file} =~ /\b(O)\b/ )
{
$file =~ s/cp?p?$/\$(OBJSUFF)/;
$project{"ADVANCEDOBJS$base"} .= '$(MSWDIR)/ole/' . $file . " "
}
else
{
$file =~ s/cp?p?$/\$(OBJSUFF)/;
$project{"WXMSWOBJS$base"} .= '$(MSWDIR)/' . $file . " "
}
}
foreach $file (sort keys %wxHTML) {
$file =~ s/cp?p?$/\$(OBJSUFF)/;
$project{"WXHTMLOBJS"} .= '$(HTMLDIR)/' . $file . " "
}
#$}
# This file was automatically generated by tmake
# DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE G95.T!
#
# File: makefile.g95
# Author: Julian Smart, Robert Roebling, Vadim Zeitlin
# Created: 1993
# Updated: 1999
# Copyright:(c) 1993, AIAI, University of Edinburgh,
# Copyright:(c) 1999, Vadim Zeitlin
# Copyright:(c) 1999, Robert Roebling
#
# Makefile for libwx.a
# Replace this with your own path if necessary
WXDIR = ../..
# All common compiler flags and options are now in
# this central makefile.
include $(WXDIR)/src/makeg95.env
# DLL Name, if building wxWindows as a DLL.
ifdef WXMAKINGDLL
WXDLL = $(WXDIR)/lib/wx$(TOOLKIT)$(WXVERSION)$(UNIEXT)$(DEBEXT).dll
WXDEF = wx$(TOOLKIT)$(WXVERSION)$(UNIEXT)$(DEBEXT).def
DLL_EXTRA_LIBS = $(WXDIR)/lib/libzlib.a \
$(WXDIR)/lib/libpng.a $(WXDIR)/lib/libjpeg.a \
$(WXDIR)/lib/libtiff.a $(WXDIR)/lib/libregex.a
DLL_LDFLAGS = -L$(WXDIR)/lib
DLL_BASE_LDLIBS = $(DLL_EXTRA_LIBS) -lstdc++ -lwsock32
ifeq ($(wxUSE_GUI),0)
DLL_LDLIBS = $(DLL_BASE_LDLIBS)
else
DLL_LDLIBS = -mwindows -lcomctl32 -lctl3d32 -lole32 -loleaut32 \
-luuid -lrpcrt4 -lodbc32 -lwinmm -lopengl32 \
$(DLL_BASE_LDLIBS)
endif
endif
# Subordinate library possibilities
EXTRAOBJS=
GENDIR = $(WXDIR)/src/generic
COMMDIR = $(WXDIR)/src/common
HTMLDIR = $(WXDIR)/src/html
ZLIBDIR = $(WXDIR)/src/zlib
PNGDIR = $(WXDIR)/src/png
JPEGDIR = $(WXDIR)/src/jpeg
TIFFDIR = $(WXDIR)/src/tiff
OLEDIR = $(WXDIR)/src/msw/ole
MSWDIR = $(WXDIR)/src/msw
REGEXDIR= $(WXDIR)/src/regex
ZLIBLIB = $(WXDIR)/lib/libzlib.a
PNGLIB = $(WXDIR)/lib/libpng.a
JPEGLIB = $(WXDIR)/lib/libjpeg.a
TIFFLIB = $(WXDIR)/lib/libtiff.a
REGEXLIB= $(WXDIR)/lib/libregex.a
DOCDIR = $(WXDIR)/docs
# Only use the WIN32 wxDirDialog if we have a recent
# version of Mingw32
ifeq ($(MINGW32),1)
ifneq "$(findstring 2.95, $(MINGW32VERSION))" ""
DIRDLGOBJ = $(MSWDIR)/dirdlg.$(OBJSUFF)
else
DIRDLGOBJ = $(GENDIR)/dirdlgg.$(OBJSUFF)
endif
else
DIRDLGOBJ = $(GENDIR)/dirdlgg.$(OBJSUFF)
endif
ifeq ($(wxUSE_GUI),0)
DIRDLGOBJ =
endif
GENERICOBJS_BASE = \
#$ ExpandList("WXGENERICOBJS_BASE");
GENERICOBJS = \
$(GENERICOBJS_BASE) \
#$ ExpandList("WXGENERICOBJS");
COMMONOBJS_BASE = \
#$ ExpandList("WXCOMMONOBJS_BASE");
COMMONOBJS_BASEONLY = \
#$ ExpandList("WXCOMMONOBJS_BASEONLY");
COMMONOBJS = \
$(COMMONOBJS_BASE) \
$(COMMDIR)/y_tab.$(OBJSUFF) \
#$ ExpandList("WXCOMMONOBJS");
HTMLOBJS = \
#$ ExpandList("WXHTMLOBJS");
MSWOBJS_BASE = \
#$ ExpandList("WXMSWOBJS_BASE");
MSWOBJS = \
$(MSWOBJS_BASE) \
#$ ExpandList("WXMSWOBJS");
ADVANCEDOBJS_BASE = \
#$ ExpandList("ADVANCEDOBJS_BASE");
ADVANCEDOBJS = \
$(ADVANCEDOBJS_BASE) \
#$ ExpandList("ADVANCEDOBJS");
ZLIBOBJS = \
$(ZLIBDIR)/adler32.$(OBJSUFF) \
$(ZLIBDIR)/compress.$(OBJSUFF) \
$(ZLIBDIR)/crc32.$(OBJSUFF) \
$(ZLIBDIR)/gzio.$(OBJSUFF) \
$(ZLIBDIR)/uncompr.$(OBJSUFF) \
$(ZLIBDIR)/deflate.$(OBJSUFF) \
$(ZLIBDIR)/trees.$(OBJSUFF) \
$(ZLIBDIR)/zutil.$(OBJSUFF) \
$(ZLIBDIR)/inflate.$(OBJSUFF) \
$(ZLIBDIR)/infblock.$(OBJSUFF) \
$(ZLIBDIR)/inftrees.$(OBJSUFF) \
$(ZLIBDIR)/infcodes.$(OBJSUFF) \
$(ZLIBDIR)/infutil.$(OBJSUFF) \
$(ZLIBDIR)/inffast.$(OBJSUFF)
PNGOBJS = \
$(PNGDIR)/png.$(OBJSUFF) \
$(PNGDIR)/pngread.$(OBJSUFF) \
$(PNGDIR)/pngrtran.$(OBJSUFF) \
$(PNGDIR)/pngrutil.$(OBJSUFF) \
$(PNGDIR)/pngpread.$(OBJSUFF) \
$(PNGDIR)/pngtrans.$(OBJSUFF) \
$(PNGDIR)/pngwrite.$(OBJSUFF) \
$(PNGDIR)/pngwtran.$(OBJSUFF) \
$(PNGDIR)/pngwutil.$(OBJSUFF) \
$(PNGDIR)/pngerror.$(OBJSUFF) \
$(PNGDIR)/pngmem.$(OBJSUFF) \
$(PNGDIR)/pngwio.$(OBJSUFF) \
$(PNGDIR)/pngrio.$(OBJSUFF) \
$(PNGDIR)/pngget.$(OBJSUFF) \
$(PNGDIR)/pngset.$(OBJSUFF)
JPEGOBJS = \
$(JPEGDIR)/jcomapi.$(OBJSUFF) \
$(JPEGDIR)/jutils.$(OBJSUFF) \
$(JPEGDIR)/jerror.$(OBJSUFF) \
$(JPEGDIR)/jmemmgr.$(OBJSUFF) \
$(JPEGDIR)/jmemnobs.$(OBJSUFF) \
$(JPEGDIR)/jcapimin.$(OBJSUFF) \
$(JPEGDIR)/jcapistd.$(OBJSUFF) \
$(JPEGDIR)/jctrans.$(OBJSUFF) \
$(JPEGDIR)/jcparam.$(OBJSUFF) \
$(JPEGDIR)/jdatadst.$(OBJSUFF) \
$(JPEGDIR)/jcinit.$(OBJSUFF) \
$(JPEGDIR)/jcmaster.$(OBJSUFF) \
$(JPEGDIR)/jcmarker.$(OBJSUFF) \
$(JPEGDIR)/jcmainct.$(OBJSUFF) \
$(JPEGDIR)/jcprepct.$(OBJSUFF) \
$(JPEGDIR)/jccoefct.$(OBJSUFF) \
$(JPEGDIR)/jccolor.$(OBJSUFF) \
$(JPEGDIR)/jcsample.$(OBJSUFF) \
$(JPEGDIR)/jchuff.$(OBJSUFF) \
$(JPEGDIR)/jcphuff.$(OBJSUFF) \
$(JPEGDIR)/jcdctmgr.$(OBJSUFF) \
$(JPEGDIR)/jfdctfst.$(OBJSUFF) \
$(JPEGDIR)/jfdctflt.$(OBJSUFF) \
$(JPEGDIR)/jfdctint.$(OBJSUFF) \
$(JPEGDIR)/jdapimin.$(OBJSUFF) \
$(JPEGDIR)/jdapistd.$(OBJSUFF) \
$(JPEGDIR)/jdtrans.$(OBJSUFF) \
$(JPEGDIR)/jdatasrc.$(OBJSUFF) \
$(JPEGDIR)/jdmaster.$(OBJSUFF) \
$(JPEGDIR)/jdinput.$(OBJSUFF) \
$(JPEGDIR)/jdmarker.$(OBJSUFF) \
$(JPEGDIR)/jdhuff.$(OBJSUFF) \
$(JPEGDIR)/jdphuff.$(OBJSUFF) \
$(JPEGDIR)/jdmainct.$(OBJSUFF) \
$(JPEGDIR)/jdcoefct.$(OBJSUFF) \
$(JPEGDIR)/jdpostct.$(OBJSUFF) \
$(JPEGDIR)/jddctmgr.$(OBJSUFF) \
$(JPEGDIR)/jidctfst.$(OBJSUFF) \
$(JPEGDIR)/jidctflt.$(OBJSUFF) \
$(JPEGDIR)/jidctint.$(OBJSUFF) \
$(JPEGDIR)/jidctred.$(OBJSUFF) \
$(JPEGDIR)/jdsample.$(OBJSUFF) \
$(JPEGDIR)/jdcolor.$(OBJSUFF) \
$(JPEGDIR)/jquant1.$(OBJSUFF) \
$(JPEGDIR)/jquant2.$(OBJSUFF) \
$(JPEGDIR)/jdmerge.$(OBJSUFF)
TIFFOBJS = $(TIFFDIR)/tif_aux.o \
$(TIFFDIR)/tif_close.o \
$(TIFFDIR)/tif_codec.o \
$(TIFFDIR)/tif_compress.o \
$(TIFFDIR)/tif_dir.o \
$(TIFFDIR)/tif_dirinfo.o \
$(TIFFDIR)/tif_dirread.o \
$(TIFFDIR)/tif_dirwrite.o \
$(TIFFDIR)/tif_dumpmode.o \
$(TIFFDIR)/tif_error.o \
$(TIFFDIR)/tif_fax3.o \
$(TIFFDIR)/tif_fax3sm.o \
$(TIFFDIR)/tif_flush.o \
$(TIFFDIR)/tif_getimage.o \
$(TIFFDIR)/tif_jpeg.o \
$(TIFFDIR)/tif_luv.o \
$(TIFFDIR)/tif_lzw.o \
$(TIFFDIR)/tif_next.o \
$(TIFFDIR)/tif_open.o \
$(TIFFDIR)/tif_packbits.o \
$(TIFFDIR)/tif_pixarlog.o \
$(TIFFDIR)/tif_predict.o \
$(TIFFDIR)/tif_print.o \
$(TIFFDIR)/tif_read.o \
$(TIFFDIR)/tif_strip.o \
$(TIFFDIR)/tif_swab.o \
$(TIFFDIR)/tif_thunder.o \
$(TIFFDIR)/tif_tile.o \
$(TIFFDIR)/tif_version.o \
$(TIFFDIR)/tif_warning.o \
$(TIFFDIR)/tif_win32.o \
$(TIFFDIR)/tif_write.o \
$(TIFFDIR)/tif_zip.o
ifeq ($(MINGW32),1)
ifneq "$(findstring 2.95, $(MINGW32VERSION))" ""
OBJECTS = $(MSWOBJS) $(COMMONOBJS) $(GENERICOBJS) $(HTMLOBJS) $(DIRDLGOBJ) $(ADVANCEDOBJS)
else
OBJECTS = $(MSWOBJS) $(COMMONOBJS) $(GENERICOBJS) $(HTMLOBJS) $(DIRDLGOBJ)
endif
else
OBJECTS = $(MSWOBJS) $(COMMONOBJS) $(GENERICOBJS) $(HTMLOBJS) $(DIRDLGOBJ)
endif
ifeq ($(wxUSE_GUI),0)
OBJECTS = $(MSWOBJS_BASE) $(COMMONOBJS_BASE) $(COMMONOBJS_BASEONLY) $(GENERICOBJS_BASE)
endif
# MBN: if anyone has a better solution for this kludge, step
# forward, *please*
# this tests is we are on cygwin or not ( will _not_ work if you are using
# ZSH on plain Win32, tought ); it uses the presence of "/"
# in the PATH variable
# how do you do "VAR=\" ? BLEAGH!
BACKSLASH=$(subst a,\,a)
ifeq (,$(findstring /,$(PATH)))
IS_CYGWIN=0
PATH_SEPARATOR:=$(BACKSLASH)
PATH_SUBST=/
else
IS_CYGWIN=1
PATH_SEPARATOR=/
PATH_SUBST:=$(BACKSLASH)
endif
#ARCHINCDIR=$(subst $(PATH_SUBST),$(PATH_SEPARATOR),$(WXDIR)/lib/msw$(INCEXT))
ARCHINCDIR=$(WXDIR)/lib/$(TOOLKIT)$(INCEXT)
SETUP_H=$(ARCHINCDIR)/wx/setup.h
ifndef WXMAKINGDLL
all: $(SETUP_H) $(OBJECTS) $(WXLIB) $(ZLIBLIB) $(PNGLIB) $(JPEGLIB) $(TIFFLIB) $(REGEXLIB)
else
all: $(SETUP_H) $(OBJECTS) $(ZLIBLIB) $(PNGLIB) $(JPEGLIB) $(TIFFLIB) $(REGEXLIB) $(WXDLL)
endif
$(ARCHINCDIR)/wx:
mkdir $(subst $(PATH_SUBST),$(PATH_SEPARATOR),$(ARCHINCDIR))
mkdir $(subst $(PATH_SUBST),$(PATH_SEPARATOR),$(ARCHINCDIR)/wx)
$(SETUP_H): $(ARCHINCDIR)/wx
$(COPY) $(WXDIR)/include/wx/msw/setup.h $@
# $(COPY) $(subst $(PATH_SUBST),$(PATH_SEPARATOR),$(WXDIR)/include/wx/msw/setup.h) $(subst $(PATH_SUBST),$(PATH_SEPARATOR),$@)
ifndef WXMAKINGDLL
$(WXLIB): $(OBJECTS) $(EXTRAOBJS)
ar $(AROPTIONS) $@ $(EXTRAOBJS) $(OBJECTS)
$(RANLIB) $@
else
# The new linker is a few orders of magnitude faster than the old way
# of creating DLLs.
ifeq "$(strip $(LD_SUPPORTS_SHARED))" "yes"
$(WXDLL): $(OBJECTS) $(EXTRAOBJS)
$(CC) -shared -o $@ \
-Wl,--output-def,$(WXDEF) \
-Wl,--out-implib,$(WXLIB) \
$(OBJECTS) $(EXTRAOBJS) \
$(DLL_LDFLAGS) $(DLL_LDLIBS)
else
ifeq ($(MINGW32),1)
DLL_ENTRY = _DllMainCRTStartup@12
else
DLL_ENTRY = __cygwin_dll_entry@12
endif
LD_STUFF = $(OBJECTS) $(EXTRAOBJS) -Wl,-e,$(DLL_ENTRY) \
$(DLL_LDFLAGS) $(DLL_LDLIBS) #-Wl,--image-base=0x66000000
DLL_STUFF = --as=$(AS) --dllname $(notdir $(WXDLL)) \
--def $(WXDEF) \
--base-file wx.base --output-exp wx.exp
$(WXDEF) $(WXLIB): $(OBJECTS) $(EXTRAOBJS)
$(DLLTOOL) --output-def $@ --output-lib $(WXLIB) \
--dllname $(notdir $(WXDLL)) \
$(OBJECTS) $(EXTRAOBJS) $(DLL_EXTRA_LIBS)
$(WXDLL): $(OBJECTS) $(EXTRAOBJS) $(WXDEF)
$(CC) -mdll -Wl,--base-file,wx.base -s -o $@ $(LD_STUFF)
$(DLLTOOL) $(DLL_STUFF)
$(CC) -mdll -Wl,--base-file,wx.base wx.exp -s -o $@ $(LD_STUFF)
$(DLLTOOL) $(DLL_STUFF)
$(CC) -mdll wx.exp -o $@ $(LD_STUFF)
-$(RM) wx.base
-$(RM) wx.exp
endif
endif
$(ZLIBLIB): $(ZLIBOBJS)
$(AR) $(AROPTIONS) $@ $(ZLIBOBJS)
$(RANLIB) $@
$(PNGLIB): $(PNGOBJS)
$(AR) $(AROPTIONS) $@ $(PNGOBJS)
$(RANLIB) $@
$(JPEGLIB): $(JPEGOBJS)
$(AR) $(AROPTIONS) $@ $(JPEGOBJS)
$(RANLIB) $@
$(TIFFLIB): $(TIFFOBJS)
$(AR) $(AROPTIONS) $@ $(TIFFOBJS)
$(RANLIB) $@
$(REGEXLIB):
$(MAKE) -C $(REGEXDIR) -f makefile.g95 WXDIR=$(WXDIR)
$(OBJECTS): $(WXINC)/wx/defs.h $(WXINC)/wx/object.h $(ARCHINCDIR)/wx/setup.h
$(COMMDIR)/y_tab.$(OBJSUFF): $(COMMDIR)/y_tab.c $(COMMDIR)/lex_yy.c
$(CCLEX) -c $(CPPFLAGS) -DUSE_DEFINE -DYY_USE_PROTOS -o $@ $(COMMDIR)/y_tab.c
$(COMMDIR)/y_tab.c: $(COMMDIR)/dosyacc.c
$(COPY) ../common/dosyacc.c ../common/y_tab.c
$(COMMDIR)/lex_yy.c: $(COMMDIR)/doslex.c
$(COPY) ../common/doslex.c ../common/lex_yy.c
# Replace lex with flex if you run into compilation
# problems with lex_yy.c. See also note about LEX_SCANNER
# above.
# $(COMMDIR)/lex_yy.c: $(COMMDIR)/lexer.l
# $(LEX) -L -o$(COMMDIR)/lex_yy.c $(COMMDIR)/lexer.l
#
# Try one of these if the above line doesn't work.
# Alternative syntax (1)
# $(LEX) -t -L $(COMMDIR)/lexer.l > $(COMMDIR)/lex_yy.c
# Alternative syntax (2)
# $(LEX) -L -o$(COMMDIR)/lex_yy.c $(COMMDIR)/lexer.l
#
# sed -e "s/BUFSIZ/5000/g" < lex.yy.c | \
# sed -e "s/yyoutput(c)/void yyoutput(c)/g" | \
# sed -e "s/YYLMAX 200/YYLMAX 5000/g" > lex_yy.c
# rm -f lex.yy.c
#
# Replace yacc with bison if you run into compilation
# problems with y_tab.c.
#
# $(COMMDIR)/y_tab.c: $(COMMDIR)/parser.y
# $(YACC) -o $(COMMDIR)/y_tab.c $(COMMDIR)/parser.y
#
# If you use e.g. gcc on Unix, uncomment these lines
# and comment out the above.
#
# $(COMMDIR)/y_tab.c: $(COMMDIR)/parser.y
# $(YACC) $(COMMDIR)/parser.y
# mv y.tab.c $(COMMDIR)/y_tab.c
clean:
-$(RM) *.o
-$(RM) ole/*.o
-$(RM) *.bak
-$(RM) core
-$(RM) ../common/y_tab.c
-$(RM) ../common/lex_yy.c
-$(RM) ../common/*.o
-$(RM) ../common/*.bak
-$(RM) ../generic/*.o
-$(RM) ../generic/*.bak
-$(RM) ../html/*.o
-$(RM) ../zlib/*.o
-$(RM) ../zlib/*.bak
-$(RM) ../png/*.o
-$(RM) ../png/*.bak
-$(RM) ../jpeg/*.o
-$(RM) ../jpeg/*.bak
-$(RM) ../tiff/*.o
-$(RM) ../tiff/*.bak
-$(RM) ../regex/*.o
-$(RM) ../regex/*.bak
cleanall: clean
-$(RM) $(WXLIB)
-$(RM) $(ZLIBLIB)
-$(RM) $(PNGLIB)
-$(RM) $(JPEGLIB)
-$(RM) $(TIFFLIB)
-$(RM) $(REGEXLIB)
ifdef WXMAKINGDLL
-$(RM) $(WXDLL)
-$(RM) $(WXDEF)
ifneq "$(strip $(LD_SUPPORTS_SHARED))" "yes"
-$(RM) wx.base
-$(RM) wx.exp
endif
endif