diff options
author | unknown <magnus@neptunus.(none)> | 2004-04-14 10:53:21 +0200 |
---|---|---|
committer | unknown <magnus@neptunus.(none)> | 2004-04-14 10:53:21 +0200 |
commit | 6386c55cee50bad6a9979d1fab28e03bb8612ca7 (patch) | |
tree | 3fbbacf704304b69228474b9f03549ccd585a017 /ndb/config | |
parent | 0ba6cb48d84f1ff951d09871a96be6cdef3f2c3c (diff) | |
download | mariadb-git-6386c55cee50bad6a9979d1fab28e03bb8612ca7.tar.gz |
Initial revision of NDB Cluster files
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
Diffstat (limited to 'ndb/config')
-rw-r--r-- | ndb/config/Defs.DEBUG.mk | 4 | ||||
-rw-r--r-- | ndb/config/Defs.HPUX.HPPA.GCC.mk | 50 | ||||
-rw-r--r-- | ndb/config/Defs.IBMAIX.POWERPC.GCC.mk | 49 | ||||
-rw-r--r-- | ndb/config/Defs.LINUX.x86.GCC.mk | 56 | ||||
-rw-r--r-- | ndb/config/Defs.LINUX.x86.ICC.mk | 54 | ||||
-rw-r--r-- | ndb/config/Defs.LINUX.x86_64.GCC.mk | 54 | ||||
-rw-r--r-- | ndb/config/Defs.MACOSX.POWERPC.GCC.mk | 58 | ||||
-rw-r--r-- | ndb/config/Defs.OSE.PPC750.DIAB.mk | 47 | ||||
-rw-r--r-- | ndb/config/Defs.RELEASE.mk | 3 | ||||
-rw-r--r-- | ndb/config/Defs.RELEASE_TRACE.mk | 3 | ||||
-rw-r--r-- | ndb/config/Defs.SIMCELLO.SOFTOSE.GCC.mk | 53 | ||||
-rw-r--r-- | ndb/config/Defs.SOFTOSE.SPARC.GCC.mk | 57 | ||||
-rw-r--r-- | ndb/config/Defs.SOLARIS.SPARC.FORTE6.mk | 54 | ||||
-rw-r--r-- | ndb/config/Defs.SOLARIS.SPARC.GCC.mk | 54 | ||||
-rw-r--r-- | ndb/config/Defs.SOLARIS.SPARC_64.GCC.mk | 53 | ||||
-rw-r--r-- | ndb/config/Defs.SOLARIS6.SPARC.GCC.mk | 53 | ||||
-rw-r--r-- | ndb/config/Defs.TRU64X.ALPHA.GCC.mk | 49 | ||||
-rw-r--r-- | ndb/config/Defs.WIN32.x86.VC7.mk | 61 | ||||
-rwxr-xr-x | ndb/config/GuessConfig.sh | 113 | ||||
-rw-r--r-- | ndb/config/Makefile.am | 31 | ||||
-rw-r--r-- | ndb/config/acinclude.m4 | 1513 | ||||
-rw-r--r-- | ndb/config/configure.in | 2085 |
22 files changed, 4554 insertions, 0 deletions
diff --git a/ndb/config/Defs.DEBUG.mk b/ndb/config/Defs.DEBUG.mk new file mode 100644 index 00000000000..309ae90a0ba --- /dev/null +++ b/ndb/config/Defs.DEBUG.mk @@ -0,0 +1,4 @@ + +VERSION_FLAGS := -DNDB_DEBUG -DUSE_EMULATED_JAM -DVM_TRACE -DERROR_INSERT -DARRAY_GUARD +#-DDEBUG_TRANSPORTER + diff --git a/ndb/config/Defs.HPUX.HPPA.GCC.mk b/ndb/config/Defs.HPUX.HPPA.GCC.mk new file mode 100644 index 00000000000..895c7672071 --- /dev/null +++ b/ndb/config/Defs.HPUX.HPPA.GCC.mk @@ -0,0 +1,50 @@ +### +# +# Defines +SHELL := /bin/sh + +C++ := g++ +CC := gcc +AR_RCS := ar rcs +SO := ld -b -o + +SHLIBEXT := sl + +MAKEDEPEND := g++ -M +PIC := -fPIC + +RPCGENFLAGS := -MA -C -N +ETAGS := etags +CTAGS := ctags + +### +# +# Flags +# +CCFLAGS_WARNINGS = -Wno-long-long -W -Wall -pedantic +# -Wno-sign-compare Use this flag if you are annoyed with all the warnings +CCFLAGS_TOP = -DHPUX -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DNO_COMMAND_HANDLER + +ifeq (RELEASE, $(NDB_VERSION)) +VERSION_FLAGS += -O3 +else +ifeq (RELEASE_TRACE, $(NDB_VERSION)) +VERSION_FLAGS += -O3 -g +else +VERSION_FLAGS += -g +endif +endif + +CCFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) +CFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) + +LDFLAGS_TOP = -lpthread -lnsl -lrt + +LDFLAGS = $(LDFLAGS_LOC) $(LDFLAGS_TOP) + +LDLIBS = $(LDLIBS_LOC) $(LDLIBS_TOP) + +LINK.cc = $(PURE) $(C++) $(CCFLAGS) $(LDFLAGS) + +LINK.c = $(PURE) $(CC) $(CFLAGS) $(LDFLAGS) + diff --git a/ndb/config/Defs.IBMAIX.POWERPC.GCC.mk b/ndb/config/Defs.IBMAIX.POWERPC.GCC.mk new file mode 100644 index 00000000000..ae975fb2cb8 --- /dev/null +++ b/ndb/config/Defs.IBMAIX.POWERPC.GCC.mk @@ -0,0 +1,49 @@ +### +# +# Defines +SHELL := /bin/sh + +C++ := g++ +CC := gcc +AR_RCS := $(PURE) ar rcs +SO := g++ -shared -o + +MAKEDEPEND := g++ -M +PIC := -fPIC + +RPCGENFLAGS := -M -C -N + +ETAGS := etags +CTAGS := ctags + +### +# +# Flags +# +CCFLAGS_WARNINGS = -Wno-long-long -Wall #-pedantic +# Add these for more warnings -Weffc++ -W +CCFLAGS_TOP = -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS +CCFLAGS_TOP += -fno-rtti + +ifeq (RELEASE, $(NDB_VERSION)) +VERSION_FLAGS += -O3 +else +ifeq (RELEASE_TRACE, $(NDB_VERSION)) +VERSION_FLAGS += -O3 -g +else +VERSION_FLAGS += -g +endif +endif + +CCFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) +CFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) + +LDFLAGS_TOP = -lpthread -lrt + +LDFLAGS = $(LDFLAGS_LOC) $(LDFLAGS_TOP) + +LDLIBS = $(LDLIBS_LOC) $(LDLIBS_TOP) + +LINK.cc = $(PURE) $(C++) $(CCFLAGS) $(LDFLAGS) + +LINK.c = $(PURE) $(CC) $(CFLAGS) $(LDFLAGS) diff --git a/ndb/config/Defs.LINUX.x86.GCC.mk b/ndb/config/Defs.LINUX.x86.GCC.mk new file mode 100644 index 00000000000..a1cc3c52a7e --- /dev/null +++ b/ndb/config/Defs.LINUX.x86.GCC.mk @@ -0,0 +1,56 @@ +### +# +# Defines +SHELL := /bin/sh + +C++ := g++$(GCC_VERSION) +CC := gcc$(GCC_VERSION) +AR_RCS := $(PURE) ar rcs +SO := gcc$(GCC_VERSION) -shared -lpthread -o + +MAKEDEPEND := g++$(GCC_VERSION) -M +PIC := -fPIC + +RPCGENFLAGS := -M -C -N + +ETAGS := etags +CTAGS := ctags + +### +# +# Flags +# +# gcc3.3 __THROW problem if -pedantic and -O2 +ifeq ($(NDB_VERSION),DEBUG) +CCFLAGS_WARNINGS = -Wno-long-long -Wall -pedantic +else +CCFLAGS_WARNINGS = -Wno-long-long -Wall +endif +# Add these for more warnings -Weffc++ -W +CCFLAGS_TOP = -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS +CCFLAGS_TOP += -fno-rtti -fno-exceptions + +ifeq (RELEASE, $(NDB_VERSION)) +VERSION_FLAGS += -O2 +else +ifeq (RELEASE_TRACE, $(NDB_VERSION)) +VERSION_FLAGS += -O2 -g +else +VERSION_FLAGS += -g +endif +endif + +CCFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) +CFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) + +LDFLAGS_TOP = + +LDFLAGS = $(LDFLAGS_LOC) $(LDFLAGS_TOP) + +LDLIBS = $(LDLIBS_LOC) $(LDLIBS_TOP) + +LINK.cc = $(PURE) $(CC) $(CCFLAGS) $(LDFLAGS) + +LINK.c = $(PURE) $(CC) $(CFLAGS) $(LDFLAGS) + +LDFLAGS_LAST = -lpthread -lrt -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic diff --git a/ndb/config/Defs.LINUX.x86.ICC.mk b/ndb/config/Defs.LINUX.x86.ICC.mk new file mode 100644 index 00000000000..8e8540409da --- /dev/null +++ b/ndb/config/Defs.LINUX.x86.ICC.mk @@ -0,0 +1,54 @@ +### +# +# Defines +SHELL := /bin/sh + +C++ := icc +CC := icc +AR_RCS := $(PURE) ar rcs +SO := g++$(GCC_VERSION) -shared -lpthread -o + +MAKEDEPEND := g++$(GCC_VERSION) -M +PIC := -fPIC + +RPCGENFLAGS := -M -C -N + +ETAGS := etags +CTAGS := ctags + +### +# +# Flags +# +# gcc3.3 __THROW problem if -pedantic and -O2 +ifeq ($(NDB_VERSION),DEBUG) +CCFLAGS_WARNINGS = +else +CCFLAGS_WARNINGS = +endif +# Add these for more warnings -Weffc++ -W +CCFLAGS_TOP = -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS +CCFLAGS_TOP += + +ifeq (RELEASE, $(NDB_VERSION)) +VERSION_FLAGS += -O2 +else +ifeq (RELEASE_TRACE, $(NDB_VERSION)) +VERSION_FLAGS += -O2 -g +else +VERSION_FLAGS += -g +endif +endif + +CCFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) +CFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) + +LDFLAGS_TOP = -lpthread -lrt + +LDFLAGS = $(LDFLAGS_LOC) $(LDFLAGS_TOP) + +LDLIBS = $(LDLIBS_LOC) $(LDLIBS_TOP) + +LINK.cc = $(PURE) $(C++) $(CCFLAGS) $(LDFLAGS) + +LINK.c = $(PURE) $(CC) $(CFLAGS) $(LDFLAGS) diff --git a/ndb/config/Defs.LINUX.x86_64.GCC.mk b/ndb/config/Defs.LINUX.x86_64.GCC.mk new file mode 100644 index 00000000000..a238d29ef4c --- /dev/null +++ b/ndb/config/Defs.LINUX.x86_64.GCC.mk @@ -0,0 +1,54 @@ +### +# +# Defines +SHELL := /bin/sh + +C++ := g++ +CC := gcc +AR_RCS := $(PURE) ar rcs +SO := g++ -shared -lpthread -o + +MAKEDEPEND := g++ -M +PIC := -fPIC + +RPCGENFLAGS := -M -C -N + +ETAGS := etags +CTAGS := ctags + +### +# +# Flags +# +# gcc3.3 __THROW problem if -pedantic and -O2 +ifeq ($(NDB_VERSION),DEBUG) +CCFLAGS_WARNINGS = -Wno-long-long -Wall -pedantic +else +CCFLAGS_WARNINGS = -Wno-long-long -Wall +endif +# Add these for more warnings -Weffc++ -W +CCFLAGS_TOP = -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS +CCFLAGS_TOP += -fno-rtti -fno-exceptions -m64 + +ifeq (RELEASE, $(NDB_VERSION)) +VERSION_FLAGS += -O2 +else +ifeq (RELEASE_TRACE, $(NDB_VERSION)) +VERSION_FLAGS += -O2 -g +else +VERSION_FLAGS += -g +endif +endif + +CCFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) +CFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) + +LDFLAGS_TOP = -lpthread -lrt + +LDFLAGS = $(LDFLAGS_LOC) $(LDFLAGS_TOP) + +LDLIBS = $(LDLIBS_LOC) $(LDLIBS_TOP) + +LINK.cc = $(PURE) $(C++) $(CCFLAGS) $(LDFLAGS) + +LINK.c = $(PURE) $(CC) $(CFLAGS) $(LDFLAGS) diff --git a/ndb/config/Defs.MACOSX.POWERPC.GCC.mk b/ndb/config/Defs.MACOSX.POWERPC.GCC.mk new file mode 100644 index 00000000000..bb73e9bcc61 --- /dev/null +++ b/ndb/config/Defs.MACOSX.POWERPC.GCC.mk @@ -0,0 +1,58 @@ +### +# +# Defines +SHELL := /bin/sh + +C++ := gcc +CC := gcc +CXX := gcc +AR_RCS := $(PURE) ar rcs +#SO := g++ -dynamiclib -Wl,-segprot,__TEXT,rwx,rwx -o +SO := gcc -dynamiclib -o + +SHLIBEXT := dylib + +MAKEDEPEND := gcc -M +PIC := -fPIC + +RPCGENFLAGS := -M -C -N + +ETAGS := etags +CTAGS := ctags + +### +# +# Flags +# +CCFLAGS_WARNINGS = -Wno-long-long -Wall -Winline #-Werror#-pedantic +# Add these for more warnings -Weffc++ -W +CCFLAGS_TOP = -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_BIG_ENDIAN +CXX_FLAGS_TOP = -fno-rtti -felide-constructors -fno-exceptions -fno-omit-fram-pointer +C_FLAGS_TOP += -fno-omit-frame-pointer + +ifeq (RELEASE, $(NDB_VERSION)) +VERSION_FLAGS += -O3 +else +ifeq (RELEASE_TRACE, $(NDB_VERSION)) +VERSION_FLAGS += -O3 -g +else +VERSION_FLAGS += -g +endif +endif + +CCFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(CXXFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) +CFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(C_FLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) + +LDFLAGS_TOP = + +LDFLAGS = $(LDFLAGS_LOC) $(LDFLAGS_TOP) + +LDLIBS = $(LDLIBS_LOC) $(LDLIBS_TOP) + +LINK.cc = $(PURE) $(C++) $(CCFLAGS) $(LDFLAGS) + +LINK.c = $(PURE) $(CC) $(CFLAGS) $(LDFLAGS) + +#LDFLAGS_LAST = -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic +LDFLAGS_LAST = -lstdc++ + diff --git a/ndb/config/Defs.OSE.PPC750.DIAB.mk b/ndb/config/Defs.OSE.PPC750.DIAB.mk new file mode 100644 index 00000000000..8773021a152 --- /dev/null +++ b/ndb/config/Defs.OSE.PPC750.DIAB.mk @@ -0,0 +1,47 @@ +### +# +# Defines +SHELL := /bin/sh + +C++ := dplus +CC := dcc +AR_RCS := $(PURE) ar rcs +SO := dar -r + +MAKEDEPEND := g++ -M -nostdinc +PIC := + +RPCGENFLAGS := -MA -C -N + +### +# +# Flags +# +CCFLAGS_INCLUDE = -I/vobs/cello/cls/rtosi_if/include -I/vobs/cello/cls/rtosi_if/include.mp750 -I/vobs/cello/cls/rtosi_if/include.ppc +CCFLAGS_TOP = -tPPC750EH -DBIG_ENDIAN -D_BIG_ENDIAN -DPPC -DPPC750 -DOSE_DELTA -DMP -Xlint -Xforce-prototypes -DINLINE=__inline__ -Xansi -Xsmall-data=0 -Xsmall-const=0 -Xstrings-in-text + +ifeq (RELEASE, $(NDB_VERSION)) +VERSION_FLAGS += -XO +else +ifeq (RELEASE_TRACE, $(NDB_VERSION)) +VERSION_FLAGS += -XO -g +else +VERSION_FLAGS += -g +endif +endif + +CCFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_INCLUDE) +CFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_INCLUDE) + +LDFLAGS_TOP = + +LDFLAGS = $(LDFLAGS_LOC) $(LDFLAGS_TOP) + +LDLIBS = $(LDLIBS_LOC) $(LDLIBS_TOP) + +LINK.cc = $(PURE) $(C++) $(CCFLAGS) $(LDFLAGS) + +LINK.c = $(PURE) $(CC) $(CFLAGS) $(LDFLAGS) + + + diff --git a/ndb/config/Defs.RELEASE.mk b/ndb/config/Defs.RELEASE.mk new file mode 100644 index 00000000000..fad72d53a43 --- /dev/null +++ b/ndb/config/Defs.RELEASE.mk @@ -0,0 +1,3 @@ + +VERSION_FLAGS := -DNDB_RELEASE -DUSE_EMULATED_JAM -DNDEBUG + diff --git a/ndb/config/Defs.RELEASE_TRACE.mk b/ndb/config/Defs.RELEASE_TRACE.mk new file mode 100644 index 00000000000..06726f282e4 --- /dev/null +++ b/ndb/config/Defs.RELEASE_TRACE.mk @@ -0,0 +1,3 @@ + +VERSION_FLAGS := -DNDB_RELEASE -DUSE_EMULATED_JAM -DNDEBUG -DVM_TRACE -DERROR_INSERT -DARRAY_GUARD + diff --git a/ndb/config/Defs.SIMCELLO.SOFTOSE.GCC.mk b/ndb/config/Defs.SIMCELLO.SOFTOSE.GCC.mk new file mode 100644 index 00000000000..8d73e7a752b --- /dev/null +++ b/ndb/config/Defs.SIMCELLO.SOFTOSE.GCC.mk @@ -0,0 +1,53 @@ +### +# +# Defines +SHELL := /bin/sh + +C++ := g++ +CC := gcc +AR_RCS := $(PURE) ar rcs +SO := g++ -shared -o + +MAKEDEPEND := g++ -M +PIC := -fPIC + +### +# +# Flags +# +NDB_STRDUP := Y +CCFLAGS_WARNINGS = -Wall -pedantic -Wno-sign-compare +CC_FLAGS_OSE = -DSPARC -DSIM -DOSE_DELTA -DMP +CCFLAGS_TOP = $(CC_FLAGS_OSE) $(CC_FLAGS_WARNINGS) -DNDB_STRDUP + +ifeq (RELEASE, $(NDB_VERSION)) +VERSION_FLAGS += -O3 +else +ifeq (RELEASE_TRACE, $(NDB_VERSION)) +VERSION_FLAGS += -O3 -g +else +VERSION_FLAGS += -g +endif +endif + + +CCFLAGS_LOC_OSE= -I/vobs/cello/cls/rtosi_if/include.sparc + + +CCFLAGS = $(CCFLAGS_LOC_OSE) $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) +CFLAGS = $(CCFLAGS_LOC_OSE) $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) + +LDLIBS_LOC = -L$(NDB_TOP)/lib -L$(OSE_LOC)/sfk-solaris2/lib -L$(OSE_LOC)/sfk-solaris2/krn-solaris2/lib + +LDLIBS_TOP = + +LDFLAGS = $(LDFLAGS_LOC) $(LDFLAGS_TOP) + +LDLIBS = $(LDLIBS_LOC) $(LDLIBS_TOP) + +LINK.cc = $(PURE) $(C++) $(CCFLAGS) $(LDFLAGS) + +LINK.c = $(PURE) $(CC) $(LDFLAGS) + + + diff --git a/ndb/config/Defs.SOFTOSE.SPARC.GCC.mk b/ndb/config/Defs.SOFTOSE.SPARC.GCC.mk new file mode 100644 index 00000000000..6788fa956bf --- /dev/null +++ b/ndb/config/Defs.SOFTOSE.SPARC.GCC.mk @@ -0,0 +1,57 @@ +### +# +# Defines +SHELL := /bin/sh + +C++ := g++ +CC := gcc +AR_RCS := $(PURE) ar rcs +SO := g++ -shared -o + +MAKEDEPEND := g++ -M +PIC := -fPIC + +### +# +# Flags +# +NDB_STRDUP := Y +CCFLAGS_WARNINGS = -Wno-long-long -Wall -pedantic -Wno-sign-compare -ansi +CC_FLAGS_OSE = -DUSE_OSEDEF_H -DOSE_DELTA -DOS_DEBUG -DBIG_ENDIAN +CCFLAGS_TOP = $(CC_FLAGS_OSE) $(CC_FLAGS_WARNINGS) -DNDB_STRDUP + +ifeq (RELEASE, $(NDB_VERSION)) +VERSION_FLAGS += -O3 +else +ifeq (RELEASE_TRACE, $(NDB_VERSION)) +VERSION_FLAGS += -O3 -g +else +VERSION_FLAGS += -g -DOS_DEBUG +endif +endif + +OSE_LOC = /opt/as/OSE/OSE4.3.1 + +CCFLAGS_LOC_OSESTD = -I$(OSE_LOC)/sfk-solaris2/std-include +CCFLAGS_LOC_OSE = -I$(OSE_LOC)/sfk-solaris2/include -I$(OSE_LOC)/sfk-solaris2/krn-solaris2/include -I$(NDB_TOP)/src/env/softose + + +CCFLAGS = $(CCFLAGS_LOC_OSE) $(CCFLAGS_LOC_OSESTD) $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) +CFLAGS = $(CCFLAGS_LOC_OSE) $(CCFLAGS_LOC_OSESTD) $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) + +LDLIBS_LOC = -L$(NDB_TOP)/lib -L$(OSE_LOC)/sfk-solaris2/lib -L$(OSE_LOC)/sfk-solaris2/krn-solaris2/lib + +LDLIBS_TOP = + +LDLIBS_LAST = -lsoftose_env -lsoftose_krn -llnh -lefs -lshell -lfss -ltosv -lrtc -lheap -linetutil -linetapi -lsoftose -lsoftose_env -lsoftose_krn -losepthread -lrtc -lnsl -lsocket -lpthread -lcrt -lm + +LDFLAGS = $(LDFLAGS_LOC) $(LDFLAGS_TOP) + +LDLIBS = $(LDLIBS_LOC) $(LDLIBS_TOP) + +LINK.cc = $(PURE) $(C++) $(CCFLAGS) $(LDFLAGS) + +LINK.c = $(PURE) $(CC) $(LDFLAGS) + + + diff --git a/ndb/config/Defs.SOLARIS.SPARC.FORTE6.mk b/ndb/config/Defs.SOLARIS.SPARC.FORTE6.mk new file mode 100644 index 00000000000..8a95205703d --- /dev/null +++ b/ndb/config/Defs.SOLARIS.SPARC.FORTE6.mk @@ -0,0 +1,54 @@ +### +# +# Defines +SHELL := /bin/sh + +C++ := CC +CC := /opt/as/forte6/SUNWspro/bin/cc +AR_RCS := $(PURE) CC -xar -o +SO := CC -G -z text -o + +MAKEDEPEND := CC -xM1 +PIC := -KPIC +ETAGS := etags +CTAGS := ctags + +RPCGENFLAGS := -MA -C -N + +### +# +# Flags + +CCFLAGS_TOP = -mt -DSOLARIS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS + +ifneq ($(PURE),) + CCFLAGS_TOP += -xs + CCFLAGS_TOP += -DNDB_PURIFY +endif + +ifeq (RELEASE, $(NDB_VERSION)) +VERSION_FLAGS += -xO3 +else +ifeq (RELEASE_TRACE, $(NDB_VERSION)) +VERSION_FLAGS += -xO3 -g +else +VERSION_FLAGS += -g +endif +endif + +CCFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) +CFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) + +LDFLAGS_TOP = -L/opt/as/forte6/SUNWspro/WS6/lib -lpthread -lsocket -lnsl -lrt + +LDFLAGS = $(LDFLAGS_LOC) $(LDFLAGS_TOP) + +LDLIBS = $(LDLIBS_LOC) $(LDLIBS_TOP) + +LINK.cc = $(PURE) $(C++) -xildoff $(CCFLAGS) $(LDFLAGS) + +LINK.c = $(PURE) $(CC) $(CFLAGS) $(LDFLAGS) + + + + diff --git a/ndb/config/Defs.SOLARIS.SPARC.GCC.mk b/ndb/config/Defs.SOLARIS.SPARC.GCC.mk new file mode 100644 index 00000000000..25920515278 --- /dev/null +++ b/ndb/config/Defs.SOLARIS.SPARC.GCC.mk @@ -0,0 +1,54 @@ +### +# +# Defines +SHELL := /bin/sh + +CXX := gcc +C++ := g++ +CC := gcc +AR_RCS := ar rcs +SO := gcc -G -o + +#GXX_VERSION := $(shell gcc --version | sed -e 's,.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*,\1,1' -e q) + +MAKEDEPEND := g++ -M +PIC := -fPIC + +RPCGENFLAGS := -MA -C -N +ETAGS := etags +CTAGS := ctags + +### +# +# Flags +# +CCFLAGS_WARNINGS = -Wno-long-long -W -Wall -pedantic +# -Wno-sign-compare Use this flag if you are annoyed with all the warnings +CCFLAGS_TOP = -DSOLARIS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DNO_COMMAND_HANDLER +CCFLAGS_TOP += -fno-rtti + +ifeq (RELEASE, $(NDB_VERSION)) +VERSION_FLAGS += -O2 +else +ifeq (RELEASE_TRACE, $(NDB_VERSION)) +VERSION_FLAGS += -O2 -g +else +VERSION_FLAGS += -g +endif +endif + +CCFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) +CFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) + +LDFLAGS_TOP = + +LDFLAGS = $(LDFLAGS_LOC) $(LDFLAGS_TOP) + +LDLIBS = $(LDLIBS_LOC) $(LDLIBS_TOP) + +LINK.cc = $(PURE) $(CXX) $(CCFLAGS) $(LDFLAGS) + +LINK.c = $(PURE) $(CC) $(CFLAGS) $(LDFLAGS) + +LDFLAGS_LAST = -lpthread -lsocket -lnsl -lrt -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic + diff --git a/ndb/config/Defs.SOLARIS.SPARC_64.GCC.mk b/ndb/config/Defs.SOLARIS.SPARC_64.GCC.mk new file mode 100644 index 00000000000..2b8b9d4cc24 --- /dev/null +++ b/ndb/config/Defs.SOLARIS.SPARC_64.GCC.mk @@ -0,0 +1,53 @@ +### +# +# Note: LD_LIBRARY_PATH must be set for /usr/local/lib/sparcv9 to dynamically link +# to 64-bit libraries +# +# Defines +SHELL := /bin/sh + +C++ := g++ -m64 +CC := gcc -m64 +AR_RCS := ar rcs +SO := g++ -m64 -shared -o + +MAKEDEPEND := g++ -M +PIC := -fPIC + +RPCGENFLAGS := -MA -C -N +ETAGS := etags +CTAGS := ctags + +### +# +# Flags +# +CCFLAGS_WARNINGS = -Wno-long-long -W -Wall -pedantic +# -Wno-sign-compare Use this flag if you are annoyed with all the warnings +CCFLAGS_TOP = -DSOLARIS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DNO_COMMAND_HANDLER +CCFLAGS_TOP += -fno-rtti + +ifeq (RELEASE, $(NDB_VERSION)) +VERSION_FLAGS += -O2 +else +ifeq (RELEASE_TRACE, $(NDB_VERSION)) +VERSION_FLAGS += -O2 -g +else +VERSION_FLAGS += -g +endif +endif + +CCFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) +CFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) + +LDFLAGS_TOP = -lpthread -lsocket -lnsl -lrt + +LDFLAGS = $(LDFLAGS_LOC) $(LDFLAGS_TOP) + +LDLIBS = $(LDLIBS_LOC) $(LDLIBS_TOP) + +LINK.cc = $(PURE) $(C++) $(CCFLAGS) $(LDFLAGS) + +LINK.c = $(PURE) $(CC) $(CFLAGS) $(LDFLAGS) + + diff --git a/ndb/config/Defs.SOLARIS6.SPARC.GCC.mk b/ndb/config/Defs.SOLARIS6.SPARC.GCC.mk new file mode 100644 index 00000000000..f1c570ba101 --- /dev/null +++ b/ndb/config/Defs.SOLARIS6.SPARC.GCC.mk @@ -0,0 +1,53 @@ +### +# +# Defines +SHELL := /bin/sh + +C++ := g++ +CC := gcc +AR_RCS := $(PURE) ar rcs +SO := g++ -shared -o + +MAKEDEPEND := g++ -M +PIC := -fPIC + +RPCGENFLAGS := -MA -C -N + +### +# +# Flags +# +CCFLAGS_WARNINGS = -Wno-long-long -Wall -pedantic +# -Wno-sign-compare Use this flag if you are annoyed with all the warnings +CCFLAGS_TOP = -DSOLARIS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DNO_COMMAND_HANDLER + +# SOLARIS 6 should use the same settings as SOLARIS7 +# if something in the SOLARIS 7 port does not work for SOLARIS 6 +# it can be ifdefed using +# if ! defined NDB_SOLRIS6 +CCFLAGS_TOP = -DNDB_SOLARIS + +ifeq (RELEASE, $(NDB_VERSION)) +VERSION_FLAGS += -O3 +else +ifeq (RELEASE_TRACE, $(NDB_VERSION)) +VERSION_FLAGS += -O3 +else +VERSION_FLAGS += -g +endif +endif + +CCFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) +CFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) + +LDFLAGS_TOP = -lpthread -lsocket -lnsl -lposix4 + +LDFLAGS = $(LDFLAGS_LOC) $(LDFLAGS_TOP) + +LDLIBS = $(LDLIBS_LOC) $(LDLIBS_TOP) + +LINK.cc = $(PURE) $(C++) $(CCFLAGS) $(LDFLAGS) + +LINK.c = $(PURE) $(CC) $(CFLAGS) $(LDFLAGS) + + diff --git a/ndb/config/Defs.TRU64X.ALPHA.GCC.mk b/ndb/config/Defs.TRU64X.ALPHA.GCC.mk new file mode 100644 index 00000000000..ae975fb2cb8 --- /dev/null +++ b/ndb/config/Defs.TRU64X.ALPHA.GCC.mk @@ -0,0 +1,49 @@ +### +# +# Defines +SHELL := /bin/sh + +C++ := g++ +CC := gcc +AR_RCS := $(PURE) ar rcs +SO := g++ -shared -o + +MAKEDEPEND := g++ -M +PIC := -fPIC + +RPCGENFLAGS := -M -C -N + +ETAGS := etags +CTAGS := ctags + +### +# +# Flags +# +CCFLAGS_WARNINGS = -Wno-long-long -Wall #-pedantic +# Add these for more warnings -Weffc++ -W +CCFLAGS_TOP = -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS +CCFLAGS_TOP += -fno-rtti + +ifeq (RELEASE, $(NDB_VERSION)) +VERSION_FLAGS += -O3 +else +ifeq (RELEASE_TRACE, $(NDB_VERSION)) +VERSION_FLAGS += -O3 -g +else +VERSION_FLAGS += -g +endif +endif + +CCFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) +CFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) + +LDFLAGS_TOP = -lpthread -lrt + +LDFLAGS = $(LDFLAGS_LOC) $(LDFLAGS_TOP) + +LDLIBS = $(LDLIBS_LOC) $(LDLIBS_TOP) + +LINK.cc = $(PURE) $(C++) $(CCFLAGS) $(LDFLAGS) + +LINK.c = $(PURE) $(CC) $(CFLAGS) $(LDFLAGS) diff --git a/ndb/config/Defs.WIN32.x86.VC7.mk b/ndb/config/Defs.WIN32.x86.VC7.mk new file mode 100644 index 00000000000..e66dacb78e7 --- /dev/null +++ b/ndb/config/Defs.WIN32.x86.VC7.mk @@ -0,0 +1,61 @@ +### +# +# Defines +SHELL := /bin/sh + + +DEFINES = -D_WIN32 -D_M_IX86=600 -D_MSC_EXTENSIONS=0 -U_cdecl -D_MT +# +MAKEDEPEND = g++ -M --nostdinc --nostdinc++ -I"`cygpath -u "$(MSVCDIR)\include"`" -I"`cygpath -u "$(MSVCDIR)\PlatformSDK\include"`" $(DEFINES) +PIC = -D_LIB +NON_PIC = -D_LIB + +RPCGENFLAGS := -M -C -N + +ETAGS := etags +CTAGS := ctags + +### +# +# Flags +# +CCFLAGS_WARNINGS = +CCFLAGS_TOP = +CCFLAGS_LOC = +CCFLAGS_WIN = -DWIN32 -D_WIN32_WINNT=0x0500 -DWINVER=0x0500 -D_MBCS -DNO_COMMAND_HANDLER +CCFLAGS_WIN += -W3 -EHsc +#CCFLAGS_WIN += -clr + +ifeq (RELEASE, $(NDB_VERSION)) +CCFLAGS_WIN += -MT -O2 -Ob1 -DNO_DEBUG_MESSAGES +else +ifeq (RELEASE_TRACE, $(NDB_VERSION)) +CCFLAGS_WIN += -MT -O2 -Ob1 -DNO_DEBUG_MESSAGES +else +CCFLAGS_WIN += -MTd -Zi -Od -GS -D_DEBUG +endif +endif + +C++ = cl -nologo $(CCFLAGS_WIN) +CC = cl -nologo $(CCFLAGS_WIN) + +CCFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) +CFLAGS = $(CCFLAGS_LOC) $(CCFLAGS_TOP) $(USER_FLAGS) $(VERSION_FLAGS) $(CCFLAGS_WARNINGS) + +LDFLAGS_TOP = + +LDFLAGS = $(LDFLAGS_LOC) $(LDFLAGS_TOP) + +LDLIBS = $(LDLIBS_LOC) $(LDLIBS_TOP) + +WIN_LIBS := Ws2_32.lib Advapi32.lib + +ifeq (RELEASE, $(NDB_VERSION)) +LINK.cc = link -INCREMENTAL:NO -NOLOGO -LARGEADDRESSAWARE $(WIN_LIBS) +else +ifeq (RELEASE_TRACE, $(NDB_VERSION)) +LINK.cc = link -INCREMENTAL:NO -NOLOGO -LARGEADDRESSAWARE $(WIN_LIBS) +else +LINK.cc = link -INCREMENTAL -NOLOGO -DEBUG -LARGEADDRESSAWARE $(WIN_LIBS) +endif +endif diff --git a/ndb/config/GuessConfig.sh b/ndb/config/GuessConfig.sh new file mode 100755 index 00000000000..a1ecdecfa93 --- /dev/null +++ b/ndb/config/GuessConfig.sh @@ -0,0 +1,113 @@ +#! /bin/sh + +if [ -z "$NDB_TOP" ] +then + echo "You have not set NDB_TOP. Exiting" 1>&2 + exit 1 +fi + +if [ -z "$NDB_SCI" ] +then + NDB_SCI=N +fi + +os=`uname -s` +case $os in +Linux) + NDB_OS=LINUX + NDB_ARCH=x86 + NDB_COMPILER=GCC + ;; +Darwin) + NDB_OS=MACOSX + NDB_ARCH=POWERPC + NDB_COMPILER=GCC + ;; +HP-UX) + NDB_OS=HPUX + NDB_ARCH=HPPA + NDB_COMPILER=GCC + ;; +CYGWIN_NT-5.0) + NDB_OS=WIN32 + NDB_ARCH=x86 + NDB_COMPILER=VC7 + ;; +*) + if [ "$os" = "SunOS" ] && [ `uname -r` = "5.6" ] + then + NDB_OS=OSE + NDB_ARCH=PPC750 + NDB_COMPILER=DIAB + else + NDB_OS=SOLARIS + NDB_ARCH=SPARC + NDB_COMPILER=GCC + fi;; +esac + +if [ -z "$NDB_ODBC" ] +then + val=N + if [ -f /usr/include/sqlext.h -o -f /usr/local/include/sqlext.h ] + then + val=Y + fi + case $NDB_OS in + LINUX) + NDB_ODBC=$val + ;; + MACOSX) + NDB_ODBC=$val + ;; + *) + NDB_ODBC=N + ;; + esac +fi + + +mch=`uname -m` +case $mch in +x86_64) + NDB_ARCH=x86_64 + ;; +*) + ;; +esac + +if [ -f $NDB_TOP/config/Makefile ] +then +TERMCAP_LIB=`grep TERMCAP_LIB $NDB_TOP/config/Makefile | sed -e s,"TERMCAP_LIB.*=.*-l","",g` +fi +if [ "$TERMCAP_LIB" = "" ] +then +TERMCAP_LIB=termcap +fi + +# Allow for selecting GCC, but must be 2nd parameter +if [ $# -gt 1 -a "$2" = "-GCC" ] +then + NDB_COMPILER=GCC +fi + +( + echo "# This file was automatically generated `date`" + echo "NDB_OS := $NDB_OS" + echo "NDB_ARCH := $NDB_ARCH" + echo "NDB_COMPILER := $NDB_COMPILER" + + if [ $# -gt 0 -a "$1" = "-R" ] + then + echo "NDB_VERSION := RELEASE" + else + echo "NDB_VERSION := DEBUG" + fi + + echo "NDB_SCI := $NDB_SCI" + echo "NDB_ODBC := $NDB_ODBC" + echo "TERMCAP_LIB := $TERMCAP_LIB" +) > $NDB_TOP/config/config.mk + +exit 0 + diff --git a/ndb/config/Makefile.am b/ndb/config/Makefile.am new file mode 100644 index 00000000000..b5fd81814a1 --- /dev/null +++ b/ndb/config/Makefile.am @@ -0,0 +1,31 @@ +# Copyright (C) 2003 MySQL AB +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +# Process this file with automake to create Makefile.in + +AUTOMAKE_OPTIONS = foreign + +# These are built from source in the Docs directory +EXTRA_DIST = +SUBDIRS = + +# Relink after clean +linked_sources = + +CLEANFILES = $(linked_sources) + +# This is just so that the linking is done early. +config.h: diff --git a/ndb/config/acinclude.m4 b/ndb/config/acinclude.m4 new file mode 100644 index 00000000000..b9edaf801ed --- /dev/null +++ b/ndb/config/acinclude.m4 @@ -0,0 +1,1513 @@ +# Local macros for automake & autoconf + +AC_DEFUN(MYSQL_CHECK_LIBEDIT_INTERFACE,[ + AC_CACHE_CHECK([libedit variant of rl_completion_entry_function], mysql_cv_libedit_interface, + AC_TRY_COMPILE( + [ + #include "stdio.h" + #include "readline/readline.h" + ], + [ + char res= *(*rl_completion_entry_function)(0,0); + completion_matches(0,0); + ], + [ + mysql_cv_libedit_interface=yes + AC_DEFINE_UNQUOTED(USE_LIBEDIT_INTERFACE) + ], + [mysql_cv_libedit_interface=no] + ) + ) +]) + +AC_DEFUN(MYSQL_CHECK_NEW_RL_INTERFACE,[ + AC_CACHE_CHECK([defined rl_compentry_func_t and rl_completion_func_t], mysql_cv_new_rl_interface, + AC_TRY_COMPILE( + [ + #include "stdio.h" + #include "readline/readline.h" + ], + [ + rl_completion_func_t *func1= (rl_completion_func_t*)0; + rl_compentry_func_t *func2= (rl_compentry_func_t*)0; + ], + [ + mysql_cv_new_rl_interface=yes + AC_DEFINE_UNQUOTED(USE_NEW_READLINE_INTERFACE) + ], + [mysql_cv_new_rl_interface=no] + ) + ) +]) + +# A local version of AC_CHECK_SIZEOF that includes sys/types.h +dnl MYSQL_CHECK_SIZEOF(TYPE [, CROSS-SIZE]) +AC_DEFUN(MYSQL_CHECK_SIZEOF, +[changequote(<<, >>)dnl +dnl The name to #define. +define(<<AC_TYPE_NAME>>, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl +dnl The cache variable name. +define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl +changequote([, ])dnl +AC_MSG_CHECKING(size of $1) +AC_CACHE_VAL(AC_CV_NAME, +[AC_TRY_RUN([#include <stdio.h> +#include <sys/types.h> +#if STDC_HEADERS +#include <stdlib.h> +#include <stddef.h> +#endif +main() +{ + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf(f, "%d\n", sizeof($1)); + exit(0); +}], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, ifelse([$2], , , AC_CV_NAME=$2))])dnl +AC_MSG_RESULT($AC_CV_NAME) +AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME) +undefine([AC_TYPE_NAME])dnl +undefine([AC_CV_NAME])dnl +]) + +#---START: Used in for client configure +AC_DEFUN(MYSQL_TYPE_ACCEPT, +[ac_save_CXXFLAGS="$CXXFLAGS" +AC_CACHE_CHECK([base type of last arg to accept], mysql_cv_btype_last_arg_accept, +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +if test "$ac_cv_prog_gxx" = "yes" +then + CXXFLAGS=`echo $CXXFLAGS -Werror | sed 's/-fbranch-probabilities//'` +fi +mysql_cv_btype_last_arg_accept=none +[AC_TRY_COMPILE([#if defined(inline) +#undef inline +#endif +#include <stdlib.h> +#include <sys/types.h> +#include <sys/socket.h> +], +[int a = accept(1, (struct sockaddr *) 0, (socklen_t *) 0); return (a != 0);], +mysql_cv_btype_last_arg_accept=socklen_t)] +if test "$mysql_cv_btype_last_arg_accept" = "none"; then +[AC_TRY_COMPILE([#if defined(inline) +#undef inline +#endif +#include <stdlib.h> +#include <sys/types.h> +#include <sys/socket.h> +], +[int a = accept(1, (struct sockaddr *) 0, (size_t *) 0); return (a != 0);], +mysql_cv_btype_last_arg_accept=size_t)] +fi +if test "$mysql_cv_btype_last_arg_accept" = "none"; then +mysql_cv_btype_last_arg_accept=int +fi) +AC_LANG_RESTORE +AC_DEFINE_UNQUOTED(SOCKET_SIZE_TYPE, $mysql_cv_btype_last_arg_accept) +CXXFLAGS="$ac_save_CXXFLAGS" +]) +#---END: + +dnl Find type of qsort +AC_DEFUN(MYSQL_TYPE_QSORT, +[AC_CACHE_CHECK([return type of qsort], mysql_cv_type_qsort, +[AC_TRY_COMPILE([#include <stdlib.h> +#ifdef __cplusplus +extern "C" +#endif +void qsort(void *base, size_t nel, size_t width, + int (*compar) (const void *, const void *)); +], +[int i;], mysql_cv_type_qsort=void, mysql_cv_type_qsort=int)]) +AC_DEFINE_UNQUOTED(RETQSORTTYPE, $mysql_cv_type_qsort) +if test "$mysql_cv_type_qsort" = "void" +then + AC_DEFINE_UNQUOTED(QSORT_TYPE_IS_VOID, 1) +fi +]) + +AC_DEFUN(MYSQL_TIMESPEC_TS, +[AC_CACHE_CHECK([if struct timespec has a ts_sec member], mysql_cv_timespec_ts, +[AC_TRY_COMPILE([#include <pthread.h> +#ifdef __cplusplus +extern "C" +#endif +], +[struct timespec abstime; + +abstime.ts_sec = time(NULL)+1; +abstime.ts_nsec = 0; +], mysql_cv_timespec_ts=yes, mysql_cv_timespec_ts=no)]) +if test "$mysql_cv_timespec_ts" = "yes" +then + AC_DEFINE(HAVE_TIMESPEC_TS_SEC) +fi +]) + +AC_DEFUN(MYSQL_TZNAME, +[AC_CACHE_CHECK([if we have tzname variable], mysql_cv_tzname, +[AC_TRY_COMPILE([#include <time.h> +#ifdef __cplusplus +extern "C" +#endif +], +[ tzset(); + return tzname[0] != 0; +], mysql_cv_tzname=yes, mysql_cv_tzname=no)]) +if test "$mysql_cv_tzname" = "yes" +then + AC_DEFINE(HAVE_TZNAME) +fi +]) + +AC_DEFUN(MYSQL_CHECK_ZLIB_WITH_COMPRESS, [ +save_LIBS="$LIBS" +LIBS="-l$1 $LIBS" +AC_CACHE_CHECK([if libz with compress], mysql_cv_compress, +[AC_TRY_RUN([#include <zlib.h> +#ifdef __cplusplus +extern "C" +#endif +int main(int argv, char **argc) +{ + return 0; +} + +int link_test() +{ + return compress(0, (unsigned long*) 0, "", 0); +} +], mysql_cv_compress=yes, mysql_cv_compress=no)]) +if test "$mysql_cv_compress" = "yes" +then + AC_DEFINE(HAVE_COMPRESS) +else + LIBS="$save_LIBS" +fi +]) + +#---START: Used in for client configure +AC_DEFUN(MYSQL_CHECK_ULONG, +[AC_MSG_CHECKING(for type ulong) +AC_CACHE_VAL(ac_cv_ulong, +[AC_TRY_RUN([#include <stdio.h> +#include <sys/types.h> +main() +{ + ulong foo; + foo++; + exit(0); +}], ac_cv_ulong=yes, ac_cv_ulong=no, ac_cv_ulong=no)]) +AC_MSG_RESULT($ac_cv_ulong) +if test "$ac_cv_ulong" = "yes" +then + AC_DEFINE(HAVE_ULONG) +fi +]) + +AC_DEFUN(MYSQL_CHECK_UCHAR, +[AC_MSG_CHECKING(for type uchar) +AC_CACHE_VAL(ac_cv_uchar, +[AC_TRY_RUN([#include <stdio.h> +#include <sys/types.h> +main() +{ + uchar foo; + foo++; + exit(0); +}], ac_cv_uchar=yes, ac_cv_uchar=no, ac_cv_uchar=no)]) +AC_MSG_RESULT($ac_cv_uchar) +if test "$ac_cv_uchar" = "yes" +then + AC_DEFINE(HAVE_UCHAR) +fi +]) + +AC_DEFUN(MYSQL_CHECK_UINT, +[AC_MSG_CHECKING(for type uint) +AC_CACHE_VAL(ac_cv_uint, +[AC_TRY_RUN([#include <stdio.h> +#include <sys/types.h> +main() +{ + uint foo; + foo++; + exit(0); +}], ac_cv_uint=yes, ac_cv_uint=no, ac_cv_uint=no)]) +AC_MSG_RESULT($ac_cv_uint) +if test "$ac_cv_uint" = "yes" +then + AC_DEFINE(HAVE_UINT) +fi +]) + + +AC_DEFUN(MYSQL_CHECK_IN_ADDR_T, +[AC_MSG_CHECKING(for type in_addr_t) +AC_CACHE_VAL(ac_cv_in_addr_t, +[AC_TRY_RUN([#include <stdio.h> +#include <sys/types.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <arpa/inet.h> + +int main(int argc, char **argv) +{ + in_addr_t foo; + exit(0); +}], ac_cv_in_addr_t=yes, ac_cv_in_addr_t=no, ac_cv_in_addr_t=no)]) +AC_MSG_RESULT($ac_cv_in_addr_t) +if test "$ac_cv_in_addr_t" = "yes" +then + AC_DEFINE(HAVE_IN_ADDR_T) +fi +]) + + +AC_DEFUN(MYSQL_PTHREAD_YIELD, +[AC_CACHE_CHECK([if pthread_yield takes zero arguments], ac_cv_pthread_yield_zero_arg, +[AC_TRY_LINK([#define _GNU_SOURCE +#include <pthread.h> +#ifdef __cplusplus +extern "C" +#endif +], +[ + pthread_yield(); +], ac_cv_pthread_yield_zero_arg=yes, ac_cv_pthread_yield_zero_arg=yeso)]) +if test "$ac_cv_pthread_yield_zero_arg" = "yes" +then + AC_DEFINE(HAVE_PTHREAD_YIELD_ZERO_ARG) +fi +] +[AC_CACHE_CHECK([if pthread_yield takes 1 argument], ac_cv_pthread_yield_one_arg, +[AC_TRY_LINK([#define _GNU_SOURCE +#include <pthread.h> +#ifdef __cplusplus +extern "C" +#endif +], +[ + pthread_yield(0); +], ac_cv_pthread_yield_one_arg=yes, ac_cv_pthread_yield_one_arg=no)]) +if test "$ac_cv_pthread_yield_one_arg" = "yes" +then + AC_DEFINE(HAVE_PTHREAD_YIELD_ONE_ARG) +fi +] +) + + + +#---END: + +AC_DEFUN(MYSQL_CHECK_FP_EXCEPT, +[AC_MSG_CHECKING(for type fp_except) +AC_CACHE_VAL(ac_cv_fp_except, +[AC_TRY_RUN([#include <stdio.h> +#include <sys/types.h> +#include <ieeefp.h> +main() +{ + fp_except foo; + foo++; + exit(0); +}], ac_cv_fp_except=yes, ac_cv_fp_except=no, ac_cv_fp_except=no)]) +AC_MSG_RESULT($ac_cv_fp_except) +if test "$ac_cv_fp_except" = "yes" +then + AC_DEFINE(HAVE_FP_EXCEPT) +fi +]) + +# From fileutils-3.14/aclocal.m4 + +# @defmac AC_PROG_CC_STDC +# @maindex PROG_CC_STDC +# @ovindex CC +# If the C compiler in not in ANSI C mode by default, try to add an option +# to output variable @code{CC} to make it so. This macro tries various +# options that select ANSI C on some system or another. It considers the +# compiler to be in ANSI C mode if it defines @code{__STDC__} to 1 and +# handles function prototypes correctly. +# +# Patched by monty to only check if __STDC__ is defined. With the original +# check it's impossible to get things to work with the Sunpro compiler from +# Workshop 4.2 +# +# If you use this macro, you should check after calling it whether the C +# compiler has been set to accept ANSI C; if not, the shell variable +# @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source +# code in ANSI C, you can make an un-ANSIfied copy of it by using the +# program @code{ansi2knr}, which comes with Ghostscript. +# @end defmac + +AC_DEFUN(AM_PROG_CC_STDC, +[AC_REQUIRE([AC_PROG_CC]) +AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C) +AC_CACHE_VAL(am_cv_prog_cc_stdc, +[am_cv_prog_cc_stdc=no +ac_save_CC="$CC" +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +# removed "-Xc -D__EXTENSIONS__" beacause sun c++ does not like it. +for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" +do + CC="$ac_save_CC $ac_arg" + AC_TRY_COMPILE( +[#if !defined(__STDC__) +choke me +#endif +/* DYNIX/ptx V4.1.3 can't compile sys/stat.h with -Xc -D__EXTENSIONS__. */ +#ifdef _SEQUENT_ +# include <sys/types.h> +# include <sys/stat.h> +#endif +], [ +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);};], +[am_cv_prog_cc_stdc="$ac_arg"; break]) +done +CC="$ac_save_CC" +]) +AC_MSG_RESULT($am_cv_prog_cc_stdc) +case "x$am_cv_prog_cc_stdc" in + x|xno) ;; + *) CC="$CC $am_cv_prog_cc_stdc" ;; +esac +]) + +# +# Check to make sure that the build environment is sane. +# + +AC_DEFUN(AM_SANITY_CHECK, +[AC_MSG_CHECKING([whether build environment is sane]) +sleep 1 +echo timestamp > conftestfile +# Do this in a subshell so we don't clobber the current shell's +# arguments. FIXME: maybe try `-L' hack like GETLOADAVG test? +if (set X `ls -t $srcdir/configure conftestfile`; test "[$]2" = conftestfile) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +rm -f conftest* +AC_MSG_RESULT(yes)]) + +# Orginal from bash-2.0 aclocal.m4, Changed to use termcap last by monty. + +AC_DEFUN(MYSQL_CHECK_LIB_TERMCAP, +[ +AC_CACHE_VAL(mysql_cv_termcap_lib, +[AC_CHECK_LIB(ncurses, tgetent, mysql_cv_termcap_lib=libncurses, + [AC_CHECK_LIB(curses, tgetent, mysql_cv_termcap_lib=libcurses, + [AC_CHECK_LIB(termcap, tgetent, mysql_cv_termcap_lib=libtermcap, + mysql_cv_termcap_lib=NOT_FOUND)])])]) +AC_MSG_CHECKING(for termcap functions library) +if test "$mysql_cv_termcap_lib" = "NOT_FOUND"; then +AC_MSG_ERROR([No curses/termcap library found]) +elif test "$mysql_cv_termcap_lib" = "libtermcap"; then +TERMCAP_LIB=-ltermcap +elif test "$mysql_cv_termcap_lib" = "libncurses"; then +TERMCAP_LIB=-lncurses +else +TERMCAP_LIB=-lcurses +fi +AC_MSG_RESULT($TERMCAP_LIB) +]) + +dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7) +AC_DEFUN(MYSQL_SIGNAL_CHECK, +[AC_REQUIRE([AC_TYPE_SIGNAL]) +AC_MSG_CHECKING(for type of signal functions) +AC_CACHE_VAL(mysql_cv_signal_vintage, +[ + AC_TRY_LINK([#include <signal.h>],[ + sigset_t ss; + struct sigaction sa; + sigemptyset(&ss); sigsuspend(&ss); + sigaction(SIGINT, &sa, (struct sigaction *) 0); + sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); + ], mysql_cv_signal_vintage=posix, + [ + AC_TRY_LINK([#include <signal.h>], [ + int mask = sigmask(SIGINT); + sigsetmask(mask); sigblock(mask); sigpause(mask); + ], mysql_cv_signal_vintage=4.2bsd, + [ + AC_TRY_LINK([ + #include <signal.h> + RETSIGTYPE foo() { }], [ + int mask = sigmask(SIGINT); + sigset(SIGINT, foo); sigrelse(SIGINT); + sighold(SIGINT); sigpause(SIGINT); + ], mysql_cv_signal_vintage=svr3, mysql_cv_signal_vintage=v7 + )] + )] +) +]) +AC_MSG_RESULT($mysql_cv_signal_vintage) +if test "$mysql_cv_signal_vintage" = posix; then +AC_DEFINE(HAVE_POSIX_SIGNALS) +elif test "$mysql_cv_signal_vintage" = "4.2bsd"; then +AC_DEFINE(HAVE_BSD_SIGNALS) +elif test "$mysql_cv_signal_vintage" = svr3; then +AC_DEFINE(HAVE_USG_SIGHOLD) +fi +]) + +AC_DEFUN(MYSQL_CHECK_GETPW_FUNCS, +[AC_MSG_CHECKING(whether programs are able to redeclare getpw functions) +AC_CACHE_VAL(mysql_cv_can_redecl_getpw, +[AC_TRY_COMPILE([#include <sys/types.h> +#include <pwd.h> +extern struct passwd *getpwent();], [struct passwd *z; z = getpwent();], + mysql_cv_can_redecl_getpw=yes,mysql_cv_can_redecl_getpw=no)]) +AC_MSG_RESULT($mysql_cv_can_redecl_getpw) +if test "$mysql_cv_can_redecl_getpw" = "no"; then +AC_DEFINE(HAVE_GETPW_DECLS) +fi +]) + +AC_DEFUN(MYSQL_HAVE_TIOCGWINSZ, +[AC_MSG_CHECKING(for TIOCGWINSZ in sys/ioctl.h) +AC_CACHE_VAL(mysql_cv_tiocgwinsz_in_ioctl, +[AC_TRY_COMPILE([#include <sys/types.h> +#include <sys/ioctl.h>], [int x = TIOCGWINSZ;], + mysql_cv_tiocgwinsz_in_ioctl=yes,mysql_cv_tiocgwinsz_in_ioctl=no)]) +AC_MSG_RESULT($mysql_cv_tiocgwinsz_in_ioctl) +if test "$mysql_cv_tiocgwinsz_in_ioctl" = "yes"; then +AC_DEFINE(GWINSZ_IN_SYS_IOCTL) +fi +]) + +AC_DEFUN(MYSQL_HAVE_FIONREAD, +[AC_MSG_CHECKING(for FIONREAD in sys/ioctl.h) +AC_CACHE_VAL(mysql_cv_fionread_in_ioctl, +[AC_TRY_COMPILE([#include <sys/types.h> +#include <sys/ioctl.h>], [int x = FIONREAD;], + mysql_cv_fionread_in_ioctl=yes,mysql_cv_fionread_in_ioctl=no)]) +AC_MSG_RESULT($mysql_cv_fionread_in_ioctl) +if test "$mysql_cv_fionread_in_ioctl" = "yes"; then +AC_DEFINE(FIONREAD_IN_SYS_IOCTL) +fi +]) + +AC_DEFUN(MYSQL_HAVE_TIOCSTAT, +[AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h) +AC_CACHE_VAL(mysql_cv_tiocstat_in_ioctl, +[AC_TRY_COMPILE([#include <sys/types.h> +#include <sys/ioctl.h>], [int x = TIOCSTAT;], + mysql_cv_tiocstat_in_ioctl=yes,mysql_cv_tiocstat_in_ioctl=no)]) +AC_MSG_RESULT($mysql_cv_tiocstat_in_ioctl) +if test "$mysql_cv_tiocstat_in_ioctl" = "yes"; then +AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL) +fi +]) + +AC_DEFUN(MYSQL_STRUCT_DIRENT_D_INO, +[AC_REQUIRE([AC_HEADER_DIRENT]) +AC_MSG_CHECKING(if struct dirent has a d_ino member) +AC_CACHE_VAL(mysql_cv_dirent_has_dino, +[AC_TRY_COMPILE([ +#include <stdio.h> +#include <sys/types.h> +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include <dirent.h> +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include <sys/ndir.h> +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include <sys/dir.h> +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include <ndir.h> +# endif +#endif /* HAVE_DIRENT_H */ +],[ +struct dirent d; int z; z = d.d_ino; +], mysql_cv_dirent_has_dino=yes, mysql_cv_dirent_has_dino=no)]) +AC_MSG_RESULT($mysql_cv_dirent_has_dino) +if test "$mysql_cv_dirent_has_dino" = "yes"; then +AC_DEFINE(STRUCT_DIRENT_HAS_D_INO) +fi +]) + +AC_DEFUN(MYSQL_TYPE_SIGHANDLER, +[AC_MSG_CHECKING([whether signal handlers are of type void]) +AC_CACHE_VAL(mysql_cv_void_sighandler, +[AC_TRY_COMPILE([#include <sys/types.h> +#include <signal.h> +#ifdef signal +#undef signal +#endif +#ifdef __cplusplus +extern "C" +#endif +void (*signal ()) ();], +[int i;], mysql_cv_void_sighandler=yes, mysql_cv_void_sighandler=no)])dnl +AC_MSG_RESULT($mysql_cv_void_sighandler) +if test "$mysql_cv_void_sighandler" = "yes"; then +AC_DEFINE(VOID_SIGHANDLER) +fi +]) + +AC_DEFUN(MYSQL_CXX_BOOL, +[ +AC_REQUIRE([AC_PROG_CXX]) +AC_MSG_CHECKING(if ${CXX} supports bool types) +AC_CACHE_VAL(mysql_cv_have_bool, +[ +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +AC_TRY_COMPILE(,[bool b = true;], +mysql_cv_have_bool=yes, +mysql_cv_have_bool=no) +AC_LANG_RESTORE +]) +AC_MSG_RESULT($mysql_cv_have_bool) +if test "$mysql_cv_have_bool" = yes; then +AC_DEFINE(HAVE_BOOL) +fi +])dnl + +AC_DEFUN(MYSQL_STACK_DIRECTION, + [AC_CACHE_CHECK(stack direction for C alloca, ac_cv_c_stack_direction, + [AC_TRY_RUN([#include <stdlib.h> + int find_stack_direction () + { + static char *addr = 0; + auto char dummy; + if (addr == 0) + { + addr = &dummy; + return find_stack_direction (); + } + else + return (&dummy > addr) ? 1 : -1; + } + int main () + { + exit (find_stack_direction() < 0); + }], ac_cv_c_stack_direction=1, ac_cv_c_stack_direction=-1, + ac_cv_c_stack_direction=0)]) + AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction) +])dnl + +AC_DEFUN(MYSQL_FUNC_ALLOCA, +[ +# Since we have heard that alloca fails on IRIX never define it on a +# SGI machine +if test ! "$host_vendor" = "sgi" +then + AC_REQUIRE_CPP()dnl Set CPP; we run AC_EGREP_CPP conditionally. + # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works + # for constant arguments. Useless! + AC_CACHE_CHECK([for working alloca.h], ac_cv_header_alloca_h, + [AC_TRY_LINK([#include <alloca.h>], [char *p = alloca(2 * sizeof(int));], + ac_cv_header_alloca_h=yes, ac_cv_header_alloca_h=no)]) + if test "$ac_cv_header_alloca_h" = "yes" + then + AC_DEFINE(HAVE_ALLOCA) + fi + + AC_CACHE_CHECK([for alloca], ac_cv_func_alloca_works, + [AC_TRY_LINK([ + #ifdef __GNUC__ + # define alloca __builtin_alloca + #else + # if HAVE_ALLOCA_H + # include <alloca.h> + # else + # ifdef _AIX + #pragma alloca + # else + # ifndef alloca /* predefined by HP cc +Olibcalls */ + char *alloca (); + # endif + # endif + # endif + #endif + ], [char *p = (char *) alloca(1);], + ac_cv_func_alloca_works=yes, ac_cv_func_alloca_works=no)]) + if test "$ac_cv_func_alloca_works" = "yes"; then + AC_DEFINE(HAVE_ALLOCA) + fi + + if test "$ac_cv_func_alloca_works" = "no"; then + # The SVR3 libPW and SVR4 libucb both contain incompatible functions + # that cause trouble. Some versions do not even contain alloca or + # contain a buggy version. If you still want to use their alloca, + # use ar to extract alloca.o from them instead of compiling alloca.c. + ALLOCA=alloca.o + AC_DEFINE(C_ALLOCA) + + AC_CACHE_CHECK(whether alloca needs Cray hooks, ac_cv_os_cray, + [AC_EGREP_CPP(webecray, + [#if defined(CRAY) && ! defined(CRAY2) + webecray + #else + wenotbecray + #endif + ], ac_cv_os_cray=yes, ac_cv_os_cray=no)]) + if test "$ac_cv_os_cray" = "yes"; then + for ac_func in _getb67 GETB67 getb67; do + AC_CHECK_FUNC($ac_func, [AC_DEFINE_UNQUOTED(CRAY_STACKSEG_END, $ac_func) + break]) + done + fi + fi + AC_SUBST(ALLOCA)dnl +else + AC_MSG_RESULT("Skipped alloca tests") +fi +]) + +AC_DEFUN(MYSQL_CHECK_LONGLONG_TO_FLOAT, +[ +AC_MSG_CHECKING(if conversion of longlong to float works) +AC_CACHE_VAL(ac_cv_conv_longlong_to_float, +[AC_TRY_RUN([#include <stdio.h> +typedef long long longlong; +main() +{ + longlong ll=1; + float f; + FILE *file=fopen("conftestval", "w"); + f = (float) ll; + fprintf(file,"%g\n",f); + fclose(file); + exit (0); +}], ac_cv_conv_longlong_to_float=`cat conftestval`, ac_cv_conv_longlong_to_float=0, ifelse([$2], , , ac_cv_conv_longlong_to_float=$2))])dnl +if test "$ac_cv_conv_longlong_to_float" = "1" -o "$ac_cv_conv_longlong_to_float" = "yes" +then + ac_cv_conv_longlong_to_float=yes +else + ac_cv_conv_longlong_to_float=no +fi +AC_MSG_RESULT($ac_cv_conv_longlong_to_float) +]) + +AC_DEFUN(MYSQL_CHECK_CPU, +[AC_CACHE_CHECK([if compiler supports optimizations for current cpu], +mysql_cv_cpu,[ + +ac_save_CFLAGS="$CFLAGS" +if test -r /proc/cpuinfo ; then + cpuinfo="cat /proc/cpuinfo" + cpu_family=`$cpuinfo | grep 'cpu family' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -1` + cpu_vendor=`$cpuinfo | grep 'vendor_id' | cut -d ':' -f 2 | cut -d ' ' -f 2 | head -1` +fi +if test "$cpu_vendor" = "AuthenticAMD"; then + if test $cpu_family -ge 6; then + cpu_set="athlon pentiumpro k5 pentium i486 i386"; + elif test $cpu_family -eq 5; then + cpu_set="k5 pentium i486 i386"; + elif test $cpu_family -eq 4; then + cpu_set="i486 i386" + else + cpu_set="i386" + fi +elif test "$cpu_vendor" = "GenuineIntel"; then + if test $cpu_family -ge 6; then + cpu_set="pentiumpro pentium i486 i386"; + elif test $cpu_family -eq 5; then + cpu_set="pentium i486 i386"; + elif test $cpu_family -eq 4; then + cpu_set="i486 i386" + else + cpu_set="i386" + fi +fi + +for ac_arg in $cpu_set; +do + CFLAGS="$ac_save_CFLAGS -mcpu=$ac_arg -march=$ac_arg -DCPU=$ac_arg" + AC_TRY_COMPILE([],[int i],mysql_cv_cpu=$ac_arg; break;, mysql_cv_cpu="unknown") +done + +if test "$mysql_cv_cpu" = "unknown" +then + CFLAGS="$ac_save_CFLAGS" + AC_MSG_RESULT(none) +else + AC_MSG_RESULT($mysql_cv_cpu) +fi +]])) + +AC_DEFUN(MYSQL_CHECK_VIO, [ + AC_ARG_WITH([vio], + [ --with-vio Include the Virtual IO support], + [vio="$withval"], + [vio=no]) + + if test "$vio" = "yes" + then + vio_dir="vio" + vio_libs="../vio/libvio.la" + AC_DEFINE(HAVE_VIO) + else + vio_dir="" + vio_libs="" + fi + AC_SUBST([vio_dir]) + AC_SUBST([vio_libs]) +]) + +AC_DEFUN(MYSQL_FIND_OPENSSL, [ + incs="$1" + libs="$2" + case "$incs---$libs" in + ---) + for d in /usr/ssl/include /usr/local/ssl/include /usr/include \ +/usr/include/ssl /opt/ssl/include /opt/openssl/include \ +/usr/local/ssl/include /usr/local/include ; do + if test -f $d/openssl/ssl.h ; then + OPENSSL_INCLUDE=-I$d + fi + done + + for d in /usr/ssl/lib /usr/local/ssl/lib /usr/lib/openssl \ +/usr/lib /usr/lib64 /opt/ssl/lib /opt/openssl/lib /usr/local/lib/ ; do + if test -f $d/libssl.a || test -f $d/libssl.so || test -f $d/libssl.dylib ; then + OPENSSL_LIB=$d + fi + done + ;; + ---* | *---) + AC_MSG_ERROR([if either 'includes' or 'libs' is specified, both must be specified]) + ;; + * ) + if test -f $incs/openssl/ssl.h ; then + OPENSSL_INCLUDE=-I$incs + fi + if test -f $libs/libssl.a || test -f $libs/libssl.so || test -f $libs/libssl.dylib ; then + OPENSSL_LIB=$libs + fi + ;; + esac + + # On RedHat 9 we need kerberos to compile openssl + for d in /usr/kerberos/include + do + if test -f $d/krb5.h ; then + OPENSSL_KERBEROS_INCLUDE="$d" + fi + done + + + if test -z "$OPENSSL_LIB" -o -z "$OPENSSL_INCLUDE" ; then + echo "Could not find an installation of OpenSSL" + if test -n "$OPENSSL_LIB" ; then + if test "$IS_LINUX" = "true"; then + echo "Looks like you've forgotten to install OpenSSL development RPM" + fi + fi + exit 1 + fi + +]) + +AC_DEFUN(MYSQL_CHECK_OPENSSL, [ +AC_MSG_CHECKING(for OpenSSL) + AC_ARG_WITH([openssl], + [ --with-openssl Include the OpenSSL support], + [openssl="$withval"], + [openssl=no]) + + AC_ARG_WITH([openssl-includes], + [ + --with-openssl-includes=DIR + Find OpenSSL headers in DIR], + [openssl_includes="$withval"], + [openssl_includes=""]) + + AC_ARG_WITH([openssl-libs], + [ + --with-openssl-libs=DIR + Find OpenSSL libraries in DIR], + [openssl_libs="$withval"], + [openssl_libs=""]) + + if test "$openssl" = "yes" + then + MYSQL_FIND_OPENSSL([$openssl_includes], [$openssl_libs]) + #force VIO use + vio_dir="vio" + vio_libs="../vio/libvio.la" + AC_DEFINE(HAVE_VIO) + AC_MSG_RESULT(yes) + openssl_libs="-L$OPENSSL_LIB -lssl -lcrypto" + # Don't set openssl_includes to /usr/include as this gives us a lot of + # compiler warnings when using gcc 3.x + openssl_includes="" + if test "$OPENSSL_INCLUDE" != "-I/usr/include" + then + openssl_includes="$OPENSSL_INCLUDE" + fi + if test "$OPENSSL_KERBEROS_INCLUDE" + then + openssl_includes="$openssl_includes -I$OPENSSL_KERBEROS_INCLUDE" + fi + AC_DEFINE(HAVE_OPENSSL) + + # openssl-devel-0.9.6 requires dlopen() and we can't link staticly + # on many platforms (We should actually test this here, but it's quite + # hard) to do as we are doing libtool for linking. + using_static="" + case "$CLIENT_EXTRA_LDFLAGS $MYSQLD_EXTRA_LDFLAGS" in + *-all-static*) using_static="yes" ;; + esac + if test "$using_static" = "yes" + then + echo "You can't use the --all-static link option when using openssl." + exit 1 + fi + NON_THREADED_CLIENT_LIBS="$NON_THREADED_CLIENT_LIBS $openssl_libs" + else + AC_MSG_RESULT(no) + fi + AC_SUBST(openssl_libs) + AC_SUBST(openssl_includes) +]) + + +AC_DEFUN(MYSQL_CHECK_MYSQLFS, [ + AC_ARG_WITH([mysqlfs], + [ + --with-mysqlfs Include the corba-based MySQL file system], + [mysqlfs="$withval"], + [mysqlfs=no]) + +dnl Call MYSQL_CHECK_ORBIT even if mysqlfs == no, so that @orbit_*@ +dnl get substituted. + MYSQL_CHECK_ORBIT + + AC_MSG_CHECKING(if we should build MySQLFS) + fs_dirs="" + if test "$mysqlfs" = "yes" + then + if test -n "$orbit_exec_prefix" + then + fs_dirs=fs + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT(disabled because ORBIT, the CORBA ORB, was not found) + fi + else + AC_MSG_RESULT([no]) + fi + AC_SUBST([fs_dirs]) +]) + +AC_DEFUN(MYSQL_CHECK_ORBIT, [ +AC_MSG_CHECKING(for ORBit) +orbit_config_path=`which orbit-config` +if test -n "$orbit_config_path" -a $? = 0 +then + orbit_exec_prefix=`orbit-config --exec-prefix` + orbit_includes=`orbit-config --cflags server` + orbit_libs=`orbit-config --libs server` + orbit_idl="$orbit_exec_prefix/bin/orbit-idl" + AC_MSG_RESULT(found!) + AC_DEFINE(HAVE_ORBIT) +else + orbit_exec_prefix= + orbit_includes= + orbit_libs= + orbit_idl= + AC_MSG_RESULT(not found) +fi +AC_SUBST(orbit_includes) +AC_SUBST(orbit_libs) +AC_SUBST(orbit_idl) +]) + +AC_DEFUN([MYSQL_CHECK_ISAM], [ + AC_ARG_WITH([isam], [ + --with-isam Enable the ISAM table type], + [with_isam="$withval"], + [with_isam=no]) + + isam_libs= + if test X"$with_isam" = X"yes" + then + AC_DEFINE(HAVE_ISAM) + isam_libs="\$(top_builddir)/isam/libnisam.a\ + \$(top_builddir)/merge/libmerge.a" + fi + AC_SUBST(isam_libs) +]) + + +dnl --------------------------------------------------------------------------- +dnl Macro: MYSQL_CHECK_BDB +dnl Sets HAVE_BERKELEY_DB if inst library is found +dnl Makes sure db version is correct. +dnl Looks in $srcdir for Berkeley distribution if not told otherwise +dnl --------------------------------------------------------------------------- + +AC_DEFUN([MYSQL_CHECK_BDB], [ + AC_ARG_WITH([berkeley-db], + [ + --with-berkeley-db[=DIR] + Use BerkeleyDB located in DIR], + [bdb="$withval"], + [bdb=no]) + + AC_ARG_WITH([berkeley-db-includes], + [ + --with-berkeley-db-includes=DIR + Find Berkeley DB headers in DIR], + [bdb_includes="$withval"], + [bdb_includes=default]) + + AC_ARG_WITH([berkeley-db-libs], + [ + --with-berkeley-db-libs=DIR + Find Berkeley DB libraries in DIR], + [bdb_libs="$withval"], + [bdb_libs=default]) + + AC_MSG_CHECKING([for BerkeleyDB]) + +dnl SORT OUT THE SUPPLIED ARGUMENTS TO DETERMINE WHAT TO DO +dnl echo "DBG1: bdb='$bdb'; incl='$bdb_includes'; lib='$bdb_libs'" + have_berkeley_db=no + case "$bdb" in + no ) + mode=no + AC_MSG_RESULT([no]) + ;; + yes | default ) + case "$bdb_includes---$bdb_libs" in + default---default ) + mode=search-$bdb + AC_MSG_RESULT([searching...]) + ;; + default---* | *---default | yes---* | *---yes ) + AC_MSG_ERROR([if either 'includes' or 'libs' is specified, both must be specified]) + ;; + * ) + mode=supplied-two + AC_MSG_RESULT([supplied]) + ;; + esac + ;; + * ) + mode=supplied-one + AC_MSG_RESULT([supplied]) + ;; + esac + +dnl echo "DBG2: [$mode] bdb='$bdb'; incl='$bdb_includes'; lib='$bdb_libs'" + + case $mode in + no ) + bdb_includes= + bdb_libs= + bdb_libs_with_path= + ;; + supplied-two ) + MYSQL_CHECK_INSTALLED_BDB([$bdb_includes], [$bdb_libs]) + case $bdb_dir_ok in + installed ) mode=yes ;; + * ) AC_MSG_ERROR([didn't find valid BerkeleyDB: $bdb_dir_ok]) ;; + esac + ;; + supplied-one ) + MYSQL_CHECK_BDB_DIR([$bdb]) + case $bdb_dir_ok in + source ) mode=compile ;; + installed ) mode=yes ;; + * ) AC_MSG_ERROR([didn't find valid BerkeleyDB: $bdb_dir_ok]) ;; + esac + ;; + search-* ) + MYSQL_SEARCH_FOR_BDB + case $bdb_dir_ok in + source ) mode=compile ;; + installed ) mode=yes ;; + * ) + # not found + case $mode in + *-yes ) AC_MSG_ERROR([no suitable BerkeleyDB found]) ;; + * ) mode=no ;; + esac + bdb_includes= + bdb_libs= + bdb_libs_with_path= + ;; + esac + ;; + *) + AC_MSG_ERROR([impossible case condition '$mode': please report this to bugs@lists.mysql.com]) + ;; + esac + +dnl echo "DBG3: [$mode] bdb='$bdb'; incl='$bdb_includes'; lib='$bdb_libs'" + case $mode in + no ) + AC_MSG_RESULT([Not using Berkeley DB]) + ;; + yes ) + have_berkeley_db="yes" + AC_MSG_RESULT([Using Berkeley DB in '$bdb_includes']) + ;; + compile ) + have_berkeley_db="$bdb" + AC_MSG_RESULT([Compiling Berekeley DB in '$have_berkeley_db']) + ;; + * ) + AC_MSG_ERROR([impossible case condition '$mode': please report this to bugs@lists.mysql.com]) + ;; + esac + + AC_SUBST(bdb_includes) + AC_SUBST(bdb_libs) + AC_SUBST(bdb_libs_with_path) +]) + +AC_DEFUN([MYSQL_CHECK_INSTALLED_BDB], [ +dnl echo ["MYSQL_CHECK_INSTALLED_BDB ($1) ($2)"] + inc="$1" + lib="$2" + if test -f "$inc/db.h" + then + MYSQL_CHECK_BDB_VERSION([$inc/db.h], + [.*#define[ ]*], [[ ][ ]*]) + + if test X"$bdb_version_ok" = Xyes; then + save_LDFLAGS="$LDFLAGS" + LDFLAGS="-L$lib $LDFLAGS" + AC_CHECK_LIB(db,db_env_create, [ + bdb_dir_ok=installed + MYSQL_TOP_BUILDDIR([inc]) + MYSQL_TOP_BUILDDIR([lib]) + bdb_includes="-I$inc" + bdb_libs="-L$lib -ldb" + bdb_libs_with_path="$lib/libdb.a" + ]) + LDFLAGS="$save_LDFLAGS" + else + bdb_dir_ok="$bdb_version_ok" + fi + else + bdb_dir_ok="no db.h file in '$inc'" + fi +]) + +AC_DEFUN([MYSQL_CHECK_BDB_DIR], [ +dnl ([$bdb]) +dnl echo ["MYSQL_CHECK_BDB_DIR ($1)"] + dir="$1" + + MYSQL_CHECK_INSTALLED_BDB([$dir/include], [$dir/lib]) + + if test X"$bdb_dir_ok" != Xinstalled; then + # test to see if it's a source dir + rel="$dir/dist/RELEASE" + if test -f "$rel"; then + MYSQL_CHECK_BDB_VERSION([$rel], [], [=]) + if test X"$bdb_version_ok" = Xyes; then + bdb_dir_ok=source + bdb="$dir" + MYSQL_TOP_BUILDDIR([dir]) + bdb_includes="-I$dir/build_unix" + bdb_libs="-L$dir/build_unix -ldb" + bdb_libs_with_path="$dir/build_unix/libdb.a" + else + bdb_dir_ok="$bdb_version_ok" + fi + else + bdb_dir_ok="'$dir' doesn't look like a BDB directory ($bdb_dir_ok)" + fi + fi +]) + +AC_DEFUN([MYSQL_SEARCH_FOR_BDB], [ +dnl echo ["MYSQL_SEARCH_FOR_BDB"] + bdb_dir_ok="no BerkeleyDB found" + + for test_dir in $srcdir/bdb $srcdir/db-*.*.* /usr/local/BerkeleyDB*; do +dnl echo "-----------> Looking at ($test_dir; `cd $test_dir && pwd`)" + MYSQL_CHECK_BDB_DIR([$test_dir]) + if test X"$bdb_dir_ok" = Xsource || test X"$bdb_dir_ok" = Xinstalled; then +dnl echo "-----------> Found it ($bdb), ($srcdir)" +dnl This is needed so that 'make distcheck' works properly (VPATH build). +dnl VPATH build won't work if bdb is not under the source tree; but in +dnl that case, hopefully people will just make and install inside the +dnl tree, or install BDB first, and then use the installed version. + case "$bdb" in + "$srcdir/"* ) bdb=`echo "$bdb" | sed -e "s,^$srcdir/,,"` ;; + esac + break + fi + done +]) + +dnl MYSQL_CHECK_BDB_VERSION takes 3 arguments: +dnl 1) the file to look in +dnl 2) the search pattern before DB_VERSION_XXX +dnl 3) the search pattern between DB_VERSION_XXX and the number +dnl It assumes that the number is the last thing on the line +AC_DEFUN([MYSQL_CHECK_BDB_VERSION], [ + db_major=`sed -e '/^[$2]DB_VERSION_MAJOR[$3]/ !d' -e 's///' [$1]` + db_minor=`sed -e '/^[$2]DB_VERSION_MINOR[$3]/ !d' -e 's///' [$1]` + db_patch=`sed -e '/^[$2]DB_VERSION_PATCH[$3]/ !d' -e 's///' [$1]` + test -z "$db_major" && db_major=0 + test -z "$db_minor" && db_minor=0 + test -z "$db_patch" && db_patch=0 + + # This is ugly, but about as good as it can get +# mysql_bdb= +# if test $db_major -eq 3 && test $db_minor -eq 2 && test $db_patch -eq 3 +# then +# mysql_bdb=h +# elif test $db_major -eq 3 && test $db_minor -eq 2 && test $db_patch -eq 9 +# then +# want_bdb_version="3.2.9a" # hopefully this will stay up-to-date +# mysql_bdb=a +# fi + +dnl RAM: +want_bdb_version="4.1.24" +bdb_version_ok=yes + +# if test -n "$mysql_bdb" && \ +# grep "DB_VERSION_STRING.*:.*$mysql_bdb: " [$1] > /dev/null +# then +# bdb_version_ok=yes +# else +# bdb_version_ok="invalid version $db_major.$db_minor.$db_patch" +# bdb_version_ok="$bdb_version_ok (must be version 3.2.3h or $want_bdb_version)" +# fi +]) + +AC_DEFUN([MYSQL_TOP_BUILDDIR], [ + case "$[$1]" in + /* ) ;; # don't do anything with an absolute path + "$srcdir"/* ) + # If BDB is under the source directory, we need to look under the + # build directory for bdb/build_unix. + # NOTE: I'm being lazy, and assuming the user did not specify + # something like --with-berkeley-db=bdb (it would be missing "./"). + [$1]="\$(top_builddir)/"`echo "$[$1]" | sed -e "s,^$srcdir/,,"` + ;; + * ) + AC_MSG_ERROR([The BDB directory must be directly under the MySQL source directory, or be specified using the full path. ('$srcdir'; '$[$1]')]) + ;; + esac + if test X"$[$1]" != "/" + then + [$1]=`echo $[$1] | sed -e 's,/$,,'` + fi +]) + +dnl --------------------------------------------------------------------------- +dnl END OF MYSQL_CHECK_BDB SECTION +dnl --------------------------------------------------------------------------- + +dnl --------------------------------------------------------------------------- +dnl Macro: MYSQL_CHECK_INNODB +dnl Sets HAVE_INNOBASE_DB if --with-innodb is used +dnl --------------------------------------------------------------------------- + +AC_DEFUN([MYSQL_CHECK_INNODB], [ + AC_ARG_WITH([innodb], + [ + --without-innodb Do not include the InnoDB table handler], + [innodb="$withval"], + [innodb=yes]) + + AC_MSG_CHECKING([for Innodb]) + + have_innodb=no + innodb_includes= + innodb_libs= + case "$innodb" in + yes ) + AC_MSG_RESULT([Using Innodb]) + AC_DEFINE(HAVE_INNOBASE_DB) + have_innodb="yes" + innodb_includes="-I../innobase/include" + innodb_system_libs="" +dnl Some libs are listed several times, in order for gcc to sort out +dnl circular references. + innodb_libs="\ + \$(top_builddir)/innobase/usr/libusr.a\ + \$(top_builddir)/innobase/srv/libsrv.a\ + \$(top_builddir)/innobase/dict/libdict.a\ + \$(top_builddir)/innobase/que/libque.a\ + \$(top_builddir)/innobase/srv/libsrv.a\ + \$(top_builddir)/innobase/ibuf/libibuf.a\ + \$(top_builddir)/innobase/row/librow.a\ + \$(top_builddir)/innobase/pars/libpars.a\ + \$(top_builddir)/innobase/btr/libbtr.a\ + \$(top_builddir)/innobase/trx/libtrx.a\ + \$(top_builddir)/innobase/read/libread.a\ + \$(top_builddir)/innobase/usr/libusr.a\ + \$(top_builddir)/innobase/buf/libbuf.a\ + \$(top_builddir)/innobase/ibuf/libibuf.a\ + \$(top_builddir)/innobase/eval/libeval.a\ + \$(top_builddir)/innobase/log/liblog.a\ + \$(top_builddir)/innobase/fsp/libfsp.a\ + \$(top_builddir)/innobase/fut/libfut.a\ + \$(top_builddir)/innobase/fil/libfil.a\ + \$(top_builddir)/innobase/lock/liblock.a\ + \$(top_builddir)/innobase/mtr/libmtr.a\ + \$(top_builddir)/innobase/page/libpage.a\ + \$(top_builddir)/innobase/rem/librem.a\ + \$(top_builddir)/innobase/thr/libthr.a\ + \$(top_builddir)/innobase/sync/libsync.a\ + \$(top_builddir)/innobase/data/libdata.a\ + \$(top_builddir)/innobase/mach/libmach.a\ + \$(top_builddir)/innobase/ha/libha.a\ + \$(top_builddir)/innobase/dyn/libdyn.a\ + \$(top_builddir)/innobase/mem/libmem.a\ + \$(top_builddir)/innobase/sync/libsync.a\ + \$(top_builddir)/innobase/ut/libut.a\ + \$(top_builddir)/innobase/os/libos.a\ + \$(top_builddir)/innobase/ut/libut.a" + + AC_CHECK_LIB(rt, aio_read, [innodb_system_libs="-lrt"]) + ;; + * ) + AC_MSG_RESULT([Not using Innodb]) + ;; + esac + + AC_SUBST(innodb_includes) + AC_SUBST(innodb_libs) + AC_SUBST(innodb_system_libs) +]) + +dnl --------------------------------------------------------------------------- +dnl END OF MYSQL_CHECK_INNODB SECTION +dnl --------------------------------------------------------------------------- + +dnl --------------------------------------------------------------------------- +dnl Macro: MYSQL_CHECK_NDBCLUSTER +dnl Sets HAVE_NDBCLUSTER_DB if --with-ndbcluster is used +dnl --------------------------------------------------------------------------- + +AC_DEFUN([MYSQL_CHECK_NDBCLUSTER], [ + AC_ARG_WITH([ndbcluster], + [ + --without-ndbcluster Do not include the Ndb Cluster table handler], + [ndbcluster="$withval"], + [ndbcluster=yes]) + + AC_MSG_CHECKING([for Ndb Cluster]) + + have_ndbcluster=no + ndbcluster_includes= + ndbcluster_libs= + case "$ndbcluster" in + yes ) + AC_MSG_RESULT([Using Ndb Cluster]) + AC_DEFINE(HAVE_NDBCLUSTER_DB) + have_ndbcluster="yes" + ndbcluster_includes="-I../ndb/include -I../ndb/include/ndbapi" + ndbcluster_libs="\$(top_builddir)/ndb/lib/libNDB_API.a" + ndbcluster_system_libs="" + esac + + AC_SUBST(ndbcluster_includes) + AC_SUBST(ndbcluster_libs) + AC_SUBST(ndbcluster_system_libs) +]) + +dnl --------------------------------------------------------------------------- +dnl END OF MYSQL_CHECK_NDBCLUSTER SECTION +dnl --------------------------------------------------------------------------- + +dnl By default, many hosts won't let programs access large files; +dnl one must use special compiler options to get large-file access to work. +dnl For more details about this brain damage please see: +dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html + +dnl Written by Paul Eggert <eggert@twinsun.com>. + +dnl Internal subroutine of AC_SYS_LARGEFILE. +dnl AC_SYS_LARGEFILE_FLAGS(FLAGSNAME) +AC_DEFUN(AC_SYS_LARGEFILE_FLAGS, + [AC_CACHE_CHECK([for $1 value to request large file support], + ac_cv_sys_largefile_$1, + [if ($GETCONF LFS_$1) >conftest.1 2>conftest.2 && test ! -s conftest.2 + then + ac_cv_sys_largefile_$1=`cat conftest.1` + else + ac_cv_sys_largefile_$1=no + ifelse($1, CFLAGS, + [case "$host_os" in + # HP-UX 10.20 requires -D__STDC_EXT__ with gcc 2.95.1. +changequote(, )dnl + hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*) +changequote([, ])dnl + if test "$GCC" = yes; then + case `$CC --version 2>/dev/null` in + 2.95.*) ac_cv_sys_largefile_CFLAGS=-D__STDC_EXT__ ;; + esac + fi + ;; + # IRIX 6.2 and later require cc -n32. +changequote(, )dnl + irix6.[2-9]* | irix6.1[0-9]* | irix[7-9].* | irix[1-9][0-9]*) +changequote([, ])dnl + if test "$GCC" != yes; then + ac_cv_sys_largefile_CFLAGS=-n32 + fi + esac + if test "$ac_cv_sys_largefile_CFLAGS" != no; then + ac_save_CC="$CC" + CC="$CC $ac_cv_sys_largefile_CFLAGS" + AC_TRY_LINK(, , , ac_cv_sys_largefile_CFLAGS=no) + CC="$ac_save_CC" + fi]) + fi + rm -f conftest*])]) + +dnl Internal subroutine of AC_SYS_LARGEFILE. +dnl AC_SYS_LARGEFILE_SPACE_APPEND(VAR, VAL) +AC_DEFUN(AC_SYS_LARGEFILE_SPACE_APPEND, + [case $2 in + no) ;; + ?*) + case "[$]$1" in + '') $1=$2 ;; + *) $1=[$]$1' '$2 ;; + esac ;; + esac]) + +dnl Internal subroutine of AC_SYS_LARGEFILE. +dnl AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, CACHE-VAR, COMMENT, CODE-TO-SET-DEFAULT) +AC_DEFUN(AC_SYS_LARGEFILE_MACRO_VALUE, + [AC_CACHE_CHECK([for $1], $2, + [$2=no +changequote(, )dnl + for ac_flag in $ac_cv_sys_largefile_CFLAGS no; do + case "$ac_flag" in + -D$1) + $2=1 ;; + -D$1=*) + $2=`expr " $ac_flag" : '[^=]*=\(.*\)'` ;; + esac + done + $4 +changequote([, ])dnl + ]) + if test "[$]$2" != no; then + AC_DEFINE_UNQUOTED([$1], [$]$2, [$3]) + fi]) + +AC_DEFUN(MYSQL_SYS_LARGEFILE, + [AC_REQUIRE([AC_CANONICAL_HOST]) + AC_ARG_ENABLE(largefile, + [ --disable-largefile Omit support for large files]) + if test "$enable_largefile" != no; then + AC_CHECK_TOOL(GETCONF, getconf) + AC_SYS_LARGEFILE_FLAGS(CFLAGS) + AC_SYS_LARGEFILE_FLAGS(LDFLAGS) + AC_SYS_LARGEFILE_FLAGS(LIBS) + + for ac_flag in $ac_cv_sys_largefile_CFLAGS no; do + case "$ac_flag" in + no) ;; + -D_FILE_OFFSET_BITS=*) ;; + -D_LARGEFILE_SOURCE | -D_LARGEFILE_SOURCE=*) ;; + -D_LARGE_FILES | -D_LARGE_FILES=*) ;; + -D?* | -I?*) + AC_SYS_LARGEFILE_SPACE_APPEND(CPPFLAGS, "$ac_flag") ;; + *) + AC_SYS_LARGEFILE_SPACE_APPEND(CFLAGS, "$ac_flag") ;; + esac + done + AC_SYS_LARGEFILE_SPACE_APPEND(LDFLAGS, "$ac_cv_sys_largefile_LDFLAGS") + AC_SYS_LARGEFILE_SPACE_APPEND(LIBS, "$ac_cv_sys_largefile_LIBS") + + AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, + ac_cv_sys_file_offset_bits, + [Number of bits in a file offset, on hosts where this is settable.], + [case "$host_os" in + # HP-UX 10.20 and later + hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*) + ac_cv_sys_file_offset_bits=64 ;; + # We can't declare _FILE_OFFSET_BITS here as this will cause + # compile errors as AC_PROG_CC adds include files in confdefs.h + # We solve this (until autoconf is fixed) by instead declaring it + # as define instead + solaris2.[8,9]) + CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64" + CXXFLAGS="$CXXFLAGS -D_FILE_OFFSET_BITS=64" + ac_cv_sys_file_offset_bits=no ;; + esac]) + AC_SYS_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE, + ac_cv_sys_largefile_source, + [Define to make fseeko etc. visible, on some hosts.], + [case "$host_os" in + # HP-UX 10.20 and later + hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*) + ac_cv_sys_largefile_source=1 ;; + esac]) + AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, + ac_cv_sys_large_files, + [Define for large files, on AIX-style hosts.], + [case "$host_os" in + # AIX 4.2 and later + aix4.[2-9]* | aix4.1[0-9]* | aix[5-9].* | aix[1-9][0-9]*) + ac_cv_sys_large_files=1 ;; + esac]) + fi + ]) + + +# Local version of _AC_PROG_CXX_EXIT_DECLARATION that does not +# include #stdlib.h as default as this breaks things on Solaris +# (Conflicts with pthreads and big file handling) + +m4_define([_AC_PROG_CXX_EXIT_DECLARATION], +[for ac_declaration in \ + ''\ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' \ + '#include <stdlib.h>' +do + _AC_COMPILE_IFELSE([AC_LANG_PROGRAM([@%:@include <stdlib.h> +$ac_declaration], + [exit (42);])], + [], + [continue]) + _AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$ac_declaration], + [exit (42);])], + [break]) +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi +])# _AC_PROG_CXX_EXIT_DECLARATION + +dnl --------------------------------------------------------------------------- + diff --git a/ndb/config/configure.in b/ndb/config/configure.in new file mode 100644 index 00000000000..4fa5ccdb672 --- /dev/null +++ b/ndb/config/configure.in @@ -0,0 +1,2085 @@ +dnl -*- ksh -*- +dnl Process this file with autoconf to produce a configure script. + +AC_INIT(../../sql/mysqld.cc) +AC_CANONICAL_SYSTEM +# The Docs Makefile.am parses this line! +AM_INIT_AUTOMAKE(mysql, 4.1.2-3.4.3-alpha) +AM_CONFIG_HEADER(config.h) + +PROTOCOL_VERSION=10 +DOT_FRM_VERSION=6 +# See the libtool docs for information on how to do shared lib versions. +SHARED_LIB_VERSION=14:0:0 + +# Set all version vars based on $VERSION. How do we do this more elegant ? +# Remember that regexps needs to quote [ and ] since this is run through m4 +MYSQL_NO_DASH_VERSION=`echo $VERSION | sed -e "s|[[a-z]]*-.*$||"` +MYSQL_BASE_VERSION=`echo $MYSQL_NO_DASH_VERSION | sed -e "s|\.[[^.]]*$||"` +MYSQL_VERSION_ID=`echo $MYSQL_NO_DASH_VERSION. | sed -e 's/\./ /g; s/ \([[0-9]]\) / 0\\1 /g; s/ //g'` + +# The port should be constant for a LONG time +MYSQL_TCP_PORT_DEFAULT=3306 +MYSQL_UNIX_ADDR_DEFAULT="/tmp/mysql.sock" + +##### +##### + +AC_SUBST(MYSQL_NO_DASH_VERSION) +AC_SUBST(MYSQL_BASE_VERSION) +AC_SUBST(MYSQL_VERSION_ID) +AC_SUBST(PROTOCOL_VERSION) +AC_DEFINE_UNQUOTED(PROTOCOL_VERSION, $PROTOCOL_VERSION) +AC_SUBST(DOT_FRM_VERSION) +AC_DEFINE_UNQUOTED(DOT_FRM_VERSION, $DOT_FRM_VERSION) +AC_SUBST(SHARED_LIB_VERSION) + +# Canonicalize the configuration name. +SYSTEM_TYPE="$host_vendor-$host_os" +MACHINE_TYPE="$host_cpu" +AC_SUBST(SYSTEM_TYPE) +AC_DEFINE_UNQUOTED(SYSTEM_TYPE, "$SYSTEM_TYPE") +AC_SUBST(MACHINE_TYPE) +AC_DEFINE_UNQUOTED(MACHINE_TYPE, "$MACHINE_TYPE") + +# Detect intel x86 like processor +BASE_MACHINE_TYPE=$MACHINE_TYPE +case $MACHINE_TYPE in + i?86) BASE_MACHINE_TYPE=i386 ;; +esac + +# Save some variables and the command line options for mysqlbug +SAVE_ASFLAGS="$ASFLAGS" +SAVE_CFLAGS="$CFLAGS" +SAVE_CXXFLAGS="$CXXFLAGS" +SAVE_LDFLAGS="$LDFLAGS" +SAVE_CXXLDFLAGS="$CXXLDFLAGS" +CONF_COMMAND="$0 $ac_configure_args" +AC_SUBST(CONF_COMMAND) +AC_SUBST(SAVE_ASFLAGS) +AC_SUBST(SAVE_CFLAGS) +AC_SUBST(SAVE_CXXFLAGS) +AC_SUBST(SAVE_LDFLAGS) +AC_SUBST(SAVE_CXXLDFLAGS) +AC_SUBST(CXXLDFLAGS) + +AC_PREREQ(2.12)dnl Minimum Autoconf version required. + +AM_MAINTAINER_MODE +#AC_ARG_PROGRAM # Automaticly invoked by AM_INIT_AUTOMAKE +AM_SANITY_CHECK +# This is needed is SUBDIRS is set +AC_PROG_MAKE_SET + +# This is need before AC_PROG_CC +# + +if test "x${CFLAGS-}" = x ; then + cflags_is_set=no +else + cflags_is_set=yes +fi + +if test "x${CPPFLAGS-}" = x ; then + cppflags_is_set=no +else + cppflags_is_set=yes +fi + +if test "x${LDFLAGS-}" = x ; then + ldflags_is_set=no +else + ldflags_is_set=yes +fi + +# The following hack should ensure that configure doesn't add optimizing +# or debugging flags to CFLAGS or CXXFLAGS +CFLAGS="$CFLAGS " +CXXFLAGS="$CXXFLAGS " + +dnl Checks for programs. +AC_PROG_AWK +AC_PROG_CC +AC_PROG_CXX +AC_PROG_CPP + +# Print version of CC and CXX compiler (if they support --version) +case $SYSTEM_TYPE in + *netware*) +CC_VERSION=`$CC -version | grep -i version` + ;; + *) +CC_VERSION=`$CC --version | sed 1q` + ;; +esac +if test $? -eq "0" +then + AC_MSG_CHECKING("C Compiler version"); + AC_MSG_RESULT("$CC $CC_VERSION") +else +CC_VERSION="" +fi +case $SYSTEM_TYPE in + *netware*) +CXX_VERSION=`$CXX -version | grep -i version` + ;; + *) +CXX_VERSION=`$CXX --version | sed 1q` + ;; +esac +if test $? -eq "0" +then + AC_MSG_CHECKING("C++ compiler version"); + AC_MSG_RESULT("$CXX $CXX_VERSION") +else +CXX_VERSION="" +fi +AC_SUBST(CXX_VERSION) +AC_SUBST(CC_VERSION) + +# Fix for sgi gcc / sgiCC which tries to emulate gcc +if test "$CC" = "sgicc" +then + ac_cv_prog_gcc="no" +fi +if test "$CXX" = "sgi++" +then + GXX="no" +fi + +if test "$ac_cv_prog_gcc" = "yes" +then + AS="$CC -c" + AC_SUBST(AS) +else + AC_PATH_PROG(AS, as, as) +fi +# Still need ranlib for readline; local static use only so no libtool. +AC_PROG_RANLIB +# We use libtool +#AC_LIBTOOL_WIN32_DLL +AC_PROG_LIBTOOL + +# Ensure that we have --preserve-dup-deps defines, otherwise we get link +# problems of 'mysql' with CXX=g++ +LIBTOOL="$LIBTOOL --preserve-dup-deps" +AC_SUBST(LIBTOOL)dnl + +#AC_LIBTOOL_DLOPEN AC_LIBTOOL_WIN32_DLL AC_DISABLE_FAST_INSTALL AC_DISABLE_SHARED AC_DISABLE_STATIC + +# AC_PROG_INSTALL +AC_PROG_INSTALL +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' + +# Not critical since the generated file is distributed +AC_PROG_YACC +AC_CHECK_PROG(PDFMANUAL, pdftex, manual.pdf) +AC_CHECK_PROG(DVIS, tex, manual.dvi) + +AC_MSG_CHECKING("return type of sprintf") + +#check the return type of sprintf +case $SYSTEM_TYPE in + *netware*) + AC_DEFINE(SPRINTF_RETURNS_INT) AC_MSG_RESULT("int") + ;; + *) +AC_TRY_RUN([ + int main() + { + char* s = "hello"; + char buf[6]; + if((int)sprintf(buf, s) == strlen(s)) + return 0; + + return -1; + } + ], +AC_DEFINE(SPRINTF_RETURNS_INT) AC_MSG_RESULT("int"), + AC_TRY_RUN([ + int main() + { + char* s = "hello"; + char buf[6]; + if((char*)sprintf(buf,s) == buf + strlen(s)) + return 0; + return -1; + } +], AC_DEFINE(SPRINTF_RETURNS_PTR) AC_MSG_RESULT("ptr"), + AC_DEFINE(SPRINTF_RETURNS_GARBAGE) AC_MSG_RESULT("garbage"))) + ;; +esac + + +# option, cache_name, variable, +# code to execute if yes, code to exectute if fail +AC_DEFUN(AC_SYS_COMPILER_FLAG, +[ + AC_MSG_CHECKING($1) + OLD_CFLAGS="[$]CFLAGS" + AC_CACHE_VAL(mysql_cv_option_$2, + [ + CFLAGS="[$]OLD_CFLAGS $1" + AC_TRY_RUN([int main(){exit(0);}],mysql_cv_option_$2=yes,mysql_cv_option_$2=no,mysql_cv_option_$2=no) + ]) + + CFLAGS="[$]OLD_CFLAGS" + + if test x"[$]mysql_cv_option_$2" = "xyes" ; then + $3="[$]$3 $1" + AC_MSG_RESULT(yes) + $5 + else + AC_MSG_RESULT(no) + $4 + fi +]) + +# arch, option, cache_name, variable +AC_DEFUN(AC_SYS_CPU_COMPILER_FLAG, +[ + if test "`uname -m 2>/dev/null`" = "$1" ; then + AC_SYS_COMPILER_FLAG($2,$3,$4) + fi +]) + +# os, option, cache_name, variable +AC_DEFUN(AC_SYS_OS_COMPILER_FLAG, +[ + if test "x$mysql_cv_sys_os" = "x$1" ; then + AC_SYS_COMPILER_FLAG($2,$3,$4) + fi +]) + +# We need some special hacks when running slowaris +AC_PATH_PROG(uname_prog, uname, no) + +# We should go through this and put all the explictly system dependent +# stuff in one place +AC_MSG_CHECKING(operating system) +AC_CACHE_VAL(mysql_cv_sys_os, +[ +if test "$uname_prog" != "no"; then + mysql_cv_sys_os="`uname`" +else + mysql_cv_sys_os="Not Solaris" +fi +]) +AC_MSG_RESULT($mysql_cv_sys_os) + +# This should be rewritten to use $target_os +case "$target_os" in + sco3.2v5*) + CFLAGS="$CFLAGS -DSCO" + CXXFLAGS="$CXXFLAGS -DSCO" + LD='$(CC) $(CFLAGS)' + case "$CFLAGS" in + *-belf*) + AC_SYS_COMPILER_FLAG(-belf,sco_belf_option,CFLAGS,[],[ + case "$LDFLAGS" in + *-belf*) ;; + *) echo "Adding -belf option to ldflags." + LDFLAGS="$LDFLAGS -belf" + ;; + esac + ]) + ;; + *) + AC_SYS_COMPILER_FLAG(-belf,sco_belf_option,CFLAGS,[],[ + case "$LDFLAGS" in + *-belf*) ;; + *) + echo "Adding -belf option to ldflags." + LDFLAGS="$LDFLAGS -belf" + ;; + esac + ]) + ;; + esac + ;; + sysv5UnixWare*) + if test "$GCC" != "yes"; then + # We are using built-in inline function + CFLAGS="$CFLAGS -Kalloca" + fi + CXXFLAGS="$CXXFLAGS -DNO_CPLUSPLUS_ALLOCA" + ;; + sysv5OpenUNIX8*) + if test "$GCC" != "yes"; then + # We are using built-in inline function + CFLAGS="$CFLAGS -Kalloca" + fi + CXXFLAGS="$CXXFLAGS -DNO_CPLUSPLUS_ALLOCA" + ;; +esac +AC_SUBST(CC) +AC_SUBST(CFLAGS) +AC_SUBST(CXX) +AC_SUBST(CXXFLAGS) +AC_SUBST(LD) +AC_SUBST(INSTALL_SCRIPT) + +export CC CXX CFLAGS LD LDFLAGS AR + +if test "$GXX" = "yes" +then + # mysqld requires -fno-implicit-templates. + # Disable exceptions as they seams to create problems with gcc and threads. + # mysqld doesn't use run-time-type-checking, so we disable it. + CXXFLAGS="$CXXFLAGS -fno-implicit-templates -fno-exceptions -fno-rtti" + + # If you are using 'gcc' 3.0 (not g++) to compile C++ programs on Linux, + # we will gets some problems when linking static programs. + # The following code is used to fix this problem. + + if test "$CXX" = "gcc" -o "$CXX" = "ccache gcc" + then + if $CXX -v 2>&1 | grep 'version 3' > /dev/null 2>&1 + then + CXXFLAGS="$CXXFLAGS -DUSE_MYSYS_NEW -DDEFINE_CXA_PURE_VIRTUAL" + fi + fi +fi + +# Avoid bug in fcntl on some versions of linux +AC_MSG_CHECKING("if we should use 'skip-locking' as default for $target_os") +# Any wariation of Linux +if expr "$target_os" : "[[Ll]]inux.*" > /dev/null +then + MYSQLD_DEFAULT_SWITCHES="--skip-locking" + IS_LINUX="true" + AC_MSG_RESULT("yes"); +else + MYSQLD_DEFAULT_SWITCHES="" + IS_LINUX="false" + AC_MSG_RESULT("no"); +fi +AC_SUBST(MYSQLD_DEFAULT_SWITCHES) +AC_SUBST(IS_LINUX) + +dnl Find paths to some shell programs +AC_PATH_PROG(LN, ln, ln) +# This must be able to take a -f flag like normal unix ln. +AC_PATH_PROG(LN_CP_F, ln, ln) +if ! ( expr "$SYSTEM_TYPE" : ".*netware.*" > /dev/null ); then +# If ln -f does not exists use -s (AFS systems) +if test -n "$LN_CP_F"; then + LN_CP_F="$LN_CP_F -s" +fi +fi + +AC_PATH_PROG(MV, mv, mv) +AC_PATH_PROG(RM, rm, rm) +AC_PATH_PROG(CP, cp, cp) +AC_PATH_PROG(SED, sed, sed) +AC_PATH_PROG(CMP, cmp, cmp) +AC_PATH_PROG(CHMOD, chmod, chmod) +AC_PATH_PROG(HOSTNAME, hostname, hostname) +# Check for a GNU tar named 'gtar', or 'gnutar' (MacOS X) and +# fall back to 'tar' otherwise and hope that it's a GNU tar as well +AC_CHECK_PROGS(TAR, gnutar gtar tar) + +dnl We use a path for perl so the script startup works +dnl We make sure to use perl, not perl5, in hopes that the RPMs will +dnl not depend on the perl5 binary being installed (probably a bug in RPM) +AC_PATH_PROG(PERL, perl, no) +if test "$PERL" != "no" && $PERL -e 'require 5' > /dev/null 2>&1 +then + PERL5=$PERL +else + AC_PATH_PROG(PERL5, perl5, no) + if test "$PERL5" != no + then + PERL=$PERL5 + ac_cv_path_PERL=$ac_cv_path_PERL5 + fi +fi + +AC_SUBST(HOSTNAME) +AC_SUBST(PERL) +AC_SUBST(PERL5) + +# Lock for PS +AC_PATH_PROG(PS, ps, ps) +AC_MSG_CHECKING("how to check if pid exists") +PS=$ac_cv_path_PS +# Linux style +if $PS p $$ 2> /dev/null | grep $0 > /dev/null +then + FIND_PROC="$PS p \$\$PID | grep mysqld > /dev/null" +# Solaris +elif $PS -p $$ 2> /dev/null | grep $0 > /dev/null +then + FIND_PROC="$PS -p \$\$PID | grep mysqld > /dev/null" +# BSD style +elif $PS -uaxww 2> /dev/null | grep $0 > /dev/null +then + FIND_PROC="$PS -uaxww | grep mysqld | grep \" \$\$PID \" > /dev/null" +# SysV style +elif $PS -ef 2> /dev/null | grep $0 > /dev/null +then + FIND_PROC="$PS -ef | grep mysqld | grep \" \$\$PID \" > /dev/null" +# Do anybody use this? +elif $PS $$ 2> /dev/null | grep $0 > /dev/null +then + FIND_PROC="$PS \$\$PID | grep mysqld > /dev/null" +else + case $SYSTEM_TYPE in + *freebsd*) + FIND_PROC="$PS p \$\$PID | grep mysqld > /dev/null" + ;; + *darwin*) + FIND_PROC="$PS -uaxww | grep mysqld | grep \" \$\$PID \" > /dev/null" + ;; + *cygwin*) + FIND_PROC="$PS -e | grep mysqld | grep \" \$\$PID \" > /dev/null" + ;; + *netware* | *modesto*) + FIND_PROC= + ;; + *) + AC_MSG_ERROR([Could not find the right ps switches. Which OS is this ?. See the Installation chapter in the Reference Manual.]) + esac +fi +AC_SUBST(FIND_PROC) +AC_MSG_RESULT("$FIND_PROC") + +# Check if a pid is valid +AC_PATH_PROG(KILL, kill, kill) +AC_MSG_CHECKING("for kill switches") +if $ac_cv_path_KILL -0 $$ +then + CHECK_PID="$ac_cv_path_KILL -0 \$\$PID > /dev/null 2> /dev/null" +elif kill -s 0 $$ +then + CHECK_PID="$ac_cv_path_KILL -s 0 \$\$PID > /dev/null 2> /dev/null" +else + AC_MSG_WARN([kill -0 to check for pid seems to fail]) + CHECK_PID="$ac_cv_path_KILL -s SIGCONT \$\$PID > /dev/null 2> /dev/null" +fi +AC_SUBST(CHECK_PID) +AC_MSG_RESULT("$CHECK_PID") + +# We need a ANSI C compiler +AM_PROG_CC_STDC + +# We need an assembler, too +AM_PROG_AS + +if test "$am_cv_prog_cc_stdc" = "no" +then + AC_MSG_ERROR([MySQL requires a ANSI C compiler (and a C++ compiler). Try gcc. See the Installation chapter in the Reference Manual.]) +fi + +NOINST_LDFLAGS= + +static_nss="" +STATIC_NSS_FLAGS="" +OTHER_LIBC_LIB="" +AC_ARG_WITH(other-libc, + [ --with-other-libc=DIR Link against libc and other standard libraries + installed in the specified non-standard location + overriding default. Originally added to be able to + link against glibc 2.2 without making the user + upgrade the standard libc installation.], + [ + other_libc_include="$withval/include" + other_libc_lib="$withval/lib" + with_other_libc="yes" + enable_shared="no" + all_is_static="yes" + CFLAGS="$CFLAGS -I$other_libc_include" + # There seems to be a feature in gcc that treats system and libc headers + # silently when they violatate ANSI C++ standard, but it is strict otherwise + # since gcc cannot now recognize that our headers are libc, we work around + # by telling it to be permissive. Note that this option only works with + # new versions of gcc (2.95.x and above) + CXXFLAGS="$CXXFLAGS -fpermissive -I$other_libc_include" + if test -f "$other_libc_lib/libnss_files.a" + then + # libc has been compiled with --enable-static-nss + # we need special flags, but we will have to add those later + STATIC_NSS_FLAGS="-lc -lnss_files -lnss_dns -lresolv" + STATIC_NSS_FLAGS="$STATIC_NSS_FLAGS $STATIC_NSS_FLAGS" + OTHER_LIBC_LIB="-static -L$other_libc_lib" + static_nss=1 + else + # this is a dirty hack. We if we detect static nss glibc in the special + # location, we do not re-direct the linker to get libraries from there + # during check. The reason is that if we did, we would have to find a + # way to append the special static nss flags to LIBS every time we do + # any check - this is definitely feasible, but not worthwhile the risk + # of breaking other things. So for our purposes it would be sufficient + # to assume that whoever is using static NSS knows what he is doing and + # has sensible libraries in the regular location + LDFLAGS="$LDFLAGS -static -L$other_libc_lib " + fi + + # When linking against custom libc installed separately, we want to force + # all binary builds to be static, including the build done by configure + # itself to test for system features. + with_mysqld_ldflags="-all-static" + with_client_ldflags="-all-static" + NOINST_LDFLAGS="-all-static" + ], + [ + other_libc_include= + other_libc_lib= + with_other_libc="no" + ] +) +AC_SUBST(NOINST_LDFLAGS) + +# +# Check if we are using Linux and a glibc compiled with static nss +# (this is true on the MySQL build machines to avoid NSS problems) +# + +if test "$IS_LINUX" = "true" -a "$static_nss" = "" +then + tmp=`nm /usr/lib/libc.a | grep _nss_files_getaliasent_r` + if test -n "$tmp" + then + STATIC_NSS_FLAGS="-lc -lnss_files -lnss_dns -lresolv" + STATIC_NSS_FLAGS="$STATIC_NSS_FLAGS $STATIC_NSS_FLAGS" + static_nss=1 + fi +fi + + +AC_ARG_WITH(server-suffix, + [ --with-server-suffix Append value to the version string.], + [ MYSQL_SERVER_SUFFIX=`echo "$withval" | sed -e 's/^\(...................................\)..*$/\1/'` ], + [ MYSQL_SERVER_SUFFIX= ] + ) +AC_SUBST(MYSQL_SERVER_SUFFIX) + +# Set flags if we wants to have MIT threads. +AC_ARG_WITH(mit-threads, + [ --with-mit-threads Always use included thread lib.], + [ with_mit_threads=$withval ], + [ with_mit_threads=no ] + ) + +if test "$with_mit_threads" = "yes" +then + enable_largefile="no" # Will not work on Linux. +fi + +# Set flags if we want to force to use pthreads +AC_ARG_WITH(pthread, + [ --with-pthread Force use of pthread library.], + [ with_pthread=$withval ], + [ with_pthread=no ] + ) + +# Force use of thread libs LIBS +AC_ARG_WITH(named-thread-libs, + [ --with-named-thread-libs=ARG + Use specified thread libraries instead of + those automatically found by configure.], + [ with_named_thread=$withval ], + [ with_named_thread=no ] + ) + +# Force use of a curses libs +AC_ARG_WITH(named-curses-libs, + [ --with-named-curses-libs=ARG + Use specified curses libraries instead of + those automatically found by configure.], + [ with_named_curses=$withval ], + [ with_named_curses=no ] + ) + +# Force use of a zlib (compress) +AC_ARG_WITH(named-z-libs, + [ --with-named-z-libs=ARG + Use specified zlib libraries instead of + those automatically found by configure.], + [ with_named_zlib=$withval ], + [ with_named_zlib=z ] + ) + +# Make thread safe client +AC_ARG_ENABLE(thread-safe-client, + [ --enable-thread-safe-client + Compile the client with threads.], + [ THREAD_SAFE_CLIENT=$enableval ], + [ THREAD_SAFE_CLIENT=no ] + ) + +# compile with strings functions in assembler +AC_ARG_ENABLE(assembler, + [ --enable-assembler Use assembler versions of some string + functions if available.], + [ ENABLE_ASSEMBLER=$enableval ], + [ ENABLE_ASSEMBLER=no ] + ) + +AC_MSG_CHECKING(if we should use assembler functions) +# For now we only support assembler on i386 and sparc systems +AM_CONDITIONAL(ASSEMBLER_x86, test "$ENABLE_ASSEMBLER" = "yes" -a "$BASE_MACHINE_TYPE" = "i386") +AM_CONDITIONAL(ASSEMBLER_sparc32, test "$ENABLE_ASSEMBLER" = "yes" -a "$BASE_MACHINE_TYPE" = "sparc") +AM_CONDITIONAL(ASSEMBLER_sparc64, test "$ENABLE_ASSEMBLER" = "yes" -a "$BASE_MACHINE_TYPE" = "sparcv9") +AM_CONDITIONAL(ASSEMBLER, test "$ASSEMBLER_x86_TRUE" = "" -o "$ASSEMBLER_sparc32_TRUE" = "") + +if test "$ASSEMBLER_TRUE" = "" +then + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi + + +AC_MSG_CHECKING(if we should use RAID) +AC_ARG_WITH(raid, + [ --with-raid Enable RAID Support], + [ USE_RAID=$withval ], + [ USE_RAID=no ] + ) +if test "$USE_RAID" = "yes" +then + AC_MSG_RESULT([yes]) + AC_DEFINE([USE_RAID]) +else + AC_MSG_RESULT([no]) +fi + +# Use this to set the place used for unix socket used to local communication. +AC_ARG_WITH(unix-socket-path, + [ --with-unix-socket-path=SOCKET + Where to put the unix-domain socket. SOCKET must be + an absolute file name.], + [ MYSQL_UNIX_ADDR=$withval ], + [ MYSQL_UNIX_ADDR=$MYSQL_UNIX_ADDR_DEFAULT ] + ) +AC_SUBST(MYSQL_UNIX_ADDR) + +AC_ARG_WITH(tcp-port, + [ --with-tcp-port=port-number + Which port to use for MySQL services (default 3306)], + [ MYSQL_TCP_PORT=$withval ], + [ MYSQL_TCP_PORT=$MYSQL_TCP_PORT_DEFAULT ] + ) +AC_SUBST(MYSQL_TCP_PORT) +# We might want to document the assigned port in the manual. +AC_SUBST(MYSQL_TCP_PORT_DEFAULT) + +# Use this to set the place used for unix socket used to local communication. +AC_ARG_WITH(mysqld-user, + [ --with-mysqld-user=username + What user the mysqld daemon shall be run as.], + [ MYSQLD_USER=$withval ], + [ MYSQLD_USER=mysql ] + ) +AC_SUBST(MYSQLD_USER) + +# If we should allow LOAD DATA LOCAL +AC_MSG_CHECKING(If we should should enable LOAD DATA LOCAL by default) +AC_ARG_ENABLE(local-infile, + [ --enable-local-infile Enable LOAD DATA LOCAL INFILE (default: disabled)], + [ ENABLED_LOCAL_INFILE=$enableval ], + [ ENABLED_LOCAL_INFILE=no ] + ) +if test "$ENABLED_LOCAL_INFILE" = "yes" +then + AC_MSG_RESULT([yes]) + AC_DEFINE([ENABLED_LOCAL_INFILE]) +else + AC_MSG_RESULT([no]) +fi + +MYSQL_SYS_LARGEFILE + +# Types that must be checked AFTER large file support is checked +AC_TYPE_SIZE_T + +#-------------------------------------------------------------------- +# Check for system header files +#-------------------------------------------------------------------- + +AC_HEADER_DIRENT +AC_HEADER_STDC +AC_HEADER_SYS_WAIT +AC_CHECK_HEADERS(fcntl.h float.h floatingpoint.h ieeefp.h limits.h \ + memory.h pwd.h select.h \ + stdlib.h stddef.h \ + strings.h string.h synch.h sys/mman.h sys/socket.h netinet/in.h arpa/inet.h \ + sys/timeb.h sys/types.h sys/un.h sys/vadvise.h sys/wait.h term.h \ + unistd.h utime.h sys/utime.h termio.h termios.h sched.h crypt.h alloca.h \ + sys/ioctl.h malloc.h sys/malloc.h linux/config.h) + +#-------------------------------------------------------------------- +# Check for system libraries. Adds the library to $LIBS +# and defines HAVE_LIBM etc +#-------------------------------------------------------------------- + +AC_CHECK_LIB(m, floor, [], AC_CHECK_LIB(m, __infinity)) + +AC_CHECK_LIB(nsl_r, gethostbyname_r, [], + AC_CHECK_LIB(nsl, gethostbyname_r)) +AC_CHECK_FUNC(gethostbyname_r) + +AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt)) +AC_CHECK_FUNC(yp_get_default_domain, , + AC_CHECK_LIB(nsl, yp_get_default_domain)) +AC_CHECK_FUNC(p2open, , AC_CHECK_LIB(gen, p2open)) +# This may get things to compile even if bind-8 is installed +AC_CHECK_FUNC(bind, , AC_CHECK_LIB(bind, bind)) +# For crypt() on Linux +AC_CHECK_LIB(crypt, crypt) +AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT)) + +# For sem_xxx functions on Solaris 2.6 +AC_CHECK_FUNC(sem_init, , AC_CHECK_LIB(posix4, sem_init)) + +# For compress in zlib +MYSQL_CHECK_ZLIB_WITH_COMPRESS($with_named_zlib) + +#-------------------------------------------------------------------- +# Check for TCP wrapper support +#-------------------------------------------------------------------- + +AC_ARG_WITH(libwrap, +[ --with-libwrap[=DIR] Compile in libwrap (tcp_wrappers) support],[ + case "$with_libwrap" in + no) : ;; + yes|*) + _cppflags=${CPPFLAGS} + _ldflags=${LDFLAGS} + + if test "$with_libwrap" != "yes"; then + CPPFLAGS="${CPPFLAGS} -I$with_libwrap/include" + LDFLAGS="${LDFLAGS} -L$with_libwrap/lib" + fi + + _libs=${LIBS} + AC_CHECK_HEADER(tcpd.h, + LIBS="-lwrap $LIBS" + AC_MSG_CHECKING(for TCP wrappers library -lwrap) + AC_TRY_LINK([#include <tcpd.h> +int allow_severity = 0; +int deny_severity = 0; + +struct request_info *req; +],[hosts_access (req)], + AC_MSG_RESULT(yes) + AC_DEFINE(LIBWRAP) + AC_DEFINE(HAVE_LIBWRAP) + if test "$with_libwrap" != "yes"; then + WRAPLIBS="-L${with_libwrap}/lib" + fi + WRAPLIBS="${WRAPLIBS} -lwrap", + AC_MSG_RESULT(no) + CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}), + CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}) + LDFLAGS=${_ldflags} LIBS=${_libs} + ;; + esac +]) +AC_SUBST(WRAPLIBS) + +if test "$IS_LINUX" = "true"; then + AC_MSG_CHECKING([for atomic operations]) + + atom_ops= + AC_TRY_RUN([ +#include <asm/atomic.h> +int main() +{ + atomic_t v; + + atomic_set(&v, 23); + atomic_add(5, &v); + return atomic_read(&v) == 28 ? 0 : -1; +} + ], AC_DEFINE(HAVE_ATOMIC_ADD) atom_ops="${atom_ops}atomic_add ", + ) + AC_TRY_RUN([ +#include <asm/atomic.h> +int main() +{ + atomic_t v; + + atomic_set(&v, 23); + atomic_sub(5, &v); + return atomic_read(&v) == 18 ? 0 : -1; +} + ], AC_DEFINE(HAVE_ATOMIC_SUB) atom_ops="${atom_ops}atomic_sub ", + ) + + if test -z "$atom_ops"; then atom_ops="no"; fi + AC_MSG_RESULT($atom_ops) + + AC_ARG_WITH(pstack, + [ --with-pstack Use the pstack backtrace library], + [ USE_PSTACK=$withval ], + [ USE_PSTACK=no ]) + pstack_libs= + pstack_dirs= + if test "$USE_PSTACK" = yes -a "$IS_LINUX" = "true" -a "$BASE_MACHINE_TYPE" = "i386" -a "$with_mit_threads" = "no" + then + have_libiberty= have_libbfd= + my_save_LIBS="$LIBS" +dnl I have no idea if this is a good test - can not find docs for libiberty + AC_CHECK_LIB([iberty], [fdmatch], + [have_libiberty=yes + AC_CHECK_LIB([bfd], [bfd_openr], [have_libbfd=yes], , [-liberty])]) + LIBS="$my_save_LIBS" + + if test x"$have_libiberty" = xyes -a x"$have_libbfd" = xyes + then + pstack_dirs='$(top_srcdir)'/pstack + pstack_libs="../pstack/libpstack.a -lbfd -liberty" + # We must link staticly when using pstack + with_mysqld_ldflags="-all-static" + AC_SUBST([pstack_dirs]) + AC_SUBST([pstack_libs]) + AC_DEFINE([USE_PSTACK]) +dnl This check isn't needed, but might be nice to give some feedback.... +dnl AC_CHECK_HEADER(libiberty.h, +dnl have_libiberty_h=yes, +dnl have_libiberty_h=no) + else + USE_PSTACK="no" + fi + else + USE_PSTACK="no" + fi +fi +AM_CONDITIONAL(COMPILE_PSTACK, test "$USE_PSTACK" = "yes") +AC_MSG_CHECKING([if we should use pstack]) +AC_MSG_RESULT([$USE_PSTACK]) + +# Check for gtty if termio.h doesn't exists +if test "$ac_cv_header_termio_h" = "no" -a "$ac_cv_header_termios_h" = "no" +then + AC_CHECK_FUNC(gtty, , AC_CHECK_LIB(compat, gtty)) +fi +# We make a special variable for client library's to avoid including +# thread libs in the client. +NON_THREADED_CLIENT_LIBS="$LIBS" + +AC_MSG_CHECKING([for int8]) +case $SYSTEM_TYPE in + *netware) + AC_MSG_RESULT([no]) + ;; + *) +AC_TRY_RUN([ +#ifdef HAVE_STDLIB_H +#include <stdlib.h> +#endif + +#ifdef HAVE_STDDEF_H +#include <stddef.h> +#endif + +#ifdef HAVE_SYS_TYPES_H +#include <sys/types.h> +#endif + +int main() +{ + int8 i; + return 0; +} +], AC_DEFINE(HAVE_INT_8_16_32) AC_MSG_RESULT([yes]), AC_MSG_RESULT([no]) +) + ;; +esac + +# +# Some system specific hacks +# + +MAX_C_OPTIMIZE="-O3" +MAX_CXX_OPTIMIZE="-O3" + +case $SYSTEM_TYPE in + *solaris2.7*) + # Solaris 2.7 has a broken /usr/include/widec.h + # Make a fixed copy in ./include + echo "Fixing broken include files for $SYSTEM_TYPE" + echo " - Creating local copy of widec.h" + if test ! -d include + then + mkdir ./include + fi + builddir=`pwd` + sed -e "s|^#if[ ]*!defined(lint) && !defined(__lint)|#if !defined\(lint\) \&\& !defined\(__lint\) \&\& !defined\(getwc\)|" < /usr/include/widec.h > include/widec.h + CFLAGS="$CFLAGS -DHAVE_CURSES_H -I$builddir/include -DHAVE_RWLOCK_T" + CXXFLAGS="$CXXFLAGS -DHAVE_CURSES_H -I$builddir/include -DHAVE_RWLOCK_T" + ;; + *solaris2.8*) + # Solaris 2.8 has a broken /usr/include/widec.h + # Make a fixed copy in ./include + echo "Fixing broken include files for $SYSTEM_TYPE" + echo " - Creating local copy of widec.h" + if test ! -d include + then + mkdir ./include + fi + builddir=`pwd` + sed -e "s|^#if[ ]*!defined(__lint)|#if !defined\(__lint\) \&\& !defined\(getwc\)|" < /usr/include/widec.h > include/widec.h + CFLAGS="$CFLAGS -DHAVE_CURSES_H -I$builddir/include -DHAVE_RWLOCK_T" + CXXFLAGS="$CXXFLAGS -DHAVE_CURSES_H -I$builddir/include -DHAVE_RWLOCK_T" + ;; + *solaris2.5.1*) + echo "Enabling getpass() workaround for Solaris 2.5.1" + CFLAGS="$CFLAGS -DHAVE_BROKEN_GETPASS -DSOLARIS -DHAVE_RWLOCK_T"; + CXXFLAGS="$CXXFLAGS -DHAVE_RWLOCK_T -DSOLARIS" + ;; + *solaris*) + CFLAGS="$CFLAGS -DHAVE_RWLOCK_T" + CXXFLAGS="$CXXFLAGS -DHAVE_RWLOCK_T" + ;; + *SunOS*) + echo "Enabling getpass() workaround for SunOS" + CFLAGS="$CFLAGS -DHAVE_BROKEN_GETPASS -DSOLARIS"; + ;; + *hpux10.20*) + echo "Enabling workarounds for hpux 10.20" + CFLAGS="$CFLAGS -DHAVE_BROKEN_SNPRINTF -DSIGNALS_DONT_BREAK_READ -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHPUX10 -DSIGNAL_WITH_VIO_CLOSE -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT -DHAVE_POSIX1003_4a_MUTEX" + CXXFLAGS="$CXXFLAGS -DHAVE_BROKEN_SNPRINTF -D_INCLUDE_LONGLONG -DSIGNALS_DONT_BREAK_READ -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHPUX10 -DSIGNAL_WITH_VIO_CLOSE -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT -DHAVE_POSIX1003_4a_MUTEX" + if test "$with_named_thread" = "no" + then + echo "Using --with-named-thread=-lpthread" + with_named_thread="-lcma" + fi + ;; + *hpux11.*) + echo "Enabling workarounds for hpux 11" + CFLAGS="$CFLAGS -DHPUX11 -DHAVE_BROKEN_PREAD -DDONT_USE_FINITE -DHAVE_BROKEN_GETPASS -DNO_FCNTL_NONBLOCK -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT" + CXXFLAGS="$CXXFLAGS -DHPUX11 -DHAVE_BROKEN_PREAD -DDONT_USE_FINITE -D_INCLUDE_LONGLONG -DNO_FCNTL_NONBLOCK -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT" + if test "$with_named_thread" = "no" + then + echo "Using --with-named-thread=-lpthread" + with_named_thread="-lpthread" + fi + # Fixes for HPUX 11.0 compiler + if test "$ac_cv_prog_gcc" = "no" + then + CFLAGS="$CFLAGS -DHAVE_BROKEN_INLINE" + CXXFLAGS="$CXXFLAGS +O2" + MAX_C_OPTIMIZE="" + MAX_CXX_OPTIMIZE="" + fi + ;; + *rhapsody*) + if test "$ac_cv_prog_gcc" = "yes" + then + CPPFLAGS="$CPPFLAGS -traditional-cpp " + CFLAGS="-DHAVE_CTHREADS_WRAPPER -DDO_NOT_REMOVE_THREAD_WRAPPERS" + CXXFLAGS="-DHAVE_CTHREADS_WRAPPER" + if test $with_named_curses = "no" + then + with_named_curses="" + fi + fi + ;; + *darwin5*) + if test "$ac_cv_prog_gcc" = "yes" + then + FLAGS="-traditional-cpp -DHAVE_DARWIN_THREADS -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DHAVE_BROKEN_REALPATH" + CFLAGS="$CFLAGS $FLAGS" + CXXFLAGS="$CXXFLAGS $FLAGS" + MAX_C_OPTIMIZE="-O" + with_named_curses="" + fi + ;; + *darwin6*) + if test "$ac_cv_prog_gcc" = "yes" + then + FLAGS="-DHAVE_DARWIN_THREADS -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DHAVE_BROKEN_REALPATH" + CFLAGS="$CFLAGS $FLAGS" + CXXFLAGS="$CXXFLAGS $FLAGS" + MAX_C_OPTIMIZE="-O" + fi + ;; + *darwin7*) + if test "$ac_cv_prog_gcc" = "yes" + then + FLAGS="-DHAVE_DARWIN_THREADS -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ" + CFLAGS="$CFLAGS $FLAGS" + CXXFLAGS="$CXXFLAGS $FLAGS" + MAX_C_OPTIMIZE="-O" + fi + ;; + *freebsd*) + echo "Adding fix for interrupted reads" + OSVERSION=`sysctl -a | grep osreldate | awk '{ print $2 }'` + if test "$OSVERSION" -gt "480100" && \ + test "$OSVERSION" -lt "500000" || \ + test "$OSVERSION" -gt "500109" + then + CXXFLAGS="$CXXFLAGS -DMYSQLD_NET_RETRY_COUNT=1000000" + else + CFLAGS="$CFLAGS -DHAVE_BROKEN_REALPATH" + CXXFLAGS="$CXXFLAGS -DMYSQLD_NET_RETRY_COUNT=1000000 -DHAVE_BROKEN_REALPATH" + fi + ;; + *netbsd*) + echo "Adding flag -Dunix" + CFLAGS="$CFLAGS -Dunix" + CXXFLAGS="$CXXFLAGS -Dunix" + OVERRIDE_MT_LD_ADD="\$(top_srcdir)/mit-pthreads/obj/libpthread.a" + ;; + *bsdi*) + echo "Adding fix for BSDI" + CFLAGS="$CFLAGS -D__BSD__ -DHAVE_BROKEN_REALPATH" + AC_DEFINE_UNQUOTED(SOCKOPT_OPTLEN_TYPE, size_t) + ;; + *sgi-irix6*) + if test "$with_named_thread" = "no" + then + echo "Using --with-named-thread=-lpthread" + with_named_thread="-lpthread" + fi + CXXFLAGS="$CXXFLAGS -D_BOOL" + ;; + *aix4.3*) + echo "Adding defines for AIX" + CFLAGS="$CFLAGS -Wa,-many -DUNDEF_HAVE_INITGROUPS -DSIGNALS_DONT_BREAK_READ" + CXXFLAGS="$CXXFLAGS -Wa,-many -DUNDEF_HAVE_INITGROUPS -DSIGNALS_DONT_BREAK_READ" + ;; +dnl Is this the right match for DEC OSF on alpha? + *dec-osf*) + if test "$ac_cv_prog_gcc" = "yes" && test "$host_cpu" = "alpha" + then + echo "Adding defines for DEC OSF on alpha" + CFLAGS="$CFLAGS -mieee" + CXXFLAGS="$CXXFLAGS -mieee" + fi + echo "Adding defines for OSF1" + # gethostbyname_r is deprecated and doesn't work ok on OSF1 + CFLAGS="$CFLAGS -DUNDEF_HAVE_GETHOSTBYNAME_R" + CXXFLAGS="$CXXFLAGS -DUNDEF_HAVE_GETHOSTBYNAME_R" + ;; + *netware*) + # No need for curses library so set it to null + with_named_curses="" + + # No thread library - in LibC + with_named_thread="" + + # + # Edit Makefile.in files. + # + echo -n "configuring Makefile.in files for NetWare... " + for file in sql/Makefile.in libmysql/Makefile.in libmysql_r/Makefile.in sql/share/Makefile.in strings/Makefile.in client/Makefile.in + do + # echo "#### $file ####" + filedir="`dirname $file`" + filebase="`basename $file`" + filesed=$filedir/$filebase.sed + # + # Backup and always use original file + # + if test -f $file.bk + then + cp -fp $file.bk $file + else + cp -fp $file $file.bk + fi + case $file in + sql/Makefile.in) + # Use gen_lex_hash.linux instead of gen_lex_hash + # Add library dependencies to mysqld_DEPENDENCIES + lib_DEPENDENCIES="\$(bdb_libs_with_path) \$(innodb_libs) \$(pstack_libs) \$(innodb_system_libs) \$(openssl_libs)" + cat > $filesed << EOF +s,\(^.*\$(MAKE) gen_lex_hash\),#\1, +s,\(\./gen_lex_hash\),\1.linux, +s%\(mysqld_DEPENDENCIES = \) %\1$lib_DEPENDENCIES % +EOF + ;; + sql/share/Makefile.in) + cat > $filesed << EOF +s,\(extra/comp_err\),\1.linux, +EOF + ;; + libmysql/Makefile.in) + cat > $filesed << EOF +s,\(\./conf_to_src\)\( \$(top_srcdir)\),\1.linux\2, +s,\(: conf_to_src\),\1.linux, +EOF + ;; + libmysql_r/Makefile.in) + cat > $filesed << EOF +s,\(\./conf_to_src\)\( \$(top_srcdir)\),\1.linux\2, +s,\(: conf_to_src\),\1.linux, +EOF + ;; + strings/Makefile.in) + cat > $filesed << EOF +s,\(\./conf_to_src\)\( \$(top_srcdir)\),\1.linux\2, +s,\(: conf_to_src\),\1.linux, +EOF + ;; + client/Makefile.in) + # + cat > $filesed << EOF +s,libmysqlclient.la,.libs/libmysqlclient.a, +EOF + ;; + esac + if `sed -f $filesed $file > $file.nw`;\ + then + mv -f $file.nw $file + rm -f $filesed + else + exit 1 + fi + # wait for file system changes to complete + sleep 1 + done + echo "done" + + # + # Make sure the following files are writable. + # + # When the files are retrieved from some source code control systems they are read-only. + # + echo -n "making sure specific build files are writable... " + for file in \ + Docs/include.texi \ + Docs/mysql.info \ + Docs/manual.txt \ + Docs/manual_toc.html \ + Docs/manual.html \ + Docs/INSTALL-BINARY \ + INSTALL-SOURCE \ + COPYING \ + COPYING.LIB \ + MIRRORS + do + if test -e $file; then + chmod +w $file + fi + done + echo "done" + + ;; +esac + + +#---START: Used in for client configure +# Check if we threads are in libc or if we should use +# -lpthread, -lpthreads or mit-pthreads +# We have to check libc last because else it fails on Solaris 2.6 + +with_posix_threads="no" +# Hack for DEC-UNIX (OSF1) +if test "$with_named_thread" = "no" -a "$with_mit_threads" = "no" +then + # Look for LinuxThreads. + AC_MSG_CHECKING("LinuxThreads") + res=`grep Linuxthreads /usr/include/pthread.h 2>/dev/null | wc -l` + if test "$res" -gt 0 + then + AC_MSG_RESULT("Found") + AC_DEFINE(HAVE_LINUXTHREADS) + # Linux 2.0 sanity check + AC_TRY_COMPILE([#include <sched.h>], [int a = sched_get_priority_min(1);], , + AC_MSG_ERROR([Syntax error in sched.h. Change _P to __P in the /usr/include/sched.h file. See the Installation chapter in the Reference Manual])) + # RedHat 5.0 does not work with dynamic linking of this. -static also + # gives a speed increase in linux so it does not hurt on other systems. + with_named_thread="-lpthread" + else + AC_MSG_RESULT("Not found") + # If this is a linux machine we should barf + if test "$IS_LINUX" = "true" + then + AC_MSG_ERROR([This is a linux system and Linuxthreads was not +found. On linux Linuxthreads should be used. Please install Linuxthreads +(or a new glibc) and try again. See the Installation chapter in the +Reference Manual for more information.]) + else + AC_MSG_CHECKING("DEC threads") + if test -f /usr/shlib/libpthread.so -a -f /usr/lib/libmach.a -a -f /usr/ccs/lib/cmplrs/cc/libexc.a + then + with_named_thread="-lpthread -lmach -lexc" + CFLAGS="$CFLAGS -D_REENTRANT" + CXXFLAGS="$CXXFLAGS -D_REENTRANT" + AC_DEFINE(HAVE_DEC_THREADS) + AC_MSG_RESULT("yes") + else + AC_MSG_RESULT("no") + AC_MSG_CHECKING("DEC 3.2 threads") + if test -f /usr/shlib/libpthreads.so -a -f /usr/lib/libmach.a -a -f /usr/ccs/lib/cmplrs/cc/libexc.a + then + with_named_thread="-lpthreads -lmach -lc_r" + AC_DEFINE(HAVE_DEC_THREADS) + AC_DEFINE(HAVE_DEC_3_2_THREADS) + with_osf32_threads="yes" + MYSQLD_DEFAULT_SWITCHES="--skip-thread-priority" + AC_MSG_RESULT("yes") + else + AC_MSG_RESULT("no") + fi + fi + fi + fi +fi + + +dnl This is needed because -lsocket has to come after the thread +dnl library on SCO. +AC_DEFUN([MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK], [ + LIBS=`echo " $LIBS " | sed -e 's/ -lsocket / /g'` +]) +# Hack for SCO UNIX +if test "$with_named_thread" = "no" +then + AC_MSG_CHECKING("SCO threads") + if expr "$SYSTEM_TYPE" : ".*sco.*" > /dev/null + then + if test -f /usr/lib/libgthreads.a -o -f /usr/lib/libgthreads.so + then + MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK + with_named_thread="-lgthreads -lsocket -lgthreads" + # sched.h conflicts with fsu-threads + touch ./include/sched.h + + # We must have gcc + if expr "$CC" : ".*gcc.*" + then + AC_MSG_RESULT("yes") + else + AC_MSG_ERROR([On SCO UNIX MySQL must be compiled with gcc. See the Installation chapter in the Reference Manual.]); + fi + AC_MSG_RESULT("yes") + elif test -f /usr/local/lib/libpthread.a -o -f /usr/local/lib/libpthread.so + then + MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK + with_named_thread="-lpthread -lsocket" + # sched.h conflicts with fsu-threads + # touch ./include/sched.h + + AC_MSG_CHECKING("for gcc") + # We must have gcc + if expr "$CC" : ".*gcc.*" + then + AC_MSG_RESULT("yes") + else + AC_MSG_ERROR([On SCO UNIX MySQL must be compiled with gcc. See the Installation chapter in the Reference Manual.]); + fi + AC_MSG_RESULT("yes") + # Hack for SCO UnixWare 7.1.x + # + elif test "$with_named_thread" = "no" + then + AC_MSG_RESULT("no") + AC_MSG_CHECKING("SCO UnixWare 7.1.x native threads") + if expr "$SYSTEM_TYPE" : ".*sco.*" > /dev/null + then + if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so + then + MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK + if expr "$CC" : ".*gcc.*" + then + with_named_thread="-pthread -lsocket -lnsl" + else + with_named_thread="-Kthread -lsocket -lnsl" + fi + if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null + then + AC_DEFINE(HAVE_UNIXWARE7_THREADS) + else + AC_DEFINE(HAVE_UNIXWARE7_POSIX) + fi + AC_MSG_RESULT("yes") + # We must have cc + AC_MSG_CHECKING("for gcc") + if expr "$CC" : ".*gcc.*" + then + CC="$CC -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + CXX="$CXX -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + else + CC="$CC -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + fi + else + { echo "configure: error: Can't find thread libs on SCO UnixWare7. See the Installation chapter in the Reference Manual." 1>&2; exit 1; }; + fi + else + AC_MSG_RESULT("no") + fi + else + AC_MSG_ERROR([On SCO UNIX MySQL requires that the FSUThreads package is installed. See the Installation chapter in the Reference Manual.]); + fi + else + AC_MSG_RESULT("no") + fi +fi +# Hack for SCO UnixWare7 +# +if test "$with_named_thread" = "no" +then + AC_MSG_CHECKING("SCO UnixWare7 native threads") + if expr "$SYSTEM_TYPE" : ".*UnixWare*" > /dev/null + then + if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so + then + MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK + if expr "$CC" : ".*gcc.*" + then + with_named_thread="-pthread -lsocket -lnsl" + else + with_named_thread="-Kthread -lsocket -lnsl" + fi + if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null + then + AC_DEFINE(HAVE_UNIXWARE7_THREADS) + else + AC_DEFINE(HAVE_UNIXWARE7_POSIX) + fi + # We must have cc + AC_MSG_CHECKING("for gcc") + if expr "$CC" : ".*gcc.*" + then + CC="$CC -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + CXX="$CXX -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + else + CC="$CC -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + fi + AC_MSG_RESULT("yes") + else + { echo "configure: error: Can't find thread libs on SCO UnixWare7. See the Installation chapter in the Reference Manual." 1>&2; exit 1; }; + fi + else + AC_MSG_RESULT("no") + fi +fi + +# Hack for Caldera OpenUNIX8 +# +if test "$with_named_thread" = "no" +then + AC_MSG_CHECKING("OpenUNIX8 native threads") + if expr "$SYSTEM_TYPE" : ".*OpenUNIX*" > /dev/null + then + if test -f /usr/lib/libthread.so -o -f /usr/lib/libthreadT.so + then + MYSQL_REMOVE_SOCKET_FROM_LIBS_HACK + if expr "$CC" : ".*gcc.*" + then + with_named_thread="-pthread -lsocket -lnsl" + else + with_named_thread="-Kthread -lsocket -lnsl" + fi + if expr "$SYSTEM_TYPE" : ".*unixware7.0.0" > /dev/null + then + AC_DEFINE(HAVE_UNIXWARE7_THREADS) + else + AC_DEFINE(HAVE_UNIXWARE7_POSIX) + fi + # We must have cc + AC_MSG_CHECKING("for gcc") + if expr "$CC" : ".*gcc.*" + then + CC="$CC -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + CXX="$CXX -pthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + else + CC="$CC -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + CXX="$CXX -Kthread -DUNIXWARE_7 -DHAVE_BROKEN_RWLOCK"; + fi + AC_MSG_RESULT("yes") + else + { echo "configure: error: Can't find thread libs on Caldera OpenUNIX 8. See the Installation chapter in the Reference Manual." 1>&2; exit 1; }; + fi + else + AC_MSG_RESULT("no") + fi +fi + +# Hack for Siemens UNIX +if test "$with_named_thread" = "no" -a "$with_mit_threads" = "no" +then + AC_MSG_CHECKING("Siemens threads") + if test -f /usr/lib/libxnet.so -a "$SYSTEM_TYPE" = "sni-sysv4" + then + LIBS="-lxnet $LIBS" + NON_THREADED_CLIENT_LIBS="$NON_THREADED_CLIENT_LIBS -lxnet" + with_named_thread="-Kthread $LDFLAGS -lxnet" + LD_FLAGS="" + CFLAGS="-Kthread $CFLAGS" + CXXFLAGS="-Kthread $CXXFLAGS" + AC_MSG_RESULT("yes") + else + AC_MSG_RESULT("no") + fi +fi + +# Use library named -lpthread +if test "$with_named_thread" = "no" -a "$with_pthread" = "yes" +then + with_named_thread="-lpthread" +fi + +#---END: + +# Hack for Solaris >= 2.5 +# We want both the new and the old interface + +if test "$with_named_thread" = "no" -a "$with_mit_threads" = "no" +then + AC_MSG_CHECKING("Solaris threads") + if test -f /usr/lib/libpthread.so -a -f /usr/lib/libthread.so + then + with_named_thread="-lpthread -lthread" + AC_MSG_RESULT("yes") + else + AC_MSG_RESULT("no") + fi +fi + +TOOLS_LIBS="$NON_THREADED_CLIENT_LIBS" + +# Should we use named pthread library ? +AC_MSG_CHECKING("named thread libs:") +if test "$with_named_thread" != "no" +then + LIBS="$with_named_thread $LIBS $with_named_thread" + TOOLS_LIBS="$with_named_thread $TOOLS_LIBS $with_named_thread" + with_posix_threads="yes" + with_mit_threads="no" + AC_MSG_RESULT("$with_named_thread") +else + AC_MSG_RESULT("no") + if test "$with_mit_threads" = "no" + then + # pthread_create is in standard libraries (As in BSDI 3.0) + AC_MSG_CHECKING("for pthread_create in -libc"); + AC_TRY_LINK( + [#include <pthread.h>], + [ (void) pthread_create((pthread_t*) 0,(pthread_attr_t*) 0, 0, 0); ], + with_posix_threads=yes, with_posix_threads=no) + AC_MSG_RESULT("$with_posix_threads") + if test "$with_posix_threads" = "no" + then + AC_MSG_CHECKING("for pthread_create in -lpthread"); + ac_save_LIBS="$LIBS" + ac_save_TOOLS_LIBS="$TOOLS_LIBS" + LIBS="$LIBS -lpthread" + TOOLS_LIBS="$TOOLS_LIBS -lpthread" + AC_TRY_LINK( + [#include <pthread.h>], + [ (void) pthread_create((pthread_t*) 0,(pthread_attr_t*) 0, 0, 0); ], + with_posix_threads=yes, with_posix_threads=no) + AC_MSG_RESULT("$with_posix_threads") + if test "$with_posix_threads" = "no" + then + LIBS=" $ac_save_LIBS -lpthreads" + TOOLS_LIBS=" $ac_save_TOOLS_LIBS -lpthreads" + AC_MSG_CHECKING("for pthread_create in -lpthreads"); + AC_TRY_LINK( + [#include <pthread.h>], + [ pthread_create((pthread_t*) 0,(pthread_attr_t*) 0, 0, 0); ], + with_posix_threads=yes, with_posix_threads=no) + AC_MSG_RESULT("$with_posix_threads") + if test "$with_posix_threads" = "no" + then + # This is for FreeBSD + LIBS="$ac_save_LIBS -pthread" + TOOLS_LIBS="$ac_save_TOOLS_LIBS -pthread" + AC_MSG_CHECKING("for pthread_create in -pthread"); + AC_TRY_LINK( + [#include <pthread.h>], + [ pthread_create((pthread_t*) 0,(pthread_attr_t*) 0, 0, 0); ], + with_posix_threads=yes, with_posix_threads=no) + AC_MSG_RESULT("$with_posix_threads") + if test "$with_posix_threads" = "no" + then + with_mit_threads="yes" + LIBS="$ac_save_LIBS" + TOOLS_LIBS="$ac_save_TOOLS_LIBS" + fi + fi + fi + fi + fi +fi + +#---START: Used in for client configure +# Must be checked after, because strtok_r may be in -lpthread +# On AIX strtok_r is in libc_r + +my_save_LIBS="$LIBS" +AC_CHECK_LIB(pthread,strtok_r) +LIBS="$my_save_LIBS" +if test "$ac_cv_lib_pthread_strtok_r" = "no" +then + AC_CHECK_LIB(c_r,strtok_r) + case "$with_osf32_threads---$target_os" in + # Don't keep -lc_r in LIBS; -pthread handles it magically + yes---* | *---freebsd* | *---hpux*) LIBS="$my_save_LIBS" ;; + + esac + AC_CHECK_FUNCS(strtok_r pthread_init) +else + AC_CHECK_FUNCS(strtok_r) +fi +#---END: + +# Check for dlopen, needed for user definable functions +# This must be checked after threads on AIX +# We only need this for mysqld, not for the clients. + +my_save_LIBS="$LIBS" +LIBS="" +AC_CHECK_LIB(dl,dlopen) +LIBDL=$LIBS +LIBS="$my_save_LIBS" +AC_SUBST(LIBDL) + +# System characteristics +case $SYSTEM_TYPE in + *netware* | *modesto*) ;; + *) +AC_SYS_RESTARTABLE_SYSCALLS + ;; +esac + +# Build optimized or debug version ? +# First check for gcc and g++ +if test "$ac_cv_prog_gcc" = "yes" +then + DEBUG_CFLAGS="-g" + DEBUG_OPTIMIZE_CC="-O" + OPTIMIZE_CFLAGS="$MAX_C_OPTIMIZE" +else + DEBUG_CFLAGS="-g" + DEBUG_OPTIMIZE_CC="" + OPTIMIZE_CFLAGS="-O" +fi +if test "$ac_cv_prog_cxx_g" = "yes" +then + DEBUG_CXXFLAGS="-g" + DEBUG_OPTIMIZE_CXX="-O" + OPTIMIZE_CXXFLAGS="$MAX_CXX_OPTIMIZE" +else + DEBUG_CXXFLAGS="-g" + DEBUG_OPTIMIZE_CXX="" + OPTIMIZE_CXXFLAGS="-O" +fi + +if expr "$SYSTEM_TYPE" : ".*netware.*" > /dev/null; then + DEBUG_CFLAGS="$DEBUG_CFLAGS -DDEBUG -sym internal,codeview4" + DEBUG_CXXFLAGS="$DEBUG_CXXFLAGS -DDEBUG -sym internal,codeview4" + OPTIMIZE_CFLAGS="$OPTIMIZE_CFLAGS -DNDEBUG" + OPTIMIZE_CXXFLAGS="$OPTIMIZE_CXXFLAGS -DNDEBUG" +fi + +AC_ARG_WITH(debug, + [ --without-debug Build a production version without debugging code], + [with_debug=$withval], + [with_debug=no]) +if test "$with_debug" = "yes" +then + # Medium debug. + CFLAGS="$DEBUG_CFLAGS $DEBUG_OPTIMIZE_CC -DDBUG_ON -DSAFE_MUTEX $CFLAGS" + CXXFLAGS="$DEBUG_CXXFLAGS $DEBUG_OPTIMIZE_CXX -DSAFE_MUTEX $CXXFLAGS" +elif test "$with_debug" = "full" +then + # Full debug. Very slow in some cases + CFLAGS="$DEBUG_CFLAGS -DDBUG_ON -DSAFE_MUTEX -DSAFEMALLOC $CFLAGS" + CXXFLAGS="$DEBUG_CXXFLAGS -DSAFE_MUTEX -DSAFEMALLOC $CXXFLAGS" +else + # Optimized version. No debug + CFLAGS="$OPTIMIZE_CFLAGS -DDBUG_OFF $CFLAGS" + CXXFLAGS="$OPTIMIZE_CXXFLAGS -DDBUG_OFF $CXXFLAGS" +fi + +# Force static compilation to avoid linking problems/get more speed +AC_ARG_WITH(mysqld-ldflags, + [ --with-mysqld-ldflags Extra linking arguments for mysqld], + [MYSQLD_EXTRA_LDFLAGS=$withval], + [MYSQLD_EXTRA_LDFLAGS=]) +AC_SUBST(MYSQLD_EXTRA_LDFLAGS) + +AC_ARG_WITH(client-ldflags, + [ --with-client-ldflags Extra linking arguments for clients], + [CLIENT_EXTRA_LDFLAGS=$withval], + [CLIENT_EXTRA_LDFLAGS=]) +AC_SUBST(CLIENT_EXTRA_LDFLAGS) + +AC_ARG_WITH(lib-ccflags, + [ --with-lib-ccflags Extra CC options for libraries], + [LIB_EXTRA_CCFLAGS=$withval], + [LIB_EXTRA_CCFLAGS=]) +AC_SUBST(LIB_EXTRA_CCFLAGS) + +# Avoid stupid bug on some OS +AC_ARG_WITH(low-memory, + [ --with-low-memory Try to use less memory to compile to avoid + memory limitations.], + [with_lowmem=$withval], + [with_lowmem=no]) +if test "$with_lowmem" = "yes" +then + if test "$ac_cv_prog_gcc" = "yes" + then + LM_CFLAGS="-fno-inline" + else + LM_CFLAGS="-O0" + fi +else + LM_CFLAGS="" +fi +AC_SUBST(LM_CFLAGS) + +AC_ARG_WITH(comment, + [ --with-comment Comment about compilation environment.], + [with_comment=$withval], + [with_comment=no]) +if test "$with_comment" != "no" +then + COMPILATION_COMMENT=$with_comment +else + COMPILATION_COMMENT="Source distribution" +fi +AC_SUBST(COMPILATION_COMMENT) + +AC_MSG_CHECKING("need of special linking flags") +if test "$IS_LINUX" = "true" -a "$ac_cv_prog_gcc" = "yes" -a "$all_is_static" != "yes" +then + LDFLAGS="$LDFLAGS -rdynamic" + AC_MSG_RESULT("-rdynamic") +else + AC_MSG_RESULT("none") +fi + +dnl Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_C_INLINE +AC_TYPE_OFF_T +AC_STRUCT_ST_RDEV +AC_HEADER_TIME +AC_STRUCT_TM +# AC_CHECK_SIZEOF return 0 when it does not find the size of a +# type. We want a error instead. +AC_CHECK_SIZEOF(char, 1) +if test "$ac_cv_sizeof_char" -eq 0 +then + AC_MSG_ERROR([No size for char type. +A likely cause for this could be that there isn't any +static libraries installed. You can verify this by checking if you have libm.a +in /lib, /usr/lib or some other standard place. If this is the problem, +install the static libraries and try again. If this isn't the problem, +examine config.log for possible errors. If you want to report this, use +'scripts/mysqlbug' and include at least the last 20 rows from config.log!]) +fi +AC_CHECK_SIZEOF(char*, 4) +AC_CHECK_SIZEOF(int, 4) +if test "$ac_cv_sizeof_int" -eq 0 +then + AC_MSG_ERROR("No size for int type.") +fi +AC_CHECK_SIZEOF(long, 4) +if test "$ac_cv_sizeof_long" -eq 0 +then + AC_MSG_ERROR("No size for long type.") +fi +AC_CHECK_SIZEOF(long long, 8) +if test "$ac_cv_sizeof_long_long" -eq 0 +then + AC_MSG_ERROR("MySQL needs a long long type.") +fi +# off_t is not a builtin type +MYSQL_CHECK_SIZEOF(off_t, 4) +if test "$ac_cv_sizeof_off_t" -eq 0 +then + AC_MSG_ERROR("MySQL needs a off_t type.") +fi +# This always gives a warning. Ignore it unless you are cross compiling +AC_C_BIGENDIAN +#---START: Used in for client configure +# Check base type of last arg to accept +MYSQL_TYPE_ACCEPT + +#---END: +# Find where the stack goes +MYSQL_STACK_DIRECTION +# We want to skip alloca on irix unconditionally. It may work on some version.. +MYSQL_FUNC_ALLOCA +# Do struct timespec have members tv_sec or ts_sec +MYSQL_TIMESPEC_TS +# Do we have the tzname variable +MYSQL_TZNAME +# Do the system files define ulong +MYSQL_CHECK_ULONG +# Do the system files define uchar +MYSQL_CHECK_UCHAR +# Do the system files define uint +MYSQL_CHECK_UINT +# Check for fp_except in ieeefp.h +MYSQL_CHECK_FP_EXCEPT +# Check for IN_ADDR_T +MYSQL_CHECK_IN_ADDR_T +# Do the c++ compiler have a bool type +MYSQL_CXX_BOOL +# Check some common bugs with gcc 2.8.# on sparc +if ! ( expr "$SYSTEM_TYPE" : ".*netware.*" > /dev/null ); then +MYSQL_CHECK_LONGLONG_TO_FLOAT +if test "$ac_cv_conv_longlong_to_float" != "yes" +then + AC_MSG_ERROR([Your compiler cannot convert a longlong value to a float! +If you are using gcc 2.8.# you should upgrade to egcs 1.0.3 or newer and try +again]); +fi +fi +MYSQL_PTHREAD_YIELD + +###################################################################### +# For readline/libedit (We simply move the mimimum amount of stuff from +# the readline/libedit configure.in here) + +dnl Checks for header files. +AC_CHECK_HEADERS(malloc.h sys/cdefs.h) + +dnl Checks for library functions. +AC_FUNC_ALLOCA +AC_PROG_GCC_TRADITIONAL +AC_TYPE_SIGNAL +AC_CHECK_FUNCS(re_comp regcomp strdup) + +AC_CHECK_HEADERS(vis.h) +AC_CHECK_FUNCS(strlcat strlcpy) +AC_CHECK_FUNCS(issetugid) +AC_CHECK_FUNCS(fgetln) +AC_CHECK_FUNCS(getline flockfile) + +# from old readline settting: + +MAKE_SHELL=/bin/sh +AC_SUBST(MAKE_SHELL) + +# Already-done: stdlib.h string.h unistd.h termios.h +AC_CHECK_HEADERS(varargs.h stdarg.h dirent.h locale.h ndir.h sys/dir.h \ + sys/file.h sys/ndir.h sys/ptem.h sys/pte.h sys/select.h sys/stream.h \ + sys/mman.h curses.h termcap.h termio.h termbits.h asm/termbits.h grp.h \ +paths.h semaphore.h) + +# Already-done: strcasecmp +AC_CHECK_FUNCS(lstat putenv select setenv setlocale strcoll tcgetattr) + +AC_STAT_MACROS_BROKEN +MYSQL_SIGNAL_CHECK +MYSQL_CHECK_GETPW_FUNCS +MYSQL_HAVE_TIOCGWINSZ +MYSQL_HAVE_FIONREAD +MYSQL_HAVE_TIOCSTAT +MYSQL_STRUCT_DIRENT_D_INO +MYSQL_TYPE_SIGHANDLER +if test "$with_named_curses" = "no" +then + MYSQL_CHECK_LIB_TERMCAP +else + TERMCAP_LIB="$with_named_curses" +fi +AC_SUBST(TERMCAP_LIB) + +# End of readline/libedit stuff +######################################################################### + +dnl Checks for library functions. + +# +# The following code disables intrinsic function support while we test for +# library functions. This is to avoid configure problems with Intel ecc +# compiler + +ORG_CFLAGS="$CFLAGS" +if test "$GCC" != "yes"; then + AC_SYS_COMPILER_FLAG(-nolib_inline,nolib_inline,CFLAGS,[],[]) +fi + +AC_FUNC_MMAP +AC_TYPE_SIGNAL +MYSQL_TYPE_QSORT +AC_FUNC_UTIME_NULL +AC_FUNC_VPRINTF + +AC_CHECK_FUNCS(alarm bcmp bfill bmove bzero chsize cuserid fchmod fcntl \ + fconvert fdatasync finite fpresetsticky fpsetmask fsync ftruncate \ + getcwd gethostbyaddr_r gethostbyname_r getpass getpassphrase getpwnam \ + getpwuid getrlimit getrusage getwd gmtime_r index initgroups isnan \ + localtime_r locking longjmp lrand48 madvise mallinfo memcpy memmove \ + mkstemp mlockall perror poll pread pthread_attr_create clock_gettime \ + pthread_attr_getstacksize pthread_attr_setprio pthread_attr_setschedparam \ + pthread_attr_setstacksize pthread_condattr_create pthread_getsequence_np \ + pthread_key_delete pthread_rwlock_rdlock pthread_setprio \ + pthread_setprio_np pthread_setschedparam pthread_sigmask readlink \ + realpath rename rint rwlock_init setupterm sighold sigset sigthreadmask \ + snprintf socket stpcpy strcasecmp strerror strnlen strpbrk strstr strtol \ + strtoll strtoul strtoull tell tempnam thr_setconcurrency vidattr) + +# isinf() could be a function or a macro (HPUX) +AC_MSG_CHECKING(for isinf with <math.h>) +AC_TRY_LINK([#include <math.h>], [float f = 0.0; isinf(f)], + AC_MSG_RESULT(yes) AC_DEFINE(HAVE_ISINF,,[isinf() macro or function]), + AC_MSG_RESULT(no)) + +CFLAGS="$ORG_CFLAGS" + +# Sanity check: We chould not have any fseeko symbol unless +# large_file_support=yes +AC_CHECK_FUNC(fseeko, +[if test "$large_file_support" = no -a "$IS_LINUX" = "true"; +then + AC_MSG_ERROR("Found fseeko symbol but large_file_support is not enabled!"); +fi] +) + +my_save_LIBS="$LIBS" +LIBS="$LIBS $LIBDL" +AC_CHECK_FUNCS(dlopen dlerror) +LIBS="$my_save_LIBS" + +# Check definition of gethostbyaddr_r (glibc2 defines this with 8 arguments) +ac_save_CXXFLAGS="$CXXFLAGS" +AC_CACHE_CHECK([style of gethost* routines], mysql_cv_gethost_style, +AC_LANG_SAVE +AC_LANG_CPLUSPLUS + +# Do not treat warnings as errors if we are linking against other libc +# this is to work around gcc not being permissive on non-system includes +# with respect to ANSI C++ +# We also remove the -fbranch-probabilities option as this will give warnings +# about not profiled code, which confuses configure +if test "$ac_cv_prog_gxx" = "yes" -a "$with_other_libc" = "no" +then + CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed 's/-fbranch-probabilities//'` +fi + +AC_TRY_COMPILE( +[#undef inline +#if !defined(SCO) && !defined(__osf__) && !defined(_REENTRANT) +#define _REENTRANT +#endif +#include <pthread.h> +#include <sys/types.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <arpa/inet.h> +#include <netdb.h>], +[int skr; + struct hostent *foo = gethostbyaddr_r((const char *) 0, + 0, 0, (struct hostent *) 0, (char *) NULL, 0, &skr); return (foo == 0);], +mysql_cv_gethost_style=solaris, mysql_cv_gethost_style=other)) +AC_LANG_RESTORE +CXXFLAGS="$ac_save_CXXFLAGS" +if test "$mysql_cv_gethost_style" = "solaris" +then + AC_DEFINE(HAVE_SOLARIS_STYLE_GETHOST) +fi + +#---START: Used in for client configure + +# Check definition of gethostbyname_r (glibc2.0.100 is different from Solaris) +ac_save_CXXFLAGS="$CXXFLAGS" +AC_CACHE_CHECK([style of gethostname_r routines], mysql_cv_gethostname_style, +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +if test "$ac_cv_prog_gxx" = "yes" -a "$with_other_libc" = "no" +then + CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed 's/-fbranch-probabilities//'` +fi +AC_TRY_COMPILE( +[#undef inline +#if !defined(SCO) && !defined(__osf__) && !defined(_REENTRANT) +#define _REENTRANT +#endif +#include <pthread.h> +#include <sys/types.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <arpa/inet.h> +#include <netdb.h>], +[int skr; + + skr = gethostbyname_r((const char *) 0, + (struct hostent*) 0, (char*) 0, 0, (struct hostent **) 0, &skr);], +mysql_cv_gethostname_style=glibc2, mysql_cv_gethostname_style=other)) +AC_LANG_RESTORE +CXXFLAGS="$ac_save_CXXFLAGS" +if test "$mysql_cv_gethostname_style" = "glibc2" +then + AC_DEFINE(HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE) +fi + +# Check 3rd argument of getthostbyname_r +ac_save_CXXFLAGS="$CXXFLAGS" +AC_CACHE_CHECK([3 argument to gethostname_r routines], mysql_cv_gethostname_arg, +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +if test "$ac_cv_prog_gxx" = "yes" -a "$with_other_libc" = "no" +then + CXXFLAGS=`echo "$CXXFLAGS -Werror" | sed 's/-fbranch-probabilities//'` +fi +AC_TRY_COMPILE( +[#undef inline +#if !defined(SCO) && !defined(__osf__) && !defined(_REENTRANT) +#define _REENTRANT +#endif +#include <pthread.h> +#include <sys/types.h> +#include <sys/socket.h> +#include <netinet/in.h> +#include <arpa/inet.h> +#include <netdb.h>], +[int skr; + + skr = gethostbyname_r((const char *) 0, (struct hostent*) 0, (struct hostent_data*) 0);], +mysql_cv_gethostname_arg=hostent_data, mysql_cv_gethostname_arg=char)) +AC_LANG_RESTORE +CXXFLAGS="$ac_save_CXXFLAGS" +if test "$mysql_cv_gethostname_arg" = "hostent_data" +then + AC_DEFINE(HAVE_GETHOSTBYNAME_R_RETURN_INT) +fi + + +if test "$with_mit_threads" = "no" +then + # Check definition of pthread_getspecific + AC_CACHE_CHECK("args to pthread_getspecific", mysql_cv_getspecific_args, + AC_TRY_COMPILE( +[#if !defined(SCO) && !defined(__osf__) && !defined(_REENTRANT) +#define _REENTRANT +#endif +#define _POSIX_PTHREAD_SEMANTICS +#include <pthread.h> ], +[ void *pthread_getspecific(pthread_key_t key); +pthread_getspecific((pthread_key_t) NULL); ], +mysql_cv_getspecific_args=POSIX, mysql_cv_getspecific_args=other)) + if test "$mysql_cv_getspecific_args" = "other" + then + AC_DEFINE(HAVE_NONPOSIX_PTHREAD_GETSPECIFIC) + fi + + # Check definition of pthread_mutex_init + AC_CACHE_CHECK("args to pthread_mutex_init", mysql_cv_mutex_init_args, + AC_TRY_COMPILE( +[#if !defined(SCO) && !defined(__osf__) +#define _REENTRANT +#endif +#define _POSIX_PTHREAD_SEMANTICS +#include <pthread.h> ], +[ + pthread_mutexattr_t attr; + pthread_mutex_t mp; + pthread_mutex_init(&mp,&attr); ], +mysql_cv_mutex_init_args=POSIX, mysql_cv_mutex_init_args=other)) + if test "$mysql_cv_mutex_init_args" = "other" + then + AC_DEFINE(HAVE_NONPOSIX_PTHREAD_MUTEX_INIT) + fi +fi +#---END: + +#---START: Used in for client configure +# Check definition of readdir_r +AC_CACHE_CHECK("args to readdir_r", mysql_cv_readdir_r, +AC_TRY_LINK( +[#if !defined(SCO) && !defined(__osf__) +#define _REENTRANT +#endif +#define _POSIX_PTHREAD_SEMANTICS +#include <pthread.h> +#include <dirent.h>], +[ int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result); +readdir_r((DIR *) NULL, (struct dirent *) NULL, (struct dirent **) NULL); ], +mysql_cv_readdir_r=POSIX, mysql_cv_readdir_r=other)) +if test "$mysql_cv_readdir_r" = "POSIX" +then + AC_DEFINE(HAVE_READDIR_R) +fi + +# Check definition of posix sigwait() +AC_CACHE_CHECK("style of sigwait", mysql_cv_sigwait, +AC_TRY_LINK( +[#if !defined(SCO) && !defined(__osf__) +#define _REENTRANT +#endif +#define _POSIX_PTHREAD_SEMANTICS +#include <pthread.h> +#include <signal.h>], +[#ifndef _AIX +sigset_t set; +int sig; +sigwait(&set,&sig); +#endif], +mysql_cv_sigwait=POSIX, mysql_cv_sigwait=other)) +if test "$mysql_cv_sigwait" = "POSIX" +then + AC_DEFINE(HAVE_SIGWAIT) +fi + +if test "$mysql_cv_sigwait" != "POSIX" +then +unset mysql_cv_sigwait +# Check definition of posix sigwait() +AC_CACHE_CHECK("style of sigwait", mysql_cv_sigwait, +AC_TRY_LINK( +[#if !defined(SCO) && !defined(__osf__) +#define _REENTRANT +#endif +#define _POSIX_PTHREAD_SEMANTICS +#include <pthread.h> +#include <signal.h>], +[sigset_t set; +int sig; +sigwait(&set);], +mysql_cv_sigwait=NONPOSIX, mysql_cv_sigwait=other)) +if test "$mysql_cv_sigwait" = "NONPOSIX" +then + AC_DEFINE(HAVE_NONPOSIX_SIGWAIT) +fi +fi +#---END: + +# Check if pthread_attr_setscope() exists +AC_CACHE_CHECK("for pthread_attr_setscope", mysql_cv_pthread_attr_setscope, +AC_TRY_LINK( +[#if !defined(SCO) && !defined(__osf__) +#define _REENTRANT +#endif +#define _POSIX_PTHREAD_SEMANTICS +#include <pthread.h>], +[pthread_attr_t thr_attr; +pthread_attr_setscope(&thr_attr,0);], +mysql_cv_pthread_attr_setscope=yes, mysql_cv_pthread_attr_setscope=no)) +if test "$mysql_cv_pthread_attr_setscope" = "yes" +then + AC_DEFINE(HAVE_PTHREAD_ATTR_SETSCOPE) +fi + +# Check for bad includes +AC_MSG_CHECKING("can netinet files be included") +AC_TRY_COMPILE( +[#include <sys/types.h> +#include <sys/socket.h> +#include <netinet/in_systm.h> +#include <netinet/in.h> +#include <netinet/ip.h> +#include <netinet/tcp.h>], +[ printf("1\n"); ], +netinet_inc=yes, netinet_inc=no) +if test "$netinet_inc" = "no" +then + AC_DEFINE(HAVE_BROKEN_NETINET_INCLUDES) +fi +AC_MSG_RESULT("$netinet_inc") + +# Some usefull subst +AC_SUBST(CC) +AC_SUBST(GXX) + +# Output results +AC_OUTPUT(Makefile dnl + , , [ + test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h + ]) |