2
0

make.defaults 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439
  1. #
  2. # The contents of this file are subject to the Mozilla Public
  3. # License Version 1.1 (the "License"); you may not use this file
  4. # except in compliance with the License. You may obtain a copy of
  5. # the License at http://www.mozilla.org/MPL/
  6. # Alternatively, the contents of this file may be used under the
  7. # terms of the GNU General Public License Version 2 or later (the
  8. # "GPL"), in which case the provisions of the GPL are applicable
  9. # instead of those above. You may obtain a copy of the Licence at
  10. # http://www.gnu.org/copyleft/gpl.html
  11. #
  12. # This program is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. # Relevant for more details.
  16. #
  17. # This file was created by members of the firebird development team.
  18. # All individual contributions remain the Copyright (C) of those
  19. # individuals. Contributors to this file are either listed here or
  20. # can be obtained from a CVS history command.
  21. #
  22. # All rights reserved.
  23. #
  24. # Created by: Mark O'Donohue <[email protected]>
  25. #
  26. # Contributor(s):
  27. #
  28. #
  29. #
  30. #_____________________________________________________________________________
  31. # This file contains default values that are used by the build process do not
  32. # change these here, but override them in the platform specific file
  33. # prefix.xxx where xxx is the platform name using the form SH := bash
  34. # see the readme file with the Makefile.in files for more details.
  35. #_____________________________________________________________________________
  36. TMP_ROOT=$(ROOT)/temp/$(TARGET)
  37. GEN_ROOT=$(ROOT)/gen
  38. SRC_ROOT=$(ROOT)/src
  39. BLD_ROOT=$(ROOT)/builds
  40. LNG_ROOT=$(ROOT)/lang_helpers
  41. EXA_ROOT=$(ROOT)/examples
  42. IsCross=@IS_CROSS@
  43. TOMMATH_BUILD_FLG=@TOMMATH_BUILD@
  44. TOMCRYPT_BUILD_FLG=@TOMCRYPT_BUILD@
  45. FB_BUILD=$(GEN_ROOT)/$(TARGET)/firebird
  46. ifeq ($(IsCross), Y)
  47. FIREBIRD=$(GEN_ROOT)/Native/firebird
  48. else
  49. FIREBIRD=$(FB_BUILD)
  50. endif
  51. FIREBIRD_LOCK=$(FIREBIRD)
  52. export FIREBIRD
  53. export FIREBIRD_LOCK
  54. # Set firebird to boot build mode
  55. FIREBIRD_BOOT_BUILD=1
  56. export FIREBIRD_BOOT_BUILD
  57. LIB=$(FB_BUILD)/lib
  58. BIN=$(FB_BUILD)/bin
  59. PLUGINS=$(FB_BUILD)/plugins
  60. RBIN=$(FIREBIRD)/bin
  61. # This picks up the current directory and maps it to the equivalent module
  62. # in the src and gen area.
  63. RealSrcRootPath = $(shell cd $(SRC_ROOT); pwd)
  64. #ModuleName:=$(notdir $(CURDIR))
  65. ModuleName:=$(subst $(RealSrcRootPath)/,,$(CURDIR))
  66. OBJ=$(TMP_ROOT)
  67. GEN_SRC=$(OBJ)
  68. # avoid generated cpp files deletion
  69. .SECONDARY:
  70. # This one is not so widely used at the momement.
  71. # but I would like it to become so.
  72. RealFirebirdPath = @NEW_FIREBIRD_DIR@
  73. #____________________________________________________________________________
  74. # From here we may set some global options to both compiler and linker.
  75. # Use empty default global options for all compilers and linkers
  76. GLOB_OPTIONS:=
  77. # Possible use - profiling.
  78. #GLOB_OPTIONS:= -pg
  79. #____________________________________________________________________________
  80. # Global c++ flags: firebird needs no RTTI, choose build standard
  81. PLUSPLUS_FLAGS:= -fno-rtti -std=c++11
  82. # If this is defined then we use special rules useful for developers only
  83. IsDeveloper = @DEVEL_FLG@
  84. CpuType=@CPU_TYPE@
  85. PLATFORM=@PLATFORM@
  86. SFIO_EXAMPLES=@SFIO_EXAMPLES@
  87. # link with readline libraries - set by configure
  88. EDITLINE_FLG=@EDITLINE_FLG@
  89. STD_EDITLINE=@STD_EDITLINE@
  90. READLINE=@READLINE@
  91. # threading options - set by configure
  92. THR_FLAGS=@PTHREAD_CFLAGS@
  93. THR_LIBS=@PTHREAD_LIBS@
  94. # thread local storage options - set by configure
  95. TLS_OPTIONS=@TLS_OPTIONS@
  96. # atomic options - set by configure
  97. ATOMIC_OPTIONS=@ATOMIC_OPTIONS@
  98. # compare and swap options - set by configure
  99. # needed at least for solaris inline assembly routines
  100. CAS_OPTIONS=@CAS_OPTIONS@
  101. # multiple-precision integer library
  102. MATHLIB=@MATHLIB@
  103. DECLIB=-ldecFloat$(CROSS)
  104. RE2LIB=-lre2
  105. # crypt library
  106. CRYPTLIB=@CRYPTLIB@
  107. LSB_FLG=@LSB_FLG@
  108. ifeq ($(LSB_FLG), Y)
  109. LSB_UNDEF=-Wl,--allow-shlib-undefined
  110. endif
  111. # switch to make sed edit files inplace
  112. INLINE_EDIT_SED:= -i
  113. # Default programs and tools to be used in the build process
  114. SH= sh -c
  115. RM= rm -f
  116. RM_R= rm -rf
  117. CHMOD= chmod
  118. CHMOD_6= chmod 666
  119. CHMOD_7= chmod 777
  120. CHMOD_S7= chmod 06777
  121. MV= mv -f
  122. TOUCH= touch
  123. CP= cp
  124. ECHO= echo
  125. QUIET_ECHO= @echo
  126. CD= cd
  127. CAT= cat
  128. AR= ar @AR_OPTIONS@
  129. LN= @LN_S@
  130. RANLIB= @RANLIB@
  131. BTYACC=$(ROOT)/extern/btyacc/btyacc
  132. CLOOP=$(GEN_ROOT)/$(TARGET)/cloop/release/bin/cloop
  133. CC = @CC@
  134. CXX = @CXX@
  135. LD = @CXX@
  136. AC_CFLAGS = @CFLAGS@
  137. AC_CXXFLAGS = @CXXFLAGS@
  138. # LINKER COMMANDS
  139. # FIXME: -static-libstdc++ in MacOS
  140. ifeq ($(PLATFORM),DARWIN)
  141. LIB_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS)
  142. EXE_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS)
  143. else
  144. LIB_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS) -static-libstdc++
  145. EXE_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS) -static-libstdc++
  146. endif
  147. STATICLIB_LINK = $(AR) crus
  148. STATICEXE_LINK = $(CXX) $(GLOB_OPTIONS) $(CXXFLAGS) -static-libstdc++
  149. LINK_LIBS = @LIBS@ $(DECLIB) $(RE2LIB)
  150. SO_LINK_LIBS = @LIBS@ $(DECLIB) $(RE2LIB)
  151. # Default extensions
  152. ARCH_EXT= .a
  153. EXEC_EXT= @EXEEXT@
  154. SHRLIB_EXT=@SHRLIB_EXT@
  155. LIB_PREFIX= lib
  156. SHRLIB_FOREIGN_EXT= $(SHRLIB_EXT)
  157. #_____________________________________________________________________________
  158. # Include file with version variable definitions
  159. include $(ROOT)/gen/Make.Version
  160. # Add windows dll to library patterns
  161. .LIBPATTERNS += %.dll lib%.dll
  162. # Search path for libraries
  163. vpath %.so $(LIB)
  164. vpath %.a $(LIB)
  165. vpath %.dll $(LIB)
  166. #_____________________________________________________________________________
  167. # From jrd
  168. # The firebird shared library name
  169. # SD: This name is also hard-coded in builds/install/.../linux/classic scripts.
  170. # Scold me, but I don't want library names to be in configure.in
  171. #
  172. #LibraryFileName=libfbclient
  173. LibraryFileName=libfbclient
  174. LibraryFullName=$(LibraryFileName).${SHRLIB_EXT}.${FirebirdVersion}
  175. LibrarySoName=$(LibraryFileName).${SHRLIB_EXT}.2
  176. LibraryBaseName=$(LibraryFileName).${SHRLIB_EXT}
  177. LIBFIREBIRD_FULLNAME = $(LIB)/$(LibraryFullName)
  178. LIBFIREBIRD_SONAME = $(LIB)/$(LibraryBaseName)
  179. LIBFIREBIRD_BASENAME = $(LIB)/$(LibrarySoName)
  180. # The firebird engine library name
  181. EngineFileName=libEngine${OdsVersion}
  182. EngineSoName=$(EngineFileName).${SHRLIB_EXT}
  183. ENGINE_SONAME = $(PLUGINS)/$(EngineSoName)
  184. # intl will load dynamically, and having the whole soname set with version
  185. # confuses the dynamic load process. So we only have the .$(SHRLIB_EXT) file
  186. # MOD 28-July-2002
  187. LIBFBINTL_SO = $(FB_BUILD)/intl/$(LIB_PREFIX)fbintl.$(SHRLIB_EXT)
  188. ifeq ($(EDITLINE_FLG),Y)
  189. ifeq ($(STD_EDITLINE), true)
  190. LIBEDITLINE := -l$(READLINE)
  191. else
  192. LIBEDITLINE := $(LIB)/libedit.a
  193. endif
  194. TERMLIB := -l@TERMLIB@
  195. endif
  196. # Shared library name for usage inside of the UDF
  197. IbUtilLibraryName = $(LIB_PREFIX)ib_util.$(SHRLIB_EXT)
  198. LIBIBUTIL_SO = $(LIB)/$(IbUtilLibraryName)
  199. # Own tommath support
  200. TOMMATH=$(ROOT)/extern/libtommath
  201. TOMMATH_INC=$(TOMMATH)
  202. TOMMATH_VER=0
  203. ifeq ($(PLATFORM),DARWIN)
  204. TOMMATH_SO=$(TOMMATH)/.libs/libtommath.dylib
  205. else
  206. TOMMATH_SO=$(TOMMATH)/.libs/libtommath.so
  207. endif
  208. # Own tomcrypt support
  209. TOMCRYPT=$(ROOT)/extern/libtomcrypt
  210. TOMCRYPT_INC=$(TOMCRYPT)/src/headers
  211. TOMCRYPT_SO=$(TOMCRYPT)/.libs/libtomcrypt.so
  212. TOMCRYPT_VER=1
  213. # LINKER OPTIONS
  214. #
  215. UNDEF_PLATFORM = -Wl,--no-undefined
  216. ifeq ($(TARGET),Debug)
  217. UNDEF_FLAGS = $(UNDEF_PLATFORM)
  218. endif
  219. FIREBIRD_VERS = firebird.vers
  220. FBINTL_VERS = fbintl.vers
  221. IB_UTIL_VERS = ib_util.vers
  222. UDR_PLUGIN_VERS = udr_plugin.vers
  223. EMPTY_VERS = empty.vers
  224. PLUGIN_VERS = fbplugin.vers
  225. ALLVERS = $(FIREBIRD_VERS) $(FBINTL_VERS) $(IB_UTIL_VERS)
  226. ALLVERS += $(UDR_PLUGIN_VERS) $(EMPTY_VERS) $(PLUGIN_VERS)
  227. LINK_FIREBIRD_SYMBOLS = $(call LIB_LINK_MAPFILE,$(FIREBIRD_VERS))
  228. LINK_FBINTL_SYMBOLS = $(call LIB_LINK_MAPFILE,$(FBINTL_VERS))
  229. LINK_IBUTIL_SYMBOLS = $(call LIB_LINK_MAPFILE,$(IB_UTIL_VERS))
  230. LINK_UDR_PLUGIN_SYMBOLS = $(call LIB_LINK_MAPFILE,$(UDR_PLUGIN_VERS))
  231. LINK_EMPTY_SYMBOLS = $(call LIB_LINK_MAPFILE,$(EMPTY_VERS))
  232. LINK_PLUGIN_SYMBOLS = $(call LIB_LINK_MAPFILE,$(PLUGIN_VERS))
  233. LINK_EXEC_EXPORT=-rdynamic
  234. UDR_SUPPORT_LIBS=
  235. ifeq ($(PLATFORM),DARWIN)
  236. LIB_LINK_RPATH =
  237. else
  238. LIB_PLATFORM_RPATH = -Wl,-rpath,$(1)
  239. ifeq (@USE_RPATH@,1)
  240. ifeq ($(strip @BINRELOC_CFLAGS@),)
  241. LIB_LINK_RPATH = $(call LIB_PLATFORM_RPATH,$(if $(subst intl,,$(1)),@FB_LIBDIR@,@FB_INTLDIR@))
  242. else
  243. LIB_LINK_RPATH = $(call LIB_PLATFORM_RPATH,'$$ORIGIN/../$(1)')
  244. endif
  245. else
  246. LIB_LINK_RPATH =
  247. endif
  248. endif
  249. ifeq ($(PLATFORM),DARWIN)
  250. LINK_DARWIN_RPATH = -Wl,-rpath,@loader_path/$(1)
  251. LIB_LINK_DARWIN_INSTALL_NAME = -install_name @rpath/$(1)
  252. else
  253. LINK_DARWIN_RPATH =
  254. LIB_LINK_DARWIN_INSTALL_NAME =
  255. endif
  256. LIB_PATH_OPTS = $(call LIB_LINK_RPATH,lib) $(call LIB_LINK_RPATH,intl)
  257. LIB_LINK_SONAME= -Wl,-soname,$(1)
  258. LIB_LINK_MAPFILE= -Wl,--version-script,$(1)
  259. FIREBIRD_LIBRARY_LINK= -L$(LIB) -lfbclient $(MATHLIB) $(CRYPTLIB)
  260. EXE_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) $(UNDEF_FLAGS) $(LIB_PATH_OPTS) $(LINK_EMPTY_SYMBOLS)
  261. LIB_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) -shared
  262. FB_DAEMON = $(BIN)/firebird$(EXEC_EXT)
  263. # Per-library link rules
  264. LINK_UDF = $(LIB_LINK) $(LIB_LINK_OPTIONS) $(call LIB_LINK_SONAME,$(1).$(SHRLIB_EXT)) $(UNDEF_FLAGS)\
  265. $(call LIB_LINK_RPATH,lib) $(call LINK_DARWIN_RPATH,..)
  266. LINK_UDF_LIBS = $(THR_LIBS) -L$(LIB) -lib_util $(SO_LINK_LIBS)
  267. LINK_IB_UTIL = $(LIB_LINK) $(LINK_IBUTIL_SYMBOLS) $(LIB_LINK_OPTIONS) $(UNDEF_FLAGS)\
  268. $(call LIB_LINK_SONAME,$(IbUtilLibraryName)) $(call LIB_LINK_RPATH,lib) $(call LINK_DARWIN_RPATH,..)
  269. LINK_IB_UTIL_LIBS = $(THR_LIBS)
  270. LINK_INTL = $(LIB_LINK) $(LINK_FBINTL_SYMBOLS) $(LIB_LINK_OPTIONS) $(UNDEF_FLAGS)\
  271. $(call LIB_LINK_SONAME,libfbintl.$(SHRLIB_EXT).1) $(call LIB_LINK_RPATH,lib) $(call LINK_DARWIN_RPATH,..)
  272. LINK_INTL_LIBS = -L$(LIB) $(SO_LINK_LIBS) $(FIREBIRD_LIBRARY_LINK)
  273. LINK_TRACE = $(LIB_LINK) $(LINK_PLUGIN_SYMBOLS) $(LIB_LINK_OPTIONS) $(UNDEF_FLAGS)\
  274. $(call LIB_LINK_SONAME,$(LIB_PREFIX)fbtrace.$(SHRLIB_EXT).0) $(call LIB_LINK_RPATH,lib) $(call LINK_DARWIN_RPATH,..)
  275. LINK_TRACE_LIBS = -L$(LIB) $(SO_LINK_LIBS)
  276. LINK_FIREBIRD = $(LIB_LINK) $(LINK_FIREBIRD_SYMBOLS) $(LIB_LINK_OPTIONS) $(LIB_FIREBIRD_OPTIONS) $(UNDEF_FLAGS)\
  277. $(call LIB_LINK_SONAME,$(LibrarySoName)) $(call LIB_LINK_RPATH,lib) $(call LINK_DARWIN_RPATH,..)
  278. LINK_FIREBIRD_LIBS = -L$(LIB) $(LIB_GUI) $(SO_LINK_LIBS) $(MATHLIB) $(CRYPTLIB)
  279. LINK_ENGINE = $(LIB_LINK) $(LINK_PLUGIN_SYMBOLS) $(LIB_LINK_OPTIONS) $(LIB_FIREBIRD_OPTIONS) $(UNDEF_FLAGS)\
  280. $(call LIB_LINK_SONAME,$(EngineSoName)) $(call LIB_LINK_RPATH,lib) $(call LINK_DARWIN_RPATH,..)
  281. LINK_ENGINE_LIBS = $(LINK_FIREBIRD_LIBS) $(FIREBIRD_LIBRARY_LINK)
  282. LINK_UDRENG = $(LIB_LINK) $(LINK_PLUGIN_SYMBOLS) $(LIB_LINK_OPTIONS) $(call LIB_LINK_RPATH,lib) $(UNDEF_FLAGS)\
  283. $(call LINK_DARWIN_RPATH,..)
  284. LINK_UDRENG_LIBS = -L$(LIB) $(SO_LINK_LIBS)
  285. LINK_PLUGIN = $(LIB_LINK) $(LINK_PLUGIN_SYMBOLS) $(LIB_LINK_OPTIONS) $(call LIB_LINK_RPATH,lib) $(UNDEF_FLAGS)\
  286. $(call LINK_DARWIN_RPATH,..)
  287. LINK_PLUG_LIBS = -L$(LIB) $(SO_LINK_LIBS)
  288. # Pay attention - we place common library into obj, not lib dir
  289. # It's just a set of object files, prepared to be used by ld, not an output library
  290. COMMON_LIB = $(OBJ)/common.a
  291. # From utilities
  292. CREATE_DB = $(RBIN)/create_db$(EXEC_EXT)
  293. GDS_DROP = $(BIN)/gds_drop$(EXEC_EXT)
  294. FBSVCMGR = $(BIN)/fbsvcmgr$(EXEC_EXT)
  295. FBTRACEMGR = $(BIN)/fbtracemgr$(EXEC_EXT)
  296. GSTAT = $(BIN)/gstat$(EXEC_EXT)
  297. NBACKUP = $(BIN)/nbackup$(EXEC_EXT)
  298. LOCKPRINT = $(BIN)/fb_lock_print$(EXEC_EXT)
  299. GSEC = $(BIN)/gsec$(EXEC_EXT)
  300. GFIX = $(BIN)/gfix$(EXEC_EXT)
  301. RUN_GFIX = $(RBIN)/gfix$(EXEC_EXT)
  302. GDS_REBUILD = $(BIN)/gds_rebuild$(EXEC_EXT)
  303. GDS_INSTALL = $(BIN)/gds_install$(EXEC_EXT)
  304. GDS_INSTALL = $(BIN)/gds_install_service$(EXEC_EXT)
  305. FBGUARD = $(BIN)/fbguard$(EXEC_EXT)
  306. IBGUARD = $(BIN)/ibguard$(EXEC_EXT)
  307. FBMGR_BIN = $(BIN)/fbmgr.bin$(EXEC_EXT)
  308. INSTREG = $(BIN)/instreg$(EXEC_EXT)
  309. INSTSVC = $(BIN)/instsvc$(EXEC_EXT)
  310. SECURITY_FDB = $(FIREBIRD)/security4.fdb
  311. # From qli
  312. QLI = $(BIN)/qli$(EXEC_EXT)
  313. # From isql
  314. ISQL = $(BIN)/isql$(EXEC_EXT)
  315. RUN_ISQL = $(RBIN)/isql$(EXEC_EXT)
  316. # From burp
  317. GBAK = $(BIN)/gbak$(EXEC_EXT)
  318. RUN_GBAK = $(RBIN)/gbak$(EXEC_EXT)
  319. GSPLIT = $(BIN)/gsplit$(EXEC_EXT)
  320. # From gpre
  321. # (gpre current is a link to one of the others)
  322. GPRE_BOOT = $(RBIN)/gpre_boot$(EXEC_EXT)
  323. GPRE = $(BIN)/gpre$(EXEC_EXT)
  324. RUN_GPRE = $(RBIN)/gpre$(EXEC_EXT)
  325. GPRE_CURRENT = $(RBIN)/gpre_current$(EXEC_EXT)
  326. # From msgs
  327. CHECK_MESSAGES = $(BIN)/check_messages$(EXEC_EXT)
  328. BUILD_FILE = $(BIN)/build_file$(EXEC_EXT)
  329. FIREBIRD_MSG = $(FIREBIRD)/firebird.msg
  330. ENTER_MESSAGES = $(BIN)/enter_messages$(EXEC_EXT)
  331. MODIFY_MESSAGES = $(BIN)/modify_messages$(EXEC_EXT)
  332. CHANGE_MESSAGES = $(BIN)/change_messages$(EXEC_EXT)
  333. fr_FR_MSG = $(FIREBIRD)/fr_FR.msg
  334. de_DE_MSG = $(FIREBIRD)/de_DE.msg
  335. ja_JP_MSG = $(FIREBIRD)/ja_JP.msg
  336. #Platform Manager
  337. #For want of a better suggestion we may as well default to posix
  338. PLATFORM_PATH = os/posix
  339. TRACE_OS_Sources =