1*25c28e83SPiotr Jasiukajtis# 2*25c28e83SPiotr Jasiukajtis# This file and its contents are supplied under the terms of the 3*25c28e83SPiotr Jasiukajtis# Common Development and Distribution License ("CDDL"), version 1.0. 4*25c28e83SPiotr Jasiukajtis# You may only use this file in accordance with the terms of version 5*25c28e83SPiotr Jasiukajtis# 1.0 of the CDDL. 6*25c28e83SPiotr Jasiukajtis# 7*25c28e83SPiotr Jasiukajtis# A full copy of the text of the CDDL should have accompanied this 8*25c28e83SPiotr Jasiukajtis# source. A copy of the CDDL is also available via the Internet at 9*25c28e83SPiotr Jasiukajtis# http://www.illumos.org/license/CDDL. 10*25c28e83SPiotr Jasiukajtis# 11*25c28e83SPiotr Jasiukajtis 12*25c28e83SPiotr Jasiukajtis# 13*25c28e83SPiotr Jasiukajtis# Copyright 2011 Nexenta Systems, Inc. All rights reserved. 14*25c28e83SPiotr Jasiukajtis# 15*25c28e83SPiotr Jasiukajtis 16*25c28e83SPiotr JasiukajtisLIBMDIR = $(SRC)/lib/libm 17*25c28e83SPiotr Jasiukajtis 18*25c28e83SPiotr JasiukajtisLIBMSRC = $(LIBMDIR)/common 19*25c28e83SPiotr Jasiukajtis 20*25c28e83SPiotr JasiukajtisCPP_CMD = $(CC) -E -Xs 21*25c28e83SPiotr Jasiukajtis 22*25c28e83SPiotr JasiukajtisASSUFFIX_sparc = S 23*25c28e83SPiotr JasiukajtisASSUFFIX_i386 = s 24*25c28e83SPiotr JasiukajtisASSUFFIX = $(ASSUFFIX_$(MACH)) 25*25c28e83SPiotr Jasiukajtis 26*25c28e83SPiotr Jasiukajtis# C99MODE of neither enabled nor disabled is "no_lib", whereby we expect 27*25c28e83SPiotr Jasiukajtis# C99-the-language, but don't modify the behaviour of library routines. This 28*25c28e83SPiotr Jasiukajtis# is VERY IMPORTANT, as -xc99=%all, for instance, would link us with 29*25c28e83SPiotr Jasiukajtis# values-xpg6, which would introduce an __xpg6 to our object with the C99 30*25c28e83SPiotr Jasiukajtis# flags set, causing us to default C99 libm behaviour on, breaking 31*25c28e83SPiotr Jasiukajtis# compatibility. 32*25c28e83SPiotr JasiukajtisC99MODE = 33*25c28e83SPiotr Jasiukajtis 34*25c28e83SPiotr JasiukajtisM4FLAGS = -D__STDC__ -DELFOBJ -DPIC 35*25c28e83SPiotr Jasiukajtis 36*25c28e83SPiotr JasiukajtisLDBLDIR_sparc = Q 37*25c28e83SPiotr JasiukajtisLDBLDIR_i386 = LD 38*25c28e83SPiotr JasiukajtisLDBLDIR = $(LDBLDIR_$(MACH)) 39*25c28e83SPiotr Jasiukajtis 40*25c28e83SPiotr JasiukajtisLM_IL = $(LIBMDIR)/$(TARGET_ARCH)/src/locallibm.il 41*25c28e83SPiotr Jasiukajtis 42*25c28e83SPiotr JasiukajtisCFLAGS += $(C_PICFLAGS) -D__INLINE $(XSTRCONST) $(LM_IL) 43*25c28e83SPiotr JasiukajtisCFLAGS64 += $(C_PICFLAGS) -D__INLINE $(XSTRCONST) $(LM_IL) 44*25c28e83SPiotr Jasiukajtissparc_CFLAGS += -Wa,-xarch=v8plus 45*25c28e83SPiotr Jasiukajtis 46*25c28e83SPiotr JasiukajtisCPPFLAGS += -DELFOBJ \ 47*25c28e83SPiotr Jasiukajtis -DLIBM_MT_FEX_SYNC \ 48*25c28e83SPiotr Jasiukajtis -I$(LIBMSRC)/C \ 49*25c28e83SPiotr Jasiukajtis -I$(LIBMSRC)/$(LDBLDIR) -I$(LIBMDIR)/$(TARGET_ARCH)/src 50*25c28e83SPiotr Jasiukajtis 51*25c28e83SPiotr Jasiukajtis# GCC needs __C99FEATURES__ such that the implementations of isunordered, 52*25c28e83SPiotr Jasiukajtis# isgreaterequal, islessequal, etc, exist. This is basically equivalent to 53*25c28e83SPiotr Jasiukajtis# providing no -xc99 to Studio, in that it gets us the C99 language features, 54*25c28e83SPiotr Jasiukajtis# but not values-xpg6, the reason for which is outline with C99MODE. 55*25c28e83SPiotr JasiukajtisCFLAGS += -_gcc=-D__C99FEATURES__ 56*25c28e83SPiotr JasiukajtisCFLAGS64 += -_gcc=-D__C99FEATURES__ 57*25c28e83SPiotr Jasiukajtis 58*25c28e83SPiotr Jasiukajtis# libm depends on integer overflow characteristics 59*25c28e83SPiotr JasiukajtisCFLAGS += -_gcc=-fno-strict-overflow 60*25c28e83SPiotr JasiukajtisCFLAGS64 += -_gcc=-fno-strict-overflow 61*25c28e83SPiotr Jasiukajtis 62*25c28e83SPiotr Jasiukajtis$(DYNLIB) := LDLIBS += -lc 63*25c28e83SPiotr Jasiukajtis 64*25c28e83SPiotr Jasiukajtis$(LINTLIB) := SRCS = $(LIBMSRC)/$(LINTSRC) 65*25c28e83SPiotr Jasiukajtis 66*25c28e83SPiotr JasiukajtisCLEANFILES += pics/*.s pics/*.S 67*25c28e83SPiotr Jasiukajtis 68*25c28e83SPiotr JasiukajtisFPDEF_amd64 = -DARCH_amd64 69*25c28e83SPiotr JasiukajtisFPDEF_sparc = -DCG89 -DARCH_v8plus -DFPADD_TRAPS_INCOMPLETE_ON_NAN 70*25c28e83SPiotr JasiukajtisFPDEF_sparcv9 = -DARCH_v9 -DFPADD_TRAPS_INCOMPLETE_ON_NAN 71*25c28e83SPiotr JasiukajtisFPDEF = $(FPDEF_$(TARGET_ARCH)) 72*25c28e83SPiotr Jasiukajtis 73*25c28e83SPiotr JasiukajtisASFLAGS = -P -D_ASM $(FPDEF) 74*25c28e83SPiotr Jasiukajtis 75*25c28e83SPiotr JasiukajtisXARCH_sparc = v8plus 76*25c28e83SPiotr JasiukajtisXARCH_sparcv9 = v9 77*25c28e83SPiotr JasiukajtisXARCH_i386 = f80387 78*25c28e83SPiotr JasiukajtisXARCH_amd64 = amd64 79*25c28e83SPiotr JasiukajtisXARCH = $(XARCH_$(TARGET_ARCH)) 80*25c28e83SPiotr Jasiukajtis 81*25c28e83SPiotr JasiukajtisASOPT_sparc = -xarch=$(XARCH) $(AS_PICFLAGS) 82*25c28e83SPiotr JasiukajtisASOPT_sparcv9 = -xarch=$(XARCH) $(AS_PICFLAGS) 83*25c28e83SPiotr JasiukajtisASOPT_i386 = 84*25c28e83SPiotr JasiukajtisASOPT_amd64 = -xarch=$(XARCH) $(AS_PICFLAGS) 85*25c28e83SPiotr JasiukajtisASOPT = $(ASOPT_$(TARGET_ARCH)) 86*25c28e83SPiotr Jasiukajtis 87*25c28e83SPiotr JasiukajtisASFLAGS += $(ASOPT) 88*25c28e83SPiotr Jasiukajtis 89*25c28e83SPiotr JasiukajtisCPPFLAGS_sparc = -DFPADD_TRAPS_INCOMPLETE_ON_NAN \ 90*25c28e83SPiotr Jasiukajtis -DFDTOS_TRAPS_INCOMPLETE_IN_FNS_MODE 91*25c28e83SPiotr Jasiukajtis 92*25c28e83SPiotr JasiukajtisCPPFLAGS += $(CPPFLAGS_$(MACH)) 93*25c28e83SPiotr JasiukajtisASFLAGS += $(CPPFLAGS) 94