MinGW-TDMでcrypto++をビルドした

MinGW TDMcrypto++をビルドするのに、いくつか変更点がいるからパッチにしてみた。
support_mingw_tdm.patch


*** original/GNUmakefile	Mon Aug  9 14:22:42 2010
--- GNUmakefile	Sun Jun 10 15:55:35 2012
***************
*** 32,37 ****
--- 32,38 ----
  GAS217_OR_LATER = $(shell echo "" | $(AS) -v 2>&1 | $(EGREP) -c "GNU assembler version (2\.1[7-9]|2\.[2-9]|[3-9])")
  GAS219_OR_LATER = $(shell echo "" | $(AS) -v 2>&1 | $(EGREP) -c "GNU assembler version (2\.19|2\.[2-9]|[3-9])")
  ISMINGW = $(shell $(CXX) --version 2>&1 | $(EGREP) -c "mingw")
+ ISTDM = $(shell $(CXX) --version 2>&1 | $(EGREP) -c "tdm")
  ifneq ($(GCC42_OR_LATER),0)
  ifeq ($(UNAME),Darwin)
***************
*** 69,74 ****
--- 70,79 ----
  LDLIBS += -lws2_32
  endif
+ ifeq ($(ISTDM),1)
+ LDLIBS += -lws2_32
+ endif
+
  endif	# ISX86
  ifeq ($(UNAME),)	# for DJGPP, where uname doesn't exist

TDMサポートパッチ。
TDMのgccはバージョン情報に”mingw”ではなく”tdm-1″と出力するため、そっちもMinGWと同じ扱いになるように修正。
ついでに、Ubuntuのパッケージのファイル名と公式GNUmakefileの出力ファイル名が違っているから、Ubutnu側に合わせるパッチ
change_file_name.patch


*** original/GNUmakefile	Mon Aug  9 14:22:42 2010
--- GNUmakefile	Sun Jun 10 15:53:16 2012
***************
*** 137,178 ****
  	./cryptest.exe v
  clean:
! 	$(RM) cryptest.exe libcryptopp.a $(LIBOBJS) $(TESTOBJS) cryptopp.dll libcryptopp.dll.a libcryptopp.import.a cryptest.import.exe dlltest.exe $(DLLOBJS) $(LIBIMPORTOBJS) $(TESTIMPORTOBJS) $(DLLTESTOBJS)
  install:
! 	$(MKDIR) -p $(PREFIX)/include/cryptopp $(PREFIX)/lib $(PREFIX)/bin
! 	$(CP) *.h $(PREFIX)/include/cryptopp
  	$(CP) *.a $(PREFIX)/lib
  	$(CP) *.so $(PREFIX)/lib
  	$(CP) *.exe $(PREFIX)/bin
! libcryptopp.a: $(LIBOBJS)
  	$(AR) $(ARFLAGS) $@ $(LIBOBJS)
  	$(RANLIB) $@
! libcryptopp.so: $(LIBOBJS)
  	$(CXX) -shared -o $@ $(LIBOBJS)
! cryptest.exe: libcryptopp.a $(TESTOBJS)
! 	$(CXX) -o $@ $(CXXFLAGS) $(TESTOBJS) -L. -lcryptopp $(LDFLAGS) $(LDLIBS)
  nolib: $(OBJS)		# makes it faster to test changes
  	$(CXX) -o ct $(CXXFLAGS) $(OBJS) $(LDFLAGS) $(LDLIBS)
  dll: cryptest.import.exe dlltest.exe
! cryptopp.dll: $(DLLOBJS)
  	$(CXX) -shared -o $@ $(CXXFLAGS) $(DLLOBJS) $(LDFLAGS) $(LDLIBS) -Wl,--out-implib=libcryptopp.dll.a
! libcryptopp.import.a: $(LIBIMPORTOBJS)
  	$(AR) $(ARFLAGS) $@ $(LIBIMPORTOBJS)
  	$(RANLIB) $@
! cryptest.import.exe: cryptopp.dll libcryptopp.import.a $(TESTIMPORTOBJS)
! 	$(CXX) -o $@ $(CXXFLAGS) $(TESTIMPORTOBJS) -L. -lcryptopp.dll -lcryptopp.import $(LDFLAGS) $(LDLIBS)
! dlltest.exe: cryptopp.dll $(DLLTESTOBJS)
! 	$(CXX) -o $@ $(CXXFLAGS) $(DLLTESTOBJS) -L. -lcryptopp.dll $(LDFLAGS) $(LDLIBS)
  adhoc.cpp: adhoc.cpp.proto
  ifeq ($(wildcard adhoc.cpp),)
--- 137,178 ----
  	./cryptest.exe v
  clean:
! 	$(RM) cryptest.exe libcrypto++.a $(LIBOBJS) $(TESTOBJS) crypto++.dll libcrypto++.dll.a libcrypto++.import.a cryptest.import.exe dlltest.exe $(DLLOBJS) $(LIBIMPORTOBJS) $(TESTIMPORTOBJS) $(DLLTESTOBJS)
  install:
! 	$(MKDIR) -p $(PREFIX)/include/crypto++ $(PREFIX)/lib $(PREFIX)/bin
! 	$(CP) *.h $(PREFIX)/include/crypto++
  	$(CP) *.a $(PREFIX)/lib
  	$(CP) *.so $(PREFIX)/lib
  	$(CP) *.exe $(PREFIX)/bin
! libcrypto++.a: $(LIBOBJS)
  	$(AR) $(ARFLAGS) $@ $(LIBOBJS)
  	$(RANLIB) $@
! libcrypto++.so: $(LIBOBJS)
  	$(CXX) -shared -o $@ $(LIBOBJS)
! cryptest.exe: libcrypto++.a $(TESTOBJS)
! 	$(CXX) -o $@ $(CXXFLAGS) $(TESTOBJS) -L. -lcrypto++ $(LDFLAGS) $(LDLIBS)
  nolib: $(OBJS)		# makes it faster to test changes
  	$(CXX) -o ct $(CXXFLAGS) $(OBJS) $(LDFLAGS) $(LDLIBS)
  dll: cryptest.import.exe dlltest.exe
! crypto++.dll: $(DLLOBJS)
  	$(CXX) -shared -o $@ $(CXXFLAGS) $(DLLOBJS) $(LDFLAGS) $(LDLIBS) -Wl,--out-implib=libcryptopp.dll.a
! libcrypto++.import.a: $(LIBIMPORTOBJS)
  	$(AR) $(ARFLAGS) $@ $(LIBIMPORTOBJS)
  	$(RANLIB) $@
! cryptest.import.exe: crypto++.dll libcrypto++.import.a $(TESTIMPORTOBJS)
! 	$(CXX) -o $@ $(CXXFLAGS) $(TESTIMPORTOBJS) -L. -lcrypto++.dll -lcrypto++.import $(LDFLAGS) $(LDLIBS)
! dlltest.exe: crypto++.dll $(DLLTESTOBJS)
! 	$(CXX) -o $@ $(CXXFLAGS) $(DLLTESTOBJS) -L. -lcrypto++.dll $(LDFLAGS) $(LDLIBS)
  adhoc.cpp: adhoc.cpp.proto
  ifeq ($(wildcard adhoc.cpp),)

まぁこっちは好みの問題か。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です