blob: 8e43d5c2dac43e30832bf4f9e27f68c271eaca93 [file] [log] [blame]
#################################################################################
# #
# Windows MinGW TPM2 Makefile OpenSSL 1.1.1 32-bit #
# Written by Ken Goldman #
# IBM Thomas J. Watson Research Center #
# #
# (c) Copyright IBM Corporation 2015 - 2019 #
# #
# All rights reserved. #
# #
# Redistribution and use in source and binary forms, with or without #
# modification, are permitted provided that the following conditions are #
# met: #
# #
# Redistributions of source code must retain the above copyright notice, #
# this list of conditions and the following disclaimer. #
# #
# Redistributions in binary form must reproduce the above copyright #
# notice, this list of conditions and the following disclaimer in the #
# documentation and/or other materials provided with the distribution. #
# #
# Neither the names of the IBM Corporation nor the names of its #
# contributors may be used to endorse or promote products derived from #
# this software without specific prior written permission. #
# #
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS #
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT #
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR #
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT #
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, #
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT #
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, #
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY #
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT #
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE #
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #
# #
#################################################################################
# Windows OpenSSL 1.1.1 32-bit with mingw
# Please contribute a solution for OpenSSL 64-bit (Shining Light),
# which does not include the mingw .a files.
# For this to work, copy the file .../openssl/bin/libcrypto-1.1.dll to
# libcrypto.dll. Please contribute a solution that does not require
# this step.
# C compiler
CC = "c:/program files/mingw/bin/gcc.exe"
# compile - common flags for TSS library and applications
CCFLAGS += \
-DTPM_WINDOWS \
-I. \
-I"c:/program files/MinGW/include" \
-I"c:/program files/openssl/include" \
# compile - for TSS library
CCLFLAGS += \
-DTPM_TPM20
# compile - for applications
CCAFLAGS += \
-DTPM_TPM20
# link - common flags flags TSS library and applications
LNFLAGS += \
-D_MT \
-DTPM_WINDOWS \
-I.
# link - for TSS library
LNLFLAGS +=
# link - for applications, TSS path, TSS and OpenSSl libraries
LNAFLAGS +=
LNLIBS = "c:/program files/openssl/lib/mingw/libcrypto.a" \
"c:/program files/MinGW/lib/libws2_32.a"
# shared library
LIBTSS=libibmtss.dll
# executable extension
EXE=.exe
#
ALL =
# default TSS library
TSS_OBJS = tssfile.o \
tsscryptoh.o \
tsscrypto.o \
tssprintcmd.o
# common to all builds
include makefile-common
include makefile-common20
#
# Start Windows TBSI
#
# mingw libraries are apparently no longer compatible with Windows
# Kits for TBS. Contributions are welcome. Until then, use the
# Visual Studio solution for the hardware TPM.
#TSS_OBJS += tsstbsi.o
#CCFLAGS += -DTPM_WINDOWS_TBSI
#CCFLAGS += -D_WIN32_WINNT=0x0600
# Windows 10
#CCFLAGS += -DTPM_WINDOWS_TBSI_WIN8
#CCFLAGS += -I"c:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared"
#LNLIBS += "c:/Program Files (x86)/Windows Kits/10/Lib/10.0.17763.0/um/x64/tbs.lib"
# Windows 7
#CCFLAGS += -DTPM_WINDOWS_TBSI_WIN7
#LNLIBS += c:/progra~1/Micros~2/Windows/v7.1/lib/Tbs.lib
#
# End Windows TBSI
#
# default build target
all: $(ALL)
# TSS shared library source
tss.o: $(TSS_HEADERS) tss.c
$(CC) $(CCFLAGS) $(CCLFLAGS) tss.c
tssproperties.o: $(TSS_HEADERS) tssproperties.c
$(CC) $(CCFLAGS) $(CCLFLAGS) tssproperties.c
tssauth.o: $(TSS_HEADERS) tssauth.c
$(CC) $(CCFLAGS) $(CCLFLAGS) tssauth.c
tssmarshal.o: $(TSS_HEADERS) tssmarshal.c
$(CC) $(CCFLAGS) $(CCLFLAGS) tssmarshal.c
tsscryptoh.o: $(TSS_HEADERS) tsscryptoh.c
$(CC) $(CCFLAGS) $(CCLFLAGS) tsscryptoh.c
tsscrypto.o: $(TSS_HEADERS) tsscrypto.c
$(CC) $(CCFLAGS) $(CCLFLAGS) tsscrypto.c
tssutils.o: $(TSS_HEADERS) tssutils.c
$(CC) $(CCFLAGS) $(CCLFLAGS) tssutils.c
tssfile.o: $(TSS_HEADERS) tssfile.c
$(CC) $(CCFLAGS) $(CCLFLAGS) tssfile.c
tsssocket.o: $(TSS_HEADERS) tsssocket.c
$(CC) $(CCFLAGS) $(CCLFLAGS) tsssocket.c
tssdev.o: $(TSS_HEADERS) tssdev.c
$(CC) $(CCFLAGS) $(CCLFLAGS) tssdev.c
tsstransmit.o: $(TSS_HEADERS) tsstransmit.c
$(CC) $(CCFLAGS) $(CCLFLAGS) tsstransmit.c
tssresponsecode.o: $(TSS_HEADERS) tssresponsecode.c
$(CC) $(CCFLAGS) $(CCLFLAGS) tssresponsecode.c
tssccattributes.o: $(TSS_HEADERS) tssccattributes.c
$(CC) $(CCFLAGS) $(CCLFLAGS) tssccattributes.c
tssprint.o: $(TSS_HEADERS) tssprint.c
$(CC) $(CCFLAGS) $(CCLFLAGS) tssprint.c
Unmarshal.o: $(TSS_HEADERS) Unmarshal.c
$(CC) $(CCFLAGS) $(CCLFLAGS) Unmarshal.c
Commands.o: $(TSS_HEADERS) Commands.c
$(CC) $(CCFLAGS) $(CCLFLAGS) Commands.c
CommandAttributeData.o: $(TSS_HEADERS) CommandAttributeData.c
$(CC) $(CCFLAGS) $(CCLFLAGS) CommandAttributeData.c
ntc2lib.o: $(TSS_HEADERS) ntc2lib.c
$(CC) $(CCFLAGS) $(CCLFLAGS) ntc2lib.c
tssntc.o: $(TSS_HEADERS) tssntc.c
$(CC) $(CCFLAGS) $(CCLFLAGS) tssntc.c
# TPM 2.0
tss20.o: $(TSS_HEADERS) tss20.c
$(CC) $(CCFLAGS) $(CCLFLAGS) tss20.c
tssauth20.o: $(TSS_HEADERS) tssauth20.c
$(CC) $(CCFLAGS) $(CCLFLAGS) tssauth20.c
# TSS shared library build
$(LIBTSS): $(TSS_OBJS)
$(CC) $(LNFLAGS) $(LNLFLAGS) -shared -o $(LIBTSS) $(TSS_OBJS) \
-Wl,--out-implib,libibmtss.a $(LNLIBS)
.PHONY: clean
.PRECIOUS: %.o
clean:
rm -f *.o \
$(LIBTSS) \
$(ALL)
create.exe: create.o objecttemplates.o cryptoutils.o $(LIBTSS)
$(CC) $(LNFLAGS) -L. -libmtss $< -o $@ applink.o objecttemplates.o cryptoutils.o $(LNLIBS) $(LIBTSS)
createloaded.exe: createloaded.o objecttemplates.o cryptoutils.o $(LIBTSS)
$(CC) $(LNFLAGS) -L. -libmtss $< -o $@ applink.o objecttemplates.o cryptoutils.o $(LNLIBS) $(LIBTSS)
createprimary.exe: createprimary.o objecttemplates.o cryptoutils.o $(LIBTSS)
$(CC) $(LNFLAGS) -L. -libmtss $< -o $@ applink.o objecttemplates.o cryptoutils.o $(LNLIBS) $(LIBTSS)
eventextend.exe: eventextend.o eventlib.o cryptoutils.o $(LIBTSS)
$(CC) $(LNFLAGS) -L. -libmtss $< -o $@ applink.o eventlib.o cryptoutils.o $(LNLIBS) $(LIBTSS)
imaextend.exe: imaextend.o imalib.o cryptoutils.o $(LIBTSS)
$(CC) $(LNFLAGS) -L. -libmtss $< -o $@ applink.o imalib.o cryptoutils.o $(LNLIBS) $(LIBTSS)
createek.exe: createek.o ekutils.o cryptoutils.o $(LIBTSS)
$(CC) $(LNFLAGS) -L. -libmtss $< -o $@ applink.o ekutils.o cryptoutils.o $(LNLIBS) $(LIBTSS)
certifyx509.exe: certifyx509.o ekutils.o cryptoutils.o $(LIBTSS)
$(CC) $(LNFLAGS) -L. -libmtss $< -o $@ applink.o ekutils.o cryptoutils.o $(LNLIBS) $(LIBTSS)
createekcert.exe: createekcert.o ekutils.o cryptoutils.o $(LIBTSS)
$(CC) $(LNFLAGS) -L. -libmtss $< -o $@ applink.o ekutils.o cryptoutils.o $(LNLIBS) $(LIBTSS)
importpem.exe: importpem.o objecttemplates.o ekutils.o cryptoutils.o $(LIBTSS)
$(CC) $(LNFLAGS) -L. -libmtss $< -o $@ applink.o objecttemplates.o ekutils.o cryptoutils.o $(LNLIBS) $(LIBTSS)
loadexternal.exe: loadexternal.o cryptoutils.o ekutils.o $(LIBTSS)
$(CC) $(LNFLAGS) -L. -libmtss $< -o $@ applink.o cryptoutils.o ekutils.o $(LNLIBS) $(LIBTSS)
nvread.exe: nvread.o ekutils.o cryptoutils.o $(LIBTSS)
$(CC) $(LNFLAGS) -L. -libmtss $< -o $@ applink.o ekutils.o cryptoutils.o $(LNLIBS) $(LIBTSS)
nvwrite.exe: nvwrite.o ekutils.o cryptoutils.o $(LIBTSS)
$(CC) $(LNFLAGS) -L. -libmtss $< -o $@ applink.o ekutils.o cryptoutils.o $(LNLIBS) $(LIBTSS)
signapp.exe: signapp.o ekutils.o cryptoutils.o $(LIBTSS)
$(CC) $(LNFLAGS) -L. -libmtss $< -o $@ applink.o ekutils.o cryptoutils.o $(LNLIBS) $(LIBTSS)
writeapp.exe: writeapp.o ekutils.o cryptoutils.o $(LIBTSS)
$(CC) $(LNFLAGS) -L. -libmtss $< -o $@ applink.o ekutils.o cryptoutils.o $(LNLIBS) $(LIBTSS)
%.exe: %.o applink.o cryptoutils.o $(LIBTSS)
$(CC) $(LNFLAGS) -L. -libmtss $< -o $@ applink.o cryptoutils.o $(LNLIBS) $(LIBTSS)
%.o: %.c
$(CC) $(CCFLAGS) $(CCAFLAGS) $< -o $@