| ######################################################################### |
| # |
| ## Makefile for building libssh2 (Win32 version - gnu make) |
| ## Use: make -f GNUmakefile [help|all|clean|dev|devclean|dist|distclean|dll|objclean] |
| ## |
| ## Hacked by: Guenter Knauf |
| # |
| ######################################################################### |
| |
| # Edit the path below to point to the base of your Zlib sources. |
| ifndef ZLIB_PATH |
| ZLIB_PATH = ../../zlib-1.2.5 |
| endif |
| # since currently always enabled in libssh2_config.h set here too! |
| WITH_ZLIB = 1 |
| |
| # Edit the path below to point to the base of your OpenSSL package. |
| ifndef OPENSSL_PATH |
| OPENSSL_PATH = ../../openssl-0.9.8r |
| endif |
| |
| # Edit the var below to set to your architecture or set environment var. |
| ifndef ARCH |
| ARCH = w32 |
| endif |
| |
| # Edit the path below to point to your Distribution folder. |
| ifndef DISTDIR |
| DISTDIR = libssh2-$(LIBSSH2_VERSION_STR)-bin-$(ARCH) |
| endif |
| DISTARC = $(DISTDIR).zip |
| |
| # Edit the path below to point to your Development folder. |
| ifndef DEVLDIR |
| DEVLDIR = libssh2-$(LIBSSH2_VERSION_STR)-dev-$(ARCH) |
| endif |
| DEVLARC = $(DEVLDIR).zip |
| |
| # Edit the vars below to change target settings. |
| TARGET = libssh2 |
| VERSION = $(LIBSSH2_VERSION) |
| COPYR = (c) $(LIBSSH2_COPYRIGHT_STR) |
| WWWURL = http://www.libssh2.org/ |
| DESCR = libssh2 $(LIBSSH2_VERSION_STR) |
| #STACK = 64000 |
| |
| # must be equal to DEBUG or NDEBUG |
| ifndef DB |
| DB = NDEBUG |
| # DB = DEBUG |
| endif |
| # Optimization: -O<n> or debugging: -g |
| ifeq ($(DB),NDEBUG) |
| OPT = -O2 |
| OBJDIR = release |
| else |
| OPT = -g |
| OPT += -DLIBSSH2DEBUG |
| OBJDIR = debug |
| endif |
| |
| # Include the version info retrieved from libssh2.h |
| -include $(OBJDIR)/version.inc |
| |
| ifeq ($(findstring /sh,$(SHELL)),/sh) |
| CP = cp -afv |
| # RM = rm -f |
| MD = mkdir |
| RD = rm -fr |
| DL = ' |
| DS = / |
| else |
| CP = copy |
| RM = del /q /f 2>NUL |
| MD = md |
| RD = rd /q /s 2>NUL |
| XX = |
| DS = $(XX)\$(XX) |
| endif |
| # Here you can find a native Win32 binary of the original awk: |
| # http://www.gknw.net/development/prgtools/awk-20100523.zip |
| AWK = awk |
| ZIP = zip -qzr9 |
| |
| # The following line defines your compiler. |
| ifdef METROWERKS |
| CC = mwcc |
| else |
| CC = $(CROSSPREFIX)gcc |
| endif |
| |
| # Global flags for all compilers |
| CFLAGS = $(OPT) -D$(DB) -DWIN32 -DLIBSSH2_WIN32 # -DHAVE_CONFIG_H |
| ifeq ($(ARCH),w64) |
| CFLAGS += -D_AMD64_ |
| endif |
| |
| ifeq ($(CC),mwcc) |
| LD = mwld |
| RC = mwwinrc |
| LDFLAGS = -nostdlib |
| AR = $(LD) |
| ARFLAGS = -nostdlib -library -o |
| LIBEXT = lib |
| #RANLIB = |
| LIBPATH += -lr "$(METROWERKS)/MSL" -lr "$(METROWERKS)/Win32-x86 Support" |
| LDLIBS += -lMSL_Runtime_x86.lib -lMSL_C_x86.lib -lMSL_Extras_x86.lib |
| LDLIBS += -lkernel32.lib -luser32.lib -lwsock32.lib |
| RCFLAGS = |
| CFLAGS += -nostdinc -gccinc -msgstyle gcc -inline off -opt nointrinsics -proc 586 |
| CFLAGS += -ir "$(METROWERKS)/MSL" -ir "$(METROWERKS)/Win32-x86 Support" |
| CFLAGS += -w on,nounused,nounusedexpr # -ansi strict |
| else |
| LD = $(CROSSPREFIX)gcc |
| RC = $(CROSSPREFIX)windres |
| LDFLAGS = -s -shared -Wl,--out-implib,$(TARGET)dll.a |
| AR = $(CROSSPREFIX)ar |
| ARFLAGS = -cq |
| LIBEXT = a |
| RANLIB = $(CROSSPREFIX)ranlib |
| #LDLIBS += -lwsock32 |
| LDLIBS += -lws2_32 |
| RCFLAGS = -I. -I ../include -O coff -i |
| CFLAGS += -fno-strict-aliasing |
| CFLAGS += -Wall # -pedantic |
| endif |
| |
| INCLUDES = -I. -I../include |
| INCLUDES += -I$(OPENSSL_PATH)/outinc -I$(OPENSSL_PATH)/outinc/openssl |
| |
| ifdef LINK_STATIC |
| LDLIBS += $(OPENSSL_PATH)/out/libcrypto.$(LIBEXT) $(OPENSSL_PATH)/out/libssl.$(LIBEXT) |
| else |
| LDLIBS += $(OPENSSL_PATH)/out/libeay32.$(LIBEXT) $(OPENSSL_PATH)/out/libssl32.$(LIBEXT) |
| endif |
| |
| ifdef WITH_ZLIB |
| INCLUDES += -I$(ZLIB_PATH) |
| LDLIBS += $(ZLIB_PATH)/libz.$(LIBEXT) |
| endif |
| |
| CFLAGS += $(INCLUDES) |
| |
| vpath %.c . ../src |
| |
| # include Makefile.inc to get CSOURCES define |
| include ../Makefile.inc |
| |
| OBJECTS := $(patsubst %.c,%.o,$(CSOURCES)) |
| OBJS := $(addprefix $(OBJDIR)/,$(OBJECTS)) |
| OBJL = $(OBJS) $(OBJDIR)/$(TARGET).res |
| |
| all: lib dll |
| |
| dll: prebuild $(TARGET).dll |
| |
| lib: prebuild $(TARGET).$(LIBEXT) |
| |
| prebuild: $(OBJDIR) $(OBJDIR)/version.inc |
| # libssh2_config.h |
| |
| test: all |
| $(MAKE) -C test -f GNUmakefile |
| |
| $(OBJDIR)/%.o: %.c |
| # @echo Compiling $< |
| $(CC) $(CFLAGS) -c $< -o $@ |
| |
| $(OBJDIR)/version.inc: ../include/libssh2.h $(OBJDIR) |
| @echo Creating $@ |
| @$(AWK) -f ../get_ver.awk $< > $@ |
| |
| dist: all $(DISTDIR) $(DISTDIR)/readme.txt |
| @-$(MD) $(DISTDIR)$(DS)bin |
| @-$(CP) ..$(DS)INSTALL $(DISTDIR) |
| @-$(CP) ..$(DS)LICENSE $(DISTDIR) |
| @-$(CP) ..$(DS)README $(DISTDIR) |
| @$(CP) $(TARGET).dll $(DISTDIR)$(DS)bin |
| @echo Creating $(DISTARC) |
| @$(ZIP) $(DISTARC) $(DISTDIR)/* < $(DISTDIR)/readme.txt |
| |
| dev: all $(DEVLDIR) $(DEVLDIR)/readme.txt |
| @-$(MD) $(DEVLDIR)$(DS)bin |
| @-$(MD)$(DEVLDIR)$(DS)include |
| @-$(MD) $(DEVLDIR)$(DS)win32 |
| @-$(CP) ..$(DS)INSTALL $(DEVLDIR) |
| @-$(CP) ..$(DS)LICENSE $(DEVLDIR) |
| @-$(CP) ..$(DS)README $(DEVLDIR) |
| @$(CP) $(TARGET).dll $(DEVLDIR)$(DS)bin |
| @$(CP) ..$(DS)include$(DS)*.h $(DEVLDIR)$(DS)include |
| @$(CP) libssh2_config.h $(DEVLDIR)/include |
| @$(CP) *.$(LIBEXT) $(DEVLDIR)/win32 |
| @echo Creating $(DEVLARC) |
| @$(ZIP) $(DEVLARC) $(DEVLDIR)/* < $(DEVLDIR)/readme.txt |
| |
| distclean: clean |
| -$(RD) $(DISTDIR) |
| -$(RM) $(DISTARC) |
| |
| devclean: clean |
| -$(RD) $(DEVLDIR) |
| -$(RM) $(DEVLARC) |
| |
| objclean: all |
| -$(RD) $(OBJDIR) |
| |
| testclean: clean |
| $(MAKE) -C test -f GNUmakefile clean |
| |
| clean: |
| # -$(RM) libssh2_config.h |
| -$(RM) $(TARGET).dll $(TARGET).$(LIBEXT) $(TARGET)dll.$(LIBEXT) |
| -$(RD) $(OBJDIR) |
| |
| $(OBJDIR): |
| @$(MD) $@ |
| |
| $(DISTDIR): |
| @$(MD) $@ |
| |
| $(DEVLDIR): |
| @$(MD) $@ |
| |
| $(TARGET).$(LIBEXT): $(OBJS) |
| @echo Creating $@ |
| @-$(RM) $@ |
| @$(AR) $(ARFLAGS) $@ $^ |
| ifdef RANLIB |
| @$(RANLIB) $@ |
| endif |
| |
| $(TARGET).dll $(TARGET)dll.a: $(OBJL) |
| @echo Linking $@ |
| @-$(RM) $@ |
| @$(LD) $(LDFLAGS) $^ -o $@ $(LIBPATH) $(LDLIBS) |
| |
| |
| $(OBJDIR)/%.res: %.rc |
| @echo Creating $@ |
| @$(RC) $(RCFLAGS) $< -o $@ |
| |
| |
| $(DISTDIR)/readme.txt: GNUmakefile |
| @echo Creating $@ |
| @echo $(DL)This is a binary distribution for Win32 platform.$(DL) > $@ |
| @echo $(DL)libssh version $(LIBSSH2_VERSION_STR)$(DL) >> $@ |
| @echo $(DL)Please download the complete libssh package for$(DL) >> $@ |
| @echo $(DL)any further documentation:$(DL) >> $@ |
| @echo $(DL)$(WWWURL)$(DL) >> $@ |
| |
| $(DEVLDIR)/readme.txt: GNUmakefile |
| @echo Creating $@ |
| @echo $(DL)This is a development distribution for Win32 platform.$(DL) > $@ |
| @echo $(DL)libssh version $(LIBSSH2_VERSION_STR)$(DL) >> $@ |
| @echo $(DL)Please download the complete libssh package for$(DL) >> $@ |
| @echo $(DL)any further documentation:$(DL) >> $@ |
| @echo $(DL)$(WWWURL)$(DL) >> $@ |
| |
| help: $(OBJDIR)/version.inc |
| @echo $(DL)===========================================================$(DL) |
| @echo $(DL)OpenSSL path = $(OPENSSL_PATH)$(DL) |
| @echo $(DL)Zlib path = $(ZLIB_PATH)$(DL) |
| @echo $(DL)===========================================================$(DL) |
| @echo $(DL)libssh $(LIBSSH2_VERSION_STR) - available targets are:$(DL) |
| @echo $(DL)$(MAKE) all$(DL) |
| @echo $(DL)$(MAKE) dll$(DL) |
| @echo $(DL)$(MAKE) lib$(DL) |
| @echo $(DL)$(MAKE) clean$(DL) |
| @echo $(DL)$(MAKE) dev$(DL) |
| @echo $(DL)$(MAKE) devclean$(DL) |
| @echo $(DL)$(MAKE) dist$(DL) |
| @echo $(DL)$(MAKE) distclean$(DL) |
| @echo $(DL)$(MAKE) objclean$(DL) |
| @echo $(DL)$(MAKE) test$(DL) |
| @echo $(DL)===========================================================$(DL) |
| |
| |