From 46518c83e1d4a479eec18c7fa87d2df1d60ec07f Mon Sep 17 00:00:00 2001 From: simonmar Date: Tue, 7 Nov 2000 10:20:03 +0000 Subject: [PATCH] [project @ 2000-11-07 10:20:03 by simonmar] Merge before-ghci -> before-ghci-branch-merged in the non-ghc parts of the tree. --- aclocal.m4 | 8 ++--- configure.in | 26 ++++++++++++++- mk/config.mk.in | 21 ++++++++----- mk/suffix.mk | 10 +++--- mk/target.mk | 94 ++++++++++++++++++++++++++++++++++++++++++++++--------- 5 files changed, 127 insertions(+), 32 deletions(-) diff --git a/aclocal.m4 b/aclocal.m4 index 8e662fe..4ebb5ff 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,4 +1,4 @@ -dnl $Id: aclocal.m4,v 1.58 2000/11/02 14:27:01 simonmar Exp $ +dnl $Id: aclocal.m4,v 1.59 2000/11/07 10:20:03 simonmar Exp $ dnl dnl Extra autoconf macros for the Glasgow fptools dnl @@ -436,7 +436,7 @@ main() { FILE *f=fopen("conftestval", "w"); if (!f) exit(1); - fprintf(f, "%d\n", offsetof(struct { char c; $1 ty;},ty)); + fprintf(f, "%d", offsetof(struct { char c; $1 ty;},ty)); exit(0); }], AC_CV_NAME=`cat conftestval`, @@ -820,7 +820,7 @@ dnl The variable LIBM (which is not an output variable by default) is dnl set to a value which is suitable for use in a Makefile (for example, dnl in make's LOADLIBES macro) provided you AC_SUBST it first. dnl -dnl @version 0.01 $Id: aclocal.m4,v 1.58 2000/11/02 14:27:01 simonmar Exp $ +dnl @version 0.01 $Id: aclocal.m4,v 1.59 2000/11/07 10:20:03 simonmar Exp $ dnl @author Matthew D. Langston # FPTOOLS_CHECK_LIBM - check for math library @@ -908,7 +908,7 @@ dnl Please note that as the ac_opengl macro and the toy example evolves, dnl the version number increases, so you may have to adjust the above dnl URL accordingly. dnl -dnl @version 0.01 $Id: aclocal.m4,v 1.58 2000/11/02 14:27:01 simonmar Exp $ +dnl @version 0.01 $Id: aclocal.m4,v 1.59 2000/11/07 10:20:03 simonmar Exp $ dnl @author Matthew D. Langston AC_DEFUN(FPTOOLS_HAVE_OPENGL, diff --git a/configure.in b/configure.in index b008248..fbb093d 100644 --- a/configure.in +++ b/configure.in @@ -183,7 +183,7 @@ i[[3456]]86-*-solaris2*) HostVendor_CPP='unknown' HostOS_CPP='solaris2' ;; -i[[3456]]86-*-cygwin32*) +i[[3456]]86-*-cygwin*) HostPlatform=i386-unknown-cygwin32 # hack again TargetPlatform=i386-unknown-cygwin32 BuildPlatform=i386-unknown-cygwin32 @@ -840,6 +840,30 @@ FPTOOLS_CHECK_LIB_NOWARN(dld, shl_load) FPTOOLS_CHECK_LIB_NOWARN(m, atan) dnl -------------------------------------------------- +dnl * test for GTK+ +dnl -------------------------------------------------- + +AC_PATH_PROGS(GTK_CONFIG, gtk-config gtk12-config) +if test "$GTK_CONFIG" != ""; then + AC_CACHE_CHECK([for version of GTK+], fptools_cv_gtk_version, [ + fptools_cv_gtk_version=`$GTK_CONFIG --version` + ]) + GTK_VERSION=$fptools_cv_gtk_version +else + GTK_VERSION= +fi + +case $fptools_cv_gtk_version in + 1.[[23]].*) ;; + *) AC_MSG_WARN([GTK+ not usable; need at least version 1.2]) + GTK_CONFIG= + ;; +esac + +AC_SUBST(GTK_CONFIG) +AC_SUBST(GTK_VERSION) + +dnl -------------------------------------------------- dnl * Miscellaneous feature tests dnl -------------------------------------------------- diff --git a/mk/config.mk.in b/mk/config.mk.in index b83135e..146addc 100644 --- a/mk/config.mk.in +++ b/mk/config.mk.in @@ -218,8 +218,8 @@ GhcLibHcOpts=-O # Win32 only: Enable the RTS and libraries to be built as DLLs # Don't split object files for libs if we're building DLLs -EnableWin32DLLs=@EnableWin32DLLs@ -ifeq "$(EnableWin32DLLs)" "YES" +DLLized=@EnableWin32DLLs@ +ifeq "$(DLLized)" "YES" SplitObjs=NO else SplitObjs=YES @@ -246,6 +246,9 @@ StripLibraries=NO GhcRtsHcOpts=-O2 GhcRtsCcOpts=-O2 -optc-fomit-frame-pointer +# Include the front panel code? Needs GTK+. +GhcRtsWithFrontPanel = NO + ################################################################################ # # hslibs project @@ -261,7 +264,7 @@ GhcRtsCcOpts=-O2 -optc-fomit-frame-pointer HsLibsFor = ghc # hslibs for GHC also uses the following variables (defined above): -# GhcLibWays, GhcLibHcOpts, GhcLibToolsHcOpts, EnableWin32DLLs, StripLibraries +# GhcLibWays, GhcLibHcOpts, GhcLibToolsHcOpts, DLLized, StripLibraries # Haskell compiler options for tools in hslibs GhcLibToolsHcOpts=-O @@ -430,7 +433,7 @@ endif ifeq "$(strip $(mandir))" "" mandir = $(prefix)/man endif - + ################################################################################ # @@ -557,6 +560,12 @@ LibGmp = @LibGmp@ HaveRegex = @HaveRegex@ #----------------------------------------------------------------------------- +# GTK+ + +GTK_CONFIG = @GTK_CONFIG@ +GTK_VERSION = @GTK_VERSION@ + +#----------------------------------------------------------------------------- # Flex FLEX = @LEX@ @@ -789,10 +798,6 @@ WAY_mp_HC_OPTS=-parallel WAY_mg_NAME=GranSim WAY_mg_HC_OPTS=-gransim -# Way `dll': -WAY_dll_NAME=Win32 DLLs -WAY_dll_HC_OPTS=-dll - # # Add user-way configurations here: # diff --git a/mk/suffix.mk b/mk/suffix.mk index 52c2d21..0849ba4 100644 --- a/mk/suffix.mk +++ b/mk/suffix.mk @@ -34,20 +34,20 @@ endif $(HC_PRE_OPTS) $(HC) $(HC_OPTS) -c $< -o $@ -osuf $(subst .,,$(suffix $@)) $(HC_POST_OPTS) - + %.$(way_)o : %.lhs $(HC_PRE_OPTS) $(HC) $(HC_OPTS) -c $< -o $@ -osuf $(subst .,,$(suffix $@)) $(HC_POST_OPTS) - + %.$(way_)hc : %.lhs $(RM) $@ $(HC) $(HC_OPTS) -C $< -o $@ - + %.$(way_)hc : %.hs $(RM) $@ $(HC) $(HC_OPTS) -C $< -o $@ - + %.$(way_)o : %.$(way_)hc $(HC_PRE_OPTS) $(HC) $(HC_OPTS) -c $< -o $@ -osuf $(subst .,,$(suffix $@)) @@ -238,6 +238,6 @@ endif # The default is to use the GNU resource compiler. # -%.o : %.rc +%.$(way_)o : %.$(way_)rc @$(RM) $@ windres $< $@ diff --git a/mk/target.mk b/mk/target.mk index 45ee5dd..0a64f06 100644 --- a/mk/target.mk +++ b/mk/target.mk @@ -50,7 +50,7 @@ # # (b) when SUBDIRS is empty, # for each "multi-way-target" -# calls "make -way=w " for each w in $(WAYS) +# calls "make way=w " for each w in $(WAYS) # # This has the effect of making the standard target # in each of the specified ways (as well as in the normal way @@ -304,10 +304,30 @@ endif #---------------------------------------- # Libraries/archives +ifeq "$(IS_CBITS_LIB)" "YES" +_cbits := _cbits +endif + +ifneq "$(HSLIB)" "" +LIBRARY = libHS$(HSLIB)$(_cbits)$(_way).a +ifeq "$(LIBOBJS)" "" + ifneq "$(IS_CBITS_LIB)" "YES" + LIBOBJS = $(HS_OBJS) + else + LIBOBJS = $(C_OBJS) + endif +endif +ifneq "$(IS_CBITS_LIB)" "" +CC = $(HC) +override datadir:=$(libdir)/includes +INSTALL_DATAS += Hs$(shell perl -e 'print ucfirst "$(HSLIB)"').h +SRC_CC_OPTS += -I$(GHC_INCLUDE_DIR) -I$(GHC_RUNTIME_DIR) +endif +endif + ifneq "$(LIBRARY)" "" all :: $(LIBRARY) - define BUILD_LIB $(RM) $@ $(AR) $(AR_OPTS) $@ $(STUBOBJS) $(LIBOBJS) @@ -383,10 +403,41 @@ endif #---------------------------------------- # Building Win32 DLLs # -ifeq "$(way)" "dll" + +ifeq "$(DLLized)" "YES" + +ifneq "$(HSLIB)" "" + +SRC_BLD_DLL_OPTS += --export-all --output-def=HS$(HSLIB)$(_cbits)$(_way).def DllVersionInfo.$(way_)o +ifneq "$(HSLIB)" "rts" +SRC_BLD_DLL_OPTS += -lHSstd_cbits_imp -L$(GHC_LIB_DIR)/std/cbits +SRC_BLD_DLL_OPTS += -lHSrts_$(way_)imp -L$(GHC_RUNTIME_DIR) +ifneq "$(HSLIB)" "std" + ifeq "$(IS_CBITS_LIB)" "" + SRC_BLD_DLL_OPTS += -lHSstd_$(way_)imp -L$(GHC_LIB_DIR)/std + endif +endif +endif +SRC_BLD_DLL_OPTS += -lgmp -L. -L$(GHC_RUNTIME_DIR)/gmp +ifeq "$(IS_CBITS_LIB)" "" +SRC_BLD_DLL_OPTS += $(patsubst %,-lHS%_$(way_)imp, $(HSLIB_DEPS)) +SRC_BLD_DLL_OPTS += $(patsubst %,-L../%, $(HSLIB_DEPS)) +endif +ifneq "$(HAS_CBITS)" "" +SRC_BLD_DLL_OPTS += -lHS$(HSLIB)_cbits_imp -Lcbits +endif +SRC_BLD_DLL_OPTS += -lwsock32 -lwinmm + +endif # HSLIB != "" + +SplitObjs = NO + +ifneq "$(LIBRARY)" "" + +all :: DllVersionInfo.$(way_)o ifeq "$(DLL_NAME)" "" -DLL_NAME = $(patsubst %.a, %.dll, $(subst lib,,$(LIBRARY))) +DLL_NAME = $(patsubst %.a,%.dll,$(subst lib,,$(LIBRARY))) endif ifneq "$(DLL_NAME)" "" @@ -396,12 +447,14 @@ endif all :: $(DLL_NAME) ifeq "$(DLL_IMPLIB_NAME)" "" -DLL_IMPLIB_NAME = $(patsubst %.a, %_imp.a, $(LIBRARY)) +DLL_IMPLIB_NAME = $(patsubst %.a,%_imp.a,$(LIBRARY)) endif $(DLL_NAME) :: $(LIBRARY) $(BLD_DLL) --output-lib $(DLL_IMPLIB_NAME) -o $(DLL_NAME) $(LIBRARY) $(BLD_DLL_OPTS) -endif +endif # LIBRARY != "" + +endif # DLLized # # Version information is baked into a DLL by having the DLL include DllVersionInfo.o. @@ -409,7 +462,7 @@ endif # (both are given sensible defaults though.) # # Note: this will not work as expected with Cygwin B20.1; you need a more recent -# snapshot of binutils (to pick up windres bugfixes.) +# version of binutils (to pick up windres bugfixes.) ifndef DLL_VERSION DLL_VERSION=$(ProjectVersion) @@ -439,14 +492,14 @@ endif # Little bit of lo-fi mangling to get at the right set of settings depending # on whether we're generating the VERSIONINFO for a DLL or EXE # -DLL_OR_EXE=$(subst VersionInfo.rc,,$@) +DLL_OR_EXE=$(subst VersionInfo.$(way_)rc,,$@) VERSION_FT=$(subst Dll, 0x2L, $(subst Exe, 0x1L, $(DLL_OR_EXE))) VERSION_RES_NAME=$(subst Exe,$(EXE_VERSION_NAME), $(subst Dll, $(DLL_VERSION_NAME),$(DLL_OR_EXE))) VERSION_RES=$(subst Exe,$(EXE_VERSION), $(subst Dll, $(DLL_VERSION),$(DLL_OR_EXE))) VERSION_DESC=$(subst Exe,$(EXE_DESCRIPTION), $(subst Dll, $(DLL_DESCRIPTION),$(DLL_OR_EXE))) -DllVersionInfo.rc ExeVersionInfo.rc: - $(RM) DllVersionInfo.rc +DllVersionInfo.$(way_)rc ExeVersionInfo.$(way_)rc: + $(RM) DllVersionInfo.$(way_)rc echo "1 VERSIONINFO" > $@ echo "FILEVERSION 1,0,0,1" >> $@ echo "PRODUCTVERSION 1,0,0,1" >> $@ @@ -525,7 +578,7 @@ all :: $(SCRIPT_PROG) # platforms, we prepend #!$(INTERP) -- SOF 6/97 # -$(SCRIPT_PROG) :: $(SCRIPT_OBJS) +$(SCRIPT_PROG) : $(SCRIPT_OBJS) $(RM) $@ @echo Creating $@... ifeq "$(INTERP)" "perl" @@ -618,6 +671,19 @@ install-dirs :: # within the various install targets instead. #install:: install-dirs +# Install libraries automatically +ifneq "$(LIBRARY)" "" +INSTALL_LIBS += $(LIBRARY) +ifeq "$(DLLized)" "YES" +INSTALL_PROGS += $(DLL_NAME) +else +ifeq "$(DLLized)" "YES" +INSTALL_LIBS += $(patsubst %.a,%_imp.a, $(LIBRARY)) +endif +endif +INSTALL_DATAS += $(HS_IFACES) +endif + ifneq "$(INSTALL_PROGS)" "" # @@ -630,10 +696,10 @@ ifneq "$(INSTALL_PROGS)" "" # $(exeext). # # This is bit of a pain to express since GNU make doesn't have -# something like $(if ...), but possible using $(subst ..) -# [Aside: I added support for $(if ..) to my local copy of GNU +# something like $(if ...), but possible using $(subst ...) +# [Aside: I added support for $(if ...) to my local copy of GNU # make at one stage, perhaps I should propagate the patch to -# the GNU make maintainers..] +# the GNU make maintainers...] # INSTALL_PROGS := $(foreach p, $(INSTALL_PROGS), $(addsuffix $(subst _,,$(subst __,$(exeext),_$(suffix $(p))_)), $(basename $(p)))) -- 1.7.10.4