xref: /trunk/main/openssl/makefile.mk (revision 4c5b548f)
17871dc3eSAndrew Rist#**************************************************************
2b86e16e6SJim Jagielski#
37871dc3eSAndrew Rist#  Licensed to the Apache Software Foundation (ASF) under one
47871dc3eSAndrew Rist#  or more contributor license agreements.  See the NOTICE file
57871dc3eSAndrew Rist#  distributed with this work for additional information
67871dc3eSAndrew Rist#  regarding copyright ownership.  The ASF licenses this file
77871dc3eSAndrew Rist#  to you under the Apache License, Version 2.0 (the
87871dc3eSAndrew Rist#  "License"); you may not use this file except in compliance
97871dc3eSAndrew Rist#  with the License.  You may obtain a copy of the License at
10b86e16e6SJim Jagielski#
117871dc3eSAndrew Rist#    http://www.apache.org/licenses/LICENSE-2.0
12b86e16e6SJim Jagielski#
137871dc3eSAndrew Rist#  Unless required by applicable law or agreed to in writing,
147871dc3eSAndrew Rist#  software distributed under the License is distributed on an
157871dc3eSAndrew Rist#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
167871dc3eSAndrew Rist#  KIND, either express or implied.  See the License for the
177871dc3eSAndrew Rist#  specific language governing permissions and limitations
187871dc3eSAndrew Rist#  under the License.
19b86e16e6SJim Jagielski#
207871dc3eSAndrew Rist#**************************************************************
217871dc3eSAndrew Rist
227871dc3eSAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweirPRJ=.
25cdf0e10cSrcweir
26cdf0e10cSrcweirPRJNAME=openssl
27cdf0e10cSrcweirTARGET=openssl
28cdf0e10cSrcweir
29cdf0e10cSrcweir# --- Settings -----------------------------------------------------
30cdf0e10cSrcweir
31cdf0e10cSrcweir.INCLUDE :	settings.mk
32cdf0e10cSrcweir
33cdf0e10cSrcweir# --- Files --------------------------------------------------------
34cdf0e10cSrcweir
35cdf0e10cSrcweir.IF "$(SYSTEM_OPENSSL)" == "YES"
36cdf0e10cSrcweir@all:
37cdf0e10cSrcweir	@echo "Using system openssl...."
38cdf0e10cSrcweir.ENDIF
39cdf0e10cSrcweir
40cdf0e10cSrcweir
41*4c5b548fSDamjan JovanovicOPENSSL_NAME=openssl-3.0.13
42cdf0e10cSrcweir
43cdf0e10cSrcweirTARFILE_NAME=$(OPENSSL_NAME)
44*4c5b548fSDamjan JovanovicTARFILE_MD5=c15e53a62711002901d3515ac8b30b86
45cdf0e10cSrcweir
46cdf0e10cSrcweirCONFIGURE_DIR=.
47cdf0e10cSrcweirCONFIGURE_ACTION=config
48b86e16e6SJim JagielskiCONFIGURE_FLAGS=-I$(SYSBASE)$/usr$/include -L$(SYSBASE)$/usr$/lib shared
49cdf0e10cSrcweir
50cdf0e10cSrcweirBUILD_DIR=.
51a8693330StruckmanBUILD_ACTION=make CC='$(CC)' build_libs
52cdf0e10cSrcweir
53cdf0e10cSrcweirOUT2LIB = libssl.*
54cdf0e10cSrcweirOUT2LIB += libcrypto.*
55cdf0e10cSrcweirOUT2INC += include/openssl/*
56cdf0e10cSrcweir
57cdf0e10cSrcweirUNAME=$(shell uname)
58cdf0e10cSrcweir
59a8693330Struckman.IF "$(COM)"=="GCC" && "$(CCNUMVER)">="000400060000" || "$(OS)"=="WNT" && "$(NASM_PATH)"=="NO_NASM_HOME"
60a8693330Struckman  NO_ASM="no-asm"
61a8693330Struckman.ELSE
62a8693330Struckman  NO_ASM=
63a8693330Struckman.ENDIF
64a8693330Struckman
65cdf0e10cSrcweir.IF "$(OS)" == "LINUX" || "$(OS)" == "FREEBSD"
66*4c5b548fSDamjan Jovanovic	PATCH_FILES=opensslunx.patch
67cdf0e10cSrcweir	.IF "$(CPU)" == "I"
68cdf0e10cSrcweir		.IF "$(UNAME)" == "GNU/kFreeBSD"
69a8693330Struckman			CONFIGURE_ACTION=Configure debian-kfreebsd-i386 no-dso no-shared $(NO_ASM)
70a8693330Struckman		.ELIF "$(UNAME)" == "FreeBSD"
71a8693330Struckman			CONFIGURE_ACTION=Configure BSD-x86-elf no-dso no-shared $(NO_ASM)
72cdf0e10cSrcweir		.ELSE
73a8693330Struckman			CONFIGURE_ACTION=Configure linux-generic32 no-dso no-shared $(NO_ASM)
74cdf0e10cSrcweir		.ENDIF
75cdf0e10cSrcweir	.ELIF "$(BUILD64)" == "1"
76cdf0e10cSrcweir		.IF "$(UNAME)" == "GNU/kFreeBSD"
77a8693330Struckman			CONFIGURE_ACTION=Configure debian-kfreebsd-amd64 no-dso no-shared $(NO_ASM)
78a8693330Struckman		.ELIF "$(UNAME)" == "FreeBSD"
79a8693330Struckman			CONFIGURE_ACTION=Configure BSD-x86_64 no-dso no-shared $(NO_ASM)
80cdf0e10cSrcweir		.ELSE
81a8693330Struckman			CONFIGURE_ACTION=Configure linux-x86_64 no-dso no-shared $(NO_ASM)
82cdf0e10cSrcweir		.ENDIF
83cdf0e10cSrcweir	.ELSE
84a8693330Struckman		CONFIGURE_ACTION=Configure linux-generic32 no-dso no-shared $(NO_ASM)
85cdf0e10cSrcweir	.ENDIF
86cdf0e10cSrcweir	# if you build openssl as shared library you have to patch the Makefile.Shared "LD_LIBRARY_PATH=$$LD_LIBRARY_PATH \"
87cdf0e10cSrcweir	#BUILD_ACTION=make 'SHARED_LDFLAGS=-Wl,--version-script=./lib$$(SHLIBDIRS)_OOo_0_9_8e.map'
88cdf0e10cSrcweir.ENDIF
89cdf0e10cSrcweir
90cdf0e10cSrcweir.IF "$(OS)" == "SOLARIS"
91cdf0e10cSrcweir	PATCH_FILES=opensslsol.patch
92cdf0e10cSrcweir	#BUILD_ACTION=make 'SHARED_LDFLAGS=-G -dy -z text -M./lib$$$$$$$$(SHLIBDIRS)_OOo_0_9_8e.map'
93cdf0e10cSrcweir
94cdf0e10cSrcweir	# Use BUILD64 when 1 to select new specific 64bit Configurations if necessary
95cdf0e10cSrcweir
96cdf0e10cSrcweir	.IF "$(CPUNAME)" == "INTEL" # Solaris INTEL
97cdf0e10cSrcweir		.IF "$(CPU)" == "X"
98cdf0e10cSrcweir		   CONFIGURE_ACTION=Configure solaris64-x86_64-cc
99cdf0e10cSrcweir		.ELSE
100cdf0e10cSrcweir		   CONFIGURE_ACTION=Configure solaris-x86-cc
101cdf0e10cSrcweir		.ENDIF
102cdf0e10cSrcweir	.ELIF "$(CPU)" == "U" # Solaris SPARC
103cdf0e10cSrcweir	   CONFIGURE_ACTION=Configure solaris64-sparcv9-cc
104cdf0e10cSrcweir	.ELSE
105cdf0e10cSrcweir	   CONFIGURE_ACTION=Configure solaris-sparcv9-cc
106cdf0e10cSrcweir	.ENDIF
107cdf0e10cSrcweir.ENDIF
108cdf0e10cSrcweir
10989dcc3feSJim Jagielski.IF "$(OS)" == "MACOSX"
11089dcc3feSJim Jagielski	CONFIGURE_ACTION=Configure darwin64-x86_64-cc no-dso no-shared $(NO_ASM)
11189dcc3feSJim Jagielski.ENDIF
11289dcc3feSJim Jagielski
113cdf0e10cSrcweir.IF "$(OS)" == "WNT"
114cdf0e10cSrcweir
115cdf0e10cSrcweir.IF "$(COM)"=="GCC"
116*4c5b548fSDamjan Jovanovic
117cdf0e10cSrcweirPATCH_FILES=opensslmingw.patch
118cdf0e10cSrcweir.IF "$(USE_MINGW)" == "cygwin"
119cdf0e10cSrcweirCONFIGURE_ACTION=$(PERL) configure
120b86e16e6SJim JagielskiCONFIGURE_FLAGS=mingw shared
121cdf0e10cSrcweirINSTALL_ACTION=mv libcrypto.a libcrypto_static.a && mv libcrypto.dll.a libcrypto.a && mv libssl.a libssl_static.a && mv libssl.dll.a libssl.a
122cdf0e10cSrcweirOUT2LIB = libcrypto_static.*
123cdf0e10cSrcweirOUT2LIB += libssl_static.*
124cdf0e10cSrcweirOUT2LIB += libcrypto.*
125cdf0e10cSrcweirOUT2LIB += libssl.*
126cdf0e10cSrcweirOUT2BIN = ssleay32.dll
127cdf0e10cSrcweirOUT2BIN += libeay32.dll
128*4c5b548fSDamjan Jovanovic.ELSE # "$(USE_MINGW)" == "cygwin"
129cdf0e10cSrcweirCONFIGURE_ACTION=
130cdf0e10cSrcweirBUILD_ACTION=cmd /c "ms\mingw32"
131cdf0e10cSrcweirOUT2LIB = out/libcrypto_static.*
132cdf0e10cSrcweirOUT2LIB += out/libssl_static.*
133cdf0e10cSrcweirOUT2LIB += out/libcrypto.*
134cdf0e10cSrcweirOUT2LIB += out/libssl.*
135cdf0e10cSrcweirOUT2BIN = out/ssleay32.dll
136cdf0e10cSrcweirOUT2BIN += out/libeay32.dll
137*4c5b548fSDamjan Jovanovic.ENDIF # "$(USE_MINGW)" == "cygwin"
138cdf0e10cSrcweir
139*4c5b548fSDamjan Jovanovic.ELSE # "$(COM)"=="GCC"
140cdf0e10cSrcweir
141*4c5b548fSDamjan Jovanovic	PATCH_FILES=openssl.patch
142cdf0e10cSrcweir
143*4c5b548fSDamjan Jovanovic	# Extract Strawberry Perl and use CONFIGURE_ACTION to insert it, and NASM which it needs, into the PATH.
144*4c5b548fSDamjan Jovanovic	# Also define:
145*4c5b548fSDamjan Jovanovic	# - certain constants absent in the old MSVC we use (INT64_MAX, INT64_MIN, UINT64_MAX).
146*4c5b548fSDamjan Jovanovic	# - the minimum Windows version to support (_WIN32_WINDOWS=0x0400 for Windows 95, _WIN32_WINNT=0x0400 for Windows NT 4.0).
147*4c5b548fSDamjan Jovanovic	# - OPENSSL_NO_ASYNC=1 to stop using async functions that require old Windows versions.
148*4c5b548fSDamjan Jovanovic	STRAWBERRY_PERL_DIR=$(shell cygpath -u $(SOLARSRC)/openssl/$(INPATH)/misc/build/strawberry-perl)
149*4c5b548fSDamjan Jovanovic	.IF "$(NASM_PATH)"=="NASM_IN_PATH"
150*4c5b548fSDamjan Jovanovic		CONFIGURE_PATH=$(STRAWBERRY_PERL_DIR)/perl/bin:$(PATH)
151*4c5b548fSDamjan Jovanovic	.ELSE
152*4c5b548fSDamjan Jovanovic		NASM_PATH_NIX=$(shell cygpath -u $(NASM_PATH))
153*4c5b548fSDamjan Jovanovic		CONFIGURE_PATH=$(STRAWBERRY_PERL_DIR)/perl/bin:$(NASM_PATH_NIX):$(PATH)
154cdf0e10cSrcweir	.ENDIF
155*4c5b548fSDamjan Jovanovic	CONFIGURE_ACTION=\
156*4c5b548fSDamjan Jovanovic		if test -d "$(STRAWBERRY_PERL_DIR)"; \
157*4c5b548fSDamjan Jovanovic		then echo Found Strawberry Perl; \
158*4c5b548fSDamjan Jovanovic		else mkdir "$(STRAWBERRY_PERL_DIR)" && unzip -d $(STRAWBERRY_PERL_DIR) $(SOLARSRC)/../ext_sources/93fdfe261588bc82ab3a0bd4f5945b60-strawberry-perl-5.32.1.1-32bit-portable.zip ; \
159*4c5b548fSDamjan Jovanovic		fi && \
160*4c5b548fSDamjan Jovanovic		PATH="$(CONFIGURE_PATH)" \
161*4c5b548fSDamjan Jovanovic		PERL= \
162*4c5b548fSDamjan Jovanovic		CPPFLAGS="$(SOLARINC) \
163*4c5b548fSDamjan Jovanovic			-DOPENSSL_NO_ASYNC=1 \
164*4c5b548fSDamjan Jovanovic			-DWINVER=0x0400 \
165*4c5b548fSDamjan Jovanovic			-D_WIN32_WINNT=0x0400 \
166*4c5b548fSDamjan Jovanovic			-D_WIN32_WINDOWS=0x0400 \
167*4c5b548fSDamjan Jovanovic			-DINT64_MAX=9223372036854775807i64 \
168*4c5b548fSDamjan Jovanovic			-DINT64_MIN=(-9223372036854775807i64-1) \
169*4c5b548fSDamjan Jovanovic			-DUINT64_MAX=0xffffffffffffffffui64" \
170*4c5b548fSDamjan Jovanovic		RCFLAGS="$(SOLARINC)" \
171*4c5b548fSDamjan Jovanovic		perl configure $(NO_ASM)
172*4c5b548fSDamjan Jovanovic	.IF "$(CPUNAME)"=="INTEL"
173*4c5b548fSDamjan Jovanovic		CONFIGURE_FLAGS=VC-WIN32
174*4c5b548fSDamjan Jovanovic	.ELIF "$(CPUNAME)"=="X86_64"
175*4c5b548fSDamjan Jovanovic		CONFIGURE_FLAGS=VC-WIN64A
176*4c5b548fSDamjan Jovanovic	.ENDIF
177*4c5b548fSDamjan Jovanovic	BUILD_ACTION=LIB="$(ILIB)" nmake
178*4c5b548fSDamjan Jovanovic
179*4c5b548fSDamjan Jovanovic	OUT2BIN = libcrypto-3.dll
180*4c5b548fSDamjan Jovanovic	OUT2BIN += libssl-3.dll
181*4c5b548fSDamjan Jovanovic	OUT2INC = include$/openssl$/*
182*4c5b548fSDamjan Jovanovic
183*4c5b548fSDamjan Jovanovic.ENDIF # "$(COM)"=="GCC"
184*4c5b548fSDamjan Jovanovic
185*4c5b548fSDamjan Jovanovic.ENDIF # "$(OS)" == "WNT"
186cdf0e10cSrcweir
187cdf0e10cSrcweir
188cdf0e10cSrcweir# --- Targets ------------------------------------------------------
189cdf0e10cSrcweir
190cdf0e10cSrcweir.INCLUDE : set_ext.mk
191cdf0e10cSrcweir.INCLUDE : target.mk
192cdf0e10cSrcweir.INCLUDE : tg_ext.mk
193cdf0e10cSrcweir
194