1# Copyright (c) 2015-2016, 2018, 2020 Paul Mattes. 2# All rights reserved. 3# 4# Redistribution and use in source and binary forms, with or without 5# modification, are permitted provided that the following conditions 6# are met: 7# * Redistributions of source code must retain the above copyright 8# notice, this list of conditions and the following disclaimer. 9# * Redistributions in binary form must reproduce the above copyright 10# notice, this list of conditions and the following disclaimer in the 11# documentation and/or other materials provided with the distribution. 12# * Neither the name of Paul Mattes nor his contributors may be used 13# to endorse or promote products derived from this software without 14# specific prior written permission. 15# 16# THIS SOFTWARE IS PROVIDED BY PAUL MATTES "AS IS" AND ANY EXPRESS OR 17# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 19# NO EVENT SHALL PAUL MATTES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 21# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 22# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 23# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 24# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 27# Top-level Makefile for suite3270. 28 29all: @T_ALL@ 30 31# Cleverness for 'make targets': 32# MIXED is true if there is at least one Unix target and at least one Windows 33# target 34# M1 is true if there is more than one target 35MIXED := $(shell (echo @T_ALL@ | grep -q '\<[^w]') && (echo @T_ALL@ | grep -q '\<[w]') && echo true) 36M1 := $(shell test `echo @T_ALL@ | wc -w` -gt 1 && echo true) 37 38# List targets 39targets: 40 @echo "Targets:" 41 @echo " all @T_ALL@" 42ifdef MIXED 43 @echo " unix build all Unix programs" 44 @echo " windows build all Windows programs" 45endif 46 @echo " lib build all libraries" 47ifdef MIXED 48 @echo " unix-lib build all Unix libraries" 49 @echo " windows-lib build all Windows libraries" 50endif 51ifdef M1 52 @echo " <program> build <program>" 53endif 54 @echo " install install programs" 55 @echo " install.man install man pages" 56 @echo " clean remove all intermediate files" 57ifdef MIXED 58 @echo " unix-clean remove Unix intermediate files" 59 @echo " windows-clean remove Windows intermediate files" 60endif 61 @echo " lib-clean remove library intermediate files" 62ifdef MIXED 63 @echo " unix-lib-clean remove Unix library intermediate files" 64 @echo " windows-lib-clean remove Windows library intermediate files" 65endif 66ifdef M1 67 @echo " <program>-clean remove <program> intermediate files" 68endif 69 @echo " clobber remove all derived files" 70ifdef MIXED 71 @echo " unix-clobber remove Unix derived files" 72 @echo " windows-clobber remove Windows derived files" 73endif 74 @echo " lib-clobber remove library derived files" 75ifdef MIXED 76 @echo " unix-lib-clobber remove Unix library derived files" 77 @echo " windows-lib-clobber remove Windows library derived files" 78endif 79ifdef M1 80 @echo " <program>-clobber remove <program> derived files" 81endif 82 83# Library ependencies. 84c3270 s3270 b3270 tcl3270 x3270 pr3287: unix-lib 85wc3270 ws3270 wb3270 wpr3287: windows-lib 86 87# x3270if dependencies. 88c3270 s3270 b3270 tcl3270 x3270: x3270if 89wc3270 ws3270 wb3270: wx3270if 90 91.PHONY: x3270if 92 93# s3270 dependencies. 94tcl3270: s3270 95 96.PHONY: s3270 97 98# Individual targets. 99unix-lib: lib3270 lib3270i lib32xx lib3270stubs 100windows-lib: libw3270 libw3270i libw32xx libw3270stubs libexpat 101lib: @T_LIB@ 102lib3270: 103 cd lib/3270 && $(MAKE) 104lib3270i: 105 cd lib/3270i && $(MAKE) 106lib32xx: 107 cd lib/32xx && $(MAKE) 108lib3270stubs: 109 cd lib/3270stubs && $(MAKE) 110libw3270: libw3270-32 libw3270-64 111libw3270-32: 112 cd lib/w3270 && $(MAKE) 113libw3270-64: 114 cd lib/w3270 && $(MAKE) WIN64=1 115libw3270i: libw3270i-32 libw3270i-64 116libw3270i-32: 117 cd lib/w3270i && $(MAKE) 118libw3270i-64: 119 cd lib/w3270i && $(MAKE) WIN64=1 120libw32xx: libw32xx-32 libw32xx-64 121libw32xx-32: 122 cd lib/w32xx && $(MAKE) 123libw32xx-64: 124 cd lib/w32xx && $(MAKE) WIN64=1 125libw3270stubs: libw3270stubs-32 libw3270stubs-64 126libw3270stubs-32: 127 cd lib/w3270stubs && $(MAKE) 128libw3270stubs-64: 129 cd lib/w3270stubs && $(MAKE) WIN64=1 130libexpat: libexpat-32 libexpat-64 131libexpat-32: 132 cd lib/libexpat && $(MAKE) 133libexpat-64: 134 cd lib/libexpat && $(MAKE) WIN64=1 135c3270: lib3270 lib3270i lib32xx 136 cd c3270 && $(MAKE) 137s3270: lib3270 lib32xx 138 cd s3270 && $(MAKE) 139b3270: lib3270 lib32xx 140 cd b3270 && $(MAKE) 141tcl3270: lib3270 lib32xx 142 cd tcl3270 && $(MAKE) 143x3270: lib3270 lib3270i lib32xx 144 cd x3270 && $(MAKE) 145pr3287: lib32xx 146 cd pr3287 && $(MAKE) 147x3270if: 148 cd x3270if && $(MAKE) 149wc3270: wc3270-32 wc3270-64 150wc3270-32: libw3270-32 libw3270i-32 libw32xx-32 151 cd wc3270 && $(MAKE) 152wc3270-64: libw3270-64 libw3270i-64 libw32xx-64 153 cd wc3270 && $(MAKE) WIN64=1 154ws3270: ws3270-32 ws3270-64 155ws3270-32: libw3270-32 libw32xx-32 156 cd ws3270 && $(MAKE) 157ws3270-64: libw3270-64 libw32xx-64 158 cd ws3270 && $(MAKE) WIN64=1 159wb3270: wb3270-32 wb3270-64 160wb3270-32: libw3270-32 libw32xx-32 161 cd wb3270 && $(MAKE) 162wb3270-64: libw3270-64 libw32xx-64 163 cd wb3270 && $(MAKE) WIN64=1 164wpr3287: wpr3287-32 wpr3287-64 165wpr3287-32: libw32xx-32 166 cd wpr3287 && $(MAKE) 167wpr3287-64: libw32xx-64 168 cd wpr3287 && $(MAKE) WIN64=1 169wx3270if: wx3270if-32 wx3270if-64 170wx3270if-32: 171 cd wx3270if && $(MAKE) 172wx3270if-64: 173 cd wx3270if && $(MAKE) WIN64=1 174 175FORCE: 176 177unix: c3270 s3270 b3270 tcl3270 x3270 pr3287 x3270if 178windows: wc3270 ws3270 wb3270 wpr3287 wx3270if 179 180# Installation 181install unix-install: @T_INSTALL@ 182x3270-install: x3270 183 cd x3270 && $(MAKE) install 184c3270-install: c3270 185 cd c3270 && $(MAKE) install 186s3270-install: s3270 187 cd s3270 && $(MAKE) install 188b3270-install: b3270 189 cd b3270 && $(MAKE) install 190tcl3270-install: tcl3270 191 cd tcl3270 && $(MAKE) install 192pr3287-install: pr3287 193 cd pr3287 && $(MAKE) install 194x3270if-install: x3270if 195 cd x3270if && $(MAKE) install 196 197# Manual page install 198install.man unix-install.man: @T_INSTALL_MAN@ 199x3270-install.man: x3270 200 cd x3270 && $(MAKE) install.man 201c3270-install.man: c3270 202 cd c3270 && $(MAKE) install.man 203s3270-install.man: s3270 204 cd s3270 && $(MAKE) install.man 205b3270-install.man: b3270 206 cd b3270 && $(MAKE) install.man 207tcl3270-install.man: tcl3270 208 cd tcl3270 && $(MAKE) install.man 209pr3287-install.man: pr3287 210 cd pr3287 && $(MAKE) install.man 211x3270if-install.man: x3270if 212 cd x3270if && $(MAKE) install.man 213 214# Clean and clobber targets 215clean: @T_CLEAN@ 216unix-lib-clean: lib3270-clean lib3270i-clean lib32xx-clean lib3270stubs-clean 217windows-lib-clean: libw3270-clean libw3270i-clean libw32xx-clean libw3270stubs-clean libexpat-clean 218lib-clean: @T_LIB_CLEAN@ 219unix-clean: @T_UNIX_CLEAN@ 220windows-clean: @T_WINDOWS_CLEAN@ 221lib3270-clean: 222 cd lib/3270 && $(MAKE) clean 223lib3270i-clean: 224 cd lib/3270i && $(MAKE) clean 225lib32xx-clean: 226 cd lib/32xx && $(MAKE) clean 227lib3270stubs-clean: 228 cd lib/3270stubs && $(MAKE) clean 229libw3270-clean: libw3270-clean-32 libw3270-clean-64 230libw3270-clean-32: 231 cd lib/w3270 && $(MAKE) clean 232libw3270-clean-64: 233 cd lib/w3270 && $(MAKE) clean WIN64=1 234libw3270i-clean: libw3270i-clean-32 libw3270i-clean-64 235libw3270i-clean-32: 236 cd lib/w3270i && $(MAKE) clean 237libw3270i-clean-64: 238 cd lib/w3270i && $(MAKE) clean WIN64=1 239libw32xx-clean: libw32xx-clean-32 libw32xx-clean-64 240libw32xx-clean-32: 241 cd lib/w32xx && $(MAKE) clean 242libw32xx-clean-64: 243 cd lib/w32xx && $(MAKE) clean WIN64=1 244libw3270stubs-clean: libw3270stubs-clean-32 libw3270stubs-clean-64 245libw3270stubs-clean-32: 246 cd lib/w3270stubs && $(MAKE) clean 247libw3270stubs-clean-64: 248 cd lib/w3270stubs && $(MAKE) clean WIN64=1 249libexpat-clean: libexpat-clean-32 libexpat-clean-64 250libexpat-clean-32: 251 cd lib/libexpat && $(MAKE) clean 252libexpat-clean-64: 253 cd lib/libexpat && $(MAKE) clean WIN64=1 254x3270-clean: 255 cd x3270 && $(MAKE) clean 256c3270-clean: 257 cd c3270 && $(MAKE) clean 258s3270-clean: 259 cd s3270 && $(MAKE) clean 260b3270-clean: 261 cd b3270 && $(MAKE) clean 262tcl3270-clean: 263 cd tcl3270 && $(MAKE) clean 264pr3287-clean: 265 cd pr3287 && $(MAKE) clean 266x3270if-clean: 267 cd x3270if && $(MAKE) clean 268wc3270-clean: wc3270-clean-32 wc3270-clean-64 269wc3270-clean-32: 270 cd wc3270 && $(MAKE) clean 271wc3270-clean-64: 272 cd wc3270 && $(MAKE) clean WIN64=1 273ws3270-clean: ws3270-clean-32 ws3270-clean-64 274ws3270-clean-32: 275 cd ws3270 && $(MAKE) clean 276ws3270-clean-64: 277 cd ws3270 && $(MAKE) clean WIN64=1 278wb3270-clean: wb3270-clean-32 wb3270-clean-64 279wb3270-clean-32: 280 cd wb3270 && $(MAKE) clean 281wb3270-clean-64: 282 cd wb3270 && $(MAKE) clean WIN64=1 283wx3270if-clean: wx3270if-clean-32 wx3270if-clean-64 284wx3270if-clean-32: 285 cd wx3270if && $(MAKE) clean 286wx3270if-clean-64: 287 cd wx3270if && $(MAKE) clean WIN64=1 288 289clobber: @T_CLOBBER@ 290unix-lib-clobber: lib3270-clobber lib3270i-clobber lib32xx-clobber lib3270stubs-clobber 291windows-lib-clobber: libw3270-clobber libw3270i-clobber libw32xx-clobber libw3270stubs-clobber libexpat-clobber 292lib-clobber: @T_LIB_CLOBBER@ 293unix-clobber: @T_UNIX_CLOBBER@ 294windows-clobber: @T_WINDOWS_CLOBBER@ 295lib3270-clobber: 296 cd lib/3270 && $(MAKE) clobber 297lib3270i-clobber: 298 cd lib/3270i && $(MAKE) clobber 299lib32xx-clobber: 300 cd lib/32xx && $(MAKE) clobber 301lib3270stubs-clobber: 302 cd lib/3270stubs && $(MAKE) clobber 303libw3270-clobber: libw3270-clobber-32 libw3270-clobber-64 304libw3270-clobber-32: 305 cd lib/w3270 && $(MAKE) clobber 306libw3270-clobber-64: 307 cd lib/w3270 && $(MAKE) clobber WIN64=1 308libw3270i-clobber: libw3270i-clobber-32 libw3270i-clobber-64 309libw3270i-clobber-32: 310 cd lib/w3270i && $(MAKE) clobber 311libw3270i-clobber-64: 312 cd lib/w3270i && $(MAKE) clobber WIN64=1 313libw32xx-clobber: libw32xx-clobber-32 libw32xx-clobber-64 314libw32xx-clobber-32: 315 cd lib/w32xx && $(MAKE) clobber 316libw32xx-clobber-64: 317 cd lib/w32xx && $(MAKE) clobber WIN64=1 318libw3270stubs-clobber: libw3270stubs-clobber-32 libw3270stubs-clobber-64 319libw3270stubs-clobber-32: 320 cd lib/w3270stubs && $(MAKE) clobber 321libw3270stubs-clobber-64: 322 cd lib/w3270stubs && $(MAKE) clobber WIN64=1 323libexpat-clobber: libexpat-clobber-32 libexpat-clobber-64 324libexpat-clobber-32: 325 cd lib/libexpat && $(MAKE) clobber 326libexpat-clobber-64: 327 cd lib/libexpat && $(MAKE) clobber WIN64=1 328x3270-clobber: 329 cd x3270 && $(MAKE) clobber 330c3270-clobber: 331 cd c3270 && $(MAKE) clobber 332s3270-clobber: 333 cd s3270 && $(MAKE) clobber 334b3270-clobber: 335 cd b3270 && $(MAKE) clobber 336tcl3270-clobber: 337 cd tcl3270 && $(MAKE) clobber 338pr3287-clobber: 339 cd pr3287 && $(MAKE) clobber 340x3270if-clobber: 341 cd x3270if && $(MAKE) clobber 342wc3270-clobber: wc3270-clobber-32 wc3270-clobber-64 343wc3270-clobber-32: 344 cd wc3270 && $(MAKE) clobber 345wc3270-clobber-64: 346 cd wc3270 && $(MAKE) clobber WIN64=1 347ws3270-clobber: ws3270-clobber-32 ws3270-clobber-64 348ws3270-clobber-32: 349 cd ws3270 && $(MAKE) clobber 350ws3270-clobber-64: 351 cd ws3270 && $(MAKE) clobber WIN64=1 352wb3270-clobber: wb3270-clobber-32 wb3270-clobber-64 353wb3270-clobber-32: 354 cd wb3270 && $(MAKE) clobber 355wb3270-clobber-64: 356 cd wb3270 && $(MAKE) clobber WIN64=1 357wpr3287-clobber: wpr3287-clobber-32 wpr3287-clobber-64 358wpr3287-clobber-32: 359 cd wpr3287 && $(MAKE) clobber 360wpr3287-clobber-64: 361 cd wpr3287 && $(MAKE) clobber WIN64=1 362wx3270if-clobber: wx3270if-clobber-32 wx3270if-clobber-64 363wx3270if-clobber-32: 364 cd wx3270if && $(MAKE) clobber 365wx3270if-clobber-64: 366 cd wx3270if && $(MAKE) clobber WIN64=1 367