diff --git a/builds/posix/Makefile.in.client.isql b/builds/posix/Makefile.in.client.isql index 109928c97b..f11280b0f5 100644 --- a/builds/posix/Makefile.in.client.isql +++ b/builds/posix/Makefile.in.client.isql @@ -58,7 +58,7 @@ Dependencies = $(AllObjects:.o=.d) isql : $(LIBFBCLIENT_SO) $(ISQL) $(ISQL): $(ISQL_Objects) $(CLUMPLETS_Objects) $(FBCOMMON_Objects) $(FBCLASSES_Objects) - $(LD) $(LINK_OPTS) $^ -o $@ -L$(LIB) -lfbclient $(LINK_LIBS) @PTHREAD_CFLAGS@ @PTHREAD_LIBS@ + $(LD) $(LINK_OPTS) $^ -o $@ -L$(LIB) -lfbclient $(LINK_LIBS) @PTHREAD_CFLAGS@ @PTHREAD_LIBS@ $(LIBEDITLINE) include $(ROOT)/gen/make.shared.targets diff --git a/builds/posix/Makefile.in.embed.isql b/builds/posix/Makefile.in.embed.isql index 98086cc062..5c157e3192 100644 --- a/builds/posix/Makefile.in.embed.isql +++ b/builds/posix/Makefile.in.embed.isql @@ -61,7 +61,7 @@ Dependencies = $(AllObjects:.o=.d) isql : $(LIBFBEMBED_SO) $(ISQL) $(ISQL): $(ISQL_Objects) $(CLUMPLETS_Objects) $(FBCOMMON_Objects) $(FBCLASSES_Objects) - $(LD) $(LINK_OPTS) $^ -o $@ $(FBEMBED_LINK) $(LINK_LIBS) + $(LD) $(LINK_OPTS) $^ -o $@ $(FBEMBED_LINK) $(LINK_LIBS) $(LIBEDITLINE) include $(ROOT)/gen/make.shared.targets diff --git a/builds/posix/Makefile.in.firebird b/builds/posix/Makefile.in.firebird index d6bc1f5745..ce68dc3743 100644 --- a/builds/posix/Makefile.in.firebird +++ b/builds/posix/Makefile.in.firebird @@ -185,10 +185,14 @@ $(GEN_ROOT)/Make.Version : $(SRC_ROOT)/misc/writeBuildNum.sh # external_libraries: +ifeq ($(STD_ICU),false) $(MAKE) -f $(GEN_ROOT)/Makefile.extern.icu +endif +ifeq ($(STD_EDITLINE),false) ifeq ($(EDITLINE_FLG),Y) $(MAKE) -f $(GEN_ROOT)/Makefile.extern.editline endif +endif btyacc_binary: $(BTYACC) diff --git a/builds/posix/Makefile.in.static.isql b/builds/posix/Makefile.in.static.isql index b3ac0e0fc5..b68a2a9176 100644 --- a/builds/posix/Makefile.in.static.isql +++ b/builds/posix/Makefile.in.static.isql @@ -58,7 +58,7 @@ Dependencies = $(AllObjects:.o=.d) isql_static : $(ISQL_STATIC) $(ISQL_STATIC): $(ISQL_Objects) $(COMMON_Objects) $(LIBFBSTATIC_A) - $(LD) $(LINK_OPTS) $(ISQL_Objects) $(COMMON_Objects) -o $@ -L$(LIB) -lfbstatic $(LINK_LIBS) $(ICU_LIBS) + $(LD) $(LINK_OPTS) $(ISQL_Objects) $(COMMON_Objects) -o $@ -L$(LIB) -lfbstatic $(LINK_LIBS) $(ICU_LIBS) $(LIBEDITLINE) include $(ROOT)/gen/make.shared.targets diff --git a/builds/posix/make.defaults b/builds/posix/make.defaults index e1f694b447..8e7a79eca7 100755 --- a/builds/posix/make.defaults +++ b/builds/posix/make.defaults @@ -92,7 +92,8 @@ endif # link with readline libraries - set by configure EDITLINE_FLG=@EDITLINE_FLG@ - +STD_EDITLINE=@STD_EDITLINE@ +STD_ICU=@STD_ICU@ # Default programs and tools to be used in the build process @@ -146,9 +147,9 @@ STATICLIB_LINK= ar cruvs EXE_LINK = @CXX@ STATICEXE_LINK = @CXX@ -LINK_LIBS = @LIBS@ @EDITLINE_A@ +LINK_LIBS = @LIBS@ ICU_LIBS = -licuuc -licudata -licui18n -STATICLINK_LIBS = @LIBS@ @EDITLINE_A@ +STATICLINK_LIBS = @LIBS@ SO_LINK_LIBS = @LIBS@ # Default extensions @@ -215,7 +216,15 @@ LIBFBCLIENT_SONAME=$(LIB)/$(ClientLibraryName) LIBFBINTL_SO = $(FIREBIRD)/intl/$(LIB_PREFIX)fbintl.$(SHRLIB_EXT) LIBFBSTATIC_A = $(LIB)/libfbstatic.a -LIBEDITLINE_A = $(LIB)/libeditline.a + +ifeq ($(EDITLINE_FLG),Y) + ifeq ($(STD_EDITLINE), true) + LIBEDITLINE := -leditline + else + LIBEDITLINE := $(LIB)/libeditline.a + endif +endif + LIBICU_SO = $(LIB)/$(LIB_PREFIX)icuuc.$(SHRLIB_EXT) \ $(LIB)/$(LIB_PREFIX)icudata.$(SHRLIB_EXT) \ $(LIB)/$(LIB_PREFIX)icui18n.$(SHRLIB_EXT) diff --git a/builds/posix/make.rules b/builds/posix/make.rules index b181a636fa..5a6d6280c6 100644 --- a/builds/posix/make.rules +++ b/builds/posix/make.rules @@ -32,7 +32,10 @@ # Please don't use compiler/platform specific flags here - nmcc 02-Nov-2002 -CFLAGS:= $(CFLAGS) -I$(SRC_ROOT)/include/gen -I$(SRC_ROOT)/include -I$(SRC_ROOT)/vulcan -I$(ROOT)/extern/icu/source/common -I$(ROOT)/extern/icu/source/i18n -DNAMESPACE=Vulcan +CFLAGS:= $(CFLAGS) -I$(SRC_ROOT)/include/gen -I$(SRC_ROOT)/include -I$(SRC_ROOT)/vulcan -DNAMESPACE=Vulcan +ifeq ($(STD_ICU),false) + CFLAGS:= $(CFLAGS) -I$(ROOT)/extern/icu/source/common -I$(ROOT)/extern/icu/source/i18n +endif ifeq ($(IsProdTypeBuild),Y) CFLAGS:= $(CFLAGS) $(PROD_FLAGS) -DPROD_BUILD diff --git a/configure.in b/configure.in index bb8773682f..f8e236178b 100644 --- a/configure.in +++ b/configure.in @@ -39,6 +39,9 @@ dnl Should Classic Server run services as thread or as process? dnl Default - run as processes (empty value). service_thread_CS="" +dnl Should system editline and/or icu be used +STD_EDITLINE=false +STD_ICU=false case "$target" in *-*-darwin*) @@ -304,8 +307,33 @@ AC_ARG_WITH(editline, no) EDITLINE_FLG=N;; *) AC_MSG_ERROR(bad value '${withval}' for --with-editline);; esac]) +AC_ARG_WITH(system-editline, + [ --with-system-editline use OS supplied libeditline], + [case "$withval" in + yes) STD_EDITLINE=true;; + no) STD_EDITLINE=false;; + *) AC_MSG_ERROR(bad value '${withval}' for --with-system-editline);; + esac]) + +# not need editline in default libs, but need to test for it's ptresence +saveLIBS=$LIBS +if test "$STD_EDITLINE" = "true"; then + AC_CHECK_LIB(editline, readline, EDITLINE_FLG=Y, STD_EDITLINE=false) +fi +LIBS=$saveLIBS + +AC_SUBST(STD_EDITLINE) AC_SUBST(EDITLINE_FLG) +AC_ARG_WITH(system-icu, + [ --with-system-icu use OS supplied ICU], + [case "$withval" in + yes) STD_ICU=true;; + no) STD_ICU=false;; + *) AC_MSG_ERROR(bad value '${withval}' for --with-system-icu);; + esac]) +AC_SUBST(STD_ICU) + FB_SERVICE_NAME=gds_db FB_SERVICE_PORT=3050 FB_IPC_NAME=FirebirdIPI @@ -417,7 +445,7 @@ AC_CHECK_HEADERS(signal.h sys/signal.h sys/siginfo.h) if test "$EDITLINE_FLG" = "Y"; then AC_CHECK_HEADERS(termio.h termios.h) AC_HEADER_DIRENT - AC_DEFINE(HAVE_EDITLINE_H, 1, [Define this if internal editline.h is in use]) + AC_DEFINE(HAVE_EDITLINE_H, 1, [Define this if editline is in use]) fi AC_CHECK_HEADERS(unistd.h) if test "$ac_cv_header_unistd_h" = "yes"; then @@ -458,7 +486,6 @@ if test "$EDITLINE_FLG" = "Y"; then AC_CHECK_LIB(termcap, tgetent, , \ AC_CHECK_LIB(tinfo, tgetent, , \ AC_MSG_ERROR(termcap support not found))))) - AC_SUBST(EDITLINE_A, -leditline) fi dnl AC_CHECK_LIB(stdc++, main,,, $LIBS) @@ -845,7 +872,6 @@ mkdir -p temp/std/utilities/ibmgr mkdir -p temp/std/utilities/install mkdir -p temp/std/utilities/rebuild mkdir -p temp/std/vulcan -mkdir -p temp/std/extern/editline mkdir -p temp/superclient/alice mkdir -p temp/superclient/auth/trusted @@ -1061,9 +1087,13 @@ gen/Makefile.embed.qli:${MAKE_SRC_DIR}/Makefile.in.embed.qli gen/Makefile.embed.gpre:${MAKE_SRC_DIR}/Makefile.in.embed.gpre gen/Makefile.install:builds/install/arch-specific/${INSTALL_PREFIX}/Makefile.in Makefile:Makefile.in -gen/Makefile.extern.editline:${MAKE_SRC_DIR}/Makefile.in.extern.editline -gen/Makefile.extern.icu:${MAKE_SRC_DIR}/Makefile.in.extern.icu ) +if test "$STD_EDITLINE" = "false"; then + AC_CONFIG_FILES(gen/Makefile.extern.editline:${MAKE_SRC_DIR}/Makefile.in.extern.editline) +fi +if test "$STD_ICU" = "false"; then + AC_CONFIG_FILES(gen/Makefile.extern.icu:${MAKE_SRC_DIR}/Makefile.in.extern.icu) +fi @@ -1071,11 +1101,14 @@ if test "$PROD_BUILD_FLG" = N; then DEBUG_ICU=--enable-debug fi +if test "$STD_ICU" = "true"; then +AC_OUTPUT +else AC_OUTPUT (cd extern/icu/source chmod +x runConfigureICU configure install-sh ./runConfigureICU "$ICU_PLATFORM" "$DEBUG_ICU" --prefix=`pwd`/..) - +fi dnl Print out the build configuration (the most interesting thing) echo