1 #
   2 # CDDL HEADER START
   3 #
   4 # The contents of this file are subject to the terms of the
   5 # Common Development and Distribution License (the "License").
   6 # You may not use this file except in compliance with the License.
   7 #
   8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9 # or http://www.opensolaris.org/os/licensing.
  10 # See the License for the specific language governing permissions
  11 # and limitations under the License.
  12 #
  13 # When distributing Covered Code, include this CDDL HEADER in each
  14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15 # If applicable, add the following below this CDDL HEADER, with the
  16 # fields enclosed by brackets "[]" replaced with your own identifying
  17 # information: Portions Copyright [yyyy] [name of copyright owner]
  18 #
  19 # CDDL HEADER END
  20 #
  21 # Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
  22 # Copyright (c) 2012-2013, Joyent, Inc.  All rights reserved.
  23 #
  24 
  25 VER = openssl-1.0.1d
  26 LIBVER =        1.0.0
  27 
  28 include ../Makefile.defs
  29 
  30 SHELL =         /bin/bash
  31 BUILD64 =       yes
  32 UNPACK_SENTINEL =       Configure
  33 AUTOCONF_OUT =  crypto/opensslconf.h
  34 
  35 MT_CPPFLAGS =   -D_REENTRANT
  36 SHARED_CFLAGS = -fPIC -DPIC
  37 SHARED_LDFLAGS =        -fPIC -shared
  38 
  39 PKCS11_SRCS = \
  40         hw_pk11_err.c \
  41         hw_pk11_err.h \
  42         hw_pk11_pub.c \
  43         hw_pk11_uri.c \
  44         hw_pk11_uri.h \
  45         hw_pk11.c \
  46         hw_pk11.h
  47 
  48 PKCS11_DST.32 = $(VER.32)/crypto/engine
  49 PKCS11_DST.64 = $(VER.64)/crypto/engine
  50 
  51 PKCS11.32 =     $(PKCS11_SRCS:%=$(PKCS11_DST.32)/%)
  52 PKCS11.64 =     $(PKCS11_SRCS:%=$(PKCS11_DST.64)/%)
  53 
  54 CHECK_LIBS = \
  55         $(VER.32)/libsunw_crypto.so.$(LIBVER) \
  56         $(VER.32)/libsunw_ssl.so.$(LIBVER) \
  57         $(VER.64)/libsunw_crypto.so.$(LIBVER) \
  58         $(VER.64)/libsunw_ssl.so.$(LIBVER)
  59 
  60 #
  61 # There are races between the building of assembly language sources and
  62 # the assembly of those files.  Disable parallel build.
  63 #
  64 PARALLEL =
  65 
  66 CPPFLAGS += \
  67         -DSOLARIS_OPENSSL \
  68         -DNO_WINDOWS_BRAINDEATH \
  69         -include openssl/sunw_prefix.h
  70 
  71 CFLAGS += \
  72         -O3 \
  73         -march=pentium \
  74         -Wall \
  75         -Werror \
  76         -DPK11_LIB_LOCATION=\\"/usr/lib/libpkcs11.so.1\\"
  77 
  78 CFLAGS.64 += \
  79         -O3 \
  80         -Wall \
  81         -Werror \
  82         -DPK11_LIB_LOCATION=\\"/usr/lib/64/libpkcs11.so.1\\"
  83 
  84 LIBS += -lsocket -lnsl
  85 
  86 ifeq ($(STRAP),strap)
  87         LDFLAGS +=      $(SYSLIBDIRS:%=-R$(DESTDIR)/%)
  88         LDFLAGS.64 +=   $(SYSLIBDIRS:%=-R$(DESTDIR)/%/64)
  89 endif
  90 
  91 PATCHES =       Patches/*
  92 
  93 AUTOCONF_ENV =
  94 AUTOCONF_OPTS += \
  95         --openssldir=/etc/openssl \
  96         --install_prefix=$(DESTDIR) \
  97         no-ec \
  98         no-ecdh \
  99         no-ecdsa \
 100         no-rc3 \
 101         no-rc5 \
 102         no-mdc2 \
 103         no-idea \
 104         no-hw_4758_cca \
 105         no-hw_aep \
 106         no-hw_atalla \
 107         no-hw_chil \
 108         no-hw_gmp \
 109         no-hw_ncipher \
 110         no-hw_nuron \
 111         no-hw_padlock \
 112         no-hw_sureware \
 113         no-hw_ubsec \
 114         no-hw_cswift \
 115         enable-md2 \
 116         threads \
 117         shared
 118 
 119 AUTOCONF_OPTS.32 += \
 120         smartos-x86-gcc
 121 
 122 AUTOCONF_OPTS.64 += \
 123         smartos64-x86_64-gcc
 124 
 125 $(PKCS11_DST.32)/%: engine_pkcs11/%
 126         cp $< $@
 127 
 128 $(PKCS11_DST.64)/%: engine_pkcs11/%
 129         cp $< $@
 130 
 131 $(VER.32)/%: %
 132         cp $< $@
 133 
 134 $(VER.64)/%: %
 135         cp $< $@
 136 
 137 $(VER.32)/configure: $(VER.32)/Configure Makefile $(PKCS11.32) \
 138     $(VER.32)/sunw_prefix.h
 139         sed -e 's#@@CC@@#$(GCC)#g' \
 140             -e 's#@@CPPFLAGS@@#$(CPPFLAGS)#g' \
 141             -e 's#@@CFLAGS@@#$(CFLAGS)#g' \
 142             -e 's#@@MT_CPPFLAGS@@#$(MT_CPPFLAGS)#g' \
 143             -e 's#@@LDFLAGS@@#$(LDFLAGS)#g' \
 144             -e 's#@@LIBS@@#$(LIBS)#g' \
 145             -e 's#@@SHARED_CFLAGS@@#$(SHARED_CFLAGS)#g' \
 146             -e 's#@@SHARED_LDFLAGS@@#$(SHARED_LDFLAGS)#g' < $< > $@
 147         chmod +x $@
 148 
 149 $(VER.64)/configure: $(VER.64)/Configure Makefile $(PKCS11.64) \
 150     $(VER.64)/sunw_prefix.h
 151         sed -e 's#@@CC@@#$(GCC.64)#g' \
 152             -e 's#@@CPPFLAGS@@#$(CPPFLAGS)#g' \
 153             -e 's#@@CFLAGS@@#$(CFLAGS.64)#g' \
 154             -e 's#@@MT_CPPFLAGS@@#$(MT_CPPFLAGS)#g' \
 155             -e 's#@@LDFLAGS@@#$(LDFLAGS.64)#g' \
 156             -e 's#@@LIBS@@#$(LIBS)#g' \
 157             -e 's#@@SHARED_CFLAGS@@#$(SHARED_CFLAGS)#g' \
 158             -e 's#@@SHARED_LDFLAGS@@#$(SHARED_LDFLAGS)#g' < $< > $@
 159         chmod +x $@
 160 
 161 all: all_autoconf
 162 
 163 check: $(CHECK_LIBS:%=%.check)
 164 
 165 %.check: %
 166         syms="$$(/usr/bin/nm -ph $< | \
 167             awk '$$2 == T && $$3 != _init && $$3 != _fini { print $$3 }' | \
 168             grep -v ^sunw_)"; \
 169         if [[ -n "$$syms" ]]; then \
 170                 echo "Unprefixed symbols found in $<: $$syms"; \
 171                 exit 1; \
 172         else \
 173                 touch $@; \
 174         fi
 175 
 176 $(CHECK_LIBS): all
 177 
 178 install_32: all check
 179         DESTDIR=$(DESTDIR) VERDIR=$(VER.32) LIBVER=$(LIBVER) \
 180             ksh93 ./install-sfw
 181 
 182 install_64: all check
 183         DESTDIR=$(DESTDIR) VERDIR=$(VER.64) LIBVER=$(LIBVER) \
 184             ksh93 ./install-sfw-64
 185 
 186 install: install_32 install_64
 187 
 188 include ../Makefile.targ