Commit 46de0999 authored by unknown's avatar unknown

Merge tulin@bk-internal.mysql.com:/home/bk/mysql-4.1-ndb

into poseidon.bredbandsbolaget.se:/home/tomas/mysql-4.1-ndb

parents 86ab1dd2 dfa8ee36
VERSION_FLAGS := -DNDB_DEBUG -DUSE_EMULATED_JAM -DVM_TRACE -DERROR_INSERT -DARRAY_GUARD
#-DDEBUG_TRANSPORTER
###
#
# 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)
###
#
# 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)
###
#
# Defines
SHELL := /bin/sh
C++ := gcc$(GCC_VERSION)
CC := gcc$(GCC_VERSION)
AR_RCS := $(PURE) ar rcs
SO := gcc$(GCC_VERSION) -shared -lpthread -o
#SO := gcc$(GCC_VERSION) -shared -o
MAKEDEPEND := gcc$(GCC_VERSION) -M
#MAKEDEPEND := gcc$(GCC_VERSION) -M -nostdinc -nostdinc++
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 =
#CCFLAGS_TOP = -DSAFE_MUTEX
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 = -lrt -lpthread $(NDB_TOP)/src/common/portlib/gcc.cpp
#LDFLAGS_LAST = -lrt $(NDB_TOP)/src/common/portlib/gcc.cpp $(NDB_TOP)/../mysys/libmysys.a $(NDB_TOP)/../dbug/libdbug.a $(NDB_TOP)/../regex/libregex.a $(NDB_TOP)/../strings/libmystrings.a -lpthread
###
#
# 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)
###
#
# 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)
###
#
# 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++
###
#
# 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)
VERSION_FLAGS := -DNDB_RELEASE -DUSE_EMULATED_JAM -DNDEBUG
VERSION_FLAGS := -DNDB_RELEASE -DUSE_EMULATED_JAM -DNDEBUG -DVM_TRACE -DERROR_INSERT -DARRAY_GUARD
###
#
# 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)
###
#
# 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)
###
#
# 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)
###
#
# 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
###
#
# 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)
###
#
# 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)
###
#
# 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)
###
#
# 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
#! /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
if [ -z "$NDB_SHM" ]
then
NDB_SHM=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
NDB_ODBC=N
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
# defaults
NDB_VERSION=DEBUG
PACKAGE=
VERSION=
parse_arguments() {
for arg do
case "$arg" in
-GCC) NDB_COMPILER=GCC ;;
-R) NDB_VERSION=RELEASE ;;
-D) NDB_VERSION=DEBUG ;;
--PACKAGE=*) PACKAGE=`echo "$arg" | sed -e "s;--PACKAGE=;;"` ;;
--VERSION=*) VERSION=`echo "$arg" | sed -e "s;--VERSION=;;"` ;;
*)
echo "Unknown argument '$arg'"
exit 1
;;
esac
done
}
parse_arguments "$@"
(
echo "# This file was automatically generated `date`"
echo "NDB_OS := $NDB_OS"
echo "NDB_ARCH := $NDB_ARCH"
echo "NDB_COMPILER := $NDB_COMPILER"
echo "NDB_VERSION := $NDB_VERSION"
echo "NDB_SCI := $NDB_SCI"
echo "NDB_SHM := $NDB_SHM"
echo "NDB_ODBC := $NDB_ODBC"
echo "TERMCAP_LIB := $TERMCAP_LIB"
echo "PACKAGE := $PACKAGE"
echo "VERSION := $VERSION"
) > $NDB_TOP/config/config.mk
exit 0
# 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:
# 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 ---------------------------------------------------------------------------
/* config.h.in. Generated from configure.in by autoheader. */
/* acconfig.h
This file is in the public domain.
Descriptive text for the C preprocessor macros that
the distributed Autoconf macros can define.
No software package will use all of them; autoheader copies the ones
your configure.in uses into your configuration header file templates.
The entries are in sort -df order: alphabetical, case insensitive,
ignoring punctuation (such as underscores). Although this order
can split up related entries, it makes it easier to check whether
a given entry is in the file.
Leave the following blank line there!! Autoheader needs it. */
#undef C_ALLOCA
#undef CRAY_STACKSEG_END
/* Define the default charset name */
#undef MYSQL_DEFAULT_CHARSET_NAME
/* Define the default charset name */
#undef MYSQL_DEFAULT_COLLATION_NAME
/* Version of .frm files */
#undef DOT_FRM_VERSION
/* If LOAD DATA LOCAL INFILE should be enabled by default */
#undef ENABLED_LOCAL_INFILE
/* READLINE: */
#undef FIONREAD_IN_SYS_IOCTL
/* READLINE: Define if your system defines TIOCGWINSZ in sys/ioctl.h. */
#undef GWINSZ_IN_SYS_IOCTL
/* Handing of large files on Solaris 2.6 */
#undef _FILE_OFFSET_BITS
/* Do we have FIONREAD */
#undef FIONREAD_IN_SYS_IOCTL
/* Do we need to define _GNU_SOURCE */
#undef _GNU_SOURCE
/* atomic_add() from <asm/atomic.h> (Linux only) */
#undef HAVE_ATOMIC_ADD
/* atomic_sub() from <asm/atomic.h> (Linux only) */
#undef HAVE_ATOMIC_SUB
/* If we have a working alloca() implementation */
#undef HAVE_ALLOCA
/* bool is not defined by all C++ compilators */
#undef HAVE_BOOL
/* Have berkeley db installed */
#undef HAVE_BERKELEY_DB
/* DSB style signals ? */
#undef HAVE_BSD_SIGNALS
/* Can netinet be included */
#undef HAVE_BROKEN_NETINET_INCLUDES
/* READLINE: */
#undef HAVE_BSD_SIGNALS
/* Define charsets you want */
#undef HAVE_CHARSET_armscii8
#undef HAVE_CHARSET_ascii
#undef HAVE_CHARSET_big5
#undef HAVE_CHARSET_cp1250
#undef HAVE_CHARSET_cp1251
#undef HAVE_CHARSET_cp1256
#undef HAVE_CHARSET_cp1257
#undef HAVE_CHARSET_cp850
#undef HAVE_CHARSET_cp852
#undef HAVE_CHARSET_cp866
#undef HAVE_CHARSET_dec8
#undef HAVE_CHARSET_euckr
#undef HAVE_CHARSET_gb2312
#undef HAVE_CHARSET_gbk
#undef HAVE_CHARSET_greek
#undef HAVE_CHARSET_hebrew
#undef HAVE_CHARSET_hp8
#undef HAVE_CHARSET_keybcs2
#undef HAVE_CHARSET_koi8r
#undef HAVE_CHARSET_koi8u
#undef HAVE_CHARSET_latin1
#undef HAVE_CHARSET_latin2
#undef HAVE_CHARSET_latin5
#undef HAVE_CHARSET_latin7
#undef HAVE_CHARSET_macce
#undef HAVE_CHARSET_macroman
#undef HAVE_CHARSET_sjis
#undef HAVE_CHARSET_swe7
#undef HAVE_CHARSET_tis620
#undef HAVE_CHARSET_ucs2
#undef HAVE_CHARSET_ujis
#undef HAVE_CHARSET_utf8
/* ZLIB and compress: */
#undef HAVE_COMPRESS
/* Define if we are using OSF1 DEC threads */
#undef HAVE_DEC_THREADS
/* Define if we are using OSF1 DEC threads on 3.2 */
#undef HAVE_DEC_3_2_THREADS
/* fp_except from ieeefp.h */
#undef HAVE_FP_EXCEPT
/* READLINE: */
#undef HAVE_GETPW_DECLS
/* Solaris define gethostbyname_r with 5 arguments. glibc2 defines
this with 6 arguments */
#undef HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE
/* In OSF 4.0f the 3'd argument to gethostname_r is hostent_data * */
#undef HAVE_GETHOSTBYNAME_R_RETURN_INT
/* Define if int8, int16 and int32 types exist */
#undef HAVE_INT_8_16_32
/* Using Innobase DB */
#undef HAVE_INNOBASE_DB
/* Using old ISAM tables */
#undef HAVE_ISAM
/* Define if we have GNU readline */
#undef HAVE_LIBREADLINE
/* Define if have -lwrap */
#undef HAVE_LIBWRAP
/* Define if we are using Xavier Leroy's LinuxThreads */
#undef HAVE_LINUXTHREADS
/* Do we have lstat */
#undef HAVE_LSTAT
/* Do we use user level threads */
#undef HAVE_mit_thread
/* Using Ndb Cluster DB */
#undef HAVE_NDBCLUSTER_DB
/* For some non posix threads */
#undef HAVE_NONPOSIX_PTHREAD_GETSPECIFIC
/* For some non posix threads */
#undef HAVE_NONPOSIX_PTHREAD_MUTEX_INIT
/* READLINE: */
#undef HAVE_POSIX_SIGNALS
/* Well.. */
#undef HAVE_POSIX_SIGSETJMP
/* sigwait with one argument */
#undef HAVE_NONPOSIX_SIGWAIT
/* ORBIT */
#undef HAVE_ORBIT
/* pthread_attr_setscope */
#undef HAVE_PTHREAD_ATTR_SETSCOPE
/* pthread_yield that doesn't take any arguments */
#undef HAVE_PTHREAD_YIELD_ZERO_ARG
/* pthread_yield function with one argument */
#undef HAVE_PTHREAD_YIELD_ONE_ARG
/* POSIX readdir_r */
#undef HAVE_READDIR_R
/* Have Gemini db installed */
#undef HAVE_GEMINI_DB
/* POSIX sigwait */
#undef HAVE_SIGWAIT
/* crypt */
#undef HAVE_CRYPT
/* If we want to have query cache */
#undef HAVE_QUERY_CACHE
/* Solaris define gethostbyaddr_r with 7 arguments. glibc2 defines
this with 8 arguments */
#undef HAVE_SOLARIS_STYLE_GETHOST
/* MIT pthreads does not support connecting with unix sockets */
#undef HAVE_THREADS_WITHOUT_SOCKETS
/* Timespec has a ts_sec instead of tv_sev */
#undef HAVE_TIMESPEC_TS_SEC
/* Have the tzname variable */
#undef HAVE_TZNAME
/* Define if the system files define uchar */
#undef HAVE_UCHAR
/* Define if the system files define uint */
#undef HAVE_UINT
/* Define if the system files define ulong */
#undef HAVE_ULONG
/* Define if the system files define in_addr_t */
#undef HAVE_IN_ADDR_T
/* UNIXWARE7 threads are not posix */
#undef HAVE_UNIXWARE7_THREADS
/* new UNIXWARE7 threads that are not yet posix */
#undef HAVE_UNIXWARE7_POSIX
/* OpenSSL */
#undef HAVE_OPENSSL
/* READLINE: */
#undef HAVE_USG_SIGHOLD
/* Virtual IO */
#undef HAVE_VIO
/* Handling of large files on Solaris 2.6 */
#undef _LARGEFILE_SOURCE
/* Handling of large files on Solaris 2.6 */
#undef _LARGEFILE64_SOURCE
/* Define if want -lwrap */
#undef LIBWRAP
/* Define to machine type name eg sun10 */
#undef MACHINE_TYPE
#undef MUST_REINSTALL_SIGHANDLERS
/* Defined to used character set */
#undef MY_CHARSET_CURRENT
/* READLINE: no sys file*/
#undef NO_SYS_FILE
/* Program name */
#undef PACKAGE
/* mysql client protocoll version */
#undef PROTOCOL_VERSION
/* Define if qsort returns void */
#undef QSORT_TYPE_IS_VOID
/* Define as the return type of qsort (int or void). */
#undef RETQSORTTYPE
/* Size of off_t */
#undef SIZEOF_OFF_T
/* Define as the base type of the last arg to accept */
#undef SOCKET_SIZE_TYPE
/* Last argument to get/setsockopt */
#undef SOCKOPT_OPTLEN_TYPE
#undef SPEED_T_IN_SYS_TYPES
#undef SPRINTF_RETURNS_PTR
#undef SPRINTF_RETURNS_INT
#undef SPRINTF_RETURNS_GARBAGE
/* Needed to get large file support on HPUX 10.20 */
#undef __STDC_EXT__
#undef STACK_DIRECTION
#undef STRCOLL_BROKEN
#undef STRUCT_DIRENT_HAS_D_FILENO
#undef STRUCT_DIRENT_HAS_D_INO
#undef STRUCT_WINSIZE_IN_SYS_IOCTL
#undef STRUCT_WINSIZE_IN_TERMIOS
/* Define to name of system eg solaris*/
#undef SYSTEM_TYPE
/* Define if you want to have threaded code. This may be undef on client code */
#undef THREAD
/* Should be client be thread safe */
#undef THREAD_SAFE_CLIENT
/* READLINE: */
#undef TIOCSTAT_IN_SYS_IOCTL
/* Use multi-byte character routines */
#undef USE_MB
#undef USE_MB_IDENT
/* the pstack backtrace library */
#undef USE_PSTACK
/* Use MySQL RAID */
#undef USE_RAID
/* Program version */
#undef VERSION
/* READLINE: */
#undef VOID_SIGHANDLER
/* used libedit interface (can we dereference result of rl_completion_entry_function?) */
#undef USE_LIBEDIT_INTERFACE
/* used new readline interface (does rl_completion_func_t and rl_compentry_func_t defined?) */
#undef USE_NEW_READLINE_INTERFACE
/* macro for libedit */
#undef HAVE_VIS_H
#undef HAVE_FGETLN
#undef HAVE_ISSETUGID
#undef HAVE_STRLCPY
#undef HAVE_GETLINE
#undef HAVE_FLOCKFILE
#undef HAVE_SYS_TYPES_H
#undef HAVE_SYS_CDEFS_H
/* Leave that blank line there!! Autoheader needs it.
If you're adding to this file, keep in mind:
The entries are in sort -df order: alphabetical, case insensitive,
ignoring punctuation (such as underscores). */
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
systems. This function is required for `alloca.c' support on those systems.
*/
#undef CRAY_STACKSEG_END
/* Define to 1 if using `alloca.c'. */
#undef C_ALLOCA
/* Define to 1 if you have the `alarm' function. */
#undef HAVE_ALARM
/* Define to 1 if you have `alloca', as a function or macro. */
#undef HAVE_ALLOCA
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
*/
#undef HAVE_ALLOCA_H
/* Define to 1 if you have the <arpa/inet.h> header file. */
#undef HAVE_ARPA_INET_H
/* Define to 1 if you have the <asm/termbits.h> header file. */
#undef HAVE_ASM_TERMBITS_H
/* Define to 1 if you have the `bcmp' function. */
#undef HAVE_BCMP
/* Define to 1 if you have the `bfill' function. */
#undef HAVE_BFILL
/* Define to 1 if you have the `bmove' function. */
#undef HAVE_BMOVE
/* Define to 1 if you have the `bzero' function. */
#undef HAVE_BZERO
/* Define to 1 if you have the `chsize' function. */
#undef HAVE_CHSIZE
/* Define to 1 if you have the `clock_gettime' function. */
#undef HAVE_CLOCK_GETTIME
/* Define to 1 if you have the <crypt.h> header file. */
#undef HAVE_CRYPT_H
/* Define to 1 if you have the <curses.h> header file. */
#undef HAVE_CURSES_H
/* Define to 1 if you have the `cuserid' function. */
#undef HAVE_CUSERID
/* Define to 1 if you have the <dirent.h> header file. */
#undef HAVE_DIRENT_H
/* Define to 1 if you have the `dlerror' function. */
#undef HAVE_DLERROR
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define to 1 if you have the `dlopen' function. */
#undef HAVE_DLOPEN
/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
#undef HAVE_DOPRNT
/* Define to 1 if you have the `fchmod' function. */
#undef HAVE_FCHMOD
/* Define to 1 if you have the `fcntl' function. */
#undef HAVE_FCNTL
/* Define to 1 if you have the <fcntl.h> header file. */
#undef HAVE_FCNTL_H
/* Define to 1 if you have the `fconvert' function. */
#undef HAVE_FCONVERT
/* Define to 1 if you have the `fdatasync' function. */
#undef HAVE_FDATASYNC
/* Define to 1 if you have the `fgetln' function. */
#undef HAVE_FGETLN
/* Define to 1 if you have the `finite' function. */
#undef HAVE_FINITE
/* Define to 1 if you have the <floatingpoint.h> header file. */
#undef HAVE_FLOATINGPOINT_H
/* Define to 1 if you have the <float.h> header file. */
#undef HAVE_FLOAT_H
/* Define to 1 if you have the `flockfile' function. */
#undef HAVE_FLOCKFILE
/* Define to 1 if you have the `fpresetsticky' function. */
#undef HAVE_FPRESETSTICKY
/* Define to 1 if you have the `fpsetmask' function. */
#undef HAVE_FPSETMASK
/* Define to 1 if you have the `fsync' function. */
#undef HAVE_FSYNC
/* Define to 1 if you have the `ftruncate' function. */
#undef HAVE_FTRUNCATE
/* Define to 1 if you have the `getcwd' function. */
#undef HAVE_GETCWD
/* Define to 1 if you have the `gethostbyaddr_r' function. */
#undef HAVE_GETHOSTBYADDR_R
/* Define to 1 if you have the `gethostbyname_r' function. */
#undef HAVE_GETHOSTBYNAME_R
/* Define to 1 if you have the `getline' function. */
#undef HAVE_GETLINE
/* Define to 1 if you have the `getpagesize' function. */
#undef HAVE_GETPAGESIZE
/* Define to 1 if you have the `getpass' function. */
#undef HAVE_GETPASS
/* Define to 1 if you have the `getpassphrase' function. */
#undef HAVE_GETPASSPHRASE
/* Define to 1 if you have the `getpwnam' function. */
#undef HAVE_GETPWNAM
/* Define to 1 if you have the `getpwuid' function. */
#undef HAVE_GETPWUID
/* Define to 1 if you have the `getrlimit' function. */
#undef HAVE_GETRLIMIT
/* Define to 1 if you have the `getrusage' function. */
#undef HAVE_GETRUSAGE
/* Define to 1 if you have the `getwd' function. */
#undef HAVE_GETWD
/* Define to 1 if you have the `gmtime_r' function. */
#undef HAVE_GMTIME_R
/* Define to 1 if you have the <grp.h> header file. */
#undef HAVE_GRP_H
/* Define to 1 if you have the <ieeefp.h> header file. */
#undef HAVE_IEEEFP_H
/* Define to 1 if you have the `index' function. */
#undef HAVE_INDEX
/* Define to 1 if you have the `initgroups' function. */
#undef HAVE_INITGROUPS
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* isinf() macro or function */
#undef HAVE_ISINF
/* Define to 1 if you have the `isnan' function. */
#undef HAVE_ISNAN
/* Define to 1 if you have the `issetugid' function. */
#undef HAVE_ISSETUGID
/* Define to 1 if you have the `bind' library (-lbind). */
#undef HAVE_LIBBIND
/* Define to 1 if you have the `compat' library (-lcompat). */
#undef HAVE_LIBCOMPAT
/* Define to 1 if you have the `crypt' library (-lcrypt). */
#undef HAVE_LIBCRYPT
/* Define to 1 if you have the `c_r' library (-lc_r). */
#undef HAVE_LIBC_R
/* Define to 1 if you have the `dl' library (-ldl). */
#undef HAVE_LIBDL
/* Define to 1 if you have the `gen' library (-lgen). */
#undef HAVE_LIBGEN
/* Define to 1 if you have the `m' library (-lm). */
#undef HAVE_LIBM
/* Define to 1 if you have the `nsl' library (-lnsl). */
#undef HAVE_LIBNSL
/* Define to 1 if you have the `nsl_r' library (-lnsl_r). */
#undef HAVE_LIBNSL_R
/* Define to 1 if you have the `posix4' library (-lposix4). */
#undef HAVE_LIBPOSIX4
/* Define to 1 if you have the `pthread' library (-lpthread). */
#undef HAVE_LIBPTHREAD
/* Define to 1 if you have the `socket' library (-lsocket). */
#undef HAVE_LIBSOCKET
/* Define to 1 if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H
/* Define to 1 if you have the <linux/config.h> header file. */
#undef HAVE_LINUX_CONFIG_H
/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
/* Define to 1 if you have the `localtime_r' function. */
#undef HAVE_LOCALTIME_R
/* Define to 1 if you have the `locking' function. */
#undef HAVE_LOCKING
/* Define to 1 if you have the `longjmp' function. */
#undef HAVE_LONGJMP
/* Define to 1 if you have the `lrand48' function. */
#undef HAVE_LRAND48
/* Define to 1 if you have the `lstat' function. */
#undef HAVE_LSTAT
/* Define to 1 if you have the `madvise' function. */
#undef HAVE_MADVISE
/* Define to 1 if you have the `mallinfo' function. */
#undef HAVE_MALLINFO
/* Define to 1 if you have the <malloc.h> header file. */
#undef HAVE_MALLOC_H
/* Define to 1 if you have the `memcpy' function. */
#undef HAVE_MEMCPY
/* Define to 1 if you have the `memmove' function. */
#undef HAVE_MEMMOVE
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the `mkstemp' function. */
#undef HAVE_MKSTEMP
/* Define to 1 if you have the `mlockall' function. */
#undef HAVE_MLOCKALL
/* Define to 1 if you have a working `mmap' system call. */
#undef HAVE_MMAP
/* Define to 1 if you have the <ndir.h> header file. */
#undef HAVE_NDIR_H
/* Define to 1 if you have the <netinet/in.h> header file. */
#undef HAVE_NETINET_IN_H
/* Define to 1 if you have the <paths.h> header file. */
#undef HAVE_PATHS_H
/* Define to 1 if you have the `perror' function. */
#undef HAVE_PERROR
/* Define to 1 if you have the `poll' function. */
#undef HAVE_POLL
/* Define to 1 if you have the `pread' function. */
#undef HAVE_PREAD
/* Define to 1 if you have the `pthread_attr_create' function. */
#undef HAVE_PTHREAD_ATTR_CREATE
/* Define to 1 if you have the `pthread_attr_getstacksize' function. */
#undef HAVE_PTHREAD_ATTR_GETSTACKSIZE
/* Define to 1 if you have the `pthread_attr_setprio' function. */
#undef HAVE_PTHREAD_ATTR_SETPRIO
/* Define to 1 if you have the `pthread_attr_setschedparam' function. */
#undef HAVE_PTHREAD_ATTR_SETSCHEDPARAM
/* Define to 1 if you have the `pthread_attr_setstacksize' function. */
#undef HAVE_PTHREAD_ATTR_SETSTACKSIZE
/* Define to 1 if you have the `pthread_condattr_create' function. */
#undef HAVE_PTHREAD_CONDATTR_CREATE
/* Define to 1 if you have the `pthread_getsequence_np' function. */
#undef HAVE_PTHREAD_GETSEQUENCE_NP
/* Define to 1 if you have the `pthread_init' function. */
#undef HAVE_PTHREAD_INIT
/* Define to 1 if you have the `pthread_key_delete' function. */
#undef HAVE_PTHREAD_KEY_DELETE
/* Define to 1 if you have the `pthread_rwlock_rdlock' function. */
#undef HAVE_PTHREAD_RWLOCK_RDLOCK
/* Define to 1 if you have the `pthread_setprio' function. */
#undef HAVE_PTHREAD_SETPRIO
/* Define to 1 if you have the `pthread_setprio_np' function. */
#undef HAVE_PTHREAD_SETPRIO_NP
/* Define to 1 if you have the `pthread_setschedparam' function. */
#undef HAVE_PTHREAD_SETSCHEDPARAM
/* Define to 1 if you have the `pthread_sigmask' function. */
#undef HAVE_PTHREAD_SIGMASK
/* Define to 1 if you have the `putenv' function. */
#undef HAVE_PUTENV
/* Define to 1 if you have the <pwd.h> header file. */
#undef HAVE_PWD_H
/* Define to 1 if you have the `readlink' function. */
#undef HAVE_READLINK
/* Define to 1 if you have the `realpath' function. */
#undef HAVE_REALPATH
/* Define to 1 if you have the `regcomp' function. */
#undef HAVE_REGCOMP
/* Define to 1 if you have the `rename' function. */
#undef HAVE_RENAME
/* Define to 1 if system calls automatically restart after interruption by a
signal. */
#undef HAVE_RESTARTABLE_SYSCALLS
/* Define to 1 if you have the `re_comp' function. */
#undef HAVE_RE_COMP
/* Define to 1 if you have the `rint' function. */
#undef HAVE_RINT
/* Define to 1 if you have the `rwlock_init' function. */
#undef HAVE_RWLOCK_INIT
/* Define to 1 if you have the <sched.h> header file. */
#undef HAVE_SCHED_H
/* Define to 1 if you have the `select' function. */
#undef HAVE_SELECT
/* Define to 1 if you have the <select.h> header file. */
#undef HAVE_SELECT_H
/* Define to 1 if you have the <semaphore.h> header file. */
#undef HAVE_SEMAPHORE_H
/* Define to 1 if you have the `setenv' function. */
#undef HAVE_SETENV
/* Define to 1 if you have the `setlocale' function. */
#undef HAVE_SETLOCALE
/* Define to 1 if you have the `setupterm' function. */
#undef HAVE_SETUPTERM
/* Define to 1 if you have the `sighold' function. */
#undef HAVE_SIGHOLD
/* Define to 1 if you have the `sigset' function. */
#undef HAVE_SIGSET
/* Define to 1 if you have the `sigthreadmask' function. */
#undef HAVE_SIGTHREADMASK
/* Define to 1 if you have the `snprintf' function. */
#undef HAVE_SNPRINTF
/* Define to 1 if you have the `socket' function. */
#undef HAVE_SOCKET
/* Define to 1 if you have the <stdarg.h> header file. */
#undef HAVE_STDARG_H
/* Define to 1 if you have the <stddef.h> header file. */
#undef HAVE_STDDEF_H
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the `stpcpy' function. */
#undef HAVE_STPCPY
/* Define to 1 if you have the `strcasecmp' function. */
#undef HAVE_STRCASECMP
/* Define to 1 if you have the `strcoll' function. */
#undef HAVE_STRCOLL
/* Define to 1 if you have the `strdup' function. */
#undef HAVE_STRDUP
/* Define to 1 if you have the `strerror' function. */
#undef HAVE_STRERROR
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the `strlcat' function. */
#undef HAVE_STRLCAT
/* Define to 1 if you have the `strlcpy' function. */
#undef HAVE_STRLCPY
/* Define to 1 if you have the `strnlen' function. */
#undef HAVE_STRNLEN
/* Define to 1 if you have the `strpbrk' function. */
#undef HAVE_STRPBRK
/* Define to 1 if you have the `strstr' function. */
#undef HAVE_STRSTR
/* Define to 1 if you have the `strtok_r' function. */
#undef HAVE_STRTOK_R
/* Define to 1 if you have the `strtol' function. */
#undef HAVE_STRTOL
/* Define to 1 if you have the `strtoll' function. */
#undef HAVE_STRTOLL
/* Define to 1 if you have the `strtoul' function. */
#undef HAVE_STRTOUL
/* Define to 1 if you have the `strtoull' function. */
#undef HAVE_STRTOULL
/* Define to 1 if `st_rdev' is member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_RDEV
/* Define to 1 if your `struct stat' has `st_rdev'. Deprecated, use
`HAVE_STRUCT_STAT_ST_RDEV' instead. */
#undef HAVE_ST_RDEV
/* Define to 1 if you have the <synch.h> header file. */
#undef HAVE_SYNCH_H
/* Define to 1 if you have the <sys/cdefs.h> header file. */
#undef HAVE_SYS_CDEFS_H
/* Define to 1 if you have the <sys/dir.h> header file. */
#undef HAVE_SYS_DIR_H
/* Define to 1 if you have the <sys/file.h> header file. */
#undef HAVE_SYS_FILE_H
/* Define to 1 if you have the <sys/ioctl.h> header file. */
#undef HAVE_SYS_IOCTL_H
/* Define to 1 if you have the <sys/malloc.h> header file. */
#undef HAVE_SYS_MALLOC_H
/* Define to 1 if you have the <sys/mman.h> header file. */
#undef HAVE_SYS_MMAN_H
/* Define to 1 if you have the <sys/ndir.h> header file. */
#undef HAVE_SYS_NDIR_H
/* Define to 1 if you have the <sys/ptem.h> header file. */
#undef HAVE_SYS_PTEM_H
/* Define to 1 if you have the <sys/pte.h> header file. */
#undef HAVE_SYS_PTE_H
/* Define to 1 if you have the <sys/select.h> header file. */
#undef HAVE_SYS_SELECT_H
/* Define to 1 if you have the <sys/socket.h> header file. */
#undef HAVE_SYS_SOCKET_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/stream.h> header file. */
#undef HAVE_SYS_STREAM_H
/* Define to 1 if you have the <sys/timeb.h> header file. */
#undef HAVE_SYS_TIMEB_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <sys/un.h> header file. */
#undef HAVE_SYS_UN_H
/* Define to 1 if you have the <sys/utime.h> header file. */
#undef HAVE_SYS_UTIME_H
/* Define to 1 if you have the <sys/vadvise.h> header file. */
#undef HAVE_SYS_VADVISE_H
/* Define to 1 if you have the <sys/wait.h> header file. */
#undef HAVE_SYS_WAIT_H
/* Define to 1 if you have the `tcgetattr' function. */
#undef HAVE_TCGETATTR
/* Define to 1 if you have the `tell' function. */
#undef HAVE_TELL
/* Define to 1 if you have the `tempnam' function. */
#undef HAVE_TEMPNAM
/* Define to 1 if you have the <termbits.h> header file. */
#undef HAVE_TERMBITS_H
/* Define to 1 if you have the <termcap.h> header file. */
#undef HAVE_TERMCAP_H
/* Define to 1 if you have the <termios.h> header file. */
#undef HAVE_TERMIOS_H
/* Define to 1 if you have the <termio.h> header file. */
#undef HAVE_TERMIO_H
/* Define to 1 if you have the <term.h> header file. */
#undef HAVE_TERM_H
/* Define to 1 if you have the `thr_setconcurrency' function. */
#undef HAVE_THR_SETCONCURRENCY
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to 1 if you have the <utime.h> header file. */
#undef HAVE_UTIME_H
/* Define to 1 if `utime(file, NULL)' sets file's timestamp to the present. */
#undef HAVE_UTIME_NULL
/* Define to 1 if you have the <varargs.h> header file. */
#undef HAVE_VARARGS_H
/* Define to 1 if you have the `vidattr' function. */
#undef HAVE_VIDATTR
/* Define to 1 if you have the <vis.h> header file. */
#undef HAVE_VIS_H
/* Define to 1 if you have the `vprintf' function. */
#undef HAVE_VPRINTF
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Define as the return type of signal handlers (`int' or `void'). */
#undef RETSIGTYPE
/* The size of a `char', as computed by sizeof. */
#undef SIZEOF_CHAR
/* The size of a `char*', as computed by sizeof. */
#undef SIZEOF_CHARP
/* The size of a `int', as computed by sizeof. */
#undef SIZEOF_INT
/* The size of a `long', as computed by sizeof. */
#undef SIZEOF_LONG
/* The size of a `long long', as computed by sizeof. */
#undef SIZEOF_LONG_LONG
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
automatically deduced at run-time.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown */
#undef STACK_DIRECTION
/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
#undef STAT_MACROS_BROKEN
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#undef TIME_WITH_SYS_TIME
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
#undef TM_IN_SYS_TIME
/* Version number of package */
#undef VERSION
/* Define to 1 if your processor stores words with the most significant byte
first (like Motorola and SPARC, unlike Intel and VAX). */
#undef WORDS_BIGENDIAN
/* Number of bits in a file offset, on hosts where this is settable. */
#undef _FILE_OFFSET_BITS
/* Define to make fseeko etc. visible, on some hosts. */
#undef _LARGEFILE_SOURCE
/* Define for large files, on AIX-style hosts. */
#undef _LARGE_FILES
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
/* Define as `__inline' if that's what the C compiler calls it, or to nothing
if it is not supported. */
#undef inline
/* Define to `long' if <sys/types.h> does not define. */
#undef off_t
/* Define to `unsigned' if <sys/types.h> does not define. */
#undef size_t
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
])
...@@ -22,8 +22,6 @@ ndbapi/NdbReceiver.hpp \ ...@@ -22,8 +22,6 @@ ndbapi/NdbReceiver.hpp \
ndbapi/NdbResultSet.hpp \ ndbapi/NdbResultSet.hpp \
ndbapi/NdbScanFilter.hpp \ ndbapi/NdbScanFilter.hpp \
ndbapi/NdbScanOperation.hpp \ ndbapi/NdbScanOperation.hpp \
ndbapi/NdbSchemaCon.hpp \
ndbapi/NdbSchemaOp.hpp \
ndbapi/ndberror.h ndbapi/ndberror.h
mgmapiinclude_HEADERS = \ mgmapiinclude_HEADERS = \
......
...@@ -298,6 +298,11 @@ public: ...@@ -298,6 +298,11 @@ public:
*/ */
int getLength() const; int getLength() const;
/**
* Get size of element
*/
int Column::getSize() const;
/** /**
* Set distribution key * Set distribution key
* *
...@@ -349,6 +354,7 @@ public: ...@@ -349,6 +354,7 @@ public:
#endif #endif
private: private:
friend class NdbRecAttr;
friend class NdbColumnImpl; friend class NdbColumnImpl;
class NdbColumnImpl & m_impl; class NdbColumnImpl & m_impl;
Column(NdbColumnImpl&); Column(NdbColumnImpl&);
...@@ -1030,4 +1036,6 @@ public: ...@@ -1030,4 +1036,6 @@ public:
}; };
}; };
class NdbOut& operator <<(class NdbOut& ndbout, const NdbDictionary::Column::Type type);
#endif #endif
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
#include <NdbDictionary.hpp> #include <NdbDictionary.hpp>
class NdbOperation; class NdbOperation;
class AttrInfo;
/** /**
* @class NdbRecAttr * @class NdbRecAttr
...@@ -77,6 +76,7 @@ class NdbRecAttr ...@@ -77,6 +76,7 @@ class NdbRecAttr
friend class NdbEventOperationImpl; friend class NdbEventOperationImpl;
friend class NdbScanReceiver; friend class NdbScanReceiver;
friend class Ndb; friend class Ndb;
friend class NdbOut& operator<<(class NdbOut&, const class AttributeS&);
public: public:
/** /**
...@@ -254,6 +254,7 @@ private: ...@@ -254,6 +254,7 @@ private:
void next(NdbRecAttr* aRecAttr); void next(NdbRecAttr* aRecAttr);
NdbRecAttr* next() const; NdbRecAttr* next() const;
int setup(const class NdbDictionary::Column* col, char* aValue);
int setup(const class NdbColumnImpl* anAttrInfo, char* aValue); int setup(const class NdbColumnImpl* anAttrInfo, char* aValue);
/* Set up attributes and buffers */ /* Set up attributes and buffers */
bool copyoutRequired() const; /* Need to copy data to application */ bool copyoutRequired() const; /* Need to copy data to application */
......
#
# Invoked from scripts/make_binary_distribution as "sh BinDist.sh".
# Prints list of dirs and files to include under mysql/ndb.
#
# release notes
grep -v '^#' <<__END__
#ReleaseNotes.html
mysqlclusterenv.sh
__END__
# subset of bins, libs, includes
grep -v '^#' <<__END__
bin/
bin/ndb
bin/mgmtsrvr
bin/mgmtclient
bin/mysqlcluster
bin/mysqlcluster_install_db
bin/mysqlclusterd
bin/restore
bin/ndb_rep
bin/desc
bin/flexBench
bin/select_all
bin/select_count
bin/delete_all
#bin/ndbsql
bin/drop_tab
bin/drop_index
bin/list_tables
bin/waiter
lib/
lib/libNEWTON_API.a
lib/libNEWTON_API.so
lib/libNDB_API.a
lib/libNDB_API.so
lib/libMGM_API.a
lib/libMGM_API.so
#lib/libNDB_ODBC.so
lib/libMGM_API_pic.a
lib/libNDB_API_pic.a
include/
include/ndb_types.h
include/ndb_version.h
include/mgmapi/
include/mgmapi/mgmapi.h
include/mgmapi/mgmapi_debug.h
include/ndbapi/
include/ndbapi/ndbapi_limits.h
include/ndbapi/Ndb.hpp
include/ndbapi/NdbApi.hpp
include/ndbapi/NdbConnection.hpp
include/ndbapi/NdbCursorOperation.hpp
include/ndbapi/NdbDictionary.hpp
include/ndbapi/NdbError.hpp
include/ndbapi/NdbEventOperation.hpp
include/ndbapi/NdbIndexOperation.hpp
include/ndbapi/NdbOperation.hpp
include/ndbapi/NdbPool.hpp
include/ndbapi/NdbRecAttr.hpp
include/ndbapi/NdbReceiver.hpp
include/ndbapi/NdbResultSet.hpp
include/ndbapi/NdbScanFilter.hpp
include/ndbapi/NdbScanOperation.hpp
include/ndbapi/NdbSchemaCon.hpp
include/ndbapi/NdbSchemaOp.hpp
include/newtonapi/dba.h
include/newtonapi/defs/pcn_types.h
__END__
#if [ -f /usr/local/lib/libstdc++.a ]; then
# cp /usr/local/lib/libstdc++.a lib/.
# echo lib/libstdc++.a
#fi
#if [ -f /usr/local/lib/libstdc++.so.5 ]; then
# cp /usr/local/lib/libstdc++.so.5 lib/.
# echo lib/libstdc++.so.5
#fi
#if [ -f /usr/local/lib/libgcc_s.so.1 ]; then
# cp /usr/local/lib/libgcc_s.so.1 lib/.
# echo lib/libgcc_s.so.1
#fi
# docs
#find docs/*.html docs/*.pdf -print | sort -t/
# demos
find demos -print | grep -v /SCCS | sort -t/
# examples
grep -v '^#' <<__END__
examples/
examples/Makefile
examples/ndbapi_example1/
examples/ndbapi_example1/Makefile
examples/ndbapi_example1/ndbapi_example1.cpp
examples/ndbapi_example2/
examples/ndbapi_example2/Makefile
examples/ndbapi_example2/ndbapi_example2.cpp
examples/ndbapi_example3/
examples/ndbapi_example3/Makefile
examples/ndbapi_example3/ndbapi_example3.cpp
examples/ndbapi_example4/
examples/ndbapi_example4/Makefile
examples/ndbapi_example4/ndbapi_example4.cpp
examples/ndbapi_example5/
examples/ndbapi_example5/Makefile
examples/ndbapi_example5/ndbapi_example5.cpp
examples/select_all/
examples/select_all/Makefile
examples/select_all/select_all.cpp
__END__
exit 0
include $(NDB_TOP)/config/config.mk
include $(NDB_TOP)/config/Defs.$(NDB_VERSION).mk
include $(NDB_TOP)/config/Defs.$(NDB_OS).$(NDB_ARCH).$(NDB_COMPILER).mk
ifeq ($(NDB_OS), WIN32)
# Windows specific definitions
OBJEXT := obj
LIBEXT := lib
LIBPREFIX :=
fixpath = `cygpath -w $1`
ar_rcs = lib -out:`cygpath -w $1` $2
link_so = link -DLL -OUT:`cygpath -w $1` $(WIN_LIBS) $2
#check-odbc = Y
USE_EDITLINE := N
#STRCASECMP is defined in include/portlib/PortDefs.h to _strcmpi
else
#Common definitions for almost all non-Windows environments
OBJEXT := o
LIBEXT := a
LIBPREFIX := lib
fixpath = $1
ar_rcs = $(AR_RCS) $1 $2
#check-odbc = $(findstring sqlext.h, $(wildcard /usr/include/sqlext.h) $(wildcard /usr/local/include/sqlext.h))
endif
ifeq ($(NDB_OS), WIN32)
SHLIBEXT := dll
endif
ifeq ($(NDB_OS), LINUX)
SHLIBEXT := so
endif
ifeq ($(NDB_OS), SOLARIS)
SHLIBEXT := so
endif
ifeq ($(NDB_OS), HPUX)
SHLIBEXT := sl
endif
ifeq ($(NDB_OS), MACOSX)
SHLIBEXT := dylib
endif
ifeq ($(NDB_OS), OSE)
SHLIBEXT := so
endif
ifeq ($(NDB_OS), SOFTOSE)
SHLIBEXT := so
endif
ifeq ($(NDB_SCI), Y)
CCFLAGS_TOP += -DHAVE_NDB_SCI
endif
ifeq ($(NDB_SHM), Y)
CCFLAGS_TOP += -DHAVE_NDB_SHM
endif
ifneq ($(findstring OSE, $(NDB_OS)),)
USE_EDITLINE := N
endif
# .KEEP_STATE:
# bk test !!!
###
# For building some intermediary targets in /tmp (only useful on solaris)
ifneq ($(NDB_BUILDROOT),)
NDB_TOPABS := $(shell cd $(NDB_TOP) && /bin/pwd)
NDB_BUILDDIR := $(subst $(NDB_TOPABS),$(NDB_BUILDROOT),$(CURDIR))/
ifeq ($(wildcard $(NDB_BUILDDIR)),)
dummy := $(shell mkdir -p $(NDB_BUILDDIR))
endif
endif
###
CCFLAGS_TOP += -DNDB_$(NDB_OS) -DNDB_$(NDB_ARCH) -DNDB_$(NDB_COMPILER)
ifdef BIN_TARGET
BIN_EXE = Y
endif
###
#
# OS specifics
#
# Disable shared libraries on HP-UX for the time being.
ifeq ($(NDB_OS), HPUX)
SO_LIB := N
PIC_LIB := N
PIC_ARCHIVE := N
NONPIC_ARCHIVE := Y
endif
ifeq ($(NDB_OS), OSE)
SO_LIB := N
PIC_LIB := N
PIC_ARCHIVE := N
NONPIC_ARCHIVE := Y
ifdef BIN_TARGET
BIN_LIB_TARGET := lib$(BIN_TARGET).a
BIN_TARGET := lib$(BIN_TARGET).a
endif
endif
ifeq ($(NDB_OS), SOFTOSE)
SO_LIB := N
PIC_LIB := N
PIC_ARCHIVE := N
ifdef BIN_TARGET
BIN_EXE_TARGET := $(BIN_TARGET)
BIN_LIB_TARGET := lib$(BIN_TARGET).a
EXTRA_MAIN := osemain.o
endif
endif
ifeq ($(filter OSE, $(NDB_OS)),)
BIN_EXE_TARGET := $(BIN_TARGET)
endif
ifeq ($(NDB_OS), MACOSX)
.LIBPATTERNS= lib%.dylib lib%.a
endif
###
#
#
###
# External dependencies definition : the place we store libraries
# we get from outside the NDB development group.
EXTERNAL_DEPENDS_TOP=$(NDB_TOP)/src/external/$(NDB_OS).$(NDB_ARCH)
###
#
# TYPE Handling
#
# TYPE := kernel
#
ifneq ($(filter kernel, $(TYPE)),)
CCFLAGS_LOC += \
-I$(call fixpath,$(NDB_TOP)/src/kernel/vm) \
-I$(call fixpath,$(NDB_TOP)/src/kernel/error) \
-I$(call fixpath,$(NDB_TOP)/src/kernel) \
-I$(call fixpath,$(NDB_TOP)/include/kernel) \
-I$(call fixpath,$(NDB_TOP)/include/transporter) \
-I$(call fixpath,$(NDB_TOP)/include/debugger) \
-I$(call fixpath,$(NDB_TOP)/include/mgmcommon) \
-I$(call fixpath,$(NDB_TOP)/include/mgmapi) \
-I$(call fixpath,$(NDB_TOP)/include/ndbapi) \
-I$(call fixpath,$(NDB_TOP)/include/util) \
-I$(call fixpath,$(NDB_TOP)/include/portlib) \
-I$(call fixpath,$(NDB_TOP)/include/logger)
endif
#
# TYPE := ndbapi
#
ifneq ($(filter ndbapi, $(TYPE)),)
CCFLAGS_LOC += \
-I$(call fixpath,$(NDB_TOP)/include/kernel) \
-I$(call fixpath,$(NDB_TOP)/include/transporter) \
-I$(call fixpath,$(NDB_TOP)/include/debugger) \
-I$(call fixpath,$(NDB_TOP)/include/mgmcommon) \
-I$(call fixpath,$(NDB_TOP)/include/mgmapi) \
-I$(call fixpath,$(NDB_TOP)/include/ndbapi) \
-I$(call fixpath,$(NDB_TOP)/include/util) \
-I$(call fixpath,$(NDB_TOP)/include/portlib) \
-I$(call fixpath,$(NDB_TOP)/include/logger)
endif
#
# TYPE := ndbapiclient
#
ifneq ($(filter ndbapiclient, $(TYPE)),)
CCFLAGS_LOC += \
-I$(call fixpath,$(NDB_TOP)/include/ndbapi)
BIN_TARGET_LIBS += NDB_API
endif
#
# TYPE := mgmapiclient
#
ifneq ($(filter mgmapiclient, $(TYPE)),)
CCFLAGS_LOC += \
-I$(call fixpath,$(NDB_TOP)/include/mgmapi)
BIN_TARGET_LIBS += MGM_API
endif
#
# TYPE := ndbapitest
#
ifneq ($(filter ndbapitest, $(TYPE)),)
CCFLAGS_LOC += \
-I$(call fixpath,$(NDB_TOP)/include/ndbapi) \
-I$(call fixpath,$(NDB_TOP)/include/util) \
-I$(call fixpath,$(NDB_TOP)/include/portlib) \
-I$(call fixpath,$(NDB_TOP)/test/include) \
-I$(call fixpath,$(NDB_TOP)/include/mgmapi)
BIN_TARGET_LIBS += NDBT
LDFLAGS_LOC += -lNDB_API -lMGM_API -lm
endif
#
# TYPE := signalsender
#
ifneq ($(filter signalsender, $(TYPE)),)
CCFLAGS_LOC += \
-I$(call fixpath,$(NDB_TOP)/include/ndbapi) \
-I$(call fixpath,$(NDB_TOP)/src/ndbapi) \
-I$(call fixpath,$(NDB_TOP)/src/ndbapi/signal-sender) \
-I$(call fixpath,$(NDB_TOP)/include/util) \
-I$(call fixpath,$(NDB_TOP)/include/portlib) \
-I$(call fixpath,$(NDB_TOP)/include/transporter) \
-I$(call fixpath,$(NDB_TOP)/include/mgmcommon) \
-I$(call fixpath,$(NDB_TOP)/include/kernel)
BIN_TARGET_LIBS += NDB_API
BIN_TARGET_ARCHIVES += editline signal-sender
endif
#
# TYPE := repserver
#
ifneq ($(filter repserver, $(TYPE)),)
CCFLAGS_LOC += \
-I$(call fixpath,$(NDB_TOP)/include/ndbapi) \
-I$(call fixpath,$(NDB_TOP)/src) \
-I$(call fixpath,$(NDB_TOP)/src/ndbapi) \
-I$(call fixpath,$(NDB_TOP)/src/ndbapi/signal-sender) \
-I$(call fixpath,$(NDB_TOP)/include/util) \
-I$(call fixpath,$(NDB_TOP)/include/portlib) \
-I$(call fixpath,$(NDB_TOP)/include/transporter) \
-I$(call fixpath,$(NDB_TOP)/include/mgmcommon) \
-I$(call fixpath,$(NDB_TOP)/include/kernel)
endif
#
# TYPE := odbcclient
#
ifneq ($(filter odbcclient, $(TYPE)),)
TYPE += util
LDFLAGS_LOC += -lm
#ifneq ($(call check-odbc),)
ifneq ($(NDB_ODBC),N)
ifeq ($(NDB_OS), SOLARIS)
CCFLAGS_LOC += -I/usr/local/include
BIN_TARGET_LIBS_DIRS += /usr/local/lib
BIN_TARGET_LIBS += odbc odbcinst NDBT
endif
ifeq ($(NDB_OS), LINUX)
BIN_TARGET_LIBS += odbc odbcinst NDBT
endif
ifeq ($(NDB_OS), MACOSX)
BIN_TARGET_LIBS += odbc odbcinst NDBT
endif
ifeq ($(NDB_OS), IBMAIX)
BIN_TARGET_LIBS += odbc odbcinst NDBT
endif
ifeq ($(NDB_OS), TRU64X)
BIN_TARGET_LIBS += odbc odbcinst NDBT
endif
else
BIN_EXE = N
endif
endif
#
# TYPE := *
#
#
# TYPE := util
#
ifneq ($(filter util, $(TYPE)),)
CCFLAGS_LOC += -I$(call fixpath,$(NDB_TOP)/include/util) \
-I$(call fixpath,$(NDB_TOP)/include/portlib) \
-I$(call fixpath,$(NDB_TOP)/include/logger)
BIN_TARGET_LIBS += logger general portlib
endif
CCFLAGS_LOC += -I$(call fixpath,$(NDB_TOP)/include) -I$(call fixpath,$(NDB_TOP)/../include)
ifeq ($(NDB_SCI), Y)
BIN_TARGET_LIBS += sisci
BIN_TARGET_LIBS_DIRS += $(EXTERNAL_DEPENDS_TOP)/sci/lib
CCFLAGS_LOC += -I$(call fixpath,$(EXTERNAL_DEPENDS_TOP)/sci/include)
endif
#
# TYPE Handling
###
###
#
# First rule
#
first:
$(MAKE) libs
$(MAKE) bins
ifeq ($(findstring all,$(replace-targets)),)
all: first
endif
###
#
# Nice to have rules
api: libs
$(MAKE) -C $(NDB_TOP)/src/ndbapi bins
mgm: libs
$(MAKE) -C $(NDB_TOP)/src/mgmsrv bins
ndb: libs
$(MAKE) -C $(NDB_TOP)/src/kernel/ndb-main bins
apitest: first
$(MAKE) -C $(NDB_TOP)/test/ndbapi all
#-lNDBT:
# $(MAKE) -C $(NDB_TOP)/test/src all
#
#-lNDB_API: libs
# $(MAKE) -C $(NDB_TOP)/src/ndbapi bins
#
# Libs/Bins
#
ifdef PREREQ_LOC
_libs:: $(PREREQ_LOC)
_bins:: $(PREREQ_LOC)
endif
L_DIRS := $(LIB_DIRS) $(DIRS)
B_DIRS := $(BIN_DIRS) $(DIRS)
A_DIRS := $(LIB_DIRS) $(BIN_DIRS) $(DIRS)
_libs::
_bins::
libs: _libs $(patsubst %, _libs_%, $(L_DIRS))
$(patsubst %, _libs_%, $(L_DIRS)) : DUMMY
$(MAKE) -C $(patsubst _libs_%,%,$@) libs
bins: _bins $(patsubst %, _bins_%, $(B_DIRS))
$(patsubst %, _bins_%, $(B_DIRS)) : DUMMY
$(MAKE) -C $(patsubst _bins_%,%,$@) bins
###
#
# Links
_links:
-$(NDB_TOP)/tools/make-links.sh $(NDB_TOP)/include `pwd`
links: _links $(patsubst %, _links_%, $(A_DIRS))
$(patsubst %, _links_%, $(A_DIRS)) : DUMMY
$(MAKE) -C $(patsubst _links_%,%,$@) links
####
#
# OSE build_spec (
ifdef SOURCES
BS := Y
endif
ifdef SOURCES_c
BS := Y
endif
_build_spec: Makefile
ifdef BS
@echo "TYPE = SWU" > build.spec
@echo "include $(NDB_TOP)/Ndb.mk" >> build.spec
# @for i in $(CCFLAGS_LOC); do echo "INC += $$i" >> build.spec ; done
@for i in $(patsubst -I%, %, $(CCFLAGS_LOC)); do echo "INC += $$i" >> build.spec ; done
@echo "INC += /vobs/cello/cls/rtosi_if/include" >> build.spec
@echo "INC += /vobs/cello/cls/rtosi_if/include.@@@" >> build.spec
@echo "INC += /vobs/cello/cls/rtosi_if/include.<<<" >> build.spec
endif
build_spec: _build_spec $(patsubst %, _build_spec_%, $(A_DIRS))
$(patsubst %, _build_spec_%, $(A_DIRS)) : DUMMY
$(MAKE) -C $(patsubst _build_spec_%,%,$@) build_spec
###
#
# Phony targets
.PHONY: $(A_DIRS)
###
#
# Dummy rule
DUMMY:
###
#
# Definitions of...
PIC_DIR := $(NDB_BUILDDIR).pic
A_TMP_DIR := $(NDB_BUILDDIR).a_tmp
SO_TMP_DIR := $(NDB_BUILDDIR).so_tmp
PIC_TMP_DIR := $(NDB_BUILDDIR).pic_tmp
$(PIC_DIR):
mkdir -p $(PIC_DIR)
SRC_C := $(filter %.C, $(SOURCES))
SRC_CPP := $(filter %.cpp, $(SOURCES))
SRC_CC := $(filter %.cc, $(SOURCES))
SRC_c := $(filter %.c, $(SOURCES)) $(filter %.c, $(SOURCES.c))
SRC_YPP := $(filter %.ypp, $(SOURCES))
SRC_LPP := $(filter %.lpp, $(SOURCES))
OBJECTS := $(SRC_C:%.C=%.$(OBJEXT)) \
$(SRC_CPP:%.cpp=%.$(OBJEXT)) \
$(SRC_CC:%.cc=%.$(OBJEXT)) \
$(SRC_c:%.c=%.$(OBJEXT)) \
$(SRC_YPP:%.ypp=%.tab.$(OBJEXT)) \
$(SRC_LPP:%.lpp=%.yy.$(OBJEXT)) \
$(OBJECTS_LOC)
PIC_OBJS := $(OBJECTS:%=$(PIC_DIR)/%)
LIB_DIR := $(NDB_TOP)/lib
BIN_DIR := $(NDB_TOP)/bin
###
#
# ARCHIVE_TARGET
#
ifdef ARCHIVE_TARGET
ifndef NONPIC_ARCHIVE
NONPIC_ARCHIVE := Y
endif
ifeq ($(NONPIC_ARCHIVE), Y)
_libs:: $(LIB_DIR)/$(LIBPREFIX)$(ARCHIVE_TARGET).$(LIBEXT)
$(LIB_DIR)/$(LIBPREFIX)$(ARCHIVE_TARGET).$(LIBEXT) : $(OBJECTS)
$(call ar_rcs,$@,$(OBJECTS))
endif # NONPIC_ARCHIVE := Y
ifeq ($(PIC_ARCHIVE), Y)
_libs:: $(PIC_DIR) $(LIB_DIR)/$(LIBPREFIX)$(ARCHIVE_TARGET)_pic.$(LIBEXT)
$(LIB_DIR)/$(LIBPREFIX)$(ARCHIVE_TARGET)_pic.$(LIBEXT) : $(PIC_OBJS)
cd $(PIC_DIR) && $(call ar_rcs,../$@,$(OBJECTS))
PIC_DEP := Y
endif # PIC_ARCHIVE := Y
endif # ARCHIVE_TARGET
###
#
# LIB_TARGET
#
ifdef LIB_TARGET
ifeq ($(A_LIB), Y)
A_LIB_ARCHIVES := $(LIB_TARGET_ARCHIVES:%=$(LIB_DIR)/$(LIBPREFIX)%.$(LIBEXT))
_bins:: $(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET).$(LIBEXT)
$(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET).$(LIBEXT) : $(A_LIB_ARCHIVES)
@rm -rf $(A_TMP_DIR) && mkdir $(A_TMP_DIR)
cd $(A_TMP_DIR) && for i in $^; do ar -x ../$$i; done && $(call ar_rcs,../$@,*.$(OBJEXT))
$(NDB_TOP)/home/bin/ndb_deploy $@
endif # A_LIB := Y
ifeq ($(SO_LIB), Y)
ifneq ($(NDB_OS), WIN32)
SO_LIB_ARCHIVES := $(LIB_TARGET_ARCHIVES:%=$(LIB_DIR)/$(LIBPREFIX)%_pic.$(LIBEXT))
_bins:: $(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET).$(SHLIBEXT)
$(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET).$(SHLIBEXT) : $(SO_LIB_ARCHIVES)
@rm -rf $(SO_TMP_DIR) && mkdir $(SO_TMP_DIR)
cd $(SO_TMP_DIR) && for i in $^; do ar -x ../$$i; done
ifneq ($(NDB_OS), MACOSX)
$(SO) $@.new $(SO_TMP_DIR)/*.$(OBJEXT) -L$(LIB_DIR) $(LIB_TARGET_LIBS) $(LDFLAGS_LAST)
rm -f $@; mv $@.new $@
else
$(SO) $@ $(SO_TMP_DIR)/*.$(OBJEXT) -L$(LIB_DIR) $(LIB_TARGET_LIBS) $(LDFLAGS_LAST)
endif
ifeq ($(NDB_VERSION), RELEASE)
ifneq ($(NDB_OS), MACOSX)
strip $@
endif
endif
$(NDB_TOP)/home/bin/ndb_deploy $@
else # WIN32
SO_LIB_ARCHIVES := $(LIB_TARGET_ARCHIVES:%=$(LIB_DIR)/$(LIBPREFIX)%_pic.$(LIBEXT))
_bins:: $(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET).$(SHLIBEXT)
$(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET).$(SHLIBEXT) : $(SO_LIB_ARCHIVES)
@rm -rf $(SO_TMP_DIR) && mkdir $(SO_TMP_DIR)
cd $(SO_TMP_DIR) && for i in $^; do ar -x ../$$i; done
$(call link_so,$@.new,$(SO_TMP_DIR)/*.$(OBJEXT))
rm -f $@; mv $@.new $@
#ifeq ($(NDB_VERSION), RELEASE)
# strip $@
#endif
endif
endif # SO_LIB := Y
ifeq ($(PIC_LIB), Y)
PIC_LIB_ARCHIVES := $(LIB_TARGET_ARCHIVES:%=$(LIB_DIR)/$(LIBPREFIX)%_pic.$(LIBEXT))
_bins:: $(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET)_pic.$(LIBEXT)
$(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET)_pic.$(LIBEXT) : $(PIC_LIB_ARCHIVES)
@rm -rf $(PIC_TMP_DIR) && mkdir $(PIC_TMP_DIR)
cd $(PIC_TMP_DIR) && for i in $^; do ar -x ../$$i; done && $(call ar_rcs,../$@,*.$(OBJEXT))
endif # PIC_LIB := Y
endif # LIB_TARGET
###
#
# BIN_TARGET
#
ifeq ($(BIN_EXE), Y)
ifneq ($(NDB_OS), WIN32)
BIN_LIBS := $(BIN_TARGET_ARCHIVES:%=$(LIB_DIR)/$(LIBPREFIX)%.$(LIBEXT))
BIN_LIBS += $(BIN_TARGET_LIBS:%=-l%)
BIN_DEPS := $(OBJECTS) $(EXTRA_MAIN) $(BIN_LIBS)
BIN_LIB_DIRS := $(BIN_TARGET_LIBS_DIRS:%=-L%)
BIN_FLAGS := $(BIN_LIB_DIRS) $(BIN_DEPS)
VPATH := $(LIB_DIR) $(BIN_TARGET_LIBS_DIRS)
_bins:: $(BIN_DIR)/$(BIN_TARGET)
$(BIN_DIR)/$(BIN_TARGET) : $(BIN_DEPS)
$(LINK.cc) $(LDFLAGS) $(LDLIBS) -L$(LIB_DIR) $(BIN_FLAGS) -o $@.new $(LDFLAGS_LAST)
rm -f $@; mv $@.new $@
ifeq ($(NDB_VERSION), RELEASE)
ifneq ($(NDB_OS), MACOSX)
strip $@
endif
endif
$(NDB_TOP)/home/bin/ndb_deploy $@
else # WIN32
BIN_LIBS := $(foreach lib,$(BIN_TARGET_ARCHIVES),$(call fixpath,$(LIB_DIR)/$(LIBPREFIX)$(lib).$(LIBEXT)))
BIN_LIBS += $(BIN_TARGET_LIBS:%=$(LIBPREFIX)%.$(LIBEXT))
BIN_DEPS := $(OBJECTS) $(BIN_TARGET_ARCHIVES:%=$(LIB_DIR)/$(LIBPREFIX)%.$(LIBEXT))
BIN_LIB_DIRS := -libpath:$(call fixpath,$(LIB_DIR)) $(BIN_TARGET_LIBS_DIRS:%=-libpath:%)
BIN_FLAGS := $(BIN_LIB_DIRS)
VPATH := $(LIB_DIR) $(BIN_TARGET_LIBS_DIRS)
_bins:: $(BIN_DIR)/$(BIN_TARGET).exe
$(BIN_DIR)/$(BIN_TARGET).exe : $(BIN_DEPS)
$(LINK.cc) -out:$(call fixpath,$@.new) $(OBJECTS) $(BIN_FLAGS) $(BIN_LIBS)
rm -f $@; mv $@.new $@
ifeq ($(NDB_VERSION), RELEASE)
strip $@
endif
endif
endif
###
#
# SOURCES.sh
#
ifdef SOURCES.sh
BIN_SRC := $(SOURCES.sh:%=$(BIN_DIR)/%)
_bins:: $(BIN_SRC)
$(BIN_SRC) : $(SOURCES.sh)
rm -f $(^:%=$(BIN_DIR)/%)
cp $^ $(BIN_DIR)
endif
#
# Compile rules PIC objects
#
ifeq ($(NDB_OS), WIN32)
OUT := -Fo
else
OUT := -o
endif
$(PIC_DIR)/%.$(OBJEXT): %.C
$(C++) $(OUT)$@ -c $(CCFLAGS) $(CFLAGS_$<) $(PIC) $<
$(PIC_DIR)/%.$(OBJEXT): %.cpp
$(C++) $(OUT)$@ -c $(CCFLAGS) $(CFLAGS_$<) $(PIC) $<
$(PIC_DIR)/%.$(OBJEXT): %.cc
$(C++) $(OUT)$@ -c $(CCFLAGS) $(CFLAGS_$<) $(PIC) $<
$(PIC_DIR)/%.$(OBJEXT): %.c
$(CC) $(OUT)$@ -c $(CFLAGS) $(CFLAGS_$<) $(PIC) $<
#
# Compile rules
#
%.$(OBJEXT) : %.cpp
$(C++) $(OUT)$@ -c $(CCFLAGS) $(CFLAGS_$<) $(NON_PIC) $<
%.$(OBJEXT) : %.C
$(C++) $(OUT)$@ -c $(CCFLAGS) $(CFLAGS_$<) $(NON_PIC) $<
%.$(OBJEXT) : %.cc
$(C++) $(OUT)$@ -c $(CCFLAGS) $(CFLAGS_$<) $(NON_PIC) $<
%.$(OBJEXT) : %.c
$(CC) $(OUT)$@ -c $(CFLAGS) $(CFLAGS_$<) $(NON_PIC) $<
%.s : %.C
$(C++) -S $(CCFLAGS) $(CFLAGS_$<) $(NON_PIC) $<
%.s : %.cpp
$(C++) -S $(CCFLAGS) $(CFLAGS_$<) $(NON_PIC) $<
%.s : %.cc
$(C++) -S $(CCFLAGS) $(CFLAGS_$<) $(NON_PIC) $<
%.s : %.c
$(CC) -S $(CCFLAGS) $(CFLAGS_$<) $(NON_PIC) $<
BISON = bison
BISONHACK = :
%.tab.cpp %.tab.hpp : %.ypp
$(BISON) $<
$(BISONHACK) $*.tab.cpp $*.tab.hpp
FLEX = flex
FLEXHACK = :
%.yy.cpp : %.lpp
$(FLEX) -o$@ $<
$(FLEXHACK) $@
###
#
# Defines regarding dependencies
DEPMK := $(NDB_BUILDDIR).depend.mk
DEPDIR := $(NDB_BUILDDIR).depend
DEPENDENCIES := $(SRC_C:%.C=$(DEPDIR)/%.d) \
$(SRC_CC:%.cc=$(DEPDIR)/%.d) \
$(SRC_CPP:%.cpp=$(DEPDIR)/%.d) \
$(SRC_c:%.c=$(DEPDIR)/%.d) \
$(SRC_YPP:%.ypp=$(DEPDIR)/%.tab.d) \
$(SRC_LPP:%.lpp=$(DEPDIR)/%.yy.d)
###
#
# Dependency rule
_depend: $(DEPMK)
depend: _depend $(patsubst %, _depend_%, $(A_DIRS))
$(patsubst %, _depend_%, $(A_DIRS)) : DUMMY
$(MAKE) -C $(patsubst _depend_%,%,$@) depend
###
#
# Clean dependencies
_clean_dep:
-rm -rf $(DEPMK) $(DEPDIR)/*
clean_dep: _clean_dep $(patsubst %, _clean_dep_%, $(A_DIRS))
$(patsubst %, _clean_dep_%, $(A_DIRS)) : DUMMY
$(MAKE) -C $(patsubst _clean_dep_%,%,$@) clean_dep
###
#
# Generate dependencies
$(DEPDIR):
-@mkdir -p $(DEPDIR)
$(DEPDIR)/%.d: %.C
@echo Generating depend for $<
@$(MAKEDEPEND) $(CCFLAGS) $(CFLAGS_$<) $< >$@
$(DEPDIR)/%.d: %.c
@echo Generating depend for $<
@$(MAKEDEPEND) $(CCFLAGS) $(CFLAGS_$<) $< >$@
$(DEPDIR)/%.d: %.cpp
@echo Generating depend for $<
@$(MAKEDEPEND) $(CCFLAGS) $(CFLAGS_$<) $< >$@
$(DEPDIR)/%.d: %.cc
@echo Generating depend for $<
@$(MAKEDEPEND) $(CCFLAGS) $(CFLAGS_$<) $< >$@
ifeq ($(NDB_OS), WIN32)
ifndef PIC_DEP
DEP_PTN := -e 's/\(.*\)\.o[ :]*/\1.$(OBJEXT) $(DEPDIR)\/\1.d : /g'
else
DEP_PTN := -e 's/\(.*\)\.o[ :]*/\1.$(OBJEXT) $(PIC_DIR)\/\1.$(OBJEXT) $(DEPDIR)\/\1.d : /g'
endif
else
ifndef PIC_DEP
DEP_PTN := -e 's!\(.*\)\.$(OBJEXT)[ :]*!\1.$(OBJEXT) $(DEPDIR)\/\1.d : !g'
else
DEP_PTN := -e 's!\(.*\)\.$(OBJEXT)[ :]*!\1.$(OBJEXT) $(PIC_DIR)\/\1.$(OBJEXT) $(DEPDIR)\/\1.d : !g'
endif
endif
#DEP_PTN += -e 's!/usr/include/[-+a-zA-Z0-9_/.]*!!g'
#DEP_PTN += -e 's!/usr/local/lib/gcc-lib/[-+a-zA-Z0-9_/.]*!!g'
$(DEPMK): $(DEPDIR) $(SRC_YPP:%.ypp=%.tab.hpp) $(SRC_LPP:%.lpp=%.yy.cpp) $(DEPENDENCIES) $(wildcard $(NDB_TOP)/.update.d)
@echo "updating .depend.mk"
@sed $(DEP_PTN) /dev/null $(DEPENDENCIES) >$(DEPMK)
###
#
# clean
#
_clean:
-rm -rf SunWS_cache $(PIC_DIR)/SunWS_cache
ifeq ($(NONPIC_ARCHIVE), Y)
-rm -f $(OBJECTS) $(LIB_DIR)/$(LIBPREFIX)$(ARCHIVE_TARGET).$(LIBEXT)
endif
ifeq ($(PIC_ARCHIVE), Y)
-rm -f $(PIC_OBJS) $(LIB_DIR)/$(LIBPREFIX)$(ARCHIVE_TARGET)_pic.$(LIBEXT)
endif
ifdef BIN_TARGET
-rm -f $(OBJECTS)
endif
ifdef LIB_TARGET
ifeq ($(A_LIB), Y)
-rm -f $(A_TMP_DIR)/*
endif
ifeq ($(SO_LIB), Y)
-rm -f $(SO_TMP_DIR)/*
endif
ifeq ($(PIC_LIB), Y)
-rm -f $(PIC_TMP_DIR)/*
endif
endif
ifneq ($(SRC_YPP),)
-rm -f $(SRC_YPP:%.ypp=%.tab.[hc]pp) $(SRC_YPP:%.ypp=%.output)
endif
ifneq ($(SRC_LPP),)
-rm -f $(SRC_LPP:%.lpp=%.yy.*)
endif
ifdef CLEAN_LOC
-rm -f $(CLEAN_LOC)
endif
###
#
# clean all
#
clobber: cleanall
_cleanall: _clean clean_links
-rm -f osemain.con osemain.c
ifdef LIB_TARGET
ifeq ($(A_LIB), Y)
-rm -f $(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET).$(LIBEXT)
endif
ifeq ($(SO_LIB), Y)
-rm -f $(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET).$(SHLIBEXT)
endif
ifeq ($(PIC_LIB), Y)
-rm -f $(LIB_DIR)/$(LIBPREFIX)$(LIB_TARGET)_pic.$(LIBEXT)
endif
endif
ifdef BIN_TARGET
-rm -f $(BIN_DIR)/$(BIN_TARGET)
endif
clean_links:
###
#
# Dist clean
#
_distclean: _tidy
rm -rf $(DEPDIR) $(PIC_DIR) $(PIC_TMP_DIR) $(SO_TMP_DIR) $(A_TMP_DIR) Sources build.spec
###
#
# tidy
#
_tidy: _cleanall _clean_dep
-rm -f *~ *.$(OBJEXT) *.$(LIBEXT) *.${SHLIBEXT}
#
# clean cleanall tidy - recursion
#
ifeq ($(findstring clean,$(replace-targets)),)
clean: _clean $(patsubst %, _clean_%, $(A_DIRS))
endif
$(patsubst %, _clean_%, $(A_DIRS)) : DUMMY
$(MAKE) -C $(patsubst _clean_%,%,$@) clean
cleanall: _cleanall $(patsubst %, _cleanall_%, $(A_DIRS))
$(patsubst %, _cleanall_%, $(A_DIRS)) : DUMMY
$(MAKE) -C $(patsubst _cleanall_%,%,$@) cleanall
tidy: _tidy $(patsubst %, _tidy_%, $(A_DIRS))
$(patsubst %, _tidy_%, $(A_DIRS)) : DUMMY
$(MAKE) -C $(patsubst _tidy_%,%,$@) tidy
distclean: _distclean $(patsubst %, _distclean_%, $(A_DIRS))
$(patsubst %, _distclean_%, $(A_DIRS)) : DUMMY
$(MAKE) -C $(patsubst _distclean_%,%,$@) distclean
###
#
# Guess configuration
$(NDB_TOP)/config/config.mk: $(NDB_TOP)/config/GuessConfig.sh
$(NDB_TOP)/config/GuessConfig.sh -D
$(NDB_TOP)/config/Defs....mk: $(NDB_TOP)/config/config.mk
$(NDB_TOP)/config/Defs..mk: $(NDB_TOP)/config/config.mk
###
# Soft ose envirment stuff
#
osemain.con: $(NDB_TOP)/src/env/softose/osemain_con.org
cp $< $@
echo "PRI_PROC(init_$(BIN_TARGET), init_$(BIN_TARGET), 65535, 3, ndb, 0, NULL)" >> $@
osemain.c: $(OSE_LOC)/sfk-solaris2/krn-solaris2/src/osemain.c
ln -s $< $@
osemain.o : osemain.con
$(DEPDIR)/osemain.d : osemain.con
###
#
# These target dont want dependencies
NO_DEP=clean clobber cleanall tidy clean_dep $(DEPDIR) build_spec \
$(NDB_TOP)/config/config.mk distclean osemain.con osemain.c
ifeq ($(filter $(NO_DEP), $(MAKECMDGOALS)),)
ifneq ($(strip $(DEPENDENCIES)),)
include $(DEPMK)
endif
endif
###
#
# Auxiliary targets
sources: Sources
Sources: Makefile
@rm -f $@
@for f in Makefile $(A_DIRS) $(SOURCES) $(SOURCES.c); do echo $$f; done >$@
###
#
# TAG generation for emacs and vi folks
#
# In emacs "Esc- ." or "M- ." to find a symbol location
# In vi use the :\tag command
# by convention:
# TAGS is used with emacs
# tags is used with vi
#
# Hopefully the make is being done from $(NDB_TOP)/src
# and your TAGS/tags file then is in the same directory.
TAGS: DUMMY
rm -f TAGS
find $(NDB_TOP) -name "*.[ch]" | xargs $(ETAGS) --append
find $(NDB_TOP) -name "*.[ch]pp" | xargs $(ETAGS) --append
tags: DUMMY
rm -f tags
find $(NDB_TOP) -name "*.[ch]" | xargs $(CTAGS) --append
find $(NDB_TOP) -name "*.[ch]pp" | xargs $(CTAGS) --append
install:
ebrowse: DUMMY
cd $(NDB_TOP); rm -f EBROWSE
cd $(NDB_TOP); find . -name "*.hpp" -or -name "*.cpp" -or -name "*.h" -or -name "*.c" > tmpfile~
cd $(NDB_TOP); ebrowse --file tmpfile~
cd $(NDB_TOP); rm -f tmpfile~
srcdir = $(NDB_TOP)
top_distdir = $(NDB_TOP)/..
mkinstalldirs := /bin/sh ../mkinstalldirs
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)/ndb
distdir:
$(mkinstalldirs) $(distdir)
@list='$(shell /bin/sh SrcDist.sh)'; for file in $$list; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkinstalldirs) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -f $$d/$$file; then \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
include .defs.mk
DIRS := src test tools examples
# hack before full autoconf
replace-targets := all clean
NDB_RELEASE := $(shell ../scripts/mysql_config --version)
all:
$(MAKE) -j 1 -C src
$(MAKE) -j 1 -C test/src
$(MAKE) -j 1 -C tools
$(MAKE) -j 1 -C test/ndbapi/flexBench
$(MAKE) -j 1 -C test/tools/waiter
include $(NDB_TOP)/Epilogue.mk
_libs_test : _bins_src
_libs_tools : _libs_test
_libs_examples : _bins_src
_bins_src : _libs_src
_bins_tools : _bins_src
# always release compile except for ndbapi static lib
old-all:
$(MAKE) -C src/ndbapi libs
$(MAKE) libs NDB_VERSION=RELEASE
$(MAKE) bins NDB_VERSION=RELEASE
ifeq ($(NDB_OS),LINUX)
NDB_RELEASE=$(NDB_RELEASE) $(MAKE) -j1 -C docs all </dev/null || :
endif
# old distclean matches clean better
clean: distclean
$(MAKE) -C docs clean
nuke-deps:
find . -name '.depend*' | xargs rm -rf
vim-tags:
bk sfiles -g | ctags --c-types=+p --extra=+fq -L -
cvs-update:
ifeq ($(NDB_VERSION),main)
-cvs update -d
else
ifeq ($(NDB_TAG),HEAD)
-cvs -q update
-cd include && cvs -q update -d
-cd src && cvs -q update -d
-cd test && cvs -q update -d
-cd tools && cvs -q update -d
else
-cvs -q update -r $(NDB_TAG)
-cd include && cvs -q update -d -r $(NDB_TAG)
-cd src && cvs -q update -d -r $(NDB_TAG)
-cd test && cvs -q update -d -r $(NDB_TAG)
-cd tools && cvs -q update -d -r $(NDB_TAG)
endif
endif
make nuke-deps
make vim-tags
make TAGS
bk-update:
bk pull
make nuke-deps
make vim-tags
make TAGS
INSTALLATION
To compile a pentium version of MySQL Cluster from this BK clone do:
shell> cd /home/bk/mysql-4.1-ndb
shell> BUILD/compile-pentium-debug -c --prefix=/usr/local/mysql-4.1-ndb
shell> make
#
# Invoked from make distdir.
# Prints list of dirs and files to include under mysql/ndb.
#
# top dir
grep -v '^#' <<__END__
#ReleaseNotes.html
.defs.mk
Defs.mk
configure
Makefile
Epilogue.mk
SrcDist.sh
BinDist.sh
mysqlclusterenv.sh
__END__
# subset of bins, libs
grep -v '^#' <<__END__
bin/
bin/mysqlcluster
bin/mysqlcluster_install_db
bin/mysqlclusterd
lib/
__END__
# docs
#find docs/*.html docs/*.pdf -print
# include
find include -print | grep -v /SCCS
# config
find config -print | grep -v /SCCS
# tools
find tools -print | grep -v /SCCS | grep -v '\.o' | grep -v '\.depend' | grep -v tools/ndbsql
# home
find home -print | grep -v /SCCS
# test
find test -print | grep -v /SCCS | grep -v '\.o' | grep -v '\.depend' | grep -v test/odbc
# src
find src -print | grep -v /SCCS | grep -v '\.o' | grep -v '\.depend' | grep -v src/client/odbc | grep -v cpcc-win32
# demos
find demos -print | grep -v /SCCS | grep -v '\.o' | grep -v '\.depend'
# examples
grep -v '^#' <<__END__
examples/
examples/Makefile
examples/ndbapi_example1/
examples/ndbapi_example1/Makefile
examples/ndbapi_example1/ndbapi_example1.cpp
examples/ndbapi_example2/
examples/ndbapi_example2/Makefile
examples/ndbapi_example2/ndbapi_example2.cpp
examples/ndbapi_example3/
examples/ndbapi_example3/Makefile
examples/ndbapi_example3/ndbapi_example3.cpp
examples/ndbapi_example4/
examples/ndbapi_example4/Makefile
examples/ndbapi_example4/ndbapi_example4.cpp
examples/ndbapi_example5/
examples/ndbapi_example5/Makefile
examples/ndbapi_example5/ndbapi_example5.cpp
examples/select_all/
examples/select_all/Makefile
examples/select_all/select_all.cpp
__END__
exit 0
#! /bin/sh
if [ $# -gt 0 -a "$1" = "-p" ]
then
shift
NDB_TOP=$1
shift
else
NDB_TOP=`pwd`
fi
cd $NDB_TOP
NDB_TOP=`pwd`
for i in `find . -name 'Makefile' -exec dirname {} \;`
do
cd $i
rel_path=.
while [ $NDB_TOP != `pwd` ]
do
rel_path=$rel_path"/.."
cd ..
done
(
echo "NDB_TOP=$rel_path"
echo "include $rel_path/Defs.mk"
) > $i/.defs.mk
done
( cd config ; aclocal ; automake ; aclocal ; autoconf ; ./configure )
export NDB_TOP
. config/GuessConfig.sh $*
#
NDB_TOP=`pwd`
export NDB_TOP
NDB_PROJ_HOME=$NDB_TOP/home
export NDB_PROJ_HOME
# Sets necessary environment variables for mysqlcluster install scripts
mytop=
if [ -f bin/mysql ]; then
mytop=`/bin/pwd`
elif [ -f bin/ndb ]; then
mytop=`dirname \`/bin/pwd\``
fi
if [ "$mytop" ]; then
MYSQLCLUSTER_TOP=$mytop
PATH=$MYSQLCLUSTER_TOP/bin:$MYSQLCLUSTER_TOP/ndb/bin:$PATH
LD_LIBRARY_PATH=$MYSQLCLUSTER_TOP/lib:$LD_LIBRARY_PATH
LD_LIBRARY_PATH=$MYSQLCLUSTER_TOP/ndb/lib:$LD_LIBRARY_PATH
export MYSQLCLUSTER_TOP PATH LD_LIBRARY_PATH
else
if [ -d SCCS ]; then
if [ -f ndb/mysqlclusterenv.sh ]; then
mytop=`/bin/pwd`
elif [ -f mysqlclusterenv.sh ]; then
mytop=`dirname \`/bin/pwd\``
fi
fi
if [ "$mytop" ]; then
# we're in the development tree
if [ "$REAL_EMAIL" ]; then :; else
#Guessing REAL_EMAIL
REAL_EMAIL=`whoami`@mysql.com
export REAL_EMAIL
echo Setting REAL_EMAIL=$REAL_EMAIL
fi
MYSQLCLUSTER_TOP=$mytop
NDB_TOP=$MYSQLCLUSTER_TOP/ndb
export NDB_TOP
NDB_PROJ_HOME=$NDB_TOP/home
export NDB_PROJ_HOME
PATH=$MYSQLCLUSTER_TOP/ndb/bin:$MYSQLCLUSTER_TOP/ndb/home/bin:$PATH
PATH=$MYSQLCLUSTER_TOP/client:$PATH
PATH=$MYSQLCLUSTER_TOP/sql:$PATH
LD_LIBRARY_PATH=$MYSQLCLUSTER_TOP/libmysql:$LD_LIBRARY_PATH
LD_LIBRARY_PATH=$MYSQLCLUSTER_TOP/libmysqld:$LD_LIBRARY_PATH
LD_LIBRARY_PATH=$MYSQLCLUSTER_TOP/ndb/lib:$LD_LIBRARY_PATH
LD_LIBRARY_PATH=$MYSQLCLUSTER_TOP/libmysql_r/.libs:$LD_LIBRARY_PATH
export MYSQLCLUSTER_TOP PATH LD_LIBRARY_PATH
else
echo "Please source this file (mysqlclusterenv.sh) from installation top directory"
fi
fi
mytop=
...@@ -104,8 +104,9 @@ int ...@@ -104,8 +104,9 @@ int
RestoreMetaData::loadContent() RestoreMetaData::loadContent()
{ {
Uint32 noOfTables = readMetaTableList(); Uint32 noOfTables = readMetaTableList();
if(noOfTables == 0) if(noOfTables == 0) {
return -3; return 1;
}
for(Uint32 i = 0; i<noOfTables; i++){ for(Uint32 i = 0; i<noOfTables; i++){
if(!readMetaTableDesc()){ if(!readMetaTableDesc()){
return 0; return 0;
...@@ -201,188 +202,46 @@ RestoreMetaData::readGCPEntry() { ...@@ -201,188 +202,46 @@ RestoreMetaData::readGCPEntry() {
return true; return true;
} }
TableS::TableS(NdbTableImpl* tableImpl)
: m_dictTable(tableImpl)
{
m_dictTable = tableImpl;
m_noOfNullable = m_nullBitmaskSize = 0;
struct tmpTableS { for (Uint32 i = 0; i < tableImpl->getNoOfColumns(); i++)
Uint32 tableId; createAttr(tableImpl->getColumn(i));
Uint32 schemaVersion; }
Uint32 noOfAttributes;
}; // tmpTableS
static const
SimpleProperties::SP2StructMapping
RestoreTabMap[] = {
// Map the basic stuff to begin with
DTIMAP(tmpTableS, TableId, tableId),
DTIMAP(tmpTableS, TableVersion, schemaVersion),
DTIMAP(tmpTableS, NoOfAttributes, noOfAttributes),
DTIBREAK(AttributeName)
}; // RestoreTabMap
static const Uint32
TabMapSize = sizeof(RestoreTabMap)
/ sizeof(SimpleProperties::SP2StructMapping);
/**
* Use a temporary struct to keep variables in AttributeDesc private
* and DTIMAP requires all Uint32
*/
struct tmpAttrS {
// Just the basic needed stuff is yet implemented
char name[AttrNameLenC];
Uint32 attrId;
Uint32 type;
Uint32 nullable;
Uint32 key;
Uint32 size;
Uint32 arraySize;
};
static const
SimpleProperties::SP2StructMapping
RestoreAttrMap[] = {
// Map the most basic properties
DTIMAP(tmpAttrS, AttributeId, attrId),
DTIMAP(tmpAttrS, AttributeType, type),
DTIMAP(tmpAttrS, AttributeNullableFlag, nullable),
DTIMAP(tmpAttrS, AttributeKeyFlag, key),
DTIMAP(tmpAttrS, AttributeSize, size),
DTIMAP(tmpAttrS, AttributeArraySize, arraySize),
DTIBREAK(AttributeEnd)
}; // RestoreAttrMap
static const Uint32
AttrMapSize = sizeof(RestoreAttrMap)
/ sizeof(SimpleProperties::SP2StructMapping);
// Parse dictTabInfo buffer and pushback to to vector storage // Parse dictTabInfo buffer and pushback to to vector storage
// Using SimpleProperties (here we don't need ntohl, ref:ejonore)
bool bool
RestoreMetaData::parseTableDescriptor(const Uint32 * data, Uint32 len) RestoreMetaData::parseTableDescriptor(const Uint32 * data, Uint32 len)
{ {
SimplePropertiesLinearReader it(data, len); NdbTableImpl* tableImpl = 0;
SimpleProperties::UnpackStatus spStatus; int ret = NdbDictInterface::parseTableInfo(&tableImpl, data, len, false);
// Parse table name if (ret != 0) {
if (it.getKey() != DictTabInfo::TableName) { err << "parseTableInfo " << " failed" << endl;
err << "readMetaTableDesc getKey table name error" << endl;
return false; return false;
} // if }
if(tableImpl == 0)
char tableName[MAX_TAB_NAME_SIZE*2]; // * 2 for db and schema.-.
it.getString(tableName);
if (strlen(tableName) == 0) {
err << "readMetaTableDesc getString table name error" << endl;
return false; return false;
} // if
TableS * table = new TableS(tableName); debug << "parseTableInfo " << tableImpl->getName() << " done" << endl;
TableS * table = new TableS(tableImpl);
if(table == NULL) { if(table == NULL) {
return false; return false;
} }
table->setBackupVersion(m_fileHeader.NdbVersion); table->setBackupVersion(m_fileHeader.NdbVersion);
tmpTableS tmpTable;
spStatus = SimpleProperties::unpack(it, &tmpTable,
RestoreTabMap, TabMapSize, true, true);
if ((spStatus != SimpleProperties::Break) ||
it.getKey() != DictTabInfo::AttributeName) {
err << "readMetaTableDesc sp.unpack error" << endl;
delete table;
return false;
} // if
debug << "Parsed table id " << tmpTable.tableId << endl; debug << "Parsed table id " << table->getTableId() << endl;
table->setTableId(tmpTable.tableId); debug << "Parsed table #attr " << table->getNoOfAttributes() << endl;
debug << "Parsed table #attr " << tmpTable.noOfAttributes << endl;
debug << "Parsed table schema version not used " << endl; debug << "Parsed table schema version not used " << endl;
for (Uint32 i = 0; i < tmpTable.noOfAttributes; i++) { debug << "Pushing table " << table->getTableName() << endl;
if (it.getKey() != DictTabInfo::AttributeName) {
err << "readMetaTableDesc error " << endl;
delete table;
return false;
} // if
tmpAttrS tmpAttr;
if(it.getValueLen() > AttrNameLenC){
err << "readMetaTableDesc attribute name too long??" << endl;
delete table;
return false;
}
it.getString(tmpAttr.name);
spStatus = SimpleProperties::unpack(it, &tmpAttr, RestoreAttrMap,
AttrMapSize, true, true);
if ((spStatus != SimpleProperties::Break) ||
(it.getKey() != DictTabInfo::AttributeEnd)) {
err << "readMetaTableDesc sp unpack attribute " << i << " error"
<< endl;
delete table;
return false;
} // if
debug << "Creating attribute " << i << " " << tmpAttr.name << endl;
bool thisNullable = (bool)(tmpAttr.nullable); // Really not needed (now)
KeyType thisKey = (KeyType)(tmpAttr.key); // These are identical (right now)
// Convert attribute size from enum to Uint32
// The static consts are really enum taking the value in DictTabInfo
// e.g. 3 is not ...0011 but rather ...0100
//TODO: rather do a switch if the constants should change
Uint32 thisSize = 1 << tmpAttr.size;
// Convert attribute type to AttrType
AttrType thisType;
switch (tmpAttr.type) {
case 0: // SignedType
thisType = Signed;
break;
case 1: // UnSignedType
thisType = UnSigned;
break;
case 2: // FloatingPointType
thisType = Float;
break;
case 3: // StringType:
debug << "String type detected " << endl;
thisType = String;
break;
default:
// What, default to unsigned?
thisType = UnSigned;
break;
} // switch
/* ndbout_c << " type: " << thisType << " size: " << thisSize <<" arraySize: "
<< tmpAttr.arraySize << " nullable: " << thisNullable << " key: "
<< thisKey << endl;
*/
table->createAttr(tmpAttr.name, thisType,
thisSize, tmpAttr.arraySize,
thisNullable, thisKey);
if (!it.next()) {
break;
// Check number of created attributes and compare with expected
//ndbout << "readMetaTableDesc expecting more attributes" << endl;
//return false;
} // if
} // for
debug << "Pushing table " << tableName << endl;
debug << " with " << table->getNoOfAttributes() << " attributes" << endl; debug << " with " << table->getNoOfAttributes() << " attributes" << endl;
allTables.push_back(table); allTables.push_back(table);
NdbTableImpl* tableImpl = 0;
int ret = NdbDictInterface::parseTableInfo(&tableImpl, data, len, false);
if (ret != 0) {
err << "parseTableInfo " << tableName << " failed" << endl;
return false;
}
if(tableImpl == 0)
return false;
debug << "parseTableInfo " << tableName << " done" << endl;
table->m_dictTable = tableImpl;
return true; return true;
} }
...@@ -509,7 +368,7 @@ RestoreDataIterator::getNextTuple(int & res) { ...@@ -509,7 +368,7 @@ RestoreDataIterator::getNextTuple(int & res) {
const Uint32 attrId = m_currentTable->m_variableAttribs[i]->attrId; const Uint32 attrId = m_currentTable->m_variableAttribs[i]->attrId;
AttributeS * attr = tup->allAttributes[attrId]; AttributeS * attr = tup->allAttributes[attrId];
if(attr->Desc->nullable){ if(attr->Desc->m_column->getNullable()){
const Uint32 ind = attr->Desc->m_nullBitIndex; const Uint32 ind = attr->Desc->m_nullBitIndex;
if(BitmaskImpl::get(m_currentTable->m_nullBitmaskSize, if(BitmaskImpl::get(m_currentTable->m_nullBitmaskSize,
tup->getDataRecord(),ind)){ tup->getDataRecord(),ind)){
...@@ -755,44 +614,39 @@ RestoreDataIterator::validateFragmentFooter() { ...@@ -755,44 +614,39 @@ RestoreDataIterator::validateFragmentFooter() {
return true; return true;
} // RestoreDataIterator::getFragmentFooter } // RestoreDataIterator::getFragmentFooter
void TableS::createAttr(const char* name, AttributeDesc::AttributeDesc(NdbDictionary::Column *c)
const AttrType type, : m_column(c)
const unsigned int size, // in bytes
const unsigned int arraySize,
const bool nullable,
const KeyType key)
{ {
AttributeDesc desc; size = c->getSize()*8;
arraySize = c->getLength();
strncpy(desc.name, name, AttrNameLenC); }
desc.type = type;
desc.size = size;
desc.arraySize = arraySize;
desc.nullable = nullable;
desc.key = key;
desc.attrId = allAttributesDesc.size();
AttributeDesc * d = new AttributeDesc(desc); void TableS::createAttr(NdbDictionary::Column *column)
{
AttributeDesc * d = new AttributeDesc(column);
if(d == NULL) { if(d == NULL) {
ndbout_c("Restore: Failed to allocate memory"); ndbout_c("Restore: Failed to allocate memory");
abort(); abort();
} }
d->m_table = this; d->attrId = allAttributesDesc.size();
allAttributesDesc.push_back(d); allAttributesDesc.push_back(d);
if(desc.key != NoKey /* && not variable */){ if(d->m_column->getPrimaryKey() /* && not variable */)
{
m_fixedKeys.push_back(d); m_fixedKeys.push_back(d);
return; return;
} }
if(!nullable){
if(!d->m_column->getNullable())
{
m_fixedAttribs.push_back(d); m_fixedAttribs.push_back(d);
return; return;
} }
if(nullable){
/* Nullable attr*/
d->m_nullBitIndex = m_noOfNullable; d->m_nullBitIndex = m_noOfNullable;
m_noOfNullable++; m_noOfNullable++;
m_nullBitmaskSize = (m_noOfNullable + 31) / 32; m_nullBitmaskSize = (m_noOfNullable + 31) / 32;
}
m_variableAttribs.push_back(d); m_variableAttribs.push_back(d);
} // TableS::createAttr } // TableS::createAttr
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
#include <ndb_global.h> #include <ndb_global.h>
#include <BackupFormat.hpp> #include <BackupFormat.hpp>
#include <NdbApi.hpp> #include <NdbApi.hpp>
#include <NdbSchemaCon.hpp>
#include "myVector.hpp" #include "myVector.hpp"
#include <ndb_version.h> #include <ndb_version.h>
...@@ -62,29 +61,22 @@ struct AttributeData { ...@@ -62,29 +61,22 @@ struct AttributeData {
struct AttributeDesc { struct AttributeDesc {
//private: //private:
// TODO (sometimes): use a temporary variable in DTIMAP so we can
// hide AttributeDesc private variables
friend class TupleS; friend class TupleS;
friend class TableS; friend class TableS;
friend class RestoreDataIterator; friend class RestoreDataIterator;
friend class RestoreMetaData; friend class RestoreMetaData;
friend struct AttributeS; friend struct AttributeS;
char name[AttrNameLenC];
Uint32 attrId;
AttrType type;
bool nullable;
KeyType key;
Uint32 size; // bits Uint32 size; // bits
Uint32 arraySize; Uint32 arraySize;
Uint32 attrId;
NdbDictionary::Column *m_column;
Uint32 m_nullBitIndex; Uint32 m_nullBitIndex;
public: public:
AttributeDesc() { AttributeDesc(NdbDictionary::Column *column);
name[0] = 0; AttributeDesc();
}
const TableS * m_table;
Uint32 getSizeInWords() const { return (size * arraySize + 31)/ 32;} Uint32 getSizeInWords() const { return (size * arraySize + 31)/ 32;}
}; // AttributeDesc }; // AttributeDesc
...@@ -118,8 +110,6 @@ class TableS { ...@@ -118,8 +110,6 @@ class TableS {
friend class RestoreMetaData; friend class RestoreMetaData;
friend class RestoreDataIterator; friend class RestoreDataIterator;
Uint32 tableId;
char tableName[TableNameLenC];
Uint32 schemaVersion; Uint32 schemaVersion;
Uint32 backupVersion; Uint32 backupVersion;
myVector<AttributeDesc *> allAttributesDesc; myVector<AttributeDesc *> allAttributesDesc;
...@@ -138,26 +128,14 @@ class TableS { ...@@ -138,26 +128,14 @@ class TableS {
char mysqlDatabaseName[1024]; char mysqlDatabaseName[1024];
*/ */
void createAttr(const char* name, void createAttr(NdbDictionary::Column *column);
const AttrType type,
const unsigned int size, // in bits
const unsigned int arraySize,
const bool nullable,
const KeyType key);
public: public:
class NdbDictionary::Table* m_dictTable; class NdbDictionary::Table* m_dictTable;
TableS (const char * name){ TableS (class NdbTableImpl* dictTable);
snprintf(tableName, sizeof(tableName), name);
m_noOfNullable = m_nullBitmaskSize = 0;
}
void setTableId (Uint32 id) {
tableId = id;
}
Uint32 getTableId() const { Uint32 getTableId() const {
return tableId; return m_dictTable->getTableId();
} }
/* /*
void setMysqlTableName(char * tableName) { void setMysqlTableName(char * tableName) {
...@@ -175,7 +153,6 @@ public: ...@@ -175,7 +153,6 @@ public:
backupVersion = version; backupVersion = version;
} }
Uint32 getBackupVersion() const { Uint32 getBackupVersion() const {
return backupVersion; return backupVersion;
} }
......
...@@ -96,7 +96,9 @@ public: ...@@ -96,7 +96,9 @@ public:
virtual void logEntry(const LogEntry &){} virtual void logEntry(const LogEntry &){}
virtual void endOfLogEntrys(){} virtual void endOfLogEntrys(){}
protected: protected:
#ifdef USE_MYSQL
int create_table_string(const TableS & table, char * ,char *); int create_table_string(const TableS & table, char * ,char *);
#endif
}; };
class BackupPrinter : public BackupConsumer class BackupPrinter : public BackupConsumer
...@@ -361,7 +363,7 @@ main(int argc, const char** argv) ...@@ -361,7 +363,7 @@ main(int argc, const char** argv)
return -1; return -1;
} }
if (res == -3) if (metaData.getNoOfTables() == 0)
{ {
ndbout_c("Restore: The backup contains no tables "); ndbout_c("Restore: The backup contains no tables ");
return -1; return -1;
...@@ -505,7 +507,7 @@ main(int argc, const char** argv) ...@@ -505,7 +507,7 @@ main(int argc, const char** argv)
NdbOut & NdbOut &
operator<<(NdbOut& ndbout, const AttributeS& attr){ operator<<(NdbOut& ndbout, const AttributeS& attr){
const AttributeData & data = attr.Data; const AttributeData & data = attr.Data;
const AttributeDesc & desc = * attr.Desc; const AttributeDesc & desc = *attr.Desc;
if (data.null) if (data.null)
{ {
...@@ -513,89 +515,10 @@ operator<<(NdbOut& ndbout, const AttributeS& attr){ ...@@ -513,89 +515,10 @@ operator<<(NdbOut& ndbout, const AttributeS& attr){
return ndbout; return ndbout;
} }
if (desc.arraySize > 1) NdbRecAttr tmprec;
ndbout << "[ "; tmprec.setup(desc.m_column, (char *)data.void_value);
for (Uint32 j = 0; j < desc.arraySize; j++) ndbout << tmprec;
{
// Print strings without spaces,
// (but ndbout char does not work as expected, see below)
switch (desc.type)
{
case Signed:
switch (desc.size)
{
case 8:
ndbout << (short)data.int8_value[j];
break;
case 16:
ndbout << data.int16_value[j];
break;
case 32:
ndbout << data.int32_value[j];
break;
case 64:
ndbout << data.int64_value[j];
break;
case 128:
ndbout << "Signed sz = 128 - this is something wrong??" << endl;
break;
default:
// Unknown, error
break;
} // switch size
break;
case UnSigned:
switch (desc.size)
{
case 8:
ndbout << (short)data.u_int8_value[j];
break;
case 16:
ndbout << data.u_int16_value[j];
break;
case 32:
ndbout << data.u_int32_value[j];
break;
case 64:
ndbout << data.u_int64_value[j];
break;
case 128:
ndbout << "UnSigned sz = 128 - this is something wrong??" << endl;
break;
default:
// Unknown, error
break;
} // switch size
break;
case String:
if (desc.size == 8){
NdbDictionary::Column::Type type = desc.m_table->m_dictTable->getColumn(desc.attrId)->getType();
if(type == NdbDictionary::Column::Varchar){
short len = ntohs(data.u_int16_value[0]);
ndbout.print("%.*s", len, (data.string_value+2));
} else {
ndbout << data.string_value;
}
} // if
else
{
ndbout << "String sz != 8 - this is something wrong??" << endl;
}
j = desc.arraySize;
break;
case Float:
// Not yet supported to print float
ndbout << "float";
break;
default:
ndbout << "Not defined Attr Type";
} // switch AttrType
ndbout << " ";
} // for ArraySize
if (desc.arraySize > 1)
{
ndbout << "]";
}
return ndbout; return ndbout;
} }
...@@ -607,7 +530,7 @@ operator<<(NdbOut& ndbout, const TupleS& tuple) ...@@ -607,7 +530,7 @@ operator<<(NdbOut& ndbout, const TupleS& tuple)
for (int i = 0; i < tuple.getNoOfAttributes(); i++) for (int i = 0; i < tuple.getNoOfAttributes(); i++)
{ {
const AttributeS * attr = tuple[i]; const AttributeS * attr = tuple[i];
debug << i << " " << attr->Desc->name; debug << i << " " << attr->Desc->m_column->getName();
ndbout << (* attr); ndbout << (* attr);
if (i != (tuple.getNoOfAttributes() - 1)) if (i != (tuple.getNoOfAttributes() - 1))
...@@ -638,7 +561,7 @@ operator<<(NdbOut& ndbout, const LogEntry& logE) ...@@ -638,7 +561,7 @@ operator<<(NdbOut& ndbout, const LogEntry& logE)
for (int i = 0; i < logE.m_values.size();i++) for (int i = 0; i < logE.m_values.size();i++)
{ {
const AttributeS * attr = logE.m_values[i]; const AttributeS * attr = logE.m_values[i];
ndbout << attr->Desc->name << "="; ndbout << attr->Desc->m_column->getName() << "=";
ndbout << (* attr); ndbout << (* attr);
if (i < (logE.m_values.size() - 1)) if (i < (logE.m_values.size() - 1))
ndbout << ", "; ndbout << ", ";
...@@ -653,55 +576,8 @@ operator<<(NdbOut& ndbout, const TableS & table){ ...@@ -653,55 +576,8 @@ operator<<(NdbOut& ndbout, const TableS & table){
for (int j = 0; j < table.getNoOfAttributes(); j++) for (int j = 0; j < table.getNoOfAttributes(); j++)
{ {
const AttributeDesc * desc = table[j]; const AttributeDesc * desc = table[j];
ndbout << desc->name << ": "; ndbout << desc->m_column->getName() << ": " << desc->m_column->getType();
NdbDictionary::Column::Type type = table.m_dictTable->getColumn(desc->attrId)->getType(); ndbout << " key: " << desc->m_column->getPrimaryKey();
switch(type){
case NdbDictionary::Column::Int:
ndbout << "Int ";
break;
case NdbDictionary::Column::Unsigned:
ndbout << "Unsigned ";
break;
case NdbDictionary::Column::Float:
ndbout << "Float ";
break;
case NdbDictionary::Column::Decimal:
ndbout << "Decimal ";
break;
case NdbDictionary::Column::Char:
ndbout << "Char ";
break;
case NdbDictionary::Column::Varchar:
ndbout << "Varchar ";
break;
case NdbDictionary::Column::Binary:
ndbout << "Binary ";
break;
case NdbDictionary::Column::Varbinary:
ndbout << "Varbinary ";
break;
case NdbDictionary::Column::Bigint:
ndbout << "Bigint ";
break;
case NdbDictionary::Column::Bigunsigned:
ndbout << "Bigunsigned ";
break;
case NdbDictionary::Column::Double:
ndbout << "Double ";
break;
case NdbDictionary::Column::Datetime:
ndbout << "Datetime ";
break;
case NdbDictionary::Column::Timespec:
ndbout << "Timespec ";
break;
case NdbDictionary::Column::Undefined:
ndbout << "Undefined ";
break;
default:
ndbout << "Unknown(" << type << ")";
}
ndbout << " key: " << desc->key;
ndbout << " array: " << desc->arraySize; ndbout << " array: " << desc->arraySize;
ndbout << " size: " << desc->size << endl; ndbout << " size: " << desc->size << endl;
} // for } // for
...@@ -973,7 +849,6 @@ BackupRestore::table(const TableS & table, MYSQL * mysqlp){ ...@@ -973,7 +849,6 @@ BackupRestore::table(const TableS & table, MYSQL * mysqlp){
return true; return true;
} }
#endif
int int
BackupConsumer::create_table_string(const TableS & table, BackupConsumer::create_table_string(const TableS & table,
...@@ -991,9 +866,8 @@ BackupConsumer::create_table_string(const TableS & table, ...@@ -991,9 +866,8 @@ BackupConsumer::create_table_string(const TableS & table,
{ {
const AttributeDesc * desc = table[j]; const AttributeDesc * desc = table[j];
// ndbout << desc->name << ": "; // ndbout << desc->name << ": ";
pos += sprintf(buf+pos, "%s%s", desc->name," "); pos += sprintf(buf+pos, "%s%s", desc->m_column->getName()," ");
NdbDictionary::Column::Type type = table.m_dictTable->getColumn(desc->attrId)->getType(); switch(desc->m_column->getType()){
switch(type){
case NdbDictionary::Column::Int: case NdbDictionary::Column::Int:
pos += sprintf(buf+pos, "%s", "int"); pos += sprintf(buf+pos, "%s", "int");
break; break;
...@@ -1048,9 +922,9 @@ BackupConsumer::create_table_string(const TableS & table, ...@@ -1048,9 +922,9 @@ BackupConsumer::create_table_string(const TableS & table,
attrSize, attrSize,
")"); ")");
} }
if (table.m_dictTable->getColumn(desc->attrId)->getPrimaryKey()) { if (desc->m_column->getPrimaryKey()) {
pos += sprintf(buf+pos, "%s", " not null"); pos += sprintf(buf+pos, "%s", " not null");
pos2 += sprintf(buf2+pos2, "%s%s", desc->name, ","); pos2 += sprintf(buf2+pos2, "%s%s", desc->m_column->getName(), ",");
} }
pos += sprintf(buf+pos, "%s", ","); pos += sprintf(buf+pos, "%s", ",");
} // for } // for
...@@ -1063,6 +937,7 @@ BackupConsumer::create_table_string(const TableS & table, ...@@ -1063,6 +937,7 @@ BackupConsumer::create_table_string(const TableS & table,
return 0; return 0;
} }
#endif // USE_MYSQL
bool bool
...@@ -1198,10 +1073,9 @@ void BackupRestore::tupleAsynch(const TupleS & tup, restore_callback_t * cbData) ...@@ -1198,10 +1073,9 @@ void BackupRestore::tupleAsynch(const TupleS & tup, restore_callback_t * cbData)
const AttributeS * attr = tup[i]; const AttributeS * attr = tup[i];
int size = attr->Desc->size; int size = attr->Desc->size;
int arraySize = attr->Desc->arraySize; int arraySize = attr->Desc->arraySize;
const KeyType key = attr->Desc->key;
char * dataPtr = attr->Data.string_value; char * dataPtr = attr->Data.string_value;
Uint32 length = (size * arraySize) / 8; Uint32 length = (size * arraySize) / 8;
if (key == TupleKey) if (attr->Desc->m_column->getPrimaryKey())
{ {
ret = op->equal(i, dataPtr, length); ret = op->equal(i, dataPtr, length);
if (ret<0) if (ret<0)
...@@ -1224,14 +1098,14 @@ void BackupRestore::tupleAsynch(const TupleS & tup, restore_callback_t * cbData) ...@@ -1224,14 +1098,14 @@ void BackupRestore::tupleAsynch(const TupleS & tup, restore_callback_t * cbData)
const AttributeS * attr = tup[i]; const AttributeS * attr = tup[i];
int size = attr->Desc->size; int size = attr->Desc->size;
int arraySize = attr->Desc->arraySize; int arraySize = attr->Desc->arraySize;
KeyType key = attr->Desc->key;
char * dataPtr = attr->Data.string_value; char * dataPtr = attr->Data.string_value;
Uint32 length = (size * arraySize) / 8; Uint32 length = (size * arraySize) / 8;
if (key == NoKey && !attr->Data.null) if (!attr->Desc->m_column->getPrimaryKey())
ret = op->setValue(i, dataPtr, length); if (attr->Data.null)
else if (key == NoKey && attr->Data.null)
ret = op->setValue(i, NULL, 0); ret = op->setValue(i, NULL, 0);
else
ret = op->setValue(i, dataPtr, length);
if (ret<0) if (ret<0)
{ {
...@@ -1372,33 +1246,26 @@ BackupRestore::tuple(const TupleS & tup) ...@@ -1372,33 +1246,26 @@ BackupRestore::tuple(const TupleS & tup)
const AttributeS * attr = tup[i]; const AttributeS * attr = tup[i];
int size = attr->Desc->size; int size = attr->Desc->size;
int arraySize = attr->Desc->arraySize; int arraySize = attr->Desc->arraySize;
KeyType key = attr->Desc->key;
const char * dataPtr = attr->Data.string_value; const char * dataPtr = attr->Data.string_value;
const Uint32 length = (size * arraySize) / 8; const Uint32 length = (size * arraySize) / 8;
if (key == TupleKey) if (attr->Desc->m_column->getPrimaryKey())
{
op->equal(i, dataPtr, length); op->equal(i, dataPtr, length);
} }
}
for (int i = 0; i < tup.getNoOfAttributes(); i++) for (int i = 0; i < tup.getNoOfAttributes(); i++)
{ {
const AttributeS * attr = tup[i]; const AttributeS * attr = tup[i];
int size = attr->Desc->size; int size = attr->Desc->size;
int arraySize = attr->Desc->arraySize; int arraySize = attr->Desc->arraySize;
KeyType key = attr->Desc->key;
const char * dataPtr = attr->Data.string_value; const char * dataPtr = attr->Data.string_value;
const Uint32 length = (size * arraySize) / 8; const Uint32 length = (size * arraySize) / 8;
if (key == NoKey && !attr->Data.null) if (!attr->Desc->m_column->getPrimaryKey())
{ if (attr->Data.null)
op->setValue(i, dataPtr, length);
}
else if (key == NoKey && attr->Data.null)
{
op->setValue(i, NULL, 0); op->setValue(i, NULL, 0);
} else
op->setValue(i, dataPtr, length);
} }
int ret = trans->execute(Commit); int ret = trans->execute(Commit);
if (ret != 0) if (ret != 0)
...@@ -1475,19 +1342,14 @@ BackupRestore::logEntry(const LogEntry & tup) ...@@ -1475,19 +1342,14 @@ BackupRestore::logEntry(const LogEntry & tup)
const AttributeS * attr = tup.m_values[i]; const AttributeS * attr = tup.m_values[i];
int size = attr->Desc->size; int size = attr->Desc->size;
int arraySize = attr->Desc->arraySize; int arraySize = attr->Desc->arraySize;
KeyType key = attr->Desc->key;
const char * dataPtr = attr->Data.string_value; const char * dataPtr = attr->Data.string_value;
const Uint32 length = (size / 8) * arraySize; const Uint32 length = (size / 8) * arraySize;
if (key == TupleKey) if (attr->Desc->m_column->getPrimaryKey())
{
op->equal(attr->Desc->attrId, dataPtr, length); op->equal(attr->Desc->attrId, dataPtr, length);
} else
else if (key == NoKey)
{
op->setValue(attr->Desc->attrId, dataPtr, length); op->setValue(attr->Desc->attrId, dataPtr, length);
} }
}
#if 1 #if 1
trans->execute(Commit); trans->execute(Commit);
......
...@@ -31,8 +31,6 @@ libndbapi_la_SOURCES = \ ...@@ -31,8 +31,6 @@ libndbapi_la_SOURCES = \
NdbEventOperationImpl.cpp \ NdbEventOperationImpl.cpp \
NdbApiSignal.cpp \ NdbApiSignal.cpp \
NdbRecAttr.cpp \ NdbRecAttr.cpp \
NdbSchemaCon.cpp \
NdbSchemaOp.cpp \
NdbUtil.cpp \ NdbUtil.cpp \
NdbReceiver.cpp \ NdbReceiver.cpp \
NdbDictionary.cpp \ NdbDictionary.cpp \
......
...@@ -103,6 +103,11 @@ NdbDictionary::Column::getLength() const{ ...@@ -103,6 +103,11 @@ NdbDictionary::Column::getLength() const{
return m_impl.m_length; return m_impl.m_length;
} }
int
NdbDictionary::Column::getSize() const{
return m_impl.m_attrSize;
}
void void
NdbDictionary::Column::setNullable(bool val){ NdbDictionary::Column::setNullable(bool val){
m_impl.m_nullable = val; m_impl.m_nullable = val;
...@@ -797,3 +802,74 @@ const struct NdbError & ...@@ -797,3 +802,74 @@ const struct NdbError &
NdbDictionary::Dictionary::getNdbError() const { NdbDictionary::Dictionary::getNdbError() const {
return m_impl.getNdbError(); return m_impl.getNdbError();
} }
NdbOut& operator <<(NdbOut& ndbout, const NdbDictionary::Column::Type type)
{
switch(type){
case NdbDictionary::Column::Bigunsigned:
ndbout << "[Bigunsigned]";
break;
case NdbDictionary::Column::Unsigned:
ndbout << "[Unsigned]";
break;
case NdbDictionary::Column::Smallunsigned:
ndbout << "[Smallunsigned]";
break;
case NdbDictionary::Column::Tinyunsigned:
ndbout << "[Tinyunsigned]";
break;
case NdbDictionary::Column::Bigint:
ndbout << "[Bigint]";
break;
case NdbDictionary::Column::Int:
ndbout << "[Int]";
break;
case NdbDictionary::Column::Smallint:
ndbout << "[Smallint]";
break;
case NdbDictionary::Column::Tinyint:
ndbout << "[Tinyint]";
break;
case NdbDictionary::Column::Char:
ndbout << "[Char]";
break;
case NdbDictionary::Column::Varchar:
ndbout << "[Varchar]";
break;
case NdbDictionary::Column::Float:
ndbout << "[Float]";
break;
case NdbDictionary::Column::Double:
ndbout << "[Double]";
break;
case NdbDictionary::Column::Mediumint:
ndbout << "[Mediumint]";
break;
case NdbDictionary::Column::Mediumunsigned:
ndbout << "[Mediumunsigend]";
break;
case NdbDictionary::Column::Binary:
ndbout << "[Binary]";
break;
case NdbDictionary::Column::Varbinary:
ndbout << "[Varbinary]";
break;
case NdbDictionary::Column::Decimal:
ndbout << "[Decimal]";
break;
case NdbDictionary::Column::Timespec:
ndbout << "[Timespec]";
break;
case NdbDictionary::Column::Blob:
ndbout << "[Blob]";
break;
case NdbDictionary::Column::Undefined:
ndbout << "[Undefined]";
break;
default:
ndbout << "[Unknown type]";
break;
}
return ndbout;
}
...@@ -30,15 +30,11 @@ Adjust: 971206 UABRONM First version ...@@ -30,15 +30,11 @@ Adjust: 971206 UABRONM First version
#include <NdbOut.hpp> #include <NdbOut.hpp>
#include <NdbRecAttr.hpp> #include <NdbRecAttr.hpp>
#include "NdbDictionaryImpl.hpp" #include "NdbDictionaryImpl.hpp"
#include <NdbTCP.h>
NdbRecAttr::NdbRecAttr() : NdbRecAttr::NdbRecAttr()
theStorageX(NULL),
theValue(NULL),
theRef(NULL),
theNext(NULL),
theAttrId(0xFFFF),
theNULLind(-1)
{ {
init();
} }
NdbRecAttr::~NdbRecAttr() NdbRecAttr::~NdbRecAttr()
...@@ -46,6 +42,11 @@ NdbRecAttr::~NdbRecAttr() ...@@ -46,6 +42,11 @@ NdbRecAttr::~NdbRecAttr()
release(); release();
} }
int
NdbRecAttr::setup(const class NdbDictionary::Column* col, char* aValue)
{
return setup(&(col->m_impl), aValue);
}
int int
NdbRecAttr::setup(const NdbColumnImpl* anAttrInfo, char* aValue) NdbRecAttr::setup(const NdbColumnImpl* anAttrInfo, char* aValue)
{ {
...@@ -54,6 +55,7 @@ NdbRecAttr::setup(const NdbColumnImpl* anAttrInfo, char* aValue) ...@@ -54,6 +55,7 @@ NdbRecAttr::setup(const NdbColumnImpl* anAttrInfo, char* aValue)
Uint32 tAttrByteSize = tAttrSize * tArraySize; Uint32 tAttrByteSize = tAttrSize * tArraySize;
m_column = anAttrInfo; m_column = anAttrInfo;
theAttrId = anAttrInfo->m_attrId; theAttrId = anAttrInfo->m_attrId;
theAttrSize = tAttrSize; theAttrSize = tAttrSize;
theArraySize = tArraySize; theArraySize = tArraySize;
...@@ -126,7 +128,7 @@ NdbRecAttr::clone() const { ...@@ -126,7 +128,7 @@ NdbRecAttr::clone() const {
return ret; return ret;
} }
NdbOut& operator <<(NdbOut& ndbout, const NdbRecAttr &r) NdbOut& operator<<(NdbOut& ndbout, const NdbRecAttr &r)
{ {
if (r.isNULL()) if (r.isNULL())
{ {
...@@ -134,8 +136,16 @@ NdbOut& operator <<(NdbOut& ndbout, const NdbRecAttr &r) ...@@ -134,8 +136,16 @@ NdbOut& operator <<(NdbOut& ndbout, const NdbRecAttr &r)
return ndbout; return ndbout;
} }
switch(r.getType()){ if (r.arraySize() > 1)
ndbout << "[";
for (Uint32 j = 0; j < r.arraySize(); j++)
{
if (j > 0)
ndbout << " ";
switch(r.getType())
{
case NdbDictionary::Column::Bigunsigned: case NdbDictionary::Column::Bigunsigned:
ndbout << r.u_64_value(); ndbout << r.u_64_value();
break; break;
...@@ -160,53 +170,36 @@ NdbOut& operator <<(NdbOut& ndbout, const NdbRecAttr &r) ...@@ -160,53 +170,36 @@ NdbOut& operator <<(NdbOut& ndbout, const NdbRecAttr &r)
case NdbDictionary::Column::Tinyint: case NdbDictionary::Column::Tinyint:
ndbout << (int) r.char_value(); ndbout << (int) r.char_value();
break; break;
case NdbDictionary::Column::Char: case NdbDictionary::Column::Char:
ndbout.print("%.*s", r.arraySize(), r.aRef());
j = r.arraySize();
break;
case NdbDictionary::Column::Varchar: case NdbDictionary::Column::Varchar:
{ {
int aSize = r.arraySize(); short len = ntohs(r.u_short_value());
char* buf = new char[aSize+1]; ndbout.print("%.*s", len, r.aRef()+2);
memcpy(buf, r.aRef(), aSize);
buf[aSize] = 0;
ndbout << buf;
delete [] buf;
} }
j = r.arraySize();
break; break;
case NdbDictionary::Column::Float: case NdbDictionary::Column::Float:
ndbout << r.float_value(); ndbout << r.float_value();
break; break;
case NdbDictionary::Column::Double: case NdbDictionary::Column::Double:
ndbout << r.double_value(); ndbout << r.double_value();
break; break;
case NdbDictionary::Column::Mediumint: default: /* no print functions for the rest, just print type */
ndbout << "[Mediumint]"; ndbout << r.getType();
break; j = r.arraySize();
case NdbDictionary::Column::Mediumunsigned: if (j > 1)
ndbout << "[Mediumunsigend]"; ndbout << " %u times" << j;
break;
case NdbDictionary::Column::Binary:
ndbout << "[Binary]";
break;
case NdbDictionary::Column::Varbinary:
ndbout << "[Varbinary]";
break;
case NdbDictionary::Column::Decimal:
ndbout << "[Decimal]";
break;
case NdbDictionary::Column::Timespec:
ndbout << "[Timespec]";
break;
case NdbDictionary::Column::Blob:
ndbout << "[Blob]";
break;
case NdbDictionary::Column::Undefined:
ndbout << "[Undefined]";
break;
default:
ndbout << "[unknown]";
break; break;
} }
}
if (r.arraySize() > 1)
{
ndbout << "]";
}
return ndbout; return ndbout;
} }
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#include <NdbError.hpp> #include <NdbError.hpp>
#include "NdbImpl.hpp" #include "NdbImpl.hpp"
#include "NdbDictionaryImpl.hpp" #include "NdbDictionaryImpl.hpp"
#include <NdbSchemaCon.hpp>
#include <NdbOperation.hpp> #include <NdbOperation.hpp>
#include <NdbConnection.hpp> #include <NdbConnection.hpp>
...@@ -66,10 +65,3 @@ NdbOperation::getNdbError() const { ...@@ -66,10 +65,3 @@ NdbOperation::getNdbError() const {
update(theError); update(theError);
return theError; return theError;
} }
const
NdbError &
NdbSchemaCon::getNdbError() const {
update(theError);
return theError;
}
include .defs.mk
DIRS := \
client \
common \
kernel \
ndbapi \
mgmsrv \
mgmapi \
newtonapi \
rep \
mgmclient \
cw \
ndbbaseclient
ifneq ($(NDB_ODBC),N)
DIRS += ndbclient
endif
ifeq ($(findstring OSE, $(NDB_OS)),)
DIRS += scripts
endif
include $(NDB_TOP)/Epilogue.mk
_bins_mgmsrv: _libs_ndbapi
_bins_mgmsrv: _libs_mgmapi
_bins_mgmclient: _libs_mgmapi
_bins_mgmclient: _libs_common
_bins_client: _bins_ndbapi
_bins_common: _bins_mgmapi
_bins_kernel: _bins_ndbapi
_bins_newtonapi: _bins_ndbapi
_bins_mgmapi : _libs_common
_bins_rep: _libs_common
_bins_rep: _libs_ndbapi
include .defs.mk
DIRS := src tools ndbapi run-test
EXTRA_DIRS = newtonapi
ifeq ($(NDB_ARCH), x86_64)
EXTRA_DIRS =
endif
DIRS += $(EXTRA_DIRS)
ifneq ($(NDB_ODBC),N)
DIRS += odbc
endif
include $(NDB_TOP)/Epilogue.mk
_bins_ndbapi : _libs_src
include .defs.mk
DIRS := \
basic_test \
perf_test
include $(NDB_TOP)/Epilogue.mk
include .defs.mk
DIRS += driver
#ifneq ($(findstring odbc, $(wildcard /usr/lib/libodbc.so)),)
#DIRS += dm-unixodbc
#endif
ifneq ($(findstring $(NDB_OS), SOLARIS),)
DIRS += dm-iodbc
endif
include ${NDB_TOP}/Epilogue.mk
...@@ -8,7 +8,8 @@ libNDBT_a_SOURCES = \ ...@@ -8,7 +8,8 @@ libNDBT_a_SOURCES = \
HugoOperations.cpp HugoTransactions.cpp \ HugoOperations.cpp HugoTransactions.cpp \
HugoAsynchTransactions.cpp UtilTransactions.cpp \ HugoAsynchTransactions.cpp UtilTransactions.cpp \
NdbRestarter.cpp NdbRestarts.cpp NDBT_Output.cpp \ NdbRestarter.cpp NdbRestarts.cpp NDBT_Output.cpp \
NdbBackup.cpp NdbConfig.cpp NdbGrep.cpp NDBT_Table.cpp NdbBackup.cpp NdbConfig.cpp NdbGrep.cpp NDBT_Table.cpp \
NdbSchemaCon.cpp NdbSchemaOp.cpp
INCLUDES_LOC = -I$(top_srcdir)/ndb/src/common/mgmcommon -I$(top_srcdir)/ndb/include/mgmcommon -I$(top_srcdir)/ndb/include/kernel -I$(top_srcdir)/ndb/src/mgmapi INCLUDES_LOC = -I$(top_srcdir)/ndb/src/common/mgmcommon -I$(top_srcdir)/ndb/include/mgmcommon -I$(top_srcdir)/ndb/include/kernel -I$(top_srcdir)/ndb/src/mgmapi
......
...@@ -118,78 +118,8 @@ BaseString NDBT_ResultRow::c_str() { ...@@ -118,78 +118,8 @@ BaseString NDBT_ResultRow::c_str() {
NdbOut & NdbOut &
operator << (NdbOut& ndbout, const NDBT_ResultRow & res) { operator << (NdbOut& ndbout, const NDBT_ResultRow & res) {
for(int i = 0; i<res.cols; i++){ for(int i = 0; i<res.cols; i++)
if(res.data[i]->isNULL()) ndbout << res.data[i];
ndbout << "NULL";
else{
const int size = res.data[i]->attrSize();
const int aSize = res.data[i]->arraySize();
switch(convertColumnTypeToAttrType(res.data[i]->getType())){
case UnSigned:
switch(size){
case 8:
ndbout << res.data[i]->u_64_value();
break;
case 4:
ndbout << res.data[i]->u_32_value();
break;
case 2:
ndbout << res.data[i]->u_short_value();
break;
case 1:
ndbout << (unsigned) res.data[i]->u_char_value();
break;
default:
ndbout << "Unknown size";
}
break;
case Signed:
switch(size){
case 8:
ndbout << res.data[i]->int64_value();
break;
case 4:
ndbout << res.data[i]->int32_value();
break;
case 2:
ndbout << res.data[i]->short_value();
break;
case 1:
ndbout << (int) res.data[i]->char_value();
break;
default:
ndbout << "Unknown size";
}
break;
case String:
{
char * buf = new char[aSize+1];
memcpy(buf, res.data[i]->aRef(), aSize);
buf[aSize] = 0;
ndbout << buf;
delete [] buf;
// Null terminate string
//res.data[i][res.sizes[i]] = 0;
//ndbout << res.data[i];
}
break;
case Float:
ndbout_c("%f", res.data[i]->float_value());
break;
default:
ndbout << "Unknown(" <<
convertColumnTypeToAttrType(res.data[i]->getType()) << ")";
break;
}
}
if (i < res.cols-1)
ndbout << res.ad;
}
return ndbout; return ndbout;
} }
......
...@@ -90,8 +90,9 @@ NdbBackup::getFileSystemPathForNode(int _node_id){ ...@@ -90,8 +90,9 @@ NdbBackup::getFileSystemPathForNode(int _node_id){
ndbout << "Invalid configuration fetched, DB missing" << endl; ndbout << "Invalid configuration fetched, DB missing" << endl;
return NULL; return NULL;
} }
unsigned int type; unsigned int type = 123456;
if(!iter.get(CFG_TYPE_OF_SECTION, &type) || type != NODE_TYPE_DB){ if(iter.get(CFG_TYPE_OF_SECTION, &type) || type != NODE_TYPE_DB){
ndbout <<"type = " << type << endl;
ndbout <<"Invalid configuration fetched, I'm wrong type of node" << endl; ndbout <<"Invalid configuration fetched, I'm wrong type of node" << endl;
return NULL; return NULL;
} }
...@@ -114,10 +115,13 @@ NdbBackup::execRestore(bool _restore_data, ...@@ -114,10 +115,13 @@ NdbBackup::execRestore(bool _restore_data,
const int buf_len = 1000; const int buf_len = 1000;
char buf[buf_len]; char buf[buf_len];
ndbout << "getFileSystemPathForNode "<< _node_id <<endl;
const char* path = getFileSystemPathForNode(_node_id); const char* path = getFileSystemPathForNode(_node_id);
if (path == NULL) if (path == NULL)
return -1; return -1;
ndbout << "getHostName "<< _node_id <<endl;
const char *host; const char *host;
if (!getHostName(_node_id, &host)){ if (!getHostName(_node_id, &host)){
return -1; return -1;
...@@ -138,7 +142,7 @@ NdbBackup::execRestore(bool _restore_data, ...@@ -138,7 +142,7 @@ NdbBackup::execRestore(bool _restore_data,
ndbout << "res: " << res << endl; ndbout << "res: " << res << endl;
#if 0 #if 0
snprintf(buf, 255, "restore -c \"nodeid=%d;host=%s\" -n %d -b %d %s %s %s/BACKUP/BACKUP-%d", snprintf(buf, 255, "ndb_restore -c \"nodeid=%d;host=%s\" -n %d -b %d %s %s %s/BACKUP/BACKUP-%d",
ownNodeId, ownNodeId,
addr, addr,
_node_id, _node_id,
...@@ -150,7 +154,7 @@ NdbBackup::execRestore(bool _restore_data, ...@@ -150,7 +154,7 @@ NdbBackup::execRestore(bool _restore_data,
#endif #endif
snprintf(buf, 255, "restore -c \"nodeid=%d;host=%s\" -n %d -b %d %s %s .", snprintf(buf, 255, "ndb_restore -c \"nodeid=%d;host=%s\" -n %d -b %d %s %s .",
ownNodeId, ownNodeId,
addr, addr,
_node_id, _node_id,
......
...@@ -35,9 +35,10 @@ Adjust: 980126 UABMNST First version. ...@@ -35,9 +35,10 @@ Adjust: 980126 UABMNST First version.
New programs should use NdbDictionary.hpp New programs should use NdbDictionary.hpp
*********************************************************************/ *********************************************************************/
#include "NdbSchemaCon.hpp" #include <ndb_global.h>
#include "NdbSchemaOp.hpp" #include <NdbApi.hpp>
#include "NdbApiSignal.hpp" #include <NdbSchemaCon.hpp>
#include <NdbSchemaOp.hpp>
/********************************************************************* /*********************************************************************
...@@ -142,20 +143,22 @@ NdbSchemaCon::release() ...@@ -142,20 +143,22 @@ NdbSchemaCon::release()
return; return;
}//NdbSchemaCon::release() }//NdbSchemaCon::release()
#include <NdbError.hpp>
static void
update(const NdbError & _err){
NdbError & error = (NdbError &) _err;
ndberror_struct ndberror = (ndberror_struct)error;
ndberror_update(&ndberror);
error = NdbError(ndberror);
}
const
NdbError &
NdbSchemaCon::getNdbError() const {
update(theError);
return theError;
}
......
...@@ -34,11 +34,11 @@ Adjust: 980125 UABMNST First version. ...@@ -34,11 +34,11 @@ Adjust: 980125 UABMNST First version.
NOTE: This file is only used as a compatibility layer for old test programs, NOTE: This file is only used as a compatibility layer for old test programs,
New programs should use NdbDictionary.hpp New programs should use NdbDictionary.hpp
*****************************************************************************/ *****************************************************************************/
#include <assert.h>
#include "NdbSchemaOp.hpp"
#include "NdbSchemaCon.hpp"
#include "API.hpp"
#include <ndb_global.h>
#include <NdbApi.hpp>
#include <NdbSchemaOp.hpp>
#include <NdbSchemaCon.hpp>
/***************************************************************************** /*****************************************************************************
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment