diff options
36 files changed, 318 insertions, 443 deletions
diff --git a/config/Make.common.rules b/config/Make.common.rules index 49f8b807624..b6c81422f70 100644 --- a/config/Make.common.rules +++ b/config/Make.common.rules @@ -69,6 +69,10 @@ ifeq ($(UNAME),Linux) endif endif +ifneq ($(findstring MINGW,$(UNAME)),) + UNAME := MINGW +endif + ifeq ($(LP64),yes) libsubdir := lib$(lp64suffix) binsubdir := bin$(lp64binsuffix) @@ -77,25 +81,6 @@ else binsubdir := bin endif - -ifeq ($(MinGW), yes) - ifneq ($(ICE_HOME), ) - tmp = $(shell $(top_srcdir)/../cpp/config/cygpath-unix.sh "$(ICE_HOME)") - ifeq ($(shell test -d $(tmp) && echo 0), 0) - ICE_HOME := $(shell $(top_srcdir)/../cpp/config/cygpath-unix.sh "$(ICE_HOME)") - ICE_HOME_WIN := $(shell $(top_srcdir)/../cpp/config/cygpath-win.sh "$(ICE_HOME)") - endif - endif - ifneq ($(prefix),) - prefix := $(shell $(top_srcdir)/../cpp/config/cygpath-unix.sh "$(prefix)") - endif - ifeq ($(THIRDPARTY_HOME),) - THIRDPARTY_HOME = $(PROGRAMFILES)\ZeroC\Ice-$(VERSION)-ThirdParty - endif - THIRDPARTY_HOME := $(shell $(top_srcdir)/../cpp/config/cygpath-unix.sh "$(THIRDPARTY_HOME)") - THIRDPARTY_HOME_WIN = $(shell $(top_srcdir)/../cpp/config/cygpath-win.sh $(THIRDPARTY_HOME)) -endif - # # The following variables might also be defined: # @@ -293,6 +278,9 @@ ifneq ($(ice_dir), /usr) export LD_LIBRARY_PATH := $(ice_lib_dir):$(LD_LIBRARY_PATH) endif + ifneq ($(findstring MINGW,$(UNAME)),) + set PATH := $(ice_lib_dir);$(PATH) + endif endif diff --git a/cpp/INSTALL.MINGW b/cpp/INSTALL.MINGW index e383fa72112..34628974275 100644 --- a/cpp/INSTALL.MINGW +++ b/cpp/INSTALL.MINGW @@ -8,10 +8,8 @@ instructions for building and testing the distribution. http://www.zeroc.com/download.html -MinGW is only supported for building the Ice extension for Ruby. - -MinGW is not supported for general application development in this -release. +MinGW is only supported for building the Ice extension for Ruby. It is +not supported for general application development. ====================================================================== @@ -22,35 +20,26 @@ Requirements Windows version --------------- -Ice for MinGW is only supported in Windows XP and Windows 7. +Ice for MinGW is only supported on Windows XP and Windows 7. -MinGW Setup ------------- +MinGW version +------------- -The only supported MinGW version is the one that is included in the -Ruby Development Kit, which you can download here: +The only supported MinGW version is the one included in the Ruby +Development Kit 4.5.2, which you can download here: http://rubyinstaller.org/downloads/ You must download the file DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe, which is a self-extracting archive. -To build Ice with MinGW, you also need to install Cygwin. The Cygwin -installer is available at: - - http://www.cygwin.com/install.html -When installing Cygwin, make sure you select "make" in the package -list. You do not need to install the MinGW packages from Cygwin. - -Ruby Setup ----------- +Ruby version +------------ You must install Ruby 1.9.3 using the Windows installer available -at RubyInstaller: - - http://rubyinstaller.org/downloads/ +at http://rubyinstaller.org/downloads The default installation directory is C:\Ruby193 @@ -91,16 +80,16 @@ Compilation and Testing Using your favorite Zip tool, unzip the Ice source archive anywhere you like. -Open a Cygwin command prompt and change the working directory to the +Open a Windows command prompt and change the working directory to the location of the extracted source archive. For example: -$ cd ~/Ice-@ver@/cpp +> cd C:\Ice-@ver@\cpp -Update your PATH to include MinGW from the Ruby Development Kit. For -example, if you installed the kit into C:\RubyDevKit-4.5.2, you would -update PATH as follows: +Run the devkitvars.bat batch file from the Ruby development kit to +setup your environment. For example, if you installed the development +kit in C:\RubyDevKit-4.5.2, run the following: -$ export PATH=/cygdrive/c/RubyDevKit-4.5.2/mingw/bin:$PATH +> C:\RubyDevKit-4.5.2\devkitvars.bat Edit config/Make.rules to establish your build configuration. The comments in the file provide more information. In particular, if @@ -109,21 +98,23 @@ set THIRDPARTY_HOME to the Ice third-party installation directory. Now you are ready to build Ice: -$ make +> make -This will build the Ice core, libraries, and tests. +This will build the C++ and Ruby slice translators, the Ice core, +IceSSL and C++ tests. Python is required to run the test suite: http://www.python.org/download -After a successful build, you can run the test suite. Open a Windows -(not Cygwin) command prompt and change the working directory to -Ice-@ver@: +After a successful build, you can run the test suite. + +First, add Ruby to your environment: + +> C:\Ruby193\bin\setrbvars.bat + +Next, run the test suite: -> set PATH=%PATH%;C:\Ruby193\bin -> cd C:\Ice-@ver@\cpp -> set CPP_COMPILER=MINGW > python allTests.py If everything worked out, you should see lots of "ok" messages. In @@ -134,6 +125,6 @@ case of a failure, the tests abort with "failed". Installation ====================================================================== -From a Cygwin command prompt, simply run "make install". This will +From the command prompt, simply run "make install". This will install Ice in the directory specified by the "prefix" variable in config/Make.rules. diff --git a/cpp/Makefile b/cpp/Makefile index 67d4542b71c..df6e23ef3fe 100644 --- a/cpp/Makefile +++ b/cpp/Makefile @@ -13,7 +13,7 @@ include $(top_srcdir)/config/Make.rules SUBDIRS = config src include test -ifneq ($(MinGW), yes) +ifeq ($(shell uname | grep MINGW),) SUBDIRS := $(SUBDIRS) demo endif diff --git a/cpp/allTests.py b/cpp/allTests.py index 2228c1915eb..faaae708b40 100755 --- a/cpp/allTests.py +++ b/cpp/allTests.py @@ -67,10 +67,10 @@ tests = [ ("Ice/defaultServant", ["core"]), ("Ice/defaultValue", ["core"]), ("Ice/invoke", ["core"]), - ("Ice/plugin", ["core"]), + ("Ice/plugin", ["core", "nomingw"]), ("Ice/hash", ["once"]), ("Ice/admin", ["core"]), - ("Ice/metrics", ["core", "nossl", "noipv6", "nocompress"]), + ("Ice/metrics", ["core", "nossl", "noipv6", "nocompress", "nomingw"]), ("Ice/enums", ["once"]), ("IceSSL/configuration", ["once", "novalgrind"]), # valgrind doesn't work well with openssl ("IceBox/configuration", ["core", "noipv6", "novc90", "nomingw", "nomx"]), @@ -79,7 +79,7 @@ tests = [ ("Freeze/complex", ["once", "novc90", "nomingw"]), ("Freeze/evictor", ["core", "novc90", "nomingw"]), ("Freeze/fileLock", ["core", "novc90", "nomingw"]), - ("IceStorm/single", ["service", "novc90", "noappverifier", "nomingw"]), # This test doesn't work with appverifier is sensitive to timeouts. + ("IceStorm/single", ["service", "novc90", "noappverifier", "nomingw"]), # This test doesn't work with appverifier is sensitive to timeouts. ("IceStorm/federation", ["service", "novc90", "nomingw"]), ("IceStorm/federation2", ["service", "novc90", "nomingw"]), ("IceStorm/stress", ["service", "stress", "novc90", "noappverifier", "nomingw"]), # This test is very slow with appverifier. diff --git a/cpp/config/Make.rules b/cpp/config/Make.rules index f558971f81a..f34015f431b 100644 --- a/cpp/config/Make.rules +++ b/cpp/config/Make.rules @@ -121,13 +121,13 @@ USE_READLINE ?= no # and IceGrid, set QT_HOME to the Qt installation directory. # # -#QT_HOME = /usr/local/Trolltech/Qt-4.5.3 -#QT_HOME = /Library/Frameworks +#QT_HOME = /usr/local/Trolltech/Qt-4.5.3 +#QT_HOME = /Library/Frameworks # # Generate position independent code unless GENPIC is set to no # -#GENPIC ?= yes +#GENPIC ?= yes # # If building with MinGW and if third party libraries are not @@ -135,7 +135,7 @@ USE_READLINE ?= no # your environment variables then change the following setting to # reflect the installation location. # -#THIRDPARTY_HOME ?= C:\Program Files\ZeroC\Ice-$(VERSION)-ThirdParty +#THIRDPARTY_HOME ?= "C:\Program Files\ZeroC\Ice-$(VERSION)-ThirdParty" # # Default Mutex protocol: one of PrioNone or PrioInherit. @@ -157,11 +157,7 @@ endif # ice_language = cpp ifneq ($(shell test "$(USE_BIN_DIST)" != "yes" -a -d $(top_srcdir)/../$(ice_language) && echo 0),0) - ifeq ($(MinGW), yes) - slice_translator = slice2cpp.exe - else - slice_translator = slice2cpp - endif + slice_translator = slice2cpp ice_require_cpp = 1 endif @@ -188,11 +184,7 @@ endif # # Platform specific definitions # -ifeq ($(MinGW), yes) - include $(top_srcdir)/config/Make.rules.MinGW -else - include $(top_srcdir)/config/Make.rules.$(UNAME) -endif +include $(top_srcdir)/config/Make.rules.$(UNAME) install_includedir := $(prefix)/include install_docdir := $(prefix)/doc @@ -210,75 +202,73 @@ ifeq ($(DEFAULT_MUTEX_PROTOCOL), PrioInherit) ICEUTIL_FLAGS = -DICE_PRIO_INHERIT endif -ifeq ($(MinGW), yes) - OPENSSL_LIBS = -leay32_mingw -lssleay32_mingw - BZIP2_LIBS = -lbzip2_mingw - MCPP_LIBS = -lmcpp - slicedir_win = $(shell $(top_srcdir)/../cpp/config/cygpath-win.sh $(slicedir)) - ICECPPFLAGS = -I"$(slicedir_win)" +OPENSSL_FLAGS += $(if $(OPENSSL_HOME),-I$(OPENSSL_HOME)/include) +ifeq ($(OPENSSL_LIBS),) + OPENSSL_LIBS = $(if $(OPENSSL_HOME),-L$(OPENSSL_HOME)/$(libsubdir)) -lssl -lcrypto +endif +OPENSSL_RPATH_LINK = $(if $(OPENSSL_HOME),$(call rpathlink,$(OPENSSL_HOME)/$(libsubdir))) + +BZIP2_FLAGS = $(if $(BZIP2_HOME),-I$(BZIP2_HOME)/include) +ifeq ($(BZIP2_LIBS),) + BZIP2_LIBS = $(if $(BZIP2_HOME),-L$(BZIP2_HOME)/$(libsubdir)) -lbz2 +endif +BZIP2_RPATH_LINK = $(if $(BZIP2_HOME),$(call rpathlink,$(BZIP2_HOME)/$(libsubdir))) + +ifeq ($(ICONV_LIBS),) + ICONV_LIBS = $(if $(ICONV_HOME),-L$(ICONV_HOME)/$(libsubdir)) $(ICONV_LIB) +endif + +ifneq ($(DB_HOME),) + DB_FLAGS = -I$(DB_HOME)/include + ifeq ($(DB_LIBS),) + DB_LIBS = -L$(DB_HOME)/$(libsubdir) -ldb_cxx$(CPP11LIBSUFFIX) + endif + DB_RPATH_LINK = $(call rpathlink,$(DB_HOME)/$(libsubdir)) else - OPENSSL_FLAGS += $(if $(OPENSSL_HOME),-I$(OPENSSL_HOME)/include) - OPENSSL_LIBS = $(if $(OPENSSL_HOME),-L$(OPENSSL_HOME)/$(libsubdir)) -lssl -lcrypto - OPENSSL_RPATH_LINK = $(if $(OPENSSL_HOME),$(call rpathlink,$(OPENSSL_HOME)/$(libsubdir))) - BZIP2_FLAGS = $(if $(BZIP2_HOME),-I$(BZIP2_HOME)/include) - BZIP2_LIBS = $(if $(BZIP2_HOME),-L$(BZIP2_HOME)/$(libsubdir)) -lbz2 - BZIP2_RPATH_LINK = $(if $(BZIP2_HOME),$(call rpathlink,$(BZIP2_HOME)/$(libsubdir))) - ICONV_LIBS = $(if $(ICONV_HOME),-L$(ICONV_HOME)/$(libsubdir)) $(ICONV_LIB) - - ifneq ($(DB_HOME),) - DB_FLAGS = -I$(DB_HOME)/include - DB_LIBS = -L$(DB_HOME)/$(libsubdir) -ldb_cxx$(CPP11LIBSUFFIX) - DB_RPATH_LINK = $(call rpathlink,$(DB_HOME)/$(libsubdir)) - else - ifeq ($(shell if [ -d /usr/include/db53 -a -d /usr/$(libsubdir)/db53 ] ; then echo yes; fi), yes) - DB_FLAGS = -I/usr/include/db53 - DB_LIBS = -L/usr/$(libsubdir)/db53 -ldb_cxx$(CPP11LIBSUFFIX) - else - ifeq ($(shell if [ -d /usr/local/include/db53 -a -d /usr/local/$(libsubdir)/db53 ] ; then echo yes; fi), yes) - DB_FLAGS = -I/usr/local/include/db53 - DB_LIBS = -L/usr/local/$(libsubdir)/db53 -ldb_cxx$(CPP11LIBSUFFIX) - else - DB_LIBS = -ldb_cxx$(CPP11LIBSUFFIX) - endif - endif - endif - EXPAT_FLAGS = $(if $(EXPAT_HOME),-I$(EXPAT_HOME)/include) - EXPAT_LIBS = $(if $(EXPAT_HOME),-L$(EXPAT_HOME)/$(libsubdir)) -lexpat - EXPAT_RPATH_LINK = $(if $(EXPAT_HOME),$(call rpathlink,$(EXPAT_HOME)/$(libsubdir))) - MCPP_LIBS = $(if $(MCPP_HOME),-L$(MCPP_HOME)/$(libsubdir)) -lmcpp - MCPP_RPATH_LINK = $(if $(MCPP_HOME),$(call rpathlink,$(MCPP_HOME)/$(libsubdir))) - - ifeq ($(PLATFORM_HAS_READLINE),yes) - ifeq ($(USE_READLINE),yes) - READLINE_FLAGS = -DHAVE_READLINE $(if $(READLINE_HOME),-I$(READLINE_HOME)/include) - READLINE_LIBS = $(if $(READLINE_HOME),-L$(READLINE_HOME)/$(libsubdir)) -lreadline -lncurses - endif - endif - ICECPPFLAGS = -I$(slicedir) + ifeq ($(shell if [ -d /usr/include/db53 -a -d /usr/$(libsubdir)/db53 ] ; then echo yes; fi), yes) + DB_FLAGS = -I/usr/include/db53 + DB_LIBS = -L/usr/$(libsubdir)/db53 -ldb_cxx$(CPP11LIBSUFFIX) + else + ifeq ($(shell if [ -d /usr/local/include/db53 -a -d /usr/local/$(libsubdir)/db53 ] ; then echo yes; fi), yes) + DB_FLAGS = -I/usr/local/include/db53 + DB_LIBS = -L/usr/local/$(libsubdir)/db53 -ldb_cxx$(CPP11LIBSUFFIX) + else + DB_LIBS = -ldb_cxx$(CPP11LIBSUFFIX) + endif + endif +endif + +EXPAT_FLAGS = $(if $(EXPAT_HOME),-I$(EXPAT_HOME)/include) +ifeq ($(EXPAT_LIBS),) + EXPAT_LIBS = $(if $(EXPAT_HOME),-L$(EXPAT_HOME)/$(libsubdir)) -lexpat +endif +EXPAT_RPATH_LINK = $(if $(EXPAT_HOME),$(call rpathlink,$(EXPAT_HOME)/$(libsubdir))) + +ifeq ($(MCPP_LIBS),) + MCPP_LIBS = $(if $(MCPP_HOME),-L$(MCPP_HOME)/$(libsubdir)) -lmcpp +endif +MCPP_RPATH_LINK = $(if $(MCPP_HOME),$(call rpathlink,$(MCPP_HOME)/$(libsubdir))) + + +ifeq ($(PLATFORM_HAS_READLINE),yes) + ifeq ($(USE_READLINE),yes) + READLINE_FLAGS = -DHAVE_READLINE $(if $(READLINE_HOME),-I$(READLINE_HOME)/include) + READLINE_LIBS = $(if $(READLINE_HOME),-L$(READLINE_HOME)/$(libsubdir)) -lreadline -lncurses + endif endif +ICECPPFLAGS = -I$(slicedir) SLICE2CPPFLAGS = $(ICECPPFLAGS) ifeq ($(ice_dir), /usr) LDFLAGS = $(LDPLATFORMFLAGS) $(CXXFLAGS) else - ifeq ($(MinGW), yes) - includedir_win = $(shell $(top_srcdir)/../cpp/config/cygpath-win.sh $(includedir)) - CPPFLAGS += -I"$(includedir_win)" - ice_dir_win = $(shell $(top_srcdir)/../cpp/config/cygpath-win.sh $(ice_dir)) - ifdef ice_src_dist - LDFLAGS = $(LDPLATFORMFLAGS) $(CXXFLAGS) -L$(libdir) - else - LDFLAGS = $(LDPLATFORMFLAGS) $(CXXFLAGS) -L"$(ice_dir_win)\$(binsubdir)" - endif + CPPFLAGS += -I$(includedir) + ifdef ice_src_dist + LDFLAGS = $(LDPLATFORMFLAGS) $(CXXFLAGS) -L$(libdir) else - CPPFLAGS += -I$(includedir) - ifdef ice_src_dist - LDFLAGS = $(LDPLATFORMFLAGS) $(CXXFLAGS) -L$(libdir) - else - LDFLAGS = $(LDPLATFORMFLAGS) $(CXXFLAGS) -L$(ice_dir)/$(libsubdir) - endif + LDFLAGS = $(LDPLATFORMFLAGS) $(CXXFLAGS) -L$(ice_dir)/$(libsubdir) endif endif @@ -294,35 +284,26 @@ else BISONFLAGS := -dvt endif -ifneq ($(MinGW), yes) ifeq ($(mkshlib),) $(error You need to define mkshlib in Make.rules.$(UNAME)) endif -endif ifdef ice_src_dist - ifeq ($(MinGW), yes) - SLICEPARSERLIB = $(bindir)/$(SLICE_LIBNAME).dll - SLICE2CPP = $(bindir)/slice2cpp.exe - else - SLICEPARSERLIB = $(libdir)/$(call mklibfilename,Slice,$(VERSION)) - SLICE2CPP = $(bindir)/slice2cpp - SLICE2FREEZE = $(bindir)/slice2freeze - endif + SLICEPARSERLIB = $(libdir)/$(call mklibfilename,Slice,$(VERSION)) + SLICE2CPP = $(bindir)/slice2cpp + SLICE2FREEZE = $(bindir)/slice2freeze else - ifeq ($(MinGW), yes) - SLICEPARSERLIB = $(ice_dir)/$(binsubdir)/$(SLICE_LIBNAME).dll - SLICE2CPP = $(ice_dir)/$(binsubdir)/slice2cpp.exe - else - SLICEPARSERLIB = $(ice_dir)/$(libsubdir)/$(call mklibfilename,Slice,$(VERSION)) - SLICE2CPP = $(ice_dir)/$(binsubdir)/slice2cpp - SLICE2FREEZE = $(ice_dir)/$(binsubdir)/slice2freeze - endif + SLICEPARSERLIB = $(ice_dir)/$(libsubdir)/$(call mklibfilename,Slice,$(VERSION)) + SLICE2CPP = $(ice_dir)/$(binsubdir)/slice2cpp + SLICE2FREEZE = $(ice_dir)/$(binsubdir)/slice2freeze +endif + +ifeq ($(SLICE_LIBS),) + SLICE_LIBS = -lSlice $(BASELIBS) endif -ifeq ($(MinGW), yes) - CPPFLAGS := $(CPPFLAGS) -I"$(THIRDPARTY_HOME_WIN)\include" - LDFLAGS := $(LDFLAGS) -L"$(THIRDPARTY_HOME_WIN)\lib\mingw" -L"$(THIRDPARTY_HOME_WIN)\bin" -L$(libdir) -L$(bindir) +ifeq ($(ICESSL_LIBS),) + ICESSL_LIBS = -lIceSSL $(LIBS) endif EVERYTHING = all depend clean install diff --git a/cpp/config/Make.rules.MINGW b/cpp/config/Make.rules.MINGW index 1c6212db61c..29d9c3dba4e 100644 --- a/cpp/config/Make.rules.MINGW +++ b/cpp/config/Make.rules.MINGW @@ -12,20 +12,13 @@ # # -# build with CygWin MinGW? -# -#ifeq ($(CygWin), yes) -# CXX = i686-pc-mingw32-c++ -#endif - -# # Default compiler is c++ (aka g++). # ifeq ($(CXX),) CXX = c++ endif -CXXFLAGS = $(CXXARCHFLAGS) -fexceptions -mthreads -Wall -DWIN32_LEAN_AND_MEAN +CXXFLAGS = $(CXXARCHFLAGS) -fexceptions -mthreads -Wall -DWIN32_LEAN_AND_MEAN LDFLAGS = -Wl,-no-undefined ifeq ($(CXX), i686-pc-mingw32-c++) @@ -33,24 +26,56 @@ ifeq ($(CXX), i686-pc-mingw32-c++) endif ifeq ($(OPTIMIZE),yes) - CXXFLAGS += -O2 -DNDEBUG + CXXFLAGS += -O2 -DNDEBUG else - CXXFLAGS += -g -D_DEBUG - LIBSUFFIX = d + CXXFLAGS += -g -D_DEBUG + LIBSUFFIX = d endif -COMPSUFFIX = mingw_ +COMPSUFFIX = mingw_ + +mklibfilename = $(shell echo $(1) | tr A-Z a-z)$(COMPSUFFIX)$(SOVERSION).dll + +ifeq ($(STATICLIBS),yes) + mklibtargets = $(3) +else + mklibtargets = $(1) +endif # -# MinGW lib names +# Shared library linking command. We transform -lxxx parameters into +# -lxxxmingw_3.5.dll here to avoid having to fix all the Makefiles +# which need to link with the MinGW libraries. # -ICEUTIL_LIBNAME = iceutil$(COMPSUFFIX)$(SOVERSION)$(LIBSUFFIX) -SLICE_LIBNAME = slice$(COMPSUFFIX)$(SOVERSION)$(LIBSUFFIX) -ICE_LIBNAME = ice$(COMPSUFFIX)$(SOVERSION)$(LIBSUFFIX) -ICESSL_LIBNAME = icessl$(COMPSUFFIX)$(SOVERSION)$(LIBSUFFIX) +mkshlib = $(CXX) -shared $(LDFLAGS) -o $(1) $(3) \ + $(subst cpp/lib,cpp/bin, \ + $(subst -lIce,-lice$(COMPSUFFIX)$(SOVERSION), \ + $(subst -lIceUtil,-liceutil$(COMPSUFFIX)$(SOVERSION), \ + $(subst -lSlice,-lslice$(COMPSUFFIX)$(SOVERSION), \ + $(subst -lIceSSL,-licessl$(COMPSUFFIX)$(SOVERSION),$(4)))))) -BASELIBS = -l$(ICEUTIL_LIBNAME) -LIBS = -l$(ICE_LIBNAME) $(BASELIBS) -ICEUTIL_OS_LIBS = -lrpcrt4 -ladvapi32 -ICE_OS_LIBS = $(ICEUTIL_OS_LIBS) -lIphlpapi -lws2_32 +mklib = ar cr $(1) $(2) +libdir = $(top_srcdir)/bin +libsubdir = bin + +installlib = $(INSTALL) $(2)/$(3) $(1); \ + chmod a+rx $(1)/$(3) + +installprogram = $(INSTALL_PROGRAM) $(1) $(2); \ + chmod a+rx $(2)/$(notdir $(1).exe) + +CPPFLAGS := -I$(THIRDPARTY_HOME)/include $(CPPFLAGS) +LDPLATFORMFLAGS := -L$(THIRDPARTY_HOME)/bin $(LDFLAGS) + +OPENSSL_LIBS = -leay32_mingw -lssleay32_mingw -lws2_32 +MCPP_LIBS = -L$(THIRDPARTY_HOME)/lib/mingw -lmcpp +BZIP2_LIBS = -lbzip2_mingw + +BASELIBS = -liceutil$(COMPSUFFIX)$(SOVERSION) +LIBS = -lice$(COMPSUFFIX)$(SOVERSION) $(BASELIBS) +ICESSL_LIBS = -licessl$(COMPSUFFIX)$(SOVERSION) $(LIBS) +SLICE_LIBS = -lslice$(COMPSUFFIX)$(SOVERSION) $(BASELIBS) + +ICEUTIL_OS_LIBS = -lrpcrt4 -ladvapi32 +ICE_OS_LIBS = $(ICEUTIL_OS_LIBS) -lIphlpapi -lws2_32 diff --git a/cpp/include/Makefile b/cpp/include/Makefile index 5de48e060d4..89e1941c5f7 100644 --- a/cpp/include/Makefile +++ b/cpp/include/Makefile @@ -15,8 +15,8 @@ SUBDIRS = Ice \ IceSSL \ IceUtil \ Slice - -ifneq ($(MinGW), yes) + +ifeq ($(findstring MINGW,$(UNAME)),) SUBDIRS := $(SUBDIRS) \ Freeze \ Glacier2 \ diff --git a/cpp/src/Ice/ConnectionI.cpp b/cpp/src/Ice/ConnectionI.cpp index 947ede7fbed..b1638274089 100644 --- a/cpp/src/Ice/ConnectionI.cpp +++ b/cpp/src/Ice/ConnectionI.cpp @@ -1708,8 +1708,8 @@ Ice::ConnectionI::finish() // _sendStreams to not call finished on a message which is already done. // if(message->requestId > 0 && - (message->out && _requests.find(message->requestId) == _requests.end() || - message->outAsync && _asyncRequests.find(message->requestId) == _asyncRequests.end())) + ((message->out && _requests.find(message->requestId) == _requests.end()) || + (message->outAsync && _asyncRequests.find(message->requestId) == _asyncRequests.end()))) { if(message->sent(this, true)) { diff --git a/cpp/src/Ice/DynamicLibrary.cpp b/cpp/src/Ice/DynamicLibrary.cpp index ab724a9847a..4fa7f1499e2 100644 --- a/cpp/src/Ice/DynamicLibrary.cpp +++ b/cpp/src/Ice/DynamicLibrary.cpp @@ -142,7 +142,7 @@ IceInternal::DynamicLibrary::loadEntryPoint(const string& entryPoint, bool useIc lib += version; -# ifdef _DEBUG +# if defined(_DEBUG) && !defined(__MINGW32__) lib += 'd'; # endif diff --git a/cpp/src/Ice/Makefile b/cpp/src/Ice/Makefile index 70edf85aa0b..60aa1f604c9 100644 --- a/cpp/src/Ice/Makefile +++ b/cpp/src/Ice/Makefile @@ -9,17 +9,10 @@ top_srcdir = ../.. -include $(top_srcdir)/config/Make.rules.common - -ifeq ($(MinGW), yes) - DLLNAME = $(top_srcdir)/bin/ice$(COMPSUFFIX)$(SOVERSION)$(LIBSUFFIX).dll - TARGETS = $(DLLNAME) $(LIBNAME) -else - LIBFILENAME = $(call mklibfilename,Ice,$(VERSION)) - SONAME = $(call mksoname,Ice,$(SOVERSION)) - LIBNAME = $(call mklibname,Ice) - TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) -endif +LIBFILENAME = $(call mklibfilename,Ice,$(VERSION)) +SONAME = $(call mksoname,Ice,$(SOVERSION)) +LIBNAME = $(call mklibname,Ice) +TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) OBJS = Acceptor.o \ Application.o \ @@ -123,12 +116,11 @@ OBJS = Acceptor.o \ UdpTransceiver.o \ Version.o -ifneq ($(MinGW), yes) +ifeq ($(findstring MINGW,$(shell uname)),) OBJS := $(OBJS) \ SysLoggerI.o endif - SRCS = $(OBJS:.o=.cpp) \ DLLMain.cpp @@ -178,18 +170,18 @@ SDIR = $(slicedir)/Ice include $(top_srcdir)/config/Make.rules CPPFLAGS := -I.. $(CPPFLAGS) -DICE_API_EXPORTS $(BZIP2_FLAGS) +ifneq ($(COMPSUFFIX),) +CPPFLAGS := $(CPPFLAGS) -DCOMPSUFFIX=\"$(COMPSUFFIX)\" +endif SLICE2CPPFLAGS := --ice --include-dir Ice --dll-export ICE_API $(SLICE2CPPFLAGS) -ifeq ($(MinGW), yes) -CPPFLAGS := $(CPPFLAGS) -DCOMPSUFFIX=\"$(COMPSUFFIX)\" -LINKWITH := $(ICE_OS_LIBS) -l$(ICEUTIL_LIBNAME) $(BZIP2_LIBS) -$(DLLNAME): $(OBJS) - $(CXX) -shared $(LDFLAGS) -o $(DLLNAME) $(OBJS) $(LINKWITH) +LINKWITH := -lIceUtil $(BZIP2_LIBS) $(ICONV_LIBS) $(ICE_OS_LIBS) -install:: all - $(call installprogram,$(DLLNAME),$(install_bindir)) +ifeq ($(STATICLIBS),yes) +$(libdir)/$(LIBNAME): $(OBJS) + rm -f $@ + $(call mklib,$@,$(OBJS)) else -LINKWITH := -lIceUtil $(BZIP2_LIBS) $(ICONV_LIBS) $(ICE_OS_LIBS) $(libdir)/$(LIBFILENAME): $(OBJS) rm -f $@ $(call mkshlib,$@,$(SONAME),$(OBJS),$(LINKWITH)) @@ -201,9 +193,9 @@ $(libdir)/$(SONAME): $(libdir)/$(LIBFILENAME) $(libdir)/$(LIBNAME): $(libdir)/$(SONAME) rm -f $@ ln -s $(SONAME) $@ +endif install:: all $(call installlib,$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME)) -endif include .depend diff --git a/cpp/src/IceSSL/Makefile b/cpp/src/IceSSL/Makefile index ab2d6ca690b..0ceb0bfe450 100644 --- a/cpp/src/IceSSL/Makefile +++ b/cpp/src/IceSSL/Makefile @@ -12,15 +12,10 @@ top_srcdir = ../.. include $(top_srcdir)/config/Make.rules.common -ifeq ($(MinGW), yes) - DLLNAME = $(top_srcdir)/bin/icessl$(COMPSUFFIX)$(SOVERSION)$(LIBSUFFIX).dll - TARGETS = $(DLLNAME) $(LIBNAME) -else - LIBFILENAME = $(call mklibfilename,IceSSL,$(VERSION)) - SONAME = $(call mksoname,IceSSL,$(SOVERSION)) - LIBNAME = $(call mklibname,IceSSL) - TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) -endif +LIBFILENAME = $(call mklibfilename,IceSSL,$(VERSION)) +SONAME = $(call mksoname,IceSSL,$(SOVERSION)) +LIBNAME = $(call mklibname,IceSSL) +TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) OBJS = AcceptorI.o \ Certificate.o \ @@ -48,19 +43,13 @@ include $(top_srcdir)/config/Make.rules CPPFLAGS := -I.. $(CPPFLAGS) -DICE_SSL_API_EXPORTS $(OPENSSL_FLAGS) SLICE2CPPFLAGS := --ice --include-dir IceSSL --dll-export ICE_SSL_API $(SLICE2CPPFLAGS) -ifeq ($(MinGW), yes) - -LINKWITH := -lice$(COMPSUFFIX)$(SOVERSION)$(LIBSUFFIX) -liceutil$(COMPSUFFIX)$(SOVERSION)$(LIBSUFFIX) $(ICE_OS_LIBS) $(OPENSSL_LIBS) - -$(DLLNAME): $(OBJS) - $(CXX) -shared $(LDFLAGS) -o $(DLLNAME) $(OBJS) $(LINKWITH) - -install:: all - $(call installprogram,$(DLLNAME),$(install_bindir)) - -else LINKWITH := $(BZIP2_RPATH_LINK) -lIce -lIceUtil $(OPENSSL_LIBS) $(CXXLIBS) +ifeq ($(STATICLIBS),yes) +$(libdir)/$(LIBNAME): $(OBJS) + rm -f $@ + $(call mklib,$@,$(OBJS)) +else $(libdir)/$(LIBFILENAME): $(OBJS) rm -f $@ $(call mkshlib,$@,$(SONAME),$(OBJS),$(LINKWITH)) @@ -72,9 +61,9 @@ $(libdir)/$(SONAME): $(libdir)/$(LIBFILENAME) $(libdir)/$(LIBNAME): $(libdir)/$(SONAME) rm -f $@ ln -s $(SONAME) $@ +endif install:: all $(call installlib,$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME)) -endif include .depend diff --git a/cpp/src/IceUtil/Makefile b/cpp/src/IceUtil/Makefile index a3e19c0914f..ac76f2362c1 100644 --- a/cpp/src/IceUtil/Makefile +++ b/cpp/src/IceUtil/Makefile @@ -9,17 +9,10 @@ top_srcdir = ../.. -include $(top_srcdir)/config/Make.rules.common - -ifeq ($(MinGW), yes) - DLLNAME = $(top_srcdir)/bin/iceutil$(COMPSUFFIX)$(SOVERSION)$(LIBSUFFIX).dll - TARGETS = $(DLLNAME) $(LIBNAME) -else - LIBFILENAME = $(call mklibfilename,IceUtil,$(VERSION)) - SONAME = $(call mksoname,IceUtil,$(SOVERSION)) - LIBNAME = $(call mklibname,IceUtil) - TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) -endif +LIBFILENAME = $(call mklibfilename,IceUtil,$(VERSION)) +SONAME = $(call mksoname,IceUtil,$(SOVERSION)) +LIBNAME = $(call mklibname,IceUtil) +TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) OBJS = ArgVector.o \ Cond.o \ @@ -48,16 +41,8 @@ SRCS = $(OBJS:.o=.cpp) include $(top_srcdir)/config/Make.rules CPPFLAGS := $(CPPFLAGS) $(ICEUTIL_FLAGS) -DICE_UTIL_API_EXPORTS -I.. - LINKWITH := $(ICEUTIL_OS_LIBS) -ifeq ($(MinGW), yes) -$(DLLNAME): $(OBJS) - $(CXX) -shared $(LDFLAGS) -o $(DLLNAME) $(OBJS) $(LINKWITH) - -install:: all - $(call installprogram,$(DLLNAME),$(install_bindir)) -else ifeq ($(STATICLIBS),yes) $(libdir)/$(LIBNAME): $(OBJS) rm -f $@ @@ -75,9 +60,9 @@ $(libdir)/$(LIBNAME): $(libdir)/$(SONAME) rm -f $@ ln -s $(SONAME) $@ endif + install:: all $(call installlib,$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME)) -endif include .depend diff --git a/cpp/src/Makefile b/cpp/src/Makefile index 3c8cca006d0..610d72eeda3 100644 --- a/cpp/src/Makefile +++ b/cpp/src/Makefile @@ -11,16 +11,15 @@ top_srcdir = .. include $(top_srcdir)/config/Make.rules - -ifeq ($(MinGW), yes) - SUBDIRS = IceUtil \ +ifneq ($(findstring MINGW,$(UNAME)),) + SUBDIRS = IceUtil \ Slice \ slice2cpp \ slice2rb \ Ice \ IceSSL else - SUBDIRS = IceUtil \ + SUBDIRS = IceUtil \ Slice \ slice2cpp \ slice2cs \ diff --git a/cpp/src/Slice/Makefile b/cpp/src/Slice/Makefile index f07c97d1340..62121860458 100644 --- a/cpp/src/Slice/Makefile +++ b/cpp/src/Slice/Makefile @@ -11,15 +11,10 @@ top_srcdir = ../.. include $(top_srcdir)/config/Make.rules.common -ifeq ($(MinGW), yes) - DLLNAME = $(top_srcdir)/bin/slice$(COMPSUFFIX)$(SOVERSION)$(LIBSUFFIX).dll - TARGETS = $(DLLNAME) $(LIBNAME) -else - LIBFILENAME = $(call mklibfilename,Slice,$(VERSION)) - SONAME = $(call mksoname,Slice,$(SOVERSION)) - LIBNAME = $(call mklibname,Slice) - TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) -endif +LIBFILENAME = $(call mklibfilename,Slice,$(VERSION)) +SONAME = $(call mksoname,Slice,$(SOVERSION)) +LIBNAME = $(call mklibname,Slice) +TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) OBJS = Scanner.o \ ../Slice/Grammar.o \ @@ -46,15 +41,7 @@ include $(top_srcdir)/config/Make.rules CPPFLAGS := -I.. $(CPPFLAGS) -DSLICE_API_EXPORTS BISONFLAGS := --name-prefix "slice_" $(BISONFLAGS) -ifeq ($(MinGW), yes) -LINKWITH := -l$(ICEUTIL_LIBNAME) $(MCPP_LIBS) -$(DLLNAME): $(OBJS) - $(CXX) -shared $(LDFLAGS) -o $(DLLNAME) $(OBJS) $(LINKWITH) - -install:: all - $(call installprogram,$(DLLNAME),$(install_bindir)) -else -LINKWITH := -lIceUtil $(MCPP_LIBS) +LINKWITH := $(BASELIBS) $(MCPP_LIBS) ifeq ($(STATICLIBS),yes) $(libdir)/$(LIBNAME): $(OBJS) rm -f $@ @@ -71,7 +58,7 @@ $(libdir)/$(SONAME): $(libdir)/$(LIBFILENAME) $(libdir)/$(LIBNAME): $(libdir)/$(SONAME) rm -f $@ ln -s $(SONAME) $@ -endif + install:: all $(call installlib,$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME)) endif diff --git a/cpp/src/slice2confluence/Makefile b/cpp/src/slice2confluence/Makefile index ac690206e08..bf617791faa 100644 --- a/cpp/src/slice2confluence/Makefile +++ b/cpp/src/slice2confluence/Makefile @@ -25,7 +25,7 @@ CPPFLAGS := -I. $(CPPFLAGS) $(NAME): $(OBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(OBJS) -lSlice $(BASELIBS) $(MCPP_RPATH_LINK) + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(SLICE_LIBS) $(MCPP_RPATH_LINK) install:: all $(call installprogram,$(NAME),$(install_bindir)) diff --git a/cpp/src/slice2cpp/Makefile b/cpp/src/slice2cpp/Makefile index 167f35e7dc8..573f53d96d0 100644 --- a/cpp/src/slice2cpp/Makefile +++ b/cpp/src/slice2cpp/Makefile @@ -9,13 +9,7 @@ top_srcdir = ../.. -include $(top_srcdir)/config/Make.rules.common - -ifeq ($(MinGW), yes) - NAME = $(top_srcdir)/bin/slice2cpp.exe -else - NAME = $(top_srcdir)/bin/slice2cpp -endif +NAME = $(top_srcdir)/bin/slice2cpp TARGETS = $(NAME) @@ -28,15 +22,10 @@ include $(top_srcdir)/config/Make.rules CPPFLAGS := -I. $(CPPFLAGS) -ifeq ($(MinGW), yes) -$(NAME): $(OBJS) - rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(OBJS) -lslice$(COMPSUFFIX)$(SOVERSION)$(LIBSUFFIX) $(BASELIBS) $(MCPP_RPATH_LINK) -else $(NAME): $(OBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(OBJS) -lSlice $(BASELIBS) $(MCPP_RPATH_LINK) -endif + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(SLICE_LIBS) $(MCPP_RPATH_LINK) + install:: all $(call installprogram,$(NAME),$(install_bindir)) diff --git a/cpp/src/slice2cs/Makefile b/cpp/src/slice2cs/Makefile index 8a9cfd14b3f..594b421e61c 100644 --- a/cpp/src/slice2cs/Makefile +++ b/cpp/src/slice2cs/Makefile @@ -24,7 +24,7 @@ CPPFLAGS := -I. $(CPPFLAGS) $(NAME): $(OBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(OBJS) -lSlice $(BASELIBS) $(MCPP_RPATH_LINK) + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(SLICE_LIBS) $(MCPP_RPATH_LINK) install:: all $(call installprogram,$(NAME),$(install_bindir)) diff --git a/cpp/src/slice2freeze/Makefile b/cpp/src/slice2freeze/Makefile index c692a294270..38750f627e0 100644 --- a/cpp/src/slice2freeze/Makefile +++ b/cpp/src/slice2freeze/Makefile @@ -23,7 +23,7 @@ CPPFLAGS := -I. $(CPPFLAGS) $(NAME): $(OBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(OBJS) -lSlice $(BASELIBS) $(MCPP_RPATH_LINK) + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(SLICE_LIBS) $(MCPP_RPATH_LINK) install:: all $(call installprogram,$(NAME),$(install_bindir)) diff --git a/cpp/src/slice2freezej/Makefile b/cpp/src/slice2freezej/Makefile index afe12524b0e..a65bda333a8 100644 --- a/cpp/src/slice2freezej/Makefile +++ b/cpp/src/slice2freezej/Makefile @@ -23,7 +23,7 @@ CPPFLAGS := -I. $(CPPFLAGS) $(NAME): $(OBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(OBJS) -lSlice $(BASELIBS) $(MCPP_RPATH_LINK) + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(SLICE_LIBS) $(MCPP_RPATH_LINK) install:: all $(call installprogram,$(NAME),$(install_bindir)) diff --git a/cpp/src/slice2html/Makefile b/cpp/src/slice2html/Makefile index 40f75120396..2caeaa9a23e 100644 --- a/cpp/src/slice2html/Makefile +++ b/cpp/src/slice2html/Makefile @@ -24,7 +24,7 @@ CPPFLAGS := -I. $(CPPFLAGS) $(NAME): $(OBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(OBJS) -lSlice $(BASELIBS) $(MCPP_RPATH_LINK) + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(SLICE_LIBS) $(MCPP_RPATH_LINK) install:: all $(call installprogram,$(NAME),$(install_bindir)) diff --git a/cpp/src/slice2java/Makefile b/cpp/src/slice2java/Makefile index b834a9d94df..c39eb6c9375 100644 --- a/cpp/src/slice2java/Makefile +++ b/cpp/src/slice2java/Makefile @@ -24,7 +24,7 @@ CPPFLAGS := -I. $(CPPFLAGS) $(NAME): $(OBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(OBJS) -lSlice $(BASELIBS) $(MCPP_RPATH_LINK) + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(SLICE_LIBS) $(MCPP_RPATH_LINK) install:: all $(call installprogram,$(NAME),$(install_bindir)) diff --git a/cpp/src/slice2php/Makefile b/cpp/src/slice2php/Makefile index 34418b68ee5..0610db0ffc6 100644 --- a/cpp/src/slice2php/Makefile +++ b/cpp/src/slice2php/Makefile @@ -23,7 +23,7 @@ CPPFLAGS := -I. $(CPPFLAGS) $(NAME): $(OBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(OBJS) -lSlice $(BASELIBS) $(MCPP_RPATH_LINK) + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(SLICE_LIBS) $(MCPP_RPATH_LINK) install:: all $(call installprogram,$(NAME),$(install_bindir)) diff --git a/cpp/src/slice2py/Makefile b/cpp/src/slice2py/Makefile index 12472ff7104..1a549ecbdd1 100644 --- a/cpp/src/slice2py/Makefile +++ b/cpp/src/slice2py/Makefile @@ -23,7 +23,7 @@ CPPFLAGS := -I. $(CPPFLAGS) $(NAME): $(OBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(OBJS) -lSlice $(BASELIBS) $(MCPP_RPATH_LINK) + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(SLICE_LIBS) $(MCPP_RPATH_LINK) install:: all $(call installprogram,$(NAME),$(install_bindir)) diff --git a/cpp/src/slice2rb/Makefile b/cpp/src/slice2rb/Makefile index 1e4df68e074..f3cd62653a3 100644 --- a/cpp/src/slice2rb/Makefile +++ b/cpp/src/slice2rb/Makefile @@ -9,13 +9,7 @@ top_srcdir = ../.. -include $(top_srcdir)/config/Make.rules.common - -ifeq ($(MinGW), yes) - NAME = $(top_srcdir)/bin/slice2rb.exe -else - NAME = $(top_srcdir)/bin/slice2rb -endif +NAME = $(top_srcdir)/bin/slice2rb TARGETS = $(NAME) @@ -27,15 +21,9 @@ include $(top_srcdir)/config/Make.rules CPPFLAGS := -I. $(CPPFLAGS) -ifeq ($(MinGW), yes) -$(NAME): $(OBJS) - rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(OBJS) -lslice$(COMPSUFFIX)$(SOVERSION)$(LIBSUFFIX) $(BASELIBS) $(MCPP_RPATH_LINK) -else $(NAME): $(OBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(OBJS) -lSlice $(BASELIBS) $(MCPP_RPATH_LINK) -endif + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(SLICE_LIBS) $(MCPP_RPATH_LINK) install:: all $(call installprogram,$(NAME),$(install_bindir)) diff --git a/cpp/test/Glacier2/ssl/Makefile b/cpp/test/Glacier2/ssl/Makefile index 5e2de9ca1b9..8960d1c114b 100644 --- a/cpp/test/Glacier2/ssl/Makefile +++ b/cpp/test/Glacier2/ssl/Makefile @@ -31,6 +31,6 @@ $(CLIENT): $(OBJS) $(COBJS) $(SERVER): $(OBJS) $(SOBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(SOBJS) $(LIBS) -lGlacier2 $(OPENSSL_RPATH_LINK) -lIceSSL + $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(SOBJS) $(ICESSL_LIBS) -lGlacier2 $(OPENSSL_RPATH_LINK) include .depend diff --git a/cpp/test/Ice/info/Makefile b/cpp/test/Ice/info/Makefile index e6d9f6435a9..b0c6690517c 100644 --- a/cpp/test/Ice/info/Makefile +++ b/cpp/test/Ice/info/Makefile @@ -31,18 +31,14 @@ SLICE_SRCS = Test.ice include $(top_srcdir)/config/Make.rules -ifneq ($(MinGW), yes) - ICESSL_LIBNAME = IceSSL -endif - CPPFLAGS := -I. -I../../include $(CPPFLAGS) $(CLIENT): $(COBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(COBJS) $(OPENSSL_RPATH_LINK) $(LIBS) -l$(ICESSL_LIBNAME) + $(CXX) $(LDFLAGS) -o $@ $(COBJS) $(OPENSSL_RPATH_LINK) $(ICESSL_LIBS) $(SERVER): $(SOBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(SOBJS) $(LIBS) -l$(ICESSL_LIBNAME) + $(CXX) $(LDFLAGS) -o $@ $(SOBJS) $(ICESSL_LIBS) include .depend diff --git a/cpp/test/Ice/plugin/Makefile b/cpp/test/Ice/plugin/Makefile index ab9ffbdee24..74086c42da4 100644 --- a/cpp/test/Ice/plugin/Makefile +++ b/cpp/test/Ice/plugin/Makefile @@ -10,10 +10,10 @@ top_srcdir = ../../.. PLUGINLIBFILENAME = $(call mklibfilename,TestPlugin,$(VERSION)) -PLUGINSONAME = $(call mksoname,TestPlugin,$(SOVERSION)) -PLUGINLIBNAME = $(call mklibname,TestPlugin) -CLIENT = client -PLUGINDIR = plugins +PLUGINSONAME = $(call mksoname,TestPlugin,$(SOVERSION)) +PLUGINLIBNAME = $(call mklibname,TestPlugin) +CLIENT = client +PLUGINDIR = plugins TARGETS = $(CLIENT) $(call mklibtargets,$(PLUGINDIR)/$(PLUGINLIBFILENAME),$(PLUGINDIR)/$(PLUGINSONAME),$(PLUGINDIR)/$(PLUGINLIBNAME)) diff --git a/cpp/test/IceGrid/session/Makefile b/cpp/test/IceGrid/session/Makefile index 781dab9b783..81cca997401 100644 --- a/cpp/test/IceGrid/session/Makefile +++ b/cpp/test/IceGrid/session/Makefile @@ -43,7 +43,7 @@ $(VERIFIER): $(VOBJS) $(SERVER): $(SOBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(SOBJS) -lGlacier2 -lIceSSL $(LIBS) $(OPENSSL_RPATH_LINK) + $(CXX) $(LDFLAGS) -o $@ $(SOBJS) -lGlacier2 $(ICESSL_LIBS) $(OPENSSL_RPATH_LINK) clean:: -rm -rf db/node db/registry db/node-1 db/replica-* diff --git a/cpp/test/IceSSL/configuration/Makefile b/cpp/test/IceSSL/configuration/Makefile index 776f8219eea..177b4887fb3 100644 --- a/cpp/test/IceSSL/configuration/Makefile +++ b/cpp/test/IceSSL/configuration/Makefile @@ -31,18 +31,14 @@ GENPIC = no include $(top_srcdir)/config/Make.rules -ifneq ($(MinGW), yes) -ICESSL_LIBNAME = IceSSL -endif - CPPFLAGS := -I. -I../../include $(CPPFLAGS) $(CLIENT): $(COBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(COBJS) $(LIBS) $(OPENSSL_RPATH_LINK) -l$(ICESSL_LIBNAME) + $(CXX) $(LDFLAGS) -o $@ $(COBJS) $(OPENSSL_RPATH_LINK) $(ICESSL_LIBS) $(SERVER): $(SOBJS) rm -f $@ - $(CXX) $(LDFLAGS) -o $@ $(SOBJS) $(LIBS) $(OPENSSL_RPATH_LINK) -l$(ICESSL_LIBNAME) + $(CXX) $(LDFLAGS) -o $@ $(SOBJS) $(OPENSSL_RPATH_LINK) $(ICESSL_LIBS) include .depend diff --git a/cpp/test/Makefile b/cpp/test/Makefile index 403c998684b..571e860e31d 100644 --- a/cpp/test/Makefile +++ b/cpp/test/Makefile @@ -15,15 +15,15 @@ SUBDIRS = IceUtil \ Slice \ Ice \ IceSSL - -ifneq ($(MinGW), yes) + +ifeq ($(findstring MINGW,$(UNAME)),) SUBDIRS := $(SUBDIRS) \ - IceBox \ - IceStorm \ - Freeze \ - FreezeScript \ - Glacier2 \ - IceGrid + IceBox \ + IceStorm \ + Freeze \ + FreezeScript \ + Glacier2 \ + IceGrid endif diff --git a/rb/INSTALL.WINDOWS b/rb/INSTALL.WINDOWS index bf75a3dbbba..140c4e9041d 100644 --- a/rb/INSTALL.WINDOWS +++ b/rb/INSTALL.WINDOWS @@ -14,10 +14,9 @@ Build Environment To build Ice for Ruby you must have the following: - - Ice @ver@ for C++ - - Ruby 1.9.3 - - MinGW from Ruby Development Kit - - Cygwin with make package +- Ice @ver@ for C++ +- Ruby 1.9.3 +- Ruby Development Kit 4.5.2 The Ruby distribution for Windows uses the MinGW compiler, therefore MinGW is the only compiler supported by Ice for Ruby. @@ -46,12 +45,6 @@ your build environment: http://rubyinstaller.org/downloads/ -4. You have installed Cygwin and included the "make" package in your - installation. See the link below for more information on installing - Cygwin: - - http://cygwin.com/install.html - If you selected different installation directories, you will need to modify the relevant path names in the steps below to match your @@ -68,29 +61,30 @@ Compiling Ice for Ruby Follow these steps to build the Ice extension for Ruby: -1) Open a Cygwin command prompt +1) Open a Windows command prompt -2) Add Ruby to your PATH: +2) Add Ruby to your environment: - $ export PATH=/cygdrive/c/Ruby193/bin:$PATH + > C:\Ruby193\bin\setrbvars.bat 3) Add MinGW from the Ruby Development Kit to your PATH: - $ export PATH=/cygdrive/c/RubyDevKit-4.5.2/mingw/bin:$PATH + > C:\RubyDevKit-4.5.2\devkitvars.bat 4) Change to the Ice for Ruby source directory: - $ cd Ice-@ver@/rb + > cd Ice-@ver@/rb -5) If you installed the Ice @ver@ distribution in a non-standard - location, set the ICE_HOME environment variable with the Ice +5) If you have not built Ice for C++ from the cpp subdirectory or if + you have installed the Ice @ver@ for C++ development kit in a + non-standard location, set the ICE_HOME environment variable to the installation directory. For example: - $ export ICE_HOME=C:\Ice-@ver@ + > set ICE_HOME=C:\Ice-@ver@ 6) Run make: - $ make + > make If no errors occurred, you can now begin using Ice for Ruby. @@ -106,7 +100,7 @@ test suite. Python is required to run the test suite: The test suites require that the Ice for C++ tests be built in the cpp subdirectory of this source distribution. -Open a Windows (not Cygwin) command window and change to the top-level +Open a Windows command prompt and change to the top-level directory. At the command prompt, execute: > python allTests.py diff --git a/rb/config/Make.rules b/rb/config/Make.rules index 8085cc1fbf5..1691249b29e 100644 --- a/rb/config/Make.rules +++ b/rb/config/Make.rules @@ -117,11 +117,7 @@ ice_require_cpp = yes include $(top_srcdir)/../cpp/config/Make.rules.common -ifeq ($(MinGW), yes) - slice_translator = slice2rb.exe -else - slice_translator = slice2rb -endif +slice_translator = slice2rb ifeq ($(shell test -f $(top_srcdir)/config/Make.common.rules && echo 0),0) include $(top_srcdir)/config/Make.common.rules @@ -129,7 +125,7 @@ else include $(top_srcdir)/../config/Make.common.rules endif -libdir = $(top_srcdir)/ruby +libdir = $(top_srcdir)/ruby install_rubydir = $(prefix)/ruby install_libdir = $(prefix)/ruby install_bindir = $(prefix)/$(binsubdir) @@ -137,53 +133,29 @@ install_bindir = $(prefix)/$(binsubdir) # # Platform specific definitions # -ifeq ($(MinGW), yes) - include $(top_srcdir)/../cpp/config/Make.rules.MINGW +ifeq ($(shell test -f $(top_srcdir)/config/Make.rules.$(UNAME) && echo 0),0) + configdir = $(top_srcdir)/config else - ifeq ($(shell test -f $(top_srcdir)/config/Make.rules.$(UNAME) && echo 0),0) - configdir = $(top_srcdir)/config - else - configdir = $(top_srcdir)/../cpp/config - endif - include $(configdir)/Make.rules.$(UNAME) -endif - -ifeq ($(MinGW), yes) - ice_cpp_dir_win := $(shell $(top_srcdir)/../cpp/config/cygpath-win.sh $(ice_cpp_dir)) - ifdef ice_src_dist - ifeq ($(ice_cpp_dir), $(ice_dir)/cpp) - ICE_BIN_DIR = -L"$(ice_cpp_dir_win)/bin" - else - ICE_BIN_DIR = -L"$(ice_cpp_dir_win)/$(binsubdir)" - endif - ICE_FLAGS = -I"$(ice_cpp_dir_win)\include" - endif + configdir = $(top_srcdir)/../cpp/config +endif +include $(configdir)/Make.rules.$(UNAME) - ifdef ice_bin_dist - ice_dir_win := $(shell $(top_srcdir)/../cpp/config/cygpath-win.sh $(ice_dir)) - ICE_BIN_DIR = -L"$(ice_dir_win)/$(binsubdir)" - ICE_FLAGS = -I"$(ice_dir_win)/include" - endif - ICE_LIBS = $(ICE_BIN_DIR) -l$(ICE_LIBNAME) -l$(SLICE_LIBNAME) -l$(ICEUTIL_LIBNAME) -else - ifdef ice_src_dist - ifeq ($(ice_cpp_dir), $(ice_dir)/cpp) - ICE_LIB_DIR = -L$(ice_cpp_dir)/lib - else - ICE_LIB_DIR = -L$(ice_cpp_dir)/$(libsubdir) - endif - ICE_FLAGS = -I$(ice_cpp_dir)/include - endif - ifdef ice_bin_dist - ICE_LIB_DIR = -L$(ice_dir)/$(libsubdir) - ICE_FLAGS = -I$(ice_dir)/include - endif - ICE_LIBS = $(ICE_LIB_DIR) -lIce -lSlice -lIceUtil +ifdef ice_src_dist + ifeq ($(ice_cpp_dir), $(ice_dir)/cpp) + ICE_LIB_DIR = -L$(ice_cpp_dir)/lib + else + ICE_LIB_DIR = -L$(ice_cpp_dir)/$(libsubdir) + endif + ICE_FLAGS = -I$(ice_cpp_dir)/include endif - +ifdef ice_bin_dist + ICE_LIB_DIR = -L$(ice_dir)/$(libsubdir) + ICE_FLAGS = -I$(ice_dir)/include +endif +ICE_LIBS = $(ICE_LIB_DIR) -lIce -lSlice -lIceUtil ifneq ($(embedded_runpath_prefix),) - runpath_libdir := $(embedded_runpath_prefix)/$(libsubdir) + runpath_libdir := $(embedded_runpath_prefix)/$(libsubdir) endif CPPFLAGS = @@ -192,37 +164,33 @@ SLICE2RBFLAGS = $(ICECPPFLAGS) LDFLAGS = $(LDPLATFORMFLAGS) $(CXXFLAGS) -L$(libdir) ifdef ice_src_dist - ifeq ($(ice_cpp_dir), $(ice_dir)/cpp) - ifeq ($(MinGW), yes) - SLICEPARSERLIB = $(ice_cpp_dir)/bin/$(SLICE_LIBNAME).dll - else - SLICEPARSERLIB = $(ice_cpp_dir)/lib/$(call mklibfilename,Slice,$(VERSION)) - endif - SLICE2RB = $(ice_cpp_dir)/bin/$(slice_translator) - else - ifeq ($(MinGW), yes) - SLICEPARSERLIB = $(ice_cpp_dir)/$(binsubdir)/$(SLICE_LIBNAME).dll - else - SLICEPARSERLIB = $(ice_cpp_dir)/$(libsubdir)/$(call mklibfilename,Slice,$(VERSION)) - endif - SLICE2RB = $(ice_cpp_dir)/$(binsubdir)/$(slice_translator) + ifeq ($(ice_cpp_dir), $(ice_dir)/cpp) + ifeq ($(SLICEPARSERLIB),) + SLICEPARSERLIB = $(ice_cpp_dir)/lib/$(call mklibfilename,Slice,$(VERSION)) endif + SLICE2RB = $(ice_cpp_dir)/bin/$(slice_translator) + else + SLICEPARSERLIB = $(ice_cpp_dir)/$(libsubdir)/$(call mklibfilename,Slice,$(VERSION)) + SLICE2RB = $(ice_cpp_dir)/$(binsubdir)/$(slice_translator) + endif else - ifeq ($(MinGW), yes) - SLICEPARSERLIB = $(ice_dir)/$(binsubdir)/$(SLICE_LIBNAME).dll - else - SLICEPARSERLIB = $(ice_dir)/$(libsubdir)/$(call mklibfilename,Slice,$(VERSION)) - endif - SLICE2CPP = $(ice_dir)/$(binsubdir)/$(slice_translator) + SLICEPARSERLIB = $(ice_dir)/$(libsubdir)/$(call mklibfilename,Slice,$(VERSION)) + SLICE2CPP = $(ice_dir)/$(binsubdir)/$(slice_translator) endif # # A Ruby extension library cannot have a "lib" prefix, so Ruby-specific # functions are defined that strip "lib" from the regular library name. # -mkrblibfilename = $(subst lib,,$(call mklibfilename,$(1),$(2))) -mkrbsoname = $(subst lib,,$(call mksoname,$(1),$(2))) -mkrblibname = $(subst lib,,$(call mklibname,$(1))) +ifeq ($(mkrblibfilename),) + mkrblibfilename = $(subst lib,,$(call mklibfilename,$(1),$(2))) +endif +ifeq ($(mkrbsoname),) + mkrbsoname = $(subst lib,,$(call mksoname,$(1),$(2))) +endif +ifeq ($(mkrblibname),) + mkrblibname = $(subst lib,,$(call mklibname,$(1))) +endif EVERYTHING = all depend clean install diff --git a/rb/config/Make.rules.Darwin b/rb/config/Make.rules.Darwin index 611540d25b6..f4e89a32caf 100644 --- a/rb/config/Make.rules.Darwin +++ b/rb/config/Make.rules.Darwin @@ -62,7 +62,4 @@ ICE_OS_LIBS = -ldl ICONV_LIB = -liconv - PLATFORM_HAS_READLINE := no - -export DYLD_LIBRARY_PATH := $(libdir):$(DYLD_LIBRARY_PATH) diff --git a/rb/config/Make.rules.MINGW b/rb/config/Make.rules.MINGW new file mode 100644 index 00000000000..34b13386746 --- /dev/null +++ b/rb/config/Make.rules.MINGW @@ -0,0 +1,25 @@ +# ********************************************************************** +# +# Copyright (c) 2003-2012 ZeroC, Inc. All rights reserved. +# +# This copy of Ice is licensed to you under the terms described in the +# ICE_LICENSE file included in this distribution. +# +# ********************************************************************** + +# +# Include C++ Make.rules.MINGW +# +include $(top_srcdir)/../cpp/config/Make.rules.MINGW + +mkrblibfilename = $(1).so +mkrbsoname = $(if $(2),lib$(1).xxx.$(2),lib$(1).xxx) +mkrblibname = $(1).xxx + +libdir = $(top_srcdir)/ruby + +ifdef ice_src_dist + ifeq ($(ice_cpp_dir), $(ice_dir)/cpp) + SLICEPARSERLIB = $(ice_cpp_dir)/bin/$(call mklibfilename,Slice,$(VERSION)) + endif +endif
\ No newline at end of file diff --git a/rb/src/IceRuby/Makefile b/rb/src/IceRuby/Makefile index b57de8b3252..99f879cfaa3 100644 --- a/rb/src/IceRuby/Makefile +++ b/rb/src/IceRuby/Makefile @@ -11,15 +11,10 @@ top_srcdir = ../.. include $(top_srcdir)/../cpp/config/Make.rules.common -ifeq ($(MinGW), yes) - DLLNAME = $(libdir)/IceRuby.so - TARGETS = $(DLLNAME) -else - LIBFILENAME = $(call mkrblibfilename,IceRuby,$(VERSION)) - SONAME = $(call mkrbsoname,IceRuby,$(SOVERSION)) - LIBNAME = $(call mkrblibname,IceRuby) - TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) -endif +LIBFILENAME = $(call mkrblibfilename,IceRuby,$(VERSION)) +SONAME = $(call mkrbsoname,IceRuby,$(SOVERSION)) +LIBNAME = $(call mkrblibname,IceRuby) +TARGETS = $(call mklibtargets,$(libdir)/$(LIBFILENAME),$(libdir)/$(SONAME),$(libdir)/$(LIBNAME)) OBJS = Connection.o \ Communicator.o \ @@ -42,16 +37,6 @@ include $(top_srcdir)/config/Make.rules CPPFLAGS := -I. -I.. $(CPPFLAGS) $(ICE_FLAGS) $(RUBY_FLAGS) LINKWITH := -L"$(libdir)" $(ICE_LIBS) $(RUBY_LIBS) $(CXXLIBS) -ifeq ($(MinGW), yes) - -$(DLLNAME): $(OBJS) - $(CXX) -shared $(LDFLAGS) -o $(DLLNAME) $(OBJS) $(LINKWITH) - -install:: all - $(call installprogram,$(DLLNAME),$(install_libdir)) - -else - $(libdir)/$(LIBFILENAME): $(OBJS) rm -f $@ $(call mkshlib,$@,$(SONAME),$(OBJS),$(LINKWITH)) @@ -67,6 +52,4 @@ $(libdir)/$(LIBNAME): $(libdir)/$(SONAME) install:: all $(call installlib,$(install_libdir),$(libdir),$(LIBFILENAME),$(SONAME),$(LIBNAME)) -endif - #include .depend diff --git a/scripts/TestUtil.py b/scripts/TestUtil.py index aa83cc84d36..2592c3ae55d 100755 --- a/scripts/TestUtil.py +++ b/scripts/TestUtil.py @@ -96,7 +96,9 @@ def getCppCompiler(): def isMINGW(): if not isWin32(): return False - return getCppCompiler() == "MINGW" + # Ruby Installer DEVKIT sets the RI_DEVKIT environment variable, + # we check for this variable to detect the Ruby MINGW environment. + return os.environ.has_key("RI_DEVKIT") def isVC90(): if not isWin32(): |