################################################################# # ## Makefile for building libssh2 sample (Win32 version - gnu make) ## Use: make -f Makefile.win32 [help] ## ## Comments to: Guenter Knauf # ################################################################# # Edit the path below to point to the base of your Zlib sources. ifndef ZLIB_PATH ZLIB_PATH = ../../zlib-1.2.3 endif # Edit the path below to point to the base of your OpenSSL package. ifndef OPENSSL_PATH OPENSSL_PATH = ../../openssl-0.9.8d endif # Edit the vars below to change target settings. #TARGETS = ssh2_sample sftp ssh2 TARGET = ssh2_sample VERSION = $(LIBSSH2_VERSION) COPYR = (c) 2004-2007 Sara Golemon WWWURL = http://www.libssh2.org/ DESCR = libssh2 sample $(LIBSSH2_VERSION_STR) #STACK = 64000 # must be equal to DEBUG or NDEBUG DB = NDEBUG # DB = DEBUG # Optimization: -O or debugging: -g ifeq ($(DB),NDEBUG) OPT = -O2 OBJDIR = release else OPT = -g OBJDIR = debug endif # Include the version info retrieved from libssh2.h -include $(OBJDIR)/version.inc # The following line defines your compiler. ifdef METROWERKS CC = mwcc else CC = gcc endif CP = cp -afv # RM = rm -f AWK = awk ZIP = zip -qzr9 # Global flags for all compilers CFLAGS = $(OPT) -D$(DB) -DWIN32 -DLIBSSH2_WIN32 # -DHAVE_CONFIG_H CFLAGS += -DWINSOCK_VERSION=MAKEWORD(2,0) ifeq ($(CC),mwcc) LD = mwld RC = mwwinrc LDFLAGS = -nostdlib AR = $(LD) ARFLAGS = -type library -w nocmdline $(OBJS) -o LIBEXT = lib 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 = gcc RC = windres LDFLAGS = -s AR = ar ARFLAGS = -cq LIBEXT = a #LDLIBS += -lwsock32 LDLIBS += -lws2_32 RCFLAGS = -O coff -i CFLAGS += -fno-strict-aliasing -Wall -Wno-unused # -pedantic endif INCLUDES = -I. -I.. -I../../include INCLUDES += -I$(OPENSSL_PATH)/outinc -I$(OPENSSL_PATH)/outinc/openssl ifdef LINK_STATIC LDLIBS += ../libssh2.$(LIBEXT) else LDLIBS += ../libssh2dll.$(LIBEXT) endif #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) #ifeq ($(findstring linux,$(OSTYPE)),linux) ifdef __MSYS__ DL = ' DS = / else DS = \\ endif vpath %.c ../.. ../../example/simple #OBJS := $(addprefix $(OBJDIR)/,$(OBJECTS)) OBJS = $(OBJDIR)/$(TARGET).o all: exe exe: prebuild $(TARGET).exe prebuild: $(OBJDIR) $(OBJDIR)/version.inc # libssh2_config.h $(OBJDIR)/%.o: %.c # @echo Compiling $< $(CC) $(CFLAGS) -c $< -o $@ $(OBJDIR)/version.inc: ../../include/libssh2.h $(OBJDIR) @echo Creating $@ @$(AWK) -f ../../get_ver.awk $< > $@ distclean: clean -$(RM) -r $(DISTDIR) -$(RM) $(DISTARC) devclean: clean -$(RM) -r $(DEVLDIR) -$(RM) $(DEVLARC) objclean: all -$(RM) -r $(OBJDIR) clean: # -$(RM) libssh2_config.h -$(RM) $(TARGET).exe -$(RM) -r $(OBJDIR) $(OBJDIR): @mkdir $@ $(TARGET).exe: $(OBJDIR)/$(TARGET).res $(OBJS) @echo Linking $@ @-$(RM) $@ @$(LD) $(LDFLAGS) $^ -o $@ $(LIBPATH) $(LDLIBS) $(OBJDIR)/%.res: $(OBJDIR)/%.rc @echo Creating $@ @$(RC) $(RCFLAGS) $< -o $@ $(OBJDIR)/%.rc: Makefile.win32 $(OBJDIR)/version.inc @echo 1 VERSIONINFO > $@ @echo FILEVERSION $(LIBSSH2_VERSION),0 >> $@ @echo PRODUCTVERSION $(LIBSSH2_VERSION),0 >> $@ @echo FILEFLAGSMASK 0x3fL >> $@ @echo FILEOS 0x40004L >> $@ @echo FILEFLAGS 0x0L >> $@ @echo FILETYPE 0x1L >> $@ @echo FILESUBTYPE 0x0L >> $@ @echo BEGIN >> $@ @echo BLOCK "StringFileInfo" >> $@ @echo BEGIN >> $@ @echo BLOCK "040904E4" >> $@ @echo BEGIN >> $@ @echo VALUE "LegalCopyright","$(COPYR)\0" >> $@ ifdef COMPANY @echo VALUE "CompanyName","$(COMPANY)\0" >> $@ endif @echo VALUE "ProductName","$(notdir $(@:.rc=.exe))\0" >> $@ @echo VALUE "ProductVersion","$(LIBSSH2_VERSION_STR)\0" >> $@ @echo VALUE "License","Released under GPL.\0" >> $@ @echo VALUE "FileDescription","$(DESCR)\0" >> $@ @echo VALUE "FileVersion","$(LIBSSH2_VERSION_STR)\0" >> $@ @echo VALUE "InternalName","$(notdir $(@:.rc=))\0" >> $@ @echo VALUE "OriginalFilename","$(notdir $(@:.rc=.exe))\0" >> $@ @echo VALUE "WWW","$(WWWURL)\0" >> $@ @echo END >> $@ @echo END >> $@ @echo BLOCK "VarFileInfo" >> $@ @echo BEGIN >> $@ @echo VALUE "Translation", 0x409, 1252 >> $@ @echo END >> $@ @echo END >> $@ ifdef ICON @echo 10 ICON DISCARDABLE "$(ICON)" >> $@ endif 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) exe$(DL) @echo $(DL)$(MAKE) clean$(DL) @echo $(DL)$(MAKE) objclean$(DL) @echo $(DL)===========================================================$(DL)