nsconfig.mk 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449
  1. #
  2. # BEGIN COPYRIGHT BLOCK
  3. # Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
  4. # Copyright (C) 2005 Red Hat, Inc.
  5. # All rights reserved.
  6. # END COPYRIGHT BLOCK
  7. #
  8. #
  9. # nsconfig.h: determines which product is being built, how, and for what
  10. # arch
  11. #
  12. # Rob McCool
  13. # This is the default target for all Makefiles which include this file.
  14. # Those Makefiles should define this target with the appropriate dependencies
  15. # and build rules.
  16. #
  17. # More comment
  18. all:
  19. ABS_ROOT := $(shell cd $(BUILD_ROOT); pwd)
  20. ABS_ROOT_PARENT := $(shell cd $(ABS_ROOT)/..; pwd)
  21. MAKE=gmake $(BUILDOPT)
  22. # 7/12/96 Adrian - allow MAKEFLAGS to propagate
  23. # override MAKEFLAGS :=
  24. include $(BUILD_ROOT)/nsdefs.mk
  25. include $(BUILD_ROOT)/component_versions.mk
  26. # SEC_SUFFIX is the suffix to be applied to the reldate macro which specifies
  27. # the security of the specified release, either E for export, D for domestic,
  28. # or F for Fortezza
  29. ifdef FORTEZZA
  30. SEC_SUFFIX = F
  31. else
  32. ifeq ($(SECURITY), domestic)
  33. SEC_SUFFIX = D
  34. else
  35. SEC_SUFFIX = E
  36. endif
  37. endif
  38. PRETTY_ARCH := $(shell uname -s)
  39. NSOS_ARCH := $(subst /,_,$(shell uname -s))
  40. ifneq ($(NO_BUILD_NUM), true)
  41. GET_BUILD_NUM := $(shell cat $(BUILD_ROOT)/$(BUILD_ARCH)/buildnum.dat)
  42. endif
  43. ifeq ($(NSOS_ARCH), IRIX64)
  44. NSOS_ARCH := IRIX
  45. endif
  46. # Default
  47. NSOS_RELEASE := $(shell uname -r)
  48. NSOS_RELEASE_NOTAG = $(NSOS_RELEASE)
  49. ifeq ($(NSOS_ARCH), AIX)
  50. NSOS_TEST := $(shell uname -v)
  51. ifeq ($(NSOS_TEST),3)
  52. NSOS_RELEASE := $(shell uname -r)
  53. else
  54. NSOS_RELEASE := $(shell uname -v).$(shell uname -r)
  55. endif
  56. endif
  57. # Get OSF's OS revision number to figure out the OS release
  58. ifeq ($(NSOS_ARCH),OSF1)
  59. NSOS_OSF1REV := $(shell uname -v)
  60. ifeq ($(NSOS_OSF1REV),878)
  61. NSOS_TAG := D
  62. else
  63. ifeq ($(NSOS_OSF1REV),564)
  64. NSOS_TAG := B
  65. else
  66. ifeq ($(NSOS_OSF1REV),464)
  67. NSOS_TAG := A
  68. else
  69. # Grenoble: Defaulting to release D since these are the only version of components we have so far.
  70. NSOS_TAG := D
  71. endif
  72. endif
  73. endif
  74. NSOS_RELEASE_NOTAG := $(NSOS_RELEASE)
  75. NSOS_RELEASE := $(NSOS_RELEASE_NOTAG)$(NSOS_TAG)
  76. else
  77. NSOS_RELEASE_NOTAG := $(NSOS_RELEASE)
  78. endif
  79. # IRIX: Recommond: USE_PTHREADS=1 and USE_N32=1
  80. ifeq ($(NSOS_ARCH), IRIX)
  81. ifeq ($(USE_PTHREADS), 1)
  82. ifeq ($(USE_N32), 1)
  83. NSOS_RELEASE := $(shell uname -r)_n32_PTH
  84. else
  85. NSOS_RELEASE := $(shell uname -r)_PTH
  86. endif
  87. endif
  88. NSOS_RELEASE_NOTAG := $(shell uname -r)
  89. endif
  90. # SVR5 (UnixWare7)
  91. ifeq ($(NSOS_ARCH),UnixWare)
  92. # For now get the OS release for backward compatibility (UnixWare5)
  93. NSOS_RELEASE := $(shell uname -r)
  94. endif
  95. # Catch NCR butchering of SVR4
  96. ifeq ($(NSOS_ARCH),UNIX_SV)
  97. ifneq ($(findstring NCR, $(shell grep NCR /etc/bcheckrc | head -1 )),)
  98. NSOS_ARCH := NCR
  99. PRETTY_ARCH := NCR
  100. else # !NCR
  101. # Make UnixWare something human readable
  102. NSOS_ARCH := UNIXWARE
  103. PRETTY_ARCH := UNIXWARE
  104. endif # !NCR
  105. # Check for UW2 using UDK, which looks like a Gemini (UnixWare7) build
  106. NSOS_RELEASE := $(shell $(BUILD_ROOT)/nsarch -f | sed 's/UnixWare //')
  107. ifeq ($(NSOS_RELEASE),5)
  108. NSOS_ARCH := UnixWare
  109. else # NSOS_RELEASE = 5
  110. # Get the OS release number, not 4.2
  111. NSOS_RELEASE := $(shell uname -v)
  112. ifeq ($(NSOS_RELEASE),2.1.2)
  113. # so we don't need yet another set of duplicate UNIXWARE$VER.mk gmake files
  114. NSOS_RELEASE := 2.1
  115. endif # NSOS_RELEASE = 2.1.2
  116. endif # NSOS_RELEASE = 5
  117. endif # UNIX_SV
  118. # Clean up SCO
  119. ifeq ($(NSOS_ARCH),SCO_SV)
  120. NSOS_ARCH := SCOOS
  121. ifeq (5.0,$(findstring 5.0,$(shell ls /var/opt/K/SCO/Unix)))
  122. NSOS_RELEASE := 5.0
  123. else
  124. NSOS_RELEASE := UNKNOWN
  125. endif
  126. endif
  127. # both values (SINIX-N and ReliantUNIX-N) are possible
  128. ifeq ($(NSOS_ARCH), SINIX-N)
  129. NSOS_ARCH := ReliantUNIX
  130. PRETTY_ARCH := ReliantUNIX
  131. NSOS_RELEASE := 5.4
  132. endif
  133. ifeq ($(NSOS_ARCH), ReliantUNIX-N)
  134. NSOS_ARCH := ReliantUNIX
  135. PRETTY_ARCH := ReliantUNIX
  136. NSOS_RELEASE := 5.4
  137. endif
  138. # Make NT versions 5.1 and 5.2 look like 5.0 for build purposes
  139. ifndef NSOS_RELEASE_OVERRIDE
  140. ifeq ($(NSOS_ARCH),WINNT)
  141. ifeq ($(NSOS_RELEASE),5.1)
  142. NSOS_RELEASE_OVERRIDE=5.0
  143. endif
  144. ifeq ($(NSOS_RELEASE),5.2)
  145. NSOS_RELEASE_OVERRIDE=5.0
  146. endif
  147. endif
  148. endif
  149. ifdef NSOS_RELEASE_OVERRIDE
  150. NSOS_RELEASE_NOTAG := $(NSOS_RELEASE_OVERRIDE)
  151. NSOS_RELEASE := $(NSOS_RELEASE_NOTAG)$(NSOS_TAG)
  152. endif
  153. ifeq ($(NSOS_ARCH),Linux)
  154. #
  155. # Handle FreeBSD 2.2-STABLE and Linux 2.0.30-osfmach3 and 2.2.14-5.0smp
  156. #
  157. ifeq (,$(filter-out Linux FreeBSD,$(NSOS_ARCH)))
  158. NSOS_RELEASE := $(shell echo $(NSOS_RELEASE) | sed 's/-.*//')
  159. endif
  160. NSOS_RELEASE_TEMP := $(subst ., ,$(NSOS_RELEASE))
  161. NSOS_RELEASE_COUNT := $(words $(NSOS_RELEASE_TEMP))
  162. ifeq ($(NSOS_RELEASE_COUNT), 4)
  163. NSOS_RELEASE := $(basename $(NSOS_RELEASE))
  164. endif
  165. NSOS_RELEASE := $(basename $(NSOS_RELEASE))
  166. NSOS_ARCH := Linux
  167. PRETTY_ARCH := Linux
  168. endif
  169. NSOS_TEST1 := $(shell uname -m)
  170. ifeq ($(NSOS_ARCH),Linux)
  171. ifeq (86,$(findstring 86,$(NSOS_TEST1)))
  172. NSOS_TEST1 = x86
  173. endif
  174. ifeq ($(USE_LIBC),1)
  175. LIBC_VERSION = _libc
  176. else
  177. LIBC_VERSION = _glibc
  178. endif
  179. USE_PTHREADS = 1
  180. ifeq ($(USE_PTHREADS),1)
  181. PTHREAD_TAG = _PTH
  182. endif
  183. NSCONFIG = $(NSOS_ARCH)$(NSOS_RELEASE)_$(NSOS_TEST1)$(LIBC_VERSION)$(PTHREAD_TAG)
  184. NSCONFIG_NOTAG = $(NSCONFIG)
  185. else
  186. ifeq ($(NSOS_TEST1),i86pc)
  187. NSCONFIG = $(NSOS_ARCH)$(NSOS_RELEASE)_$(NSOS_TEST1)
  188. NSCONFIG_NOTAG = $(NSOS_ARCH)$(NSOS_RELEASE_NOTAG)_$(NSOS_TEST1)
  189. else
  190. NSCONFIG = $(NSOS_ARCH)$(NSOS_RELEASE)
  191. NSCONFIG_NOTAG = $(NSOS_ARCH)$(NSOS_RELEASE_NOTAG)
  192. endif
  193. endif
  194. ifeq ($(DEBUG), full)
  195. MCC_DEBUG=-DMCC_DEBUG $(ARCH_DEBUG)
  196. NSOBJDIR_TAG=_DBG
  197. ML_DEBUG=$(ARCH_LINK_DEBUG)
  198. else
  199. ifeq ($(DEBUG), purify)
  200. MCC_DEBUG=$(ARCH_DEBUG)
  201. NSOBJDIR_TAG=_DBG
  202. ML_DEBUG=$(ARCH_LINK_DEBUG)
  203. PUREOPTS=-follow-child-processes=true -check-debug-timestamps=no -best-effort
  204. PURIFY=purify $(PUREOPTS)
  205. else
  206. ifeq ($(DEBUG), quantify)
  207. MCC_DEBUG=$(ARCH_DEBUG)
  208. NSOBJDIR_TAG=_DBG
  209. ML_DEBUG=$(ARCH_LINK_DEBUG)
  210. QUANOPTS=-follow-child-processes=true -check-debug-timestamps=no -best-effort
  211. QUANTIFY=quantify $(QUANOPTS)
  212. USE_QUANTIFY=1
  213. else
  214. MCC_DEBUG=$(ARCH_OPT)
  215. NSOBJDIR_TAG=_OPT
  216. ML_DEBUG=$(ARCH_LINK_OPT)
  217. BUILDOPT = BUILD_OPT=1
  218. endif
  219. endif
  220. endif
  221. ifeq ($(NSOS_ARCH),WINNT)
  222. ifneq ($(PROCESSOR_ARCHITECTURE),x86)
  223. NSOBJDIR_NAME = $(NSCONFIG)$(PROCESSOR_ARCHITECTURE)$(NSOBJDIR_TAG).OBJ
  224. NSOBJDIR_NAME_32 = $(NSCONFIG)$(PROCESSOR_ARCHITECTURE)$(NSOBJDIR_TAG).OBJ
  225. else
  226. NSOBJDIR_NAME = $(NSCONFIG)$(NSOBJDIR_TAG).OBJ
  227. NSOBJDIR_NAME_32 = $(NSCONFIG)$(NSOBJDIR_TAG).OBJ
  228. endif
  229. else
  230. NSOBJDIR_NAME = $(NSCONFIG)$(NS64TAG)$(NSOBJDIR_TAG).OBJ
  231. NSOBJDIR_NAME_32 = $(NSCONFIG)$(NSOBJDIR_TAG).OBJ
  232. NSOBJDIR_NAME1 = $(NSCONFIG)$(NS64TAG)$(NSOBJDIR_TAG).OBJ
  233. NSOBJDIR_NAMEeh = $(NSCONFIG)_eh$(NS64TAG)$(NSOBJDIR_TAG).OBJ
  234. NSOBJDIR_NAMEaCC = $(NSCONFIG)$(NS64TAG)$(NSOBJDIR_TAG).OBJ
  235. NSOBJDIR_NAME_NOTAG = $(NSCONFIG_NOTAG)$(NS64TAG)$(NSOBJDIR_TAG).OBJ
  236. NSOBJDIR_NAME1_NOTAG = $(NSCONFIG_NOTAG)$(NS64TAG)$(NSOBJDIR_TAG).OBJ
  237. endif
  238. # Where to put component packages (libs, includes) to build against and package
  239. NSCP_DIST = $(BUILD_ROOT)/../dist
  240. NSCP_DISTDIR = $(BUILD_ROOT)/../dist/$(NSOBJDIR_NAME)
  241. MAKE=gmake $(BUILDOPT) NO_JAVA=1
  242. export NSPR20=1
  243. LWDEFS = LIVEWIRE=1
  244. JSDEFS = JSFILE=1 JS_THREADSAFE=1
  245. -include ../lw/config/netsite-config.mk
  246. NSDEFS=SERVER_BUILD=1 XCFLAGS=$(MCL_CFLAGS) USE_PTHREADS=$(USE_PTHREADS) \
  247. NS_PRODUCT=$(NS_PRODUCT) VERSION=$(SERVER_VERSION) \
  248. NS_USE_NATIVE=$(NS_USE_NATIVE) NSPR_BASENAME=$(NSPR_BASENAME)
  249. NSPR_DEFINES = -DSERVER_BUILD
  250. # Destination for class files and packages
  251. CLASS_DEST = $(NSCP_DIST)/classes
  252. # ----------- Where to get shared components --------------------
  253. # COMPONENTS_DIR_DEV can be used to pull stuff from the integration area
  254. # at rtm time we switch it over to use the official components
  255. ifndef COMPONENTS_DIR_DEV
  256. COMPONENTS_DIR_DEV = /share/builds/sbsintegration
  257. endif
  258. ifndef COMPONENTS_DIR
  259. COMPONENTS_DIR = /share/builds/components
  260. endif
  261. # For now, we need to pick up a private build of the LDAP SDK
  262. #ifndef LDAP_SBC
  263. #LDAP_SBC = /share/builds/sbsintegration/ds/ds70-bozeman
  264. #endif
  265. ###########################################################
  266. # ------------------------ Product-specific flags ------------------------
  267. ifdef PRODUCT_IS_DIRECTORY_SERVER
  268. ifeq ($(SECURITY), export)
  269. MCC_SERVER=-DMCC_HTTPD -DNS_EXPORT -DNET_SSL -DCLIENT_AUTH $(NSPR_DEFINES)
  270. endif
  271. ifeq ($(SECURITY), domestic)
  272. MCC_SERVER=-DMCC_HTTPD -DNS_DOMESTIC -DNET_SSL -DCLIENT_AUTH $(NSPR_DEFINES)
  273. endif
  274. ifeq ($(SECURITY), none)
  275. MCC_SERVER=-DMCC_HTTPD -DNS_UNSECURE $(NSPR_DEFINES)
  276. endif
  277. DS_SERVER_DEFS = -DNS_DS
  278. ifeq ($(BUILD_DEBUG),full)
  279. MODULE_CFLAGS += -DDEBUG
  280. endif
  281. MCC_SERVER += $(DS_SERVER_DEFS)
  282. NS_PRODUCT = DIRECTORY_SERVER
  283. ifeq ($(LDAP_NO_LIBLCACHE),1)
  284. MODULE_CFLAGS+=-DNO_LIBLCACHE
  285. endif
  286. endif
  287. ifdef FORTEZZA
  288. MCC_SERVER += -DFORTEZZA -DCLIENT_AUTH
  289. endif
  290. MCC_SERVER += -DSPAPI20 -DBUILD_NUM=$(GET_BUILD_NUM)
  291. # ----------- Default Flags, may be overridden below ------------
  292. PEER_DATE=19980121
  293. CPPCMD=$(CC) -E
  294. HTTPDSO_NAME=$(BUILD_HTTPDLL_NAME)
  295. MATHLIB=-lm
  296. LIB_SUFFIX=a
  297. AR=ar rcv $@
  298. DLL_PRESUF=
  299. DLL_SUFFIX=so
  300. LDAP_DLL_PRESUF=
  301. LDAP_DLL_SUFFIX=$(DLL_SUFFIX)
  302. LINK_DLL=ld $(DLL_LDFLAGS) -o $@
  303. LINK_PLUGIN=$(LINK_DLL)
  304. # ---------------------- OS-specific compile flags -----------------------
  305. # Used by peer snmp defines below
  306. DEVROOT = $(BUILD_ROOT)/peer
  307. ifeq ($(ARCH), AIX)
  308. # convert the output of oslevel to a 4 digit number
  309. # e.g. 4.2.0.0 -> 4200 4.2.1.0 -> 4210
  310. OSVERSION := $(shell oslevel | sed "s/[.]//g")
  311. OSMAJORVERSION := $(shell oslevel | cut -f1 -d.)
  312. OSMINORVERSION := $(shell oslevel | cut -f2 -d.)
  313. # we had to do a lot of special stuff to make shared libraries work
  314. ifeq ("yes", $(shell /bin/sh -c "[ $(OSVERSION) -lt 4200 ] && echo yes" ) )
  315. OLD_AIX_LINKING=1
  316. endif
  317. ifdef OLD_AIX_LINKING
  318. DLL_PRESUF=_shr
  319. DLL_SUFFIX=a
  320. else
  321. # there is apparently a lot of stuff to do before we can use .so as the
  322. # shared library suffix, so leave it for now . . .
  323. DLL_PRESUF=
  324. DLL_SUFFIX=so
  325. LD=xlC_r
  326. endif
  327. #CC=xlC_r -qinfo -qarch=com -qgenpcomp=$(OBJDIR)/.pcomp -qusepcomp -DAIX -DAIXV3 -DAIXV4 -DSYSV -DOSVERSION=$(OSVERSION)
  328. CC=xlC_r -qinfo -qarch=com -DAIX -DAIXV3 -DAIXV4 -DSYSV -DOSVERSION=$(OSVERSION) -DAIX$(OSMAJORVERSION)_$(OSMINORVERSION)
  329. CCC=$(CC)
  330. CXX=$(CC)
  331. CPPCMD=/usr/ccs/lib/cpp -P
  332. ARCH_DEBUG=-g -qfullpath
  333. ARCH_OPT=-O
  334. RANLIB=ranlib
  335. SHARED_FLAG=-brtl
  336. NONSHARED_FLAG=-bnso -bI:/lib/syscalls.exp
  337. EXPORT_FILE=$*.exp
  338. DEF_LIBPATH=/usr/lib/threads:/usr/lpp/xlC/lib:/usr/lib:/lib
  339. # JCM - LINK_PLUGIN+=-berok
  340. ifdef OLD_AIX_LINKING
  341. MKSHLIB_FLAGS=-p 0 -blibpath:$(DEF_LIBPATH)
  342. DLL_LDFLAGS=-bM:SRE -bnoentry -blibpath:$(DEF_LIBPATH)
  343. LINK_DLL=$(BUILD_ROOT)/build/aixmkshlib -o $@ $(MKSHLIB_FLAGS)
  344. MKSHLIB=$(LINK_DLL)
  345. EXTRA_LIBS=-lsvld
  346. else
  347. MKSHLIB_FLAGS=-brtl -p 0 -blibpath:$(DEF_LIBPATH)
  348. DLL_LDFLAGS=-bM:SRE -bnoentry -blibpath:$(DEF_LIBPATH)
  349. LINK_DLL=/usr/lpp/xlC/bin/makeC++SharedLib_r -o $@ $(MKSHLIB_FLAGS)
  350. ifeq ($(OSMAJORVERSION), 4)
  351. ifeq ($(OSMINORVERSION), 3)
  352. LINK_DLL=/usr/ibmcxx/bin/makeC++SharedLib_r -o $@ $(MKSHLIB_FLAGS)
  353. endif
  354. endif
  355. MKSHLIB=$(LINK_DLL)
  356. EXTRA_LIBS=-ldl
  357. endif
  358. #LINK_DLL=$(LD) $(DLL_LDFLAGS) -o $@
  359. # AIX plugins can have unresolved references
  360. ifdef PRODUCT_IS_DIRECTORY_SERVER
  361. EXTRA_LIBS += -lpthreads -lc_r -lm
  362. endif
  363. VERITY_ARCH=_rs6k41
  364. NSAPI_CAPABLE=true
  365. USE_PTHREADS=1
  366. ifdef OLD_AIX_LINKING
  367. DL_LIB =-lsvld
  368. else
  369. DL_LIB =-ldl
  370. endif
  371. NSPR_DEFINES += -DNSPR20
  372. RWTOOLS_VERSION = latest
  373. #HTTPDSO_NAME=libdsnshttpd
  374. PEER_ARCH=aix
  375. else
  376. ifeq ($(ARCH), BSDI)
  377. CC=cc
  378. ARCH_DEBUG=-g
  379. ARCH_OPT=-O2
  380. ARCH_CFLAGS=-Wall -DNO_GETDOMAINNAME
  381. RANLIB=ranlib
  382. NONSHARED_FLAG=-static
  383. PEER_ARCH=bsdi
  384. else
  385. ifeq ($(ARCH), HPUX)
  386. DLL_SUFFIX=sl
  387. #-D_POSIX_C_SOURCE=199506L turns kernel threads on for HPUX11
  388. CC=cc -Ae -D_POSIX_C_SOURCE=199506L
  389. ifeq ($(BUILD_MODULE), HTTP_ADMIN)
  390. CXX=aCC -DHPUX_ACC -D__STDC_EXT__ -D_POSIX_C_SOURCE=199506L -ext
  391. else
  392. CXX=aCC -DHPUX_ACC -D__STDC_EXT__ -D_POSIX_C_SOURCE=199506L -ext
  393. endif
  394. CCC=$(CXX)
  395. ARCH_DEBUG=-g
  396. ARCH_OPT=-O
  397. # Compile everything pos-independent in case we need to put it in shared lib
  398. ifdef USE_64
  399. ARCH_CFLAGS=-D_HPUX_SOURCE +DA2.0W +DS2.0 +Z
  400. else
  401. ARCH_CFLAGS=-D_HPUX_SOURCE +DAportable +DS1.1 +Z
  402. endif
  403. # NSPR uses fpsetmask which I'm told is in the math lib
  404. EXTRA_LIBS= -ldld -lm
  405. ifeq ($(NSOS_RELEASE), B.10.10)
  406. ARCH_CFLAGS+=-DHPUX10 -DHPUX10_10
  407. # Debug with HPUX "dde" - makes the server single process - avoids fork()ing.
  408. # Can also be used for non HPUX if desired.
  409. #ARCH_CFLAGS+=-DUSE_DDE_DEBUG
  410. EXTRA_LIBS += -ldce
  411. else
  412. ifeq ($(NSOS_RELEASE), B.11.00)
  413. MODERNHP=1
  414. endif
  415. ifeq ($(NSOS_RELEASE), B.11.11)
  416. MODERNHP=1
  417. endif
  418. ifeq ($(MODERNHP), 1)
  419. ifeq ($(NSOS_RELEASE), B.11.00)
  420. ARCH_CFLAGS+=-DHPUX11 -DHPUX11_00
  421. endif
  422. ifeq ($(NSOS_RELEASE), B.11.11)
  423. ARCH_CFLAGS+=-DHPUX11 -DHPUX11_11
  424. endif
  425. # Debug with HPUX "dde" - makes the server single process - avoids fork()ing.
  426. # Can also be used for non HPUX if desired.
  427. #ARCH_CFLAGS+=-DUSE_DDE_DEBUG
  428. EXTRA_LIBS+= -lpthread
  429. endif
  430. endif
  431. RANLIB=true
  432. NONSHARED_FLAG=-Wl,-a,archive
  433. # Flags passed to CC to pass onto the linker; separate it from EXTRA_LIBS
  434. ifeq ($(USE_64),1)
  435. LD_CFLAGS=-W1,-E
  436. else
  437. LD_CFLAGS=-Wl,-E,-N
  438. endif
  439. DLL_CFLAGS=+Z
  440. DLL_LDFLAGS=-b
  441. NSAPI_CAPABLE=true
  442. VERITY_ARCH=_hp800
  443. USE_PTHREADS=1
  444. NSPR_DEFINES += -DNSPR20 -D_PR_NTHREAD -D_PR_USECPU -D_REENTRANT
  445. LINK_DLL=$(CCC) $(DLL_LDFLAGS) $(ARCH_CFLAGS) -o $@
  446. PEER_ARCH=hp
  447. RWTOOLS_VERSION = latest
  448. else
  449. ifeq ($(ARCH), IRIX)
  450. OSVERSION := $(shell uname -r)
  451. # the ns/ side of the fence assumes SVR4 is defined. --Rob
  452. CC=cc -DSVR4
  453. ifndef PRODUCT_IS_DIRECTORY_SERVER
  454. CXX=CC -DSVR4 -exceptions
  455. else
  456. # XXXmcs: 17-Sep-1997 - the -exceptions flag causes the IRIX CC compiler
  457. # to dump core when compiling ldapserver/lib/safs/aclsafs.c
  458. # We don't seem to need this for Directory Server....
  459. CXX=CC -DSVR4
  460. endif
  461. CCC=$(CXX)
  462. ARCH_DEBUG=-g
  463. ARCH_OPT=-O
  464. ifeq ($(USE_N32), 1)
  465. ARCH_CFLAGS=-fullwarn -use_readonly_const -MDupdate .depends -n32
  466. else
  467. ARCH_CFLAGS=-fullwarn -use_readonly_const -MDupdate .depends -o32
  468. endif
  469. RANLIB=true
  470. DLL_LDFLAGS=-shared
  471. NONSHARED_FLAG=-non_shared
  472. NLIST=-lmld
  473. NSAPI_CAPABLE=true
  474. # Use -DIRIX6_2 for 6.x
  475. ifeq (6.,$(findstring 6.,$(OSVERSION)))
  476. ARCH_CFLAGS+=-DIRIX6_2
  477. endif
  478. ifeq (6.5,$(OSVERSION))
  479. ARCH_CFLAGS+=-DIRIX6_5 -mips3
  480. endif
  481. NSPR_DEFINES += -DNSPR20 -D_PR_NTHREAD -D_SGI_MP_SOURCE
  482. LINK_DLL=$(CCC) $(DLL_LDFLAGS) -o $@
  483. PEER_ARCH=irix
  484. export NO_DB2=1
  485. else
  486. ifeq ($(ARCH), Linux)
  487. OSVERSION := $(basename $(shell uname -r))
  488. CC=/usr/bin/gcc -fwritable-strings
  489. CXX=/usr/bin/g++ -fwritable-strings
  490. CCC=$(CXX)
  491. LD=$(CXX)
  492. ARCH_DEBUG=-g
  493. ARCH_OPT=-O2
  494. ARCH_CFLAGS=-Wall -DNO_DBM -DLINUX -DLINUX2_2 -DLINUX2_4 -fPIC -D_REENTRANT
  495. RANLIB=ranlib
  496. DLL_LDFLAGS=-shared
  497. LINK_DLL=$(CC) $(DLL_LDFLAGS) -o $@
  498. NSPR_DEFINES += -DNSPR20
  499. NLIST=-lelf
  500. NSAPI_CAPABLE=true
  501. EXTRA_LIBS=-ldl -lcrypt -lpthread
  502. BUILD_IIOPLIB=no
  503. ifeq (2.4,$(OSVERSION))
  504. PEER_ARCH=linux2.4
  505. else
  506. PEER_ARCH=linux
  507. endif
  508. # linux always uses pthreads
  509. USE_PTHREADS = 1
  510. # remove this line when smartheap is built for linux
  511. LDAP_DONT_USE_SMARTHEAP = 1
  512. else
  513. ifeq ($(ARCH), UNIXWARE)
  514. CC=$(BUILD_ROOT)/build/hcc
  515. CXX=$(BUILD_ROOT)/build/hcpp
  516. CCC=$(CXX)
  517. CPPCMD=/lib/cpp -P
  518. ARCH_DEBUG=-g
  519. ARCH_OPT=
  520. ARCH_CFLAGS=
  521. RANLIB=true
  522. NLIST=-lelf
  523. NSAPI_CAPABLE=true
  524. # to use native threads - uncomment this
  525. # export USE_SVR4_THREADS=1
  526. # The -lgen is for syslog.
  527. ifdef USE_SVR4_THREADS
  528. OS_THREADLIB = -lthread
  529. endif
  530. EXTRA_LIBS=-lsocket -lnsl -lresolv -ldl -lgen -lC -lc /usr/ucblib/libucb.a $(OS_THREADLIB)
  531. # extra libs because svr4 doesn't support sockets the way we want...?
  532. DLL_LDFLAGS=-d y -G
  533. USE_LD_RUN_PATH=true
  534. LDAP_VERSION = oem
  535. RWTOOLS_VERSION = latest
  536. ADM_RELDATE = oem
  537. ADM_VERSDIR = admserv35
  538. AUTOCATALOG_VERSION = oem
  539. NEED_VTASKSTUB = 1
  540. NO_MSOFT_OBJ=1
  541. BUILD_WEBPUB=no
  542. BUILD_IIOPLIB=no
  543. NSPR_DEFINES += -DNSPR20
  544. PEER_ARCH=unixware
  545. export NO_INFORMIX=1
  546. export NO_ORACLE=1
  547. export NO_SYBASE=1
  548. export NO_ODBC=1
  549. export NO_DB2=1
  550. else
  551. ifeq ($(ARCH), UnixWare)
  552. # We don't want to use absolute paths here, because we might want to pickup
  553. # UDK tools from /udk/usr/ccs, so we depend on the PATH being correctly set
  554. CC=cc
  555. CCC=CC
  556. CXX=$(CCC)
  557. CPPCMD=/lib/cpp -P
  558. ARCH_DEBUG=-g
  559. ARCH_OPT=-O
  560. SV_REL := $(shell uname -r)
  561. # SVR5 if Gemini UnixWare
  562. # SVR4 if UnixWare 2.1.x with the UDK tools
  563. ifeq ($(SV_REL),5)
  564. ARCH_CFLAGS=-DSVR5 -D_SIMPLE_R
  565. else
  566. ARCH_CFLAGS=-DSVR4 -D_SIMPLE_R
  567. endif
  568. RANLIB=true
  569. NLIST=-lelf
  570. NSAPI_CAPABLE=true
  571. # to use native threads - uncomment this
  572. # export USE_SVR4_THREADS=1
  573. ifdef USE_SVR4_THREADS
  574. OS_THREADLIB = -lthread
  575. endif
  576. # extra libs because svr4 doesn't support sockets the way we want...?
  577. EXTRA_LIBS=-lsocket -lnsl -lresolv -ldl -lgen -lC -lc /usr/ucblib/libucb.a
  578. $(OS_THREADLIB)
  579. LICENSE_LIBS=
  580. #LICENSE_LIBS=-lscolicense -lannot -li4clnt -li4shl -li4nsi -li4rpci\
  581. # -lnck_task -lcps -lsocket /usr/ccs/lib/libC.a
  582. # extra libs because svr4 doesn't support sockets the way we want...?
  583. VERITY_LIB=_386svr4
  584. #If you comment the line below, you will turn off the SCO licensing.
  585. #This will allow you to use the server internally for test purposes.
  586. #MCC_SERVER += -DSCO_PM
  587. DLL_LDFLAGS=-d y -G
  588. #DLL_CFLAGS=-KPIC
  589. USE_LD_RUN_PATH=true
  590. LDAP10_VERSION = oem
  591. RWTOOLS_VERSION = latest
  592. ADM_RELDATE = oem
  593. ADM_VERSDIR = admserv35
  594. AUTOCATALOG_VERSION = oem
  595. NEED_VTASKSTUB = 1
  596. NO_MSOFT_OBJ=1
  597. BUILD_WEBPUB=no
  598. BUILD_IIOPLIB=no
  599. NSPR_DEFINES += -DNSPR20
  600. PEER_ARCH=unixware5
  601. DB_VERSION=oem
  602. export NO_INFORMIX=1
  603. export NO_ORACLE=1
  604. export NO_SYBASE=1
  605. export NO_ODBC=1
  606. export NO_DB2=1
  607. else
  608. ifeq ($(ARCH), SCOOS)
  609. CC=cc -b elf -KPIC -DSCOOS
  610. CXX=g++ -b elf -DPRFSTREAMS_BROKEN -I/usr/local/lib/g++-include
  611. CCC=$(CXX)
  612. CPPCMD=/lib/cpp
  613. ARCH_DEBUG=-g
  614. ARCH_OPT=
  615. ARCH_CFLAGS=
  616. RANLIB=true
  617. NLIST=-lelf
  618. NSAPI_CAPABLE=true
  619. EXTRA_LIBS=-lsocket -lnsl -ldl -lpmapi -lc -lPW
  620. DLL_LDFLAGS=-d y -G
  621. VERITY_ARCH = _scoodt
  622. MCC_SERVER += -DSCO_PM
  623. DLL_LDFLAGS=-d y -G
  624. USE_LD_RUN_PATH=true
  625. LDAP_VERSION = oem
  626. RWTOOLS_VERSION = latest
  627. ADM_RELDATE = oem
  628. ADM_VERSDIR = admserv35
  629. AUTOCATALOG_VERSION = oem
  630. BUILD_WEBPUB = no
  631. NO_MSOFT_OBJ = 1
  632. NSPR_DEFINES += -DNSPR20
  633. PEER_ARCH=sco
  634. else
  635. ifeq ($(ARCH), NCR)
  636. ABS_ROOT_PARENT := $(shell cd $(BUILD_ROOT)/..; pwd)
  637. NS_USE_GCC = 1
  638. CPPCMD = /lib/cpp
  639. ARCH_DEBUG = -g
  640. ARCH_OPT =
  641. ARCH_CFLAGS =
  642. RANLIB = true
  643. NLIST = -lelf
  644. NSAPI_CAPABLE = true
  645. ifdef NS_USE_GCC
  646. # if gcc-settings are redefined already - don't touch it
  647. #
  648. ifeq (,$(findstring gcc, $(CC)))
  649. CC = gcc
  650. CCC = g++
  651. CXX = g++
  652. # always use -fpic - some makefiles are still broken and don't distinguish
  653. # situation when they build shared and static libraries
  654. ARCH_CFLAGS += -fpic -Wall -DPRFSTREAMS_BROKEN -DNS_USE_GCC $(GCC_FLAGS_EXTRA)
  655. CCC_EXTRA_LIBS = -L/usr/local/lib -lstdc++ -lg++ -lgcc
  656. endif
  657. endif
  658. ifdef NS_USE_NATIVE
  659. CC = cc
  660. CCC = ncc
  661. CXX = ncc
  662. ARCH_CFLAGS += -DNS_USE_NATIVE
  663. CCC_EXTRA_LIBS = -L/opt/ncc/lib
  664. endif
  665. ###
  666. # order is important
  667. EXTRA_LIBS = -lsocket -lnsl -lresolv -lgen -ldl $(CCC_EXTRA_LIBS) -lc /usr/ucblib/libucb.a
  668. GCC_FLAGS_EXTRA = -pipe
  669. DLL_LDFLAGS = -d y -G
  670. VERITY_ARCH = _isvr4
  671. USE_LD_RUN_PATH = true
  672. LDAP_VERSION = oem
  673. RWTOOLS_VERSION = latest
  674. ADM_RELDATE = oem
  675. ADM_VERSDIR = admserv35
  676. NEED_VTASKSTUB = 1
  677. NO_MSOFT_OBJ = 1
  678. AUTOCATALOG_VERSION = oem
  679. BUILD_WEBPUB = no
  680. BUILD_IIOPLIB = no
  681. DL_LIB =-ldl
  682. NSPR_DEFINES += -DNSPR20
  683. # svr4-x86 compatible
  684. PEER_ARCH=unixware
  685. export NO_ODBC=1
  686. export NO_DB2=1
  687. else
  688. ifeq ($(ARCH), SONY)
  689. CC=cc
  690. ARCH_DEBUG=-g
  691. ARCH_OPT=
  692. ARCH_CFLAGS=
  693. RANLIB=true
  694. NLIST=-lelf
  695. NSAPI_CAPABLE=true
  696. EXTRA_LIBS=-lgen -lsocket -lnsl -ldl
  697. DLL_LDFLAGS=-G
  698. # extra libs because svr4 doesn't support sockets the way we want...
  699. LDAP_VERSION = oem
  700. RWTOOLS_VERSION = latest
  701. ADM_RELDATE = oem
  702. ADM_VERSDIR = admserv35
  703. AUTOCATALOG_VERSION = oem
  704. else
  705. ifeq ($(ARCH), NEC)
  706. CC=$(BUILD_ROOT)/build/hcc
  707. ARCH_DEBUG=-g
  708. ARCH_OPT=-KOlimit=4000
  709. ARCH_CFLAGS=-Xa
  710. RANLIB=true
  711. NLIST=
  712. NSAPI_CAPABLE=true
  713. EXTRA_LIBS=-lsocket -lnsl -ldl -lsdbm
  714. DLL_LDFLAGS=-G
  715. PEER_ARCH=nec
  716. LDAP_VERSION = oem
  717. RWTOOLS_VERSION = latest
  718. ADM_RELDATE = oem
  719. ADM_VERSDIR = admserv35
  720. AUTOCATALOG_VERSION = oem
  721. else
  722. ifeq ($(ARCH), ReliantUNIX)
  723. # do not use DCE PTHREADS now
  724. # USE_PTHREADS = 1
  725. # do not use gcc anymore
  726. # NS_USE_GCC = 1
  727. DLL_LDFLAGS = -G
  728. ifdef NS_USE_GCC
  729. # gcc section
  730. CC=gcc
  731. CXX=gcc
  732. CCC=gcc
  733. LD=gld
  734. ARCH_DEBUG=-gdwarf
  735. ARCH_OPT=-O2
  736. ARCH_LDFLAGS=-Xlinker -Blargedynsym
  737. ARCH_CFLAGS=-pipe -DSVR4 -DSNI
  738. LINK_DLL=gld $(DLL_LDFLAGS) -o $@
  739. else
  740. # CDS++ section
  741. CC=cc
  742. CXX=CC -K old_for_init
  743. CCC=CC -K old_for_init
  744. CPPCMD=/usr/ccs/lib/cpp -P
  745. ARCH_DEBUG=-g
  746. ARCH_OPT=-O2
  747. ARCH_LDFLAGS=-Wl,-Blargedynsym
  748. ARCH_CFLAGS=-DSVR4 -DSNI
  749. # we need to use $(CCC) if the .so contains C++ code
  750. # so in Makefiles where we want the .so to be linked with CC
  751. # we add a DLL_CC = $(CCC)
  752. LINK_DLL=$(DLL_CC) $(DLL_LDFLAGS) -o $@
  753. # otherwise, we just use $(CC)
  754. DLL_CC=$(CC)
  755. # There is another quirk: You cannot load .so's containing C++
  756. # code in an executable linked with $(CC)
  757. ifeq ($(USE_PTHREADS), 1)
  758. ARCH_CFLAGS += -K thread -DUSE_PTHREADS
  759. ARCH_LDFLAGS += -K thread
  760. DLL_LDFLAGS += -K thread
  761. endif
  762. endif
  763. RANLIB=true
  764. DLL_LDFLAGS=-G
  765. NONSHARED_FLAG=
  766. NLIST=-lelf
  767. NSAPI_CAPABLE=true
  768. VERITY_ARCH=_mipsabi
  769. NONSHARED_FLAG=
  770. EXTRA_LIBS=-lsocket -lnsl -lresolv -ldl -lgen -L/usr/local/lib -lsni
  771. USE_LD_RUN_PATH=true
  772. #LDAP_VERSION = latest
  773. #LDAP_RELDATE = latest
  774. LDAP_RELDATE = 20001119
  775. RWTOOLS_VERSION = latest
  776. # NEED_VTASKSTUB = 1
  777. #NO_MSOFT_OBJ=1
  778. BUILD_WEBPUB=yes
  779. BUILD_IIOPLIB=yes
  780. DO_AUTOCATALOG=yes
  781. DO_PKGAUTOCATALOG=yes
  782. #this is no longer needed
  783. #NEED_NSPR_MALLOC=yes
  784. NSPR_DEFINES += -DNSPR20
  785. PEER_ARCH=reliantunix
  786. RWTOOLS_VERSION = latest
  787. ADM_RELDATE = oem
  788. ADM_VERSDIR = admserv35
  789. AUTOCATALOG_VERSION = oem
  790. DB_VERSION=oem
  791. #export NO_INFORMIX=1
  792. #export NO_ORACLE=1
  793. export NO_SYBASE=1
  794. export NO_ODBC=1
  795. export NO_DB2=1
  796. else
  797. ifeq ($(ARCH), OSF1)
  798. CC=cc
  799. CCC=cxx
  800. CXX=cxx
  801. ARCH_DEBUG=-g
  802. ARCH_OPT=-O2
  803. ARCH_CFLAGS=-DIS_64 -DOSF1V4 -DOSF1V4$(NSOS_TAG) -ieee_with_inexact -pthread -std1
  804. # ranlib no longer needed on OSF1 V4.0
  805. RANLIB=true
  806. DLL_LDFLAGS=-shared -all -expect_unresolved "*"
  807. NONSHARED_FLAG=-non_shared
  808. NSAPI_CAPABLE=true
  809. VERITY_ARCH=_aosf40
  810. ifdef PRODUCT_IS_DIRECTORY_SERVER
  811. #EXTRA_LIBS+=-lcxxstd -lcxx
  812. else
  813. #EXTRA_LIBS=-lcxxstd -lcxx
  814. endif
  815. USE_PTHREADS=1
  816. NSPR_DEFINES += -DNSPR20
  817. RWTOOLS_VERSION = latest
  818. PEER_ARCH=osf
  819. PEERDIR=$(DEVROOT)/osf/dev
  820. export NO_DB2=1
  821. export NO_ODBC=1
  822. else
  823. ifeq ($(ARCH), SUNOS4)
  824. # Compile everything position-independent so we can put it into shared lib
  825. CC=gcc -fPIC
  826. ARCH_DEBUG=-g
  827. ARCH_OPT=-O2
  828. ARCH_CFLAGS=-Wall -pipe
  829. RANLIB=ranlib
  830. DLL_CFLAGS=-fPIC
  831. DLL_LDFLAGS=-assert pure-text
  832. NONSHARED_FLAG=-static
  833. NSAPI_CAPABLE=true
  834. RESOLV_LINK=/usr/local/lib/libresolvPIC.a
  835. PEER_ARCH=sunos
  836. ifeq ($(RESOLV_FLAG), noresolv)
  837. EXTRA_LIBS=-ldl
  838. DNS_STUB_C=dns-stub.c
  839. DNS_STUB_O=dns-stub.o
  840. else
  841. EXTRA_LIBS=$(RESOLV_LINK) -ldl
  842. DNS_STUB_C=nis-stub.c
  843. DNS_STUB_O=nis-stub.o
  844. endif
  845. else
  846. ifeq ($(ARCH), SOLARIS)
  847. #
  848. # 7/12/96 Adrian - Switch to use SparcWorks for 3.0 Development
  849. # Therefore no need to separate from catalog server
  850. #
  851. OSVERSION := $(shell uname -r | sed "y/./0/")
  852. NS_USE_NATIVE=1
  853. CC=cc -v
  854. CXX=CC +w
  855. CCC=$(CXX)
  856. LD=$(CC)
  857. ARCH_OPT=-xO2
  858. ARCH_CFLAGS=-DSVR4 -D__svr4 -D__svr4__ -D_SVID_GETTOD -DOSVERSION=$(OSVERSION)
  859. ifdef USE_64
  860. ARCH_CFLAGS += -xarch=v9
  861. endif
  862. ARCH_DEBUG=-g
  863. RANLIB=true
  864. EXTRA_LIBS = -lthread -lposix4 -lsocket -lnsl -ldl -lresolv -lw
  865. ifdef PRODUCT_IS_DIRECTORY_SERVER
  866. EXTRA_LIBS += -lgen
  867. endif
  868. DLL_LDFLAGS=-G
  869. NONSHARED_FLAG=-static
  870. NSAPI_CAPABLE=true
  871. NLIST=-lelf
  872. VERITY_ARCH=_solaris
  873. NSPR_DEFINES += -DNSPR20 -D_PR_NTHREAD -D_REENTRANT
  874. PEER_ARCH=solaris
  875. # XXXrobm BARF
  876. # ifeq ($(NSOS_RELEASE), 5.3)
  877. # GCCLIB=/usr/local/lib/gcc-lib/sparc-sun-solaris2.3/2.6.3/libgcc.a
  878. GCCLIB=
  879. # We are using a CC compiler but we were linking to libgcc.a - should use sparcworks libC
  880. #GCCLIB=/tools/ns-arch/sparc_sun_solaris2.5/soft/sparcworks-3.0.1/run/default/share/lib/sparcworks/SUNWspro/SC3.0.1/lib/libC.a
  881. # else
  882. # GCCLIB=/usr/local/lib/gcc-lib/sparc-sun-solaris2.4/2.6.3/libgcc.a
  883. # endif
  884. else
  885. ifeq ($(ARCH), SOLARISx86)
  886. OSVERSION := $(shell uname -r | sed "y/./0/")
  887. NS_USE_NATIVE=1
  888. # Add SOLARIS define as well as SOLARISx86 which happens automagically
  889. CC=cc -DSOLARIS
  890. CXX=CC -DSOLARIS
  891. CCC=$(CXX)
  892. ARCH_OPT=-xO2
  893. ARCH_CFLAGS=-DSVR4 -D__svr4 -D__svr4__ -D_SVID_GETTOD -DOSVERSION=$(OSVERSION)
  894. ARCH_DEBUG=-g
  895. RANLIB=true
  896. EXTRA_LIBS = -lsocket -lthread -lposix4 -lnsl -ldl -lresolv -lm -lw
  897. DLL_LDFLAGS=-G
  898. #LDAP_VERSION = oem
  899. RWTOOLS_VERSION = latest
  900. #ADM_RELDATE = oem
  901. #ADM_VERSDIR = admserv30
  902. AUTOCATALOG_VERSION = oem
  903. #DB_VERSION=oem
  904. NONSHARED_FLAG=-static
  905. NSAPI_CAPABLE=true
  906. NLIST=-lelf
  907. NO_MSOFT_OBJ=1
  908. BUILD_WEBPUB=no
  909. BUILD_IIOPLIB=no
  910. NSPR_DEFINES += -DNSPR20 -D_PR_NTHREAD -D_REENTRANT
  911. export NO_INFORMIX=1
  912. export NO_ORACLE=1
  913. export NO_SYBASE=1
  914. export NO_ODBC=1
  915. export NO_DB2=1
  916. PEER_ARCH=solarisx86
  917. else
  918. ifeq ($(ARCH), WINNT)
  919. ifdef DEBUG_RUNTIME
  920. RTFLAG=-MDd
  921. else
  922. RTFLAG=-MD
  923. endif
  924. LIB_SUFFIX=lib
  925. DLL_SUFFIX=dll
  926. PROCESSOR := $(shell uname -p)
  927. PEER_ARCH=nti31
  928. ifeq ($(PROCESSOR), I386)
  929. CPU_ARCH = x386
  930. VERITY_ARCH=_nti31
  931. ARCH_OPT=-DNDEBUG -O2
  932. CC=cl -nologo $(RTFLAG) -W3 -GT -GX -D_X86_ -Dx386 -DWIN32 -D_WINDOWS -D_RWTOOLSDLL
  933. CCP=cl -nologo $(RTFLAG) -W3 -GT -GX -D_X86_ -Dx386 -DWIN32 -D_WINDOWS -D_MBCS -D_AFXDLL -D_RWTOOLSDLL
  934. else
  935. ifeq ($(PROCESSOR), MIPS)
  936. CPU_ARCH = MIPS
  937. VERITY_ARCH=verity_is_undefined
  938. ARCH_OPT=-DNDEBUG -O2
  939. CC=cl -nologo $(RTFLAG) -W3 -GT -GX -D_MIPS_ -DWIN32 -D_WINDOWS -D_RWTOOLSDLL
  940. CCP=cl -nologo $(RTFLAG) -W3 -GT -GX -D_X86_ -Dx386 -DWIN32 -D_WINDOWS -D_MBCS -D_AFXDLL -D_RWTOOLSDLL
  941. else
  942. ifeq ($(PROCESSOR), ALPHA)
  943. CPU_ARCH = ALPHA
  944. VERITY_ARCH=_ant35
  945. ARCH_OPT=-DNDEBUG -Od
  946. CC=cl -nologo $(RTFLAG) -W3 -GT -GX -D_ALPHA=1 -DWIN32 -D_WINDOWS -D_RWTOOLSDLL
  947. CCP=cl -nologo $(RTFLAG) -W3 -GT -GX -D_ALPHA_ -DWIN32 -D_WINDOWS -D_MBCS -D_AFXDLL -D_RWTOOLSDLL
  948. BUILD_IIOPLIB=no
  949. export NO_SYBASE=1
  950. export NO_ODBC=1
  951. export NO_DB2=1
  952. else
  953. CPU_ARCH = processor_is_undefined
  954. endif
  955. endif
  956. endif
  957. RC=rc $(MCC_SERVER)
  958. MC=mc
  959. ifdef HEAPAGENT
  960. OBJSWITCH=-Zi
  961. else
  962. OBJSWITCH=-Z7
  963. endif
  964. ARCH_DEBUG=-D_DEBUG -Od $(OBJSWITCH)
  965. ARCH_CFLAGS=
  966. ARCH_LINK_DEBUG=-DEBUG
  967. ARCH_LINK_OPT=
  968. RANLIB=echo
  969. EXTRA_LIBS=wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib \
  970. comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
  971. rpcrt4.lib uuid.lib odbc32.lib odbccp32.lib winmm.lib
  972. DLL_LDFLAGS=
  973. NONSHARED_FLAG=
  974. NSAPI_CAPABLE=true
  975. NO_MSOFT_OBJ=1
  976. NSPR_DEFINES += -DNSPR20 -D_PR_NTHREAD -D_PR_USECPU
  977. else
  978. CC=UNKNOWN_SYSTEM_TYPE
  979. endif
  980. endif
  981. endif
  982. endif
  983. endif
  984. endif
  985. endif
  986. endif
  987. endif
  988. endif
  989. endif
  990. endif
  991. endif
  992. endif
  993. endif
  994. endif
  995. endif
  996. # Peer SNMP defines
  997. ifeq ($(BUILD_SNMP), yes)
  998. MCC_SERVER += -DPEER_SNMP
  999. SNMP=libsnmp
  1000. SNMP_INCLUDE=$(DEVROOT)/include
  1001. PEERLIB=$(DEVROOT)/$(PEER_ARCH)/dev
  1002. SNMPNOLIB=snmp
  1003. ifeq ($(ARCH), WINNT)
  1004. PEERLIBOBJ=$(PEERLIB)/mgmt.lib
  1005. else
  1006. PEERLIBOBJ=$(PEERLIB)/mgmt.o
  1007. endif
  1008. else
  1009. SNMP=
  1010. SNMP_INCLUDE=.
  1011. PEERLIB=
  1012. PEERLIBOBJ=
  1013. SNMPNOLIB=
  1014. endif
  1015. # ------------------------ The actual build rules ------------------------
  1016. include $(BUILD_ROOT)/nsperl.mk
  1017. RELTOOLSPATH = $(ABS_ROOT_PARENT)/reltools
  1018. FTP_PULL = $(PERL) $(RELTOOLSPATH)/ftp_puller_new.pl -logdir $(ABS_ROOT_PARENT) -trimlog
  1019. # make sure ftp puller exists
  1020. $(RELTOOLSPATH)/ftp_puller_new.pl:
  1021. cd $(ABS_ROOT_PARENT) ; cvs co RelToolsLite
  1022. # Define preferred pull method for the platform.
  1023. # Can be overridden for the entire build, and also for each component
  1024. # each component has an XXX_PULL_METHOD macro that defaults to the pull
  1025. # method listed below; see components.mk
  1026. ifndef COMPONENT_PULL_METHOD
  1027. ifeq ($(ARCH), WINNT)
  1028. COMPONENT_PULL_METHOD = FTP
  1029. else
  1030. COMPONENT_PULL_METHOD = SYMLINK
  1031. endif
  1032. endif
  1033. # platforms without full rtl debugging versions of libraries i.e. not NT
  1034. FULL_RTL_OBJDIR = $(NSOBJDIR_NAME)
  1035. NSCP_DISTDIR_FULL_RTL = $(NSCP_DISTDIR)
  1036. NSCP_ABS_DISTDIR_FULL_RTL = $(ABS_ROOT_PARENT)/dist/$(FULL_RTL_OBJDIR)
  1037. # these components may have additional RTL debugging support built in on NT
  1038. # adminsdk (adminutil), dbm, ldapsdk, NLS, NSPR, NSS (security)
  1039. # we cannot simply redefine NSOBJDIR_NAME and NSCP_DISTDIR because other
  1040. # components do not have this RTL support stuff and the .OBJD directory
  1041. # does not exist
  1042. ifeq ($(ARCH), WINNT)
  1043. ifeq ($(DEBUG), fulld)
  1044. FULL_RTL_OBJDIR=$(NSOBJDIR_NAME)D
  1045. NSCP_DISTDIR_FULL_RTL = $(BUILD_ROOT)/../dist/$(FULL_RTL_OBJDIR)
  1046. NSCP_ABS_DISTDIR_FULL_RTL = $(BUILD_ROOT)/../dist/$(FULL_RTL_OBJDIR)
  1047. endif
  1048. endif
  1049. $(NSCP_DISTDIR_FULL_RTL) $(CLASS_DEST): $(RELTOOLSPATH)/ftp_puller_new.pl
  1050. mkdir -p $@
  1051. include $(BUILD_ROOT)/components.mk
  1052. # these two macros are to fool the crazy NSPR nsinstall and fasttime
  1053. # stuff into putting the objects and binaries in this location
  1054. ABS_OBJDIR=$(ABS_ROOT)/built/$(NS_BUILD_FLAVOR)
  1055. NSDEFS += DIST=$(NSPR_ABS_BUILD_DIR) OBJDIR=$(ABS_OBJDIR) \
  1056. FASTTIME_HEADER_DEST=$(ABS_OBJDIR)/include \
  1057. FASTTIME_TARGET_DEST=$(ABS_OBJDIR)
  1058. # NT uses nsinstall.exe from the path
  1059. ifneq ($(ARCH), WINNT)
  1060. NSDEFS += NSINSTALL=$(ABS_OBJDIR)/nsinstall
  1061. endif
  1062. ##### FTP over AIX and HPUX since they are flakey over NFS ######
  1063. #################################################################
  1064. ifeq ($(ARCH), AIX)
  1065. FTP_UNIX=YES
  1066. endif
  1067. ifeq ($(ARCH), HPUX)
  1068. FTP_UNIX=YES
  1069. endif
  1070. ################################################################
  1071. #############################################################################
  1072. # Pull the DS4.1 MCC package to get nsslapd.dll/.lib/.so for the DS ResKit
  1073. # ONLY. Do not USE these macros for anything else
  1074. #############################################################################
  1075. MCCBINARYDATE=19990621$(SEC_SUFFIX)
  1076. FULLDSBINARY=$(COMPONENTS_DIR)/mcc41/$(MCCBINARYDATE)/$(NSOBJDIR_NAME)
  1077. RM=rm
  1078. DEPEND=makedepend
  1079. ifeq ($(ARCH), IRIX)
  1080. STRIP=strip -x
  1081. else
  1082. STRIP=strip
  1083. endif # IRIX
  1084. # XXXrobm The Sun MD stuff #includes stuff in the nspr dir without a prefix
  1085. # Otherwise the second NSCP_DISTDIR/include/nspr would not be necessary
  1086. ifdef NSPR20
  1087. MCC_INCLUDE=-I$(BUILD_ROOT)/include \
  1088. -I$(BUILD_ROOT)/include \
  1089. $(NSPR_INCLUDE) $(DBM_INCLUDE) $(SECURITY_INCLUDE) \
  1090. $(SVRCORE_INCLUDE) \
  1091. -I$(BUILD_ROOT)/nspr20/lib
  1092. # $(SVRCORE_INCLUDE) $(NLS_INCLUDE) \
  1093. else
  1094. MCC_INCLUDE=-I$(BUILD_ROOT)/include \
  1095. -I$(NSCP_DISTDIR)/include -I$(NSCP_DISTDIR)/include/nspr
  1096. endif
  1097. MCC_INCLUDE += -I$(LDAP_INCLUDE)
  1098. MCC_INCLUDE += -I$(SASL_INCLUDE)
  1099. ifeq ($(ARCH), WINNT)
  1100. XP_FLAG=-DXP_WIN32 -DXP_WIN -D_WINDOWS -DXP_PC -DXP_WINNT
  1101. else
  1102. XP_FLAG=-DXP_UNIX
  1103. endif
  1104. # CFLAGS_NO_ARCH is needed temporarily by NS_MAIL
  1105. CFLAGS_NO_ARCH=$(NODE_FLAG) $(BOMB) $(MODULE_CFLAGS) $(XP_FLAG) \
  1106. -D$(ARCH) $(MCC_DEBUG) $(MCC_SERVER)
  1107. CFLAGS=$(ARCH_CFLAGS) $(CFLAGS_NO_ARCH)
  1108. ifeq ($(BUILD_DLL), yes)
  1109. CFLAGS += -DBUILD_DLL
  1110. endif
  1111. LFLAGS=$(ML_DEBUG)
  1112. ifeq ($(BSCINFO), yes)
  1113. CBSCFLAGS=-FR$(OBJDEST)/$*.sbr
  1114. endif
  1115. include $(BUILD_ROOT)/nscore.mk
  1116. # These are the defaults, individual Makefiles can override them as necessary
  1117. FVERSION=$(MAJOR_VERSION).$(MINOR_VERSION)
  1118. FVERSION_FLAGS=-v$(FVERSION)
  1119. ifeq ($(ARCH), WINNT)
  1120. $(OBJDEST)/%.res: %.rc
  1121. $(RC) -I$(DIRVERDIR) -Fo$@ $*.rc
  1122. endif
  1123. ifdef USE_LINT
  1124. LINT = lint
  1125. LINTCFLAGS = -errchk=%all -u -F -errtags -errhdr -errfmt=simple -Nlevel=4 -Xarch=v9 -erroff=E_ASGN_NEVER_USED
  1126. #no lint for c++ code on Solaris
  1127. #LINTCCFLAGS = $(LINTCFLAGS)
  1128. endif
  1129. #ifndef NOSTDCOMPILE
  1130. $(OBJDEST)/%.o: %.cc
  1131. ifeq ($(ARCH), WINNT)
  1132. $(CCP) -c $(CCFLAGS) $(CFLAGS) $(MCC_INCLUDE) $< -Fo$(OBJDEST)/$*.o
  1133. else
  1134. $(CCC) -c $(CCFLAGS) $(CFLAGS) $(MCC_INCLUDE) $< -o $(OBJDEST)/$*.o
  1135. endif
  1136. #endif
  1137. ifndef NOSTDCOMPILE
  1138. $(OBJDEST)/%.o: %.cpp
  1139. ifeq ($(ARCH), WINNT)
  1140. $(CCP) -c $(CCFLAGS) $(CFLAGS) $(MCC_INCLUDE) $< -Fo$(OBJDEST)/$*.o
  1141. else
  1142. $(CCC) -c $(CCFLAGS) $(CFLAGS) $(MCC_INCLUDE) $< -o $(OBJDEST)/$*.o
  1143. endif
  1144. endif
  1145. ifndef NOSTDCOMPILE
  1146. $(OBJDEST)/%.o: %.c
  1147. ifeq ($(ARCH), WINNT)
  1148. ifeq ($(BOUNDS_CHECKER), yes)
  1149. bcompile -c -Zop $(BUILD_ROOT)/bchecker.ini -nologo $(RTFLAG) -W3 -GT -GX -DWIN32 \
  1150. -D_WINDOWS $(CFLAGS) $(MCC_INCLUDE) $< -Fo$(OBJDEST)/$*.o
  1151. else
  1152. $(CC) -c $(CFLAGS) $(MCC_INCLUDE) $< -Fo$(OBJDEST)/$*.o $(CBSCFLAGS)
  1153. endif
  1154. else
  1155. $(CC) -c $(CFLAGS) $(MCC_INCLUDE) $< -o $(OBJDEST)/$*.o
  1156. endif
  1157. ifdef USE_LINT
  1158. $(LINT) $(LINTCFLAGS) $(subst -KPIC,,$(CFLAGS)) $(MCC_INCLUDE) $< > $(OBJDEST)/$*.ln 2>&1
  1159. # $(LINT) $(LINTCFLAGS) $(MODULE_CFLAGS) $(DEFS) $(MCC_SERVER) $(INCLUDES) $(MCC_INCLUDE) $< > $(OBJDEST)/$*.ln 2>&1
  1160. endif
  1161. endif
  1162. ifeq ($(ARCH), WINNT)
  1163. AR=lib /nologo /out:"$@"
  1164. ifdef HEAPAGENT
  1165. LDAP_DONT_USE_SMARTHEAP=true
  1166. else
  1167. PDBSWITCH=/PDB:NONE
  1168. endif
  1169. LINK_DLL = link /nologo $(USE_MAP) /DLL $(PDBSWITCH) $(ML_DEBUG) /SUBSYSTEM:WINDOWS $(LLFLAGS) $(DLL_LDFLAGS) /out:"$@"
  1170. LINK_EXE = link -OUT:"$@" $(USE_MAP) $(ARCH_LINK_DEBUG) $(LCFLAGS) /NOLOGO $(PDBSWITCH) /INCREMENTAL:NO \
  1171. /SUBSYSTEM:windows $(OBJS) $(DEPLIBS) $(EXTRA_LIBS)
  1172. BSCMAKE = bscmake.exe /nologo /o $@
  1173. endif # WINNT
  1174. ifndef NOSTDCLEAN
  1175. clean:
  1176. $(RM) -f .depends $(LIBS) $(OBJDEST)/*.o *_pure_* $(BINS) $(PUREFILES)
  1177. endif
  1178. ifndef NOSTDDEPEND
  1179. ifeq ($(ARCH), WINNT)
  1180. INCLUDE_DEPENDS = $(NULL)
  1181. depend:
  1182. echo making depends
  1183. else
  1184. INCLUDE_DEPENDS = .depends
  1185. .depends:
  1186. touch .depends
  1187. depend:
  1188. $(DEPEND) -f .depends -- $(MCC_INCLUDE) $(CFLAGS) *.c *.cpp
  1189. endif
  1190. endif
  1191. ifndef NOSTDSTRIP
  1192. strip:
  1193. $(STRIP) $(BINS)
  1194. endif
  1195. # Whoa. Hack around the fact that we're using CPP for something it
  1196. # wasn't designed to do.
  1197. #
  1198. # Note: I copied and pasted the HTML def to the section below. Please
  1199. # make changes in BOTH places. MLM
  1200. ifeq ($(ARCH), WINNT)
  1201. WIN_HTMLDEFS= /D "XP_WIN32" /D"WIN32" $(MCC_SERVER)
  1202. $(HTMLDEST)/%.html: %.h
  1203. cl /nologo /P /EP -I. $(WIN_HTMLDEFS) -Fo$@ $*.h
  1204. cp $*.i $@
  1205. rm $*.i
  1206. else
  1207. $(HTMLDEST)/%.html: %.h
  1208. @echo "$< -> $(HTMLDEST)/$*.html..."
  1209. @sed -e s/\'/::NETSCAPE_QUOTE_CHAR::/g \
  1210. -e s/\"/::NETSCAPE_DBL_QUOTE::/g \
  1211. -e 's^/\*^::NETSCAPE_SLASHSTAR::^g' \
  1212. -e 's^\*/^::NETSCAPE_STARSLASH::^g' \
  1213. -e 's^//^::NETSCAPE_DBLSLASH::^g' \
  1214. -e 's^\.^::NETSCAPE_PERIOD::^g' \
  1215. -e 's/^# /::NETSCAPE_HASH_BEGIN::/g' $< > /tmp/$*.HTEMP.c
  1216. @$(CPPCMD) -I. $(MCC_SERVER) -DXP_UNIX $(HTMLDEFS) /tmp/$*.HTEMP.c | \
  1217. sed -e s/::NETSCAPE_QUOTE_CHAR::/\'/g \
  1218. -e s/::NETSCAPE_DBL_QUOTE::/\"/g \
  1219. -e 's^::NETSCAPE_SLASHSTAR::^/\*^g' \
  1220. -e 's^::NETSCAPE_DBLSLASH::^//^g' \
  1221. -e 's^::NETSCAPE_PERIOD::^.^g' \
  1222. -e 's^::NETSCAPE_STARSLASH::^\*/^g' | \
  1223. egrep -v '^# .*' | grep -v '#ident ' | \
  1224. sed -e 's/::NETSCAPE_HASH_BEGIN::/# /g' > $(HTMLDEST)/$*.html
  1225. @rm /tmp/$*.HTEMP.c
  1226. endif
  1227. #
  1228. # Compile in TNF_PROBE_*_DEBUG() macros by doing eg: gmake BUILD_DEBUG=optimize TNF_DEBUG=1
  1229. # See aclplugin for TNF_PROBE_0_DEBUG() egs.
  1230. # After do:
  1231. # prex ns-slapd -z -D <instance-dir>
  1232. # enable $all
  1233. # trace $all
  1234. # continue
  1235. # <ctrl-c>
  1236. #
  1237. # and do a tnfdump /tmp/trace-<ns-slapd-PID> to see tnf logs.
  1238. #
  1239. ifeq ($(ARCH), SOLARIS)
  1240. ifeq ($(USE_64), 1)
  1241. LDAP_DONT_USE_SMARTHEAP=1
  1242. endif
  1243. ifdef TNF_DEBUG
  1244. CFLAGS += -DTNF_DEBUG
  1245. endif
  1246. endif
  1247. # Do the same for index.lst...
  1248. ifeq ($(ARCH), WINNT)
  1249. L_WIN_HTMLDEFS= /D "XP_WIN32" /D"WIN32" $(MCC_SERVER)
  1250. $(HTMLDEST)/%.lst: %.lst
  1251. cl /nologo /P /EP $(L_WIN_HTMLDEFS) -Fo$@ $*.lst
  1252. cp $*.i $@
  1253. rm $*.i
  1254. else
  1255. $(HTMLDEST)/%.lst: %.lst
  1256. @echo "$< -> $(HTMLDEST)/$*.lst..."
  1257. @sed -e s/\'/::NETSCAPE_QUOTE_CHAR::/g \
  1258. -e s/\"/::NETSCAPE_DBL_QUOTE::/g \
  1259. -e 's^/\*^::NETSCAPE_SLASHSTAR::^g' \
  1260. -e 's^\*/^::NETSCAPE_STARSLASH::^g' \
  1261. -e 's^//^::NETSCAPE_DBLSLASH::^g' \
  1262. -e 's/^# /::NETSCAPE_HASH_BEGIN::/g' $< > /tmp/$*.HTEMP.c
  1263. @$(CPPCMD) -I. $(MCC_SERVER) -DXP_UNIX $(HTMLDEFS) /tmp/$*.HTEMP.c | \
  1264. sed -e s/::NETSCAPE_QUOTE_CHAR::/\'/g \
  1265. -e s/::NETSCAPE_DBL_QUOTE::/\"/g \
  1266. -e 's^::NETSCAPE_SLASHSTAR::^/\*^g' \
  1267. -e 's^::NETSCAPE_DBLSLASH::^//^g' \
  1268. -e 's^::NETSCAPE_STARSLASH::^\*/^g' | egrep -v '^# .*' | \
  1269. sed -e 's/::NETSCAPE_HASH_BEGIN::/# /g' > $(HTMLDEST)/$*.lst
  1270. @rm /tmp/$*.HTEMP.c
  1271. endif
  1272. # ------------------------- Finally, the modules -------------------------
  1273. $(BUILD_ROOT)/modules.mk: $(BUILD_ROOT)/modules.awk
  1274. @echo re-making $(BUILD_ROOT)/modules.mk ...
  1275. @cd $(BUILD_ROOT); sh modules.sh
  1276. include $(BUILD_ROOT)/modules.mk