################################################################################# # # # 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 $@