components/intel-openmp/Makefile
author Rich Burridge <rich.burridge@oracle.com>
Tue, 02 May 2017 17:33:26 -0700
changeset 7964 d9801318ed3d
parent 7771 46912a8a1f29
permissions -rw-r--r--
25981468 Build ilmbase and openexr with the GNU compilers

#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
#

export PARFAIT_BUILD=no

BUILD_BITS = 64_and_32
COMPILER = gcc

include ../../make-rules/shared-macros.mk

# This and llvm must use the same version of gcc.
GCC_ROOT=/usr/gcc/5

COMPONENT_NAME        = libomp
COMPONENT_VERSION     = 20151009
COMPONENT_SRC         = $(COMPONENT_NAME)_$(COMPONENT_VERSION)
COMPONENT_ARCHIVE     = $(COMPONENT_SRC)_oss.tgz
COMPONENT_ARCHIVE_HASH= \
         sha256:d4254420d0081c6844eb05237bab5e731e669a429a9c1c87e2e0221ccf0de6ac
COMPONENT_ARCHIVE_URL = http://www.openmprtl.org/sites/default/files/$(COMPONENT_ARCHIVE)
COMPONENT_PROJECT_URL = http://www.openmprtl.org/
COMPONENT_BUGDB       = library/intel-openmp

TPNO = 27154

# Uses an ON header file with S12-only features.
ifeq ($(BUILD_TYPE), evaluation)
BUILD_32_and_64=
INSTALL_32_and_64=
PUBLISH_STAMP=
endif

# There are no tests for this version of the Intel OpenMP Library
# OpenMP tests will be integrated in ${WS_TOP}/components/bots.
BUILD_STYLE = cmake
CMAKE_BUILD_TYPE = Release
TEST_TARGET = $(NO_TESTS)
include $(WS_MAKE_RULES)/common.mk

export PATH=/usr/gnu/bin:$(GCC_ROOT)/bin:/usr/bin:/usr/perl5/5.22/bin

PATCH_LEVEL := 0
DEBUG_BUILD := 0

CFLAGS += -fno-omit-frame-pointer
CFLAGS.gcc.i386  += -march=opteron -mtune=opteron
CFLAGS.gcc.sparc += -mtune=ultrasparc3 -mcpu=ultrasparc3
CFLAGS.gcc.sparc += -mvis2 -mhard-float -mno-unaligned-doubles
CFLAGS.gcc.sparc += -mimpure-text

OMP_STATS = off
GFLAG =
DFLAG = -DNDEBUG

ifeq ($(DEBUG_BUILD),1)
  OMP_STATS = on
  GFLAG = -g3
  DFLAG =
endif

# Because of the weird way in which libiomp wants to build itself,
# we can't pass a -std=<N> on compile line. This is done internally
# by the cmake configuration files.
# The Userland default flags for GCC are broken.
CFLAGS += $(GFLAG) $(DFLAG) -Wall
CFLAGS += -fkeep-static-consts -fno-strict-aliasing

CXXFLAGS += $(GFLAG) $(DFLAG) -Wall
CXXFLAGS += -fkeep-static-consts -fno-strict-aliasing
CXXFLAGS += -Wl,-z -Wl,relax=comdat

CPPFLAGS += -D__EXTENSIONS__=1 -DKMP_GOMP_COMPAT=1
CPPFLAGS += -DKMP_TDATA_GTID=1
LDFLAGS += -z ignore -z relax=comdat

LIBIOMP_RUNPATH_32	= /usr/gcc/5/lib
LIBIOMP_RUNPATH_64	= /usr/gcc/5/lib/$(MACH64)
LIBIOMP_RUNPATH	= $(LIBIOMP_RUNPATH_$(BITS))

CFLAGS		+= -Wl,-R -Wl,$(LIBIOMP_RUNPATH)
CXXFLAGS	+= -Wl,-R -Wl,$(LIBIOMP_RUNPATH)
LDFLAGS		+= -R$(LIBIOMP_RUNPATH)
LD_OPTIONS	= -z ignore -z relax=comdat

CMAKE_OPTIONS += -DCMAKE_MAKE_PROGRAM=$(GMAKE)
CMAKE_OPTIONS += -DCMAKE_SHARED_LIBRARY_SUFFIX=".so.5"

CMAKE_OPTIONS += -DCMAKE_VERBOSE_MAKEFILE=1
CMAKE_OPTIONS += -DCOMPILER_SUPPORTS_QUAD_PRECISION=true
CMAKE_OPTIONS += -DDEBUG_BUILD=false
CMAKE_OPTIONS += -DLIBOMP_OMPT_SUPPORT=on

CMAKE_OPTIONS += -DLIBOMP_USE_ADAPTIVE_LOCKS=true
CMAKE_OPTIONS += -DLIBOMP_STATS=$(OMP_STATS)
CMAKE_OPTIONS += -DLIBOMP_FORTRAN_MODULES=true
CMAKE_OPTIONS += -DLIBOMP_VERSION=5
CMAKE_OPTIONS += -DLIBOMP_OMP_VERSION=41

COMPONENT_BUILD_ENV += LD_OPTIONS="$(LD_OPTIONS)"

# THe tarball extracts to 'libomp_oss' which doesn't match
# the name constructed in $(COMPONENT_SRC). We fix that here.
COMPONENT_POST_UNPACK_ACTION = \
      $(MV) libomp_oss $(COMPONENT_SRC)

REQUIRED_PACKAGES += developer/build/cmake
REQUIRED_PACKAGES += developer/build/pkg-config
REQUIRED_PACKAGES += developer/gcc/gcc-c++-5
REQUIRED_PACKAGES += developer/gcc/gcc-c-5
REQUIRED_PACKAGES += developer/gcc/gcc-common-5
REQUIRED_PACKAGES += developer/gnu-binutils
REQUIRED_PACKAGES += system/core-os
REQUIRED_PACKAGES += system/library/gcc/gcc-runtime-5
REQUIRED_PACKAGES += system/library/gcc/gcc-c++-runtime-5
REQUIRED_PACKAGES += system/library/gcc/gcc-c-runtime-5
REQUIRED_PACKAGES += system/library/math