]> git.proxmox.com Git - rustc.git/blob - src/vendor/libssh2-sys/libssh2/win32/test/GNUmakefile
New upstream version 1.19.0+dfsg1
[rustc.git] / src / vendor / libssh2-sys / libssh2 / win32 / test / GNUmakefile
1 #########################################################################
2 #
3 ## Makefile for building libssh2 samples (Win32 version - gnu make)
4 ## Use: make -f GNUmakefile [help]
5 ##
6 ## Hacked by: Guenter Knauf
7 #
8 #########################################################################
9
10 # Edit the path below to point to the base of your Zlib sources.
11 ifndef ZLIB_PATH
12 ZLIB_PATH = ../../../zlib-1.2.8
13 endif
14
15 # Edit the path below to point to the base of your OpenSSL package.
16 ifndef OPENSSL_PATH
17 OPENSSL_PATH = ../../../openssl-0.9.8zc
18 endif
19
20 # Project root
21 PROOT = ../..
22
23 # Edit the var below to enable static linking of libssh2 and libz
24 LINK_STATIC = 1
25
26 # Edit the vars below to change target settings.
27 SAMPLES = $(PROOT)/example
28 TARGETS := $(filter-out x11.exe,$(patsubst $(SAMPLES)/%.c,%.exe,$(strip $(wildcard $(SAMPLES)/*.c))))
29 WWWURL = https://www.libssh2.org/
30 DESCR = libssh2 $(subst .rc,,$(notdir $@)) $(LIBSSH2_VERSION_STR)
31 #STACK = 64000
32
33 # must be equal to DEBUG or NDEBUG
34 ifndef DB
35 DB = NDEBUG
36 # DB = DEBUG
37 endif
38 # Optimization: -O<n> or debugging: -g
39 ifeq ($(DB),NDEBUG)
40 OPT = -O2
41 OBJDIR = release
42 else
43 OPT = -g
44 OBJDIR = debug
45 endif
46
47 # Here you can find a native Win32 binary of the original awk:
48 # http://www.gknw.net/development/prgtools/awk-20100523.zip
49 AWK = awk
50 ZIP = zip -qzr9
51
52 # Platform-dependent helper tool macros
53 ifeq ($(findstring /sh,$(SHELL)),/sh)
54 DEL = rm -f $1
55 RMDIR = rm -fr $1
56 MKDIR = mkdir -p $1
57 COPY = -cp -afv $1 $2
58 #COPYR = -cp -afr $1/* $2
59 COPYR = -rsync -aC $1/* $2
60 TOUCH = touch $1
61 CAT = cat
62 ECHONL = echo ""
63 DL = '
64 else
65 ifeq "$(OS)" "Windows_NT"
66 DEL = -del 2>NUL /q /f $(subst /,\,$1)
67 RMDIR = -rd 2>NUL /q /s $(subst /,\,$1)
68 else
69 DEL = -del 2>NUL $(subst /,\,$1)
70 RMDIR = -deltree 2>NUL /y $(subst /,\,$1)
71 endif
72 MKDIR = -md 2>NUL $(subst /,\,$1)
73 COPY = -copy 2>NUL /y $(subst /,\,$1) $(subst /,\,$2)
74 COPYR = -xcopy 2>NUL /q /y /e $(subst /,\,$1) $(subst /,\,$2)
75 TOUCH = copy 2>&1>NUL /b $(subst /,\,$1) +,,
76 CAT = type
77 ECHONL = $(ComSpec) /c echo.
78 endif
79
80 # The following line defines your compiler.
81 ifdef METROWERKS
82 CC = mwcc
83 else
84 CC = $(CROSSPREFIX)gcc
85 endif
86
87 # Set environment var ARCH to your architecture to override autodetection.
88 ifndef ARCH
89 ifeq ($(findstring gcc,$(CC)),gcc)
90 ifeq ($(findstring x86_64,$(shell $(CC) -dumpmachine)),x86_64)
91 ARCH = w64
92 else
93 ARCH = w32
94 endif
95 else
96 ARCH = w32
97 endif
98 endif
99
100 # Include the version info retrieved from libssh2.h
101 -include $(OBJDIR)/version.inc
102
103 # Global flags for all compilers
104 CFLAGS = $(OPT) -D$(DB) -DLIBSSH2_WIN32 # -DHAVE_CONFIG_H
105
106 ifeq ($(CC),mwcc)
107 LD = mwld
108 RC = mwwinrc
109 LDFLAGS = -nostdlib
110 AR = $(LD)
111 ARFLAGS = -nostdlib -library -o
112 LIBEXT = lib
113 LIBPATH += -lr "$(METROWERKS)/MSL" -lr "$(METROWERKS)/Win32-x86 Support"
114 LDLIBS += -lMSL_Runtime_x86.lib -lMSL_C_x86.lib -lMSL_Extras_x86.lib
115 LDLIBS += -lkernel32.lib -luser32.lib -lwsock32.lib
116 RCFLAGS =
117 CFLAGS += -nostdinc -gccinc -msgstyle gcc -inline off -opt nointrinsics -proc 586
118 CFLAGS += -ir "$(METROWERKS)/MSL" -ir "$(METROWERKS)/Win32-x86 Support"
119 CFLAGS += -w on,nounused,nounusedexpr # -ansi strict
120 else
121 LD = $(CROSSPREFIX)gcc
122 RC = $(CROSSPREFIX)windres
123 LDFLAGS = -s
124 AR = $(CROSSPREFIX)ar
125 ARFLAGS = -cq
126 LIBEXT = a
127 #LDLIBS += -lwsock32
128 LDLIBS += -lws2_32
129 RCFLAGS = -I $(PROOT)/include -O coff
130 CFLAGS += -fno-builtin
131 CFLAGS += -fno-strict-aliasing
132 CFLAGS += -Wall #-Wno-unused #-pedantic
133 ifeq ($(ARCH),w64)
134 CFLAGS += -D_AMD64_
135 RCFLAGS += -F pe-x86-64
136 else
137 CFLAGS += -m32
138 RCFLAGS += -F pe-i386
139 endif
140 endif
141
142 INCLUDES = -I$(PROOT)/win32 -I$(PROOT)/include
143 LIBPATH += -L$(PROOT)/win32
144
145 ifdef LINK_STATIC
146 LDLIBS += -llibssh2
147 else
148 LDLIBS += -llibssh2dll
149 endif
150
151 ifdef WITH_WINCNG
152 # CFLAGS += -DLIBSSH2_WINCNG
153 LDLIBS += -lbcrypt -lcrypt32
154 else
155 # CFLAGS += -DLIBSSH2_OPENSSL
156 ifndef OPENSSL_INCLUDE
157 ifeq "$(wildcard $(OPENSSL_PATH)/outinc)" "$(OPENSSL_PATH)/outinc"
158 OPENSSL_INCLUDE = $(OPENSSL_PATH)/outinc
159 endif
160 ifeq "$(wildcard $(OPENSSL_PATH)/include)" "$(OPENSSL_PATH)/include"
161 OPENSSL_INCLUDE = $(OPENSSL_PATH)/include
162 endif
163 endif
164 ifneq "$(wildcard $(OPENSSL_INCLUDE)/openssl/opensslv.h)" "$(OPENSSL_INCLUDE)/openssl/opensslv.h"
165 $(error Invalid OPENSSL_PATH: $(OPENSSL_PATH))
166 endif
167 INCLUDES += -I"$(OPENSSL_INCLUDE)"
168 ifndef OPENSSL_LIBPATH
169 OPENSSL_LIBS_STAT = crypto ssl
170 ifeq "$(wildcard $(OPENSSL_PATH)/out)" "$(OPENSSL_PATH)/out"
171 OPENSSL_LIBPATH = $(OPENSSL_PATH)/out
172 OPENSSL_LIBS_DYN = eay32 ssl32
173 endif
174 ifeq "$(wildcard $(OPENSSL_PATH)/lib)" "$(OPENSSL_PATH)/lib"
175 OPENSSL_LIBPATH = $(OPENSSL_PATH)/lib
176 OPENSSL_LIBS_DYN = crypto.dll ssl.dll
177 endif
178 endif
179 ifdef LINK_STATIC
180 ifdef LINK_OPENSSL_STATIC
181 LDLIBS += $(patsubst %,$(OPENSSL_LIBPATH)/lib%.$(LIBEXT), $(OPENSSL_LIBS_STAT)) -lgdi32
182 else
183 LDLIBS += $(patsubst %,$(OPENSSL_LIBPATH)/lib%.$(LIBEXT), $(OPENSSL_LIBS_DYN))
184 endif
185 endif
186 endif
187
188 ifdef WITH_ZLIB
189 CFLAGS += -DLIBSSH2_HAVE_ZLIB
190 INCLUDES += -I$(ZLIB_PATH)
191 ifdef LINK_ZLIB_STATIC
192 LDLIBS += $(ZLIB_PATH)/libz.$(LIBEXT)
193 else
194 LDLIBS += $(ZLIB_PATH)/libzdll.$(LIBEXT)
195 endif
196 endif
197
198 CFLAGS += $(INCLUDES)
199
200 vpath %.c $(PROOT)/example
201
202 .PRECIOUS: $(OBJDIR)/%.o $(OBJDIR)/%.rc $(OBJDIR)/%.res
203
204
205 all: prebuild $(TARGETS)
206
207 prebuild: $(OBJDIR) $(OBJDIR)/version.inc
208
209 $(OBJDIR)/%.o: %.c
210 # @echo Compiling $<
211 $(CC) $(CFLAGS) -c $< -o $@
212
213 $(OBJDIR)/version.inc: $(PROOT)/include/libssh2.h $(OBJDIR)
214 @echo Creating $@
215 @$(AWK) -f $(PROOT)/get_ver.awk $< > $@
216
217 objclean:
218 $(call RMDIR, $(OBJDIR))
219
220 clean: objclean
221 $(call DEL, $(TARGETS))
222
223 $(OBJDIR):
224 $(call MKDIR, $@)
225
226 %.exe: $(OBJDIR)/%.o $(OBJDIR)/%.res
227 @echo Linking $@
228 @$(call DEL, $@)
229 $(LD) $(LDFLAGS) $^ -o $@ $(LIBPATH) $(LDLIBS)
230
231 $(OBJDIR)/%.res: $(OBJDIR)/%.rc
232 @echo Creating $@
233 @$(RC) $(RCFLAGS) -i $< -o $@
234
235 $(OBJDIR)/%.rc: GNUmakefile $(OBJDIR)/version.inc
236 @echo $(DL)1 VERSIONINFO$(DL) > $@
237 @echo $(DL) FILEVERSION $(LIBSSH2_VERSION),0$(DL) >> $@
238 @echo $(DL) PRODUCTVERSION $(LIBSSH2_VERSION),0$(DL) >> $@
239 @echo $(DL) FILEFLAGSMASK 0x3fL$(DL) >> $@
240 @echo $(DL) FILEOS 0x40004L$(DL) >> $@
241 @echo $(DL) FILEFLAGS 0x0L$(DL) >> $@
242 @echo $(DL) FILETYPE 0x1L$(DL) >> $@
243 @echo $(DL) FILESUBTYPE 0x0L$(DL) >> $@
244 @echo $(DL)BEGIN$(DL) >> $@
245 @echo $(DL) BLOCK "StringFileInfo"$(DL) >> $@
246 @echo $(DL) BEGIN$(DL) >> $@
247 @echo $(DL) BLOCK "040904E4"$(DL) >> $@
248 @echo $(DL) BEGIN$(DL) >> $@
249 @echo $(DL) VALUE "LegalCopyright","\xA9 $(LIBSSH2_COPYRIGHT_STR)\0"$(DL) >> $@
250 ifdef COMPANY
251 @echo $(DL) VALUE "CompanyName","$(COMPANY)\0"$(DL) >> $@
252 endif
253 @echo $(DL) VALUE "ProductName","$(notdir $(@:.rc=.exe))\0"$(DL) >> $@
254 @echo $(DL) VALUE "ProductVersion","$(LIBSSH2_VERSION_STR)\0"$(DL) >> $@
255 @echo $(DL) VALUE "License","Released under GPL.\0"$(DL) >> $@
256 @echo $(DL) VALUE "FileDescription","$(DESCR)\0"$(DL) >> $@
257 @echo $(DL) VALUE "FileVersion","$(LIBSSH2_VERSION_STR)\0"$(DL) >> $@
258 @echo $(DL) VALUE "InternalName","$(notdir $(@:.rc=))\0"$(DL) >> $@
259 @echo $(DL) VALUE "OriginalFilename","$(notdir $(@:.rc=.exe))\0"$(DL) >> $@
260 @echo $(DL) VALUE "WWW","$(WWWURL)\0"$(DL) >> $@
261 @echo $(DL) END$(DL) >> $@
262 @echo $(DL) END$(DL) >> $@
263 @echo $(DL) BLOCK "VarFileInfo"$(DL) >> $@
264 @echo $(DL) BEGIN$(DL) >> $@
265 @echo $(DL) VALUE "Translation", 0x409, 1252$(DL) >> $@
266 @echo $(DL) END$(DL) >> $@
267 @echo $(DL)END$(DL) >> $@
268 ifdef ICON
269 @echo $(DL)10 ICON DISCARDABLE "$(ICON)"$(DL) >> $@
270 endif
271
272 help: $(OBJDIR)/version.inc
273 @echo $(DL)===========================================================$(DL)
274 @echo $(DL)OpenSSL path = $(OPENSSL_PATH)$(DL)
275 @echo $(DL)Zlib path = $(ZLIB_PATH)$(DL)
276 @echo $(DL)===========================================================$(DL)
277 @echo $(DL)libssh $(LIBSSH2_VERSION_STR) - available targets are:$(DL)
278 @echo $(DL)$(MAKE) all$(DL)
279 @echo $(DL)$(MAKE) clean$(DL)
280 @echo $(DL)$(MAKE) objclean$(DL)
281 @echo $(DL)===========================================================$(DL)
282
283