| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443 |
- #
- # The contents of this file are subject to the Mozilla Public
- # License Version 1.1 (the "License"); you may not use this file
- # except in compliance with the License. You may obtain a copy of
- # the License at http://www.mozilla.org/MPL/
- # Alternatively, the contents of this file may be used under the
- # terms of the GNU General Public License Version 2 or later (the
- # "GPL"), in which case the provisions of the GPL are applicable
- # instead of those above. You may obtain a copy of the Licence at
- # http://www.gnu.org/copyleft/gpl.html
- #
- # 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
- # Relevant for more details.
- #
- # This file was created by members of the firebird development team.
- # All individual contributions remain the Copyright (C) of those
- # individuals. Contributors to this file are either listed here or
- # can be obtained from a CVS history command.
- #
- # All rights reserved.
- #
- # Created by: Mark O'Donohue <[email protected]>
- #
- # Contributor(s):
- #
- #
- #
- #_____________________________________________________________________________
- # This file contains default values that are used by the build process do not
- # change these here, but override them in the platform specific file
- # prefix.xxx where xxx is the platform name using the form SH := bash
- # see the readme file with the Makefile.in files for more details.
- #_____________________________________________________________________________
- TMP_ROOT=$(ROOT)/temp/$(TARGET)
- GEN_ROOT=$(ROOT)/gen
- SRC_ROOT=$(ROOT)/src
- BLD_ROOT=$(ROOT)/builds
- EXA_ROOT=$(ROOT)/examples
- IsCross=@IS_CROSS@
- TOMMATH_BUILD_FLG=@TOMMATH_BUILD@
- TOMCRYPT_BUILD_FLG=@TOMCRYPT_BUILD@
- RE2_BUILD_FLG=@RE2_BUILD@
- SYSTEM_BOOST_FLG=@SYSTEM_BOOST@
- FB_BUILD=$(GEN_ROOT)/$(TARGET)/firebird
- ifeq ($(IsCross), Y)
- FIREBIRD=$(GEN_ROOT)/Native/firebird
- else
- FIREBIRD=$(FB_BUILD)
- endif
- FIREBIRD_LOCK=$(FIREBIRD)
- export FIREBIRD
- export FIREBIRD_LOCK
- # Set firebird to boot build mode
- FIREBIRD_BOOT_BUILD=1
- export FIREBIRD_BOOT_BUILD
- buildSubDirectory=$(FB_BUILD)/$(1)
- LIB=$(call buildSubDirectory,lib)
- BIN=$(call buildSubDirectory,bin)
- PLUGINS=$(call buildSubDirectory,plugins)
- TZDATA=$(call buildSubDirectory,tzdata)
- FB_TESTS_DIR=$(call buildSubDirectory,tests)
- STATIC_LIB=$(TMP_ROOT)
- RBIN=$(FIREBIRD)/bin
- # This picks up the current directory and maps it to the equivalent module
- # in the src and gen area.
- RealSrcRootPath = $(shell cd $(SRC_ROOT); pwd)
- #ModuleName:=$(notdir $(CURDIR))
- ModuleName:=$(subst $(RealSrcRootPath)/,,$(CURDIR))
- OBJ=$(TMP_ROOT)
- GEN_SRC=$(OBJ)
- # avoid generated cpp files deletion
- .SECONDARY:
- # This one is not so widely used at the momement.
- # but I would like it to become so.
- RealFirebirdPath = @NEW_FIREBIRD_DIR@
- #____________________________________________________________________________
- # From here we may set some global options to both compiler and linker.
- # Use empty default global options for all compilers and linkers
- GLOB_OPTIONS:=
- # Possible use - profiling.
- #GLOB_OPTIONS:= -pg
- #____________________________________________________________________________
- # Global c++ flags: firebird needs no RTTI, choose build standard and c++ specific warnings level
- PLUSPLUS_FLAGS:= -fno-rtti -std=c++20 -Werror=delete-incomplete -Werror=return-type
- # If this is defined then we use special rules useful for developers only
- IsDeveloper = @DEVEL_FLG@
- CLIENT_ONLY_FLG=@CLIENT_ONLY_FLG@
- WITH_TOMCRYPT=@WITH_TOMCRYPT@
- CpuType=@CPU_TYPE@
- PLATFORM=@PLATFORM@
- TZDATA_ZIP=@TZDATA_ZIP@
- # link with readline libraries - set by configure
- EDITLINE_FLG=@EDITLINE_FLG@
- STD_EDITLINE=@STD_EDITLINE@
- READLINE=@READLINE@
- # threading options - set by configure
- THR_FLAGS=@PTHREAD_CFLAGS@
- THR_LIBS=@PTHREAD_LIBS@
- # thread local storage options - set by configure
- TLS_OPTIONS=@TLS_OPTIONS@
- # atomic options - set by configure
- ATOMIC_OPTIONS=@ATOMIC_OPTIONS@
- # compare and swap options - set by configure
- # needed at least for solaris inline assembly routines
- CAS_OPTIONS=@CAS_OPTIONS@
- # BigEndian int128 support
- ABSEIL_BUILD_FLG = @ABSEIL_BUILD_FLG@
- # multiple-precision integer library
- MATHLIB=@MATHLIB@
- DECLIB=-ldecFloat$(CROSS)
- RE2LIB=-lre2
- ifeq ($(ABSEIL_BUILD_FLG), Y)
- I128LIB=-li128$(CROSS)
- else
- I128LIB=
- endif
- LIBCDSLIB=-lcds
- # crypt library
- CRYPTLIB=@CRYPTLIB@
- LSB_FLG=@LSB_FLG@
- ifeq ($(LSB_FLG), Y)
- LSB_UNDEF=-Wl,--allow-shlib-undefined
- endif
- # switch to make sed edit files inplace
- INLINE_EDIT_SED:= -i
- # Default programs and tools to be used in the build process
- SH= sh -c
- RM= rm -f
- RM_R= rm -rf
- CHMOD= chmod
- CHMOD_6= chmod 666
- CHMOD_7= chmod 777
- CHMOD_S7= chmod 06777
- MV= mv -f
- TOUCH= touch
- CP= cp
- ECHO= echo
- QUIET_ECHO= @echo
- CD= cd
- CAT= cat
- AR= ar @AR_OPTIONS@
- LN= @LN_S@
- RANLIB= @RANLIB@
- BTYACC=$(ROOT)/extern/btyacc/btyacc
- CLOOP=$(GEN_ROOT)/$(TARGET)/cloop/bin/cloop
- AR = @AR@
- CC = @CC@
- CXX = @CXX@
- LD = @CXX@
- OBJCOPY = @OBJCOPY@
- READELF = @READELF@
- AC_CFLAGS = @CFLAGS@
- AC_CXXFLAGS = @CXXFLAGS@
- AC_LDFLAGS = @LDFLAGS@
- # LINKER COMMANDS
- LIB_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS) $(WLDFLAGS)
- EXE_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS) $(WLDFLAGS)
- STATICLIB_LINK = $(AR) crus
- LINK_LIBS = @LIBS@ $(DECLIB) $(I128LIB)
- SO_LINK_LIBS = @LIBS@ $(DECLIB) $(I128LIB)
- # Default extensions
- ARCH_EXT= .a
- EXEC_EXT= @EXEEXT@
- SHRLIB_EXT=@SHRLIB_EXT@
- LIB_PREFIX= lib
- SHRLIB_FOREIGN_EXT= $(SHRLIB_EXT)
- #_____________________________________________________________________________
- # Include file with version variable definitions
- include $(ROOT)/gen/Make.Version
- # Add windows dll to library patterns
- .LIBPATTERNS += %.dll lib%.dll
- # Search path for libraries
- vpath %.so $(LIB)
- vpath %.a $(LIB)
- vpath %.dll $(LIB)
- #_____________________________________________________________________________
- # From jrd
- # The firebird shared library name
- # SD: This name is also hard-coded in builds/install/.../linux/classic scripts.
- # Scold me, but I don't want library names to be in configure.in
- #
- #LibraryFileName=libfbclient
- LibraryFileName=libfbclient
- LibraryFullName=$(LibraryFileName).${SHRLIB_EXT}.${FirebirdVersion}
- LibrarySoName=$(LibraryFileName).${SHRLIB_EXT}.2
- LibraryBaseName=$(LibraryFileName).${SHRLIB_EXT}
- LIBFIREBIRD_FULLNAME = $(LIB)/$(LibraryFullName)
- LIBFIREBIRD_SONAME = $(LIB)/$(LibraryBaseName)
- LIBFIREBIRD_BASENAME = $(LIB)/$(LibrarySoName)
- # The firebird engine library name
- EngineFileName=libEngine${OdsVersion}
- EngineSoName=$(EngineFileName).${SHRLIB_EXT}
- ENGINE_SONAME = $(PLUGINS)/$(EngineSoName)
- ENGINE_TEST = $(FB_TESTS_DIR)/$(EngineFileName)_test$(EXEC_EXT)
- # intl will load dynamically, and having the whole soname set with version
- # confuses the dynamic load process. So we only have the .$(SHRLIB_EXT) file
- # MOD 28-July-2002
- LIBFBINTL_SO=$(call buildSubDirectory,intl)/$(LIB_PREFIX)fbintl.$(SHRLIB_EXT)
- ifeq ($(EDITLINE_FLG),Y)
- ifeq ($(STD_EDITLINE), true)
- LIBEDITLINE := -l$(READLINE)
- else
- LIBEDITLINE := $(STATIC_LIB)/libedit.a
- TERMLIB := -l@TERMLIB@
- endif
- endif
- # Shared library name for usage inside of the UDF
- IbUtilLibraryName = $(LIB_PREFIX)ib_util.$(SHRLIB_EXT)
- LIBIBUTIL_SO = $(LIB)/$(IbUtilLibraryName)
- # Own tommath support
- TOMMATH=$(ROOT)/extern/libtommath
- TOMMATH_INC=$(TOMMATH)
- TOMMATH_VER=0
- ifeq ($(PLATFORM),DARWIN)
- TOMMATH_SO=$(TOMMATH)/.libs/libtommath.dylib
- else
- TOMMATH_SO=$(TOMMATH)/.libs/libtommath.so
- endif
- # Own tomcrypt support
- TOMCRYPT=$(ROOT)/extern/libtomcrypt
- TOMCRYPT_INC=$(TOMCRYPT)/src/headers
- TOMCRYPT_SO=$(TOMCRYPT)/.libs/libtomcrypt.so
- TOMCRYPT_VER=1
- # Own libcds support
- LIBCDS=$(ROOT)/extern/libcds
- LIBCDS_INC=$(LIBCDS)
- LIBCDS_DEF=CDS_BUILD_STATIC_LIB
- # LINKER OPTIONS
- #
- UNDEF_PLATFORM = -Wl,--no-undefined
- ifeq ($(TARGET),Debug)
- UNDEF_FLAGS = $(UNDEF_PLATFORM)
- endif
- FIREBIRD_VERS = firebird.vers
- FBINTL_VERS = fbintl.vers
- IB_UTIL_VERS = ib_util.vers
- UDR_PLUGIN_VERS = udr_plugin.vers
- EMPTY_VERS = empty.vers
- PLUGIN_VERS = fbplugin.vers
- ALLVERS = $(FIREBIRD_VERS) $(FBINTL_VERS) $(IB_UTIL_VERS)
- ALLVERS += $(UDR_PLUGIN_VERS) $(EMPTY_VERS) $(PLUGIN_VERS)
- LINK_FIREBIRD_SYMBOLS = $(call LIB_LINK_MAPFILE,$(FIREBIRD_VERS))
- LINK_FBINTL_SYMBOLS = $(call LIB_LINK_MAPFILE,$(FBINTL_VERS))
- LINK_IBUTIL_SYMBOLS = $(call LIB_LINK_MAPFILE,$(IB_UTIL_VERS))
- LINK_UDR_PLUGIN_SYMBOLS = $(call LIB_LINK_MAPFILE,$(UDR_PLUGIN_VERS))
- LINK_EMPTY_SYMBOLS = $(call LIB_LINK_MAPFILE,$(EMPTY_VERS))
- LINK_PLUGIN_SYMBOLS = $(call LIB_LINK_MAPFILE,$(PLUGIN_VERS))
- LINK_EXEC_EXPORT=-rdynamic
- UDR_SUPPORT_LIBS=
- ifeq ($(PLATFORM),DARWIN)
- LIB_LINK_RPATH =
- else
- LIB_PLATFORM_RPATH = -Wl,-rpath,$(1)
- ifeq (@USE_RPATH@,1)
- ifeq ($(strip @BINRELOC_CFLAGS@),)
- LIB_LINK_RPATH = $(call LIB_PLATFORM_RPATH,$(if $(subst intl,,$(1)),@FB_LIBDIR@,@FB_INTLDIR@))
- else
- LIB_LINK_RPATH = $(call LIB_PLATFORM_RPATH,\$$ORIGIN/../$(1))
- endif
- else
- LIB_LINK_RPATH =
- endif
- endif
- ifeq ($(PLATFORM),DARWIN)
- LINK_DARWIN_RPATH = -Wl,-rpath,@loader_path/$(1)
- LIB_LINK_DARWIN_INSTALL_NAME = -install_name @rpath/$(1)
- else
- LINK_DARWIN_RPATH =
- LIB_LINK_DARWIN_INSTALL_NAME =
- endif
- LIB_PATH_OPTS = $(call LIB_LINK_RPATH,lib) $(call LIB_LINK_RPATH,intl)
- LIB_LINK_SONAME= -Wl,-soname,$(1)
- LIB_LINK_MAPFILE= -Wl,--version-script,$(1)
- FIREBIRD_LIBRARY_LINK= -L$(LIB) -L$(STATIC_LIB) -lfbclient $(MATHLIB) $(CRYPTLIB)
- EXE_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) $(UNDEF_FLAGS) $(LIB_PATH_OPTS) $(call LINK_DARWIN_RPATH,..) $(LINK_EMPTY_SYMBOLS)
- LIB_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) -shared $(call LINK_DARWIN_RPATH,..)
- FB_DAEMON = $(BIN)/firebird$(EXEC_EXT)
- # Per-library link rules
- LINK_UDF = $(LIB_LINK) $(LIB_LINK_OPTIONS) $(call LIB_LINK_SONAME,$(1).$(SHRLIB_EXT)) $(UNDEF_FLAGS)\
- $(call LIB_LINK_RPATH,lib)
- LINK_UDF_LIBS = $(THR_LIBS) -L$(LIB) -L$(STATIC_LIB) -lib_util $(SO_LINK_LIBS)
- LINK_IB_UTIL = $(LIB_LINK) $(LINK_IBUTIL_SYMBOLS) $(LIB_LINK_OPTIONS) $(UNDEF_FLAGS)\
- $(call LIB_LINK_SONAME,$(IbUtilLibraryName)) $(call LIB_LINK_RPATH,lib)
- LINK_IB_UTIL_LIBS = $(THR_LIBS)
- LINK_INTL = $(LIB_LINK) $(LINK_FBINTL_SYMBOLS) $(LIB_LINK_OPTIONS) $(UNDEF_FLAGS)\
- $(call LIB_LINK_SONAME,libfbintl.$(SHRLIB_EXT).1) $(call LIB_LINK_RPATH,lib)
- LINK_INTL_LIBS = -L$(LIB) -L$(STATIC_LIB) $(SO_LINK_LIBS) $(FIREBIRD_LIBRARY_LINK)
- LINK_TRACE = $(LIB_LINK) $(LINK_PLUGIN_SYMBOLS) $(LIB_LINK_OPTIONS) $(UNDEF_FLAGS)\
- $(call LIB_LINK_SONAME,$(LIB_PREFIX)fbtrace.$(SHRLIB_EXT).0) $(call LIB_LINK_RPATH,lib)
- LINK_TRACE_LIBS = -L$(LIB) -L$(STATIC_LIB) $(SO_LINK_LIBS)
- LINK_FIREBIRD = $(LIB_LINK) $(LINK_FIREBIRD_SYMBOLS) $(LIB_LINK_OPTIONS) $(LIB_FIREBIRD_OPTIONS) $(UNDEF_FLAGS)\
- $(call LIB_LINK_SONAME,$(LibrarySoName)) $(call LIB_LINK_RPATH,lib)
- LINK_FIREBIRD_LIBS = -L$(LIB) -L$(STATIC_LIB) $(LIB_GUI) $(SO_LINK_LIBS) $(MATHLIB)
- LINK_ENGINE = $(LIB_LINK) $(LINK_PLUGIN_SYMBOLS) $(LIB_LINK_OPTIONS) $(LIB_FIREBIRD_OPTIONS) $(UNDEF_FLAGS)\
- $(call LIB_LINK_SONAME,$(EngineSoName)) $(call LIB_LINK_RPATH,lib)
- LINK_ENGINE_LIBS = $(LINK_FIREBIRD_LIBS) $(RE2LIB) $(LIBCDSLIB) $(FIREBIRD_LIBRARY_LINK)
- LINK_UDRENG = $(LIB_LINK) $(LINK_PLUGIN_SYMBOLS) $(LIB_LINK_OPTIONS) $(call LIB_LINK_RPATH,lib) $(UNDEF_FLAGS)
- LINK_UDRENG_LIBS = -L$(LIB) -L$(STATIC_LIB) $(SO_LINK_LIBS)
- LINK_PLUGIN = $(LIB_LINK) $(LINK_PLUGIN_SYMBOLS) $(LIB_LINK_OPTIONS) $(call LIB_LINK_RPATH,lib) $(UNDEF_FLAGS)
- LINK_PLUG_LIBS = -L$(LIB) -L$(STATIC_LIB) $(SO_LINK_LIBS)
- # Pay attention - we place common library into obj, not lib dir
- # It's just a set of object files, prepared to be used by ld, not an output library
- COMMON_LIB = $(OBJ)/common.a
- COMMON_TEST = $(FB_TESTS_DIR)/common_test$(EXEC_EXT)
- # From utilities
- FBSVCMGR = $(BIN)/fbsvcmgr$(EXEC_EXT)
- FBTRACEMGR = $(BIN)/fbtracemgr$(EXEC_EXT)
- GSTAT = $(BIN)/gstat$(EXEC_EXT)
- NBACKUP = $(BIN)/nbackup$(EXEC_EXT)
- LOCKPRINT = $(BIN)/fb_lock_print$(EXEC_EXT)
- GSEC = $(BIN)/gsec$(EXEC_EXT)
- GFIX = $(BIN)/gfix$(EXEC_EXT)
- RUN_GFIX = $(RBIN)/gfix$(EXEC_EXT)
- FBGUARD = $(BIN)/fbguard$(EXEC_EXT)
- INSTREG = $(BIN)/instreg$(EXEC_EXT)
- INSTSVC = $(BIN)/instsvc$(EXEC_EXT)
- SECURITY_FDB = $(FIREBIRD)/security6.fdb
- # From isql
- ISQL = $(BIN)/isql$(EXEC_EXT)
- ISQL_TEST = $(FB_TESTS_DIR)/isql_test$(EXEC_EXT)
- RUN_ISQL = $(RBIN)/isql$(EXEC_EXT)
- # From burp
- GBAK = $(BIN)/gbak$(EXEC_EXT)
- RUN_GBAK = $(RBIN)/gbak$(EXEC_EXT)
- GSPLIT = $(BIN)/gsplit$(EXEC_EXT)
- # From gpre
- # (gpre current is a link to one of the others)
- GPRE_BOOT = $(RBIN)/gpre_boot$(EXEC_EXT)
- GPRE = $(BIN)/gpre$(EXEC_EXT)
- RUN_GPRE = $(RBIN)/gpre$(EXEC_EXT)
- GPRE_CURRENT = $(RBIN)/gpre_current$(EXEC_EXT)
- # From msgs
- BUILD_FILE = $(BIN)/build_file$(EXEC_EXT)
- FIREBIRD_MSG = $(FIREBIRD)/firebird.msg
- # Platform Manager
- # For want of a better suggestion we may as well default to posix
- PLATFORM_PATH = os/posix
- TRACE_OS_Sources =
|