Commit 56079d5e785398e014bdb4e9a06b7f04eb75fa8f

Authored by Perry Werneck
1 parent 1e197cf7
Exists in master and in 1 other branch develop

Adjusting mingw Makefile for use with msc.

Showing 1 changed file with 341 additions and 0 deletions   Show diff stats
win/Makefile.msc 0 → 100644
... ... @@ -0,0 +1,341 @@
  1 +#
  2 +# "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270
  3 +# (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a
  4 +# aplicativos mainframe. Registro no INPI sob o nome G3270.
  5 +#
  6 +# Copyright (C) <2008> <Banco do Brasil S.A.>
  7 +#
  8 +# Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob
  9 +# os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela
  10 +# Free Software Foundation.
  11 +#
  12 +# Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER
  13 +# GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO
  14 +# A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para
  15 +# obter mais detalhes.
  16 +#
  17 +# Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este
  18 +# programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple
  19 +# Place, Suite 330, Boston, MA, 02111-1307, USA
  20 +#
  21 +# Contatos:
  22 +#
  23 +# perry.werneck@gmail.com (Alexandre Perry de Souza Werneck)
  24 +# erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça)
  25 +#
  26 +
  27 +#---[ Library configuration ]------------------------------------------------------------
  28 +
  29 +MODULE_NAME=ipc3270
  30 +PACKAGE_NAME=ipc3270
  31 +PRODUCT_NAME=pw3270
  32 +
  33 +MAIN_SOURCES= \
  34 + $(wildcard src/core/*.cc) \
  35 + $(wildcard src/core/windows/*.cc) \
  36 + $(wildcard src/core/windows/*.rc) \
  37 + $(wildcard src/host/*.cc) \
  38 + $(wildcard src/session/*.cc) \
  39 + $(wildcard src/session/local/*.cc) \
  40 + $(wildcard src/session/remote/*.cc) \
  41 + $(wildcard src/session/remote/windows/*.cc)
  42 +
  43 +DYNAMIC_SOURCES= \
  44 + $(wildcard src/core/windows/dynamic/*.cc)
  45 +
  46 +TEST_SOURCES= \
  47 + $(wildcard src/testprogram/*.cc)
  48 +
  49 +TARGETS= \
  50 + windows-lib devel static
  51 +
  52 +#---[ Tools ]----------------------------------------------------------------------------
  53 +
  54 +CXX=
  55 +LD=
  56 +MKDIR=
  57 +
  58 +#---[ Paths ]----------------------------------------------------------------------------
  59 +
  60 +BASEDIR ?=..
  61 +
  62 +OBJDIR=.obj/$(MODULE_NAME)
  63 +OBJDBG=$(OBJDIR)/Debug
  64 +OBJRLS=$(OBJDIR)/Release
  65 +
  66 +BINDIR=$(BASEDIR)/.bin
  67 +BINDBG=$(BINDIR)/Debug
  68 +BINRLS=$(BINDIR)/Release
  69 +
  70 +#---[ Rules ]----------------------------------------------------------------------------
  71 +
  72 +DEPENDS= \
  73 + Makefile \
  74 + src/include/*.h \
  75 + $(BASEDIR)/common/src/include/*.h \
  76 + $(BASEDIR)/client/src/include/lib3270/*.h \
  77 + $(BASEDIR)/client/src/include/lib3270/ipc/*.h \
  78 +
  79 +CFLAGS= \
  80 + /favor:AMD64 \
  81 + /c \
  82 + /EHsc \
  83 + /I "$(BASEDIR)/client/src/include" \
  84 + /I "$(BASEDIR)/common/src/include" \
  85 + /I "C:/Program Files/pw3270/sdk/include" \
  86 + /I "$(VCPKG_ROOT)/x64-windows-static/include
  87 +
  88 +#LIBS=
  89 +
  90 +
  91 +#---[ Debug Rules ]----------------------------------------------------------------------
  92 +
  93 +$(OBJDBG)/%.o: \
  94 + %.cc \
  95 + $(DEPENDS)
  96 +
  97 + @echo $< ...
  98 + @$(MKDIR) $(@D)
  99 +
  100 + @$(CXX) \
  101 + $(CFLAGS) \
  102 + -Wall -Wextra -fstack-check \
  103 + -DDEBUG=1 \
  104 + -o $@ \
  105 + -c $<
  106 +
  107 +$(OBJDBG)/%.o: \
  108 + %.rc
  109 +
  110 + @echo $< ...
  111 + @$(MKDIR) $(@D)
  112 + @$(WINDRES) $< -O coff -o $@
  113 +
  114 +#---[ Release Rules ]--------------------------------------------------------------------
  115 +
  116 +$(OBJRLS)/%.o: \
  117 + %.cc \
  118 + $(DEPENDS)
  119 +
  120 + @echo $< ...
  121 + @$(MKDIR) $(@D)
  122 + @$(CXX) \
  123 + $(CFLAGS) \
  124 + -DNDEBUG=1 \
  125 + -o $@ \
  126 + -c $<
  127 +
  128 +$(OBJRLS)/%.o: \
  129 + %.rc
  130 +
  131 + @echo $< ...
  132 + @$(MKDIR) $(@D)
  133 + @$(WINDRES) $< -O coff -o $@
  134 +
  135 +#---[ Release Targets ]------------------------------------------------------------------
  136 +
  137 +all: \
  138 + $(BINRLS)/lib$(MODULE_NAME).dll \
  139 + $(BINRLS)/lib$(MODULE_NAME).a \
  140 + $(POTDIR)/$(MODULE_NAME).pot
  141 +
  142 +Release: \
  143 + $(BINRLS)/lib$(MODULE_NAME).dll \
  144 + $(BINRLS)/lib$(MODULE_NAME).static.a
  145 +
  146 +$(BINRLS)/lib$(MODULE_NAME).dll: \
  147 + $(foreach SRC, $(basename $(MAIN_SOURCES)), $(OBJRLS)/$(SRC).o) \
  148 + $(foreach SRC, $(basename $(DYNAMIC_SOURCES)), $(OBJRLS)/$(SRC).o)
  149 +
  150 + @$(MKDIR) $(@D)
  151 + @echo $< ...
  152 + @$(LD) \
  153 + -shared -static-libgcc -static-libstdc++ -Wl,--output-def,$(@D)/\lib$(MODULE_NAME).def \
  154 + -Wl,-soname,$(@F) \
  155 + -o $@ \
  156 + $(LDFLAGS) \
  157 + $^ \
  158 + $(LIBS)
  159 +
  160 +$(BINRLS)/lib$(MODULE_NAME).static.a: \
  161 + $(foreach SRC, $(basename $(MAIN_SOURCES)), $(OBJRLS)/$(SRC).o)
  162 +
  163 + @$(MKDIR) $(@D)
  164 + @echo $< ...
  165 +
  166 + @$(AR) rcs $@ $^
  167 +
  168 +
  169 +#---[ Install Targets ]------------------------------------------------------------------
  170 +
  171 +install: \
  172 + $(foreach TARGET, $(TARGETS), install-$(TARGET))
  173 +
  174 +install-linux-lib: \
  175 + $(BINRLS)/lib$(MODULE_NAME).dll
  176 +
  177 + @$(MKDIR) \
  178 + $(DESTDIR)$(libdir)
  179 +
  180 + @$(INSTALL_PROGRAM) \
  181 + $(BINRLS)/lib$(MODULE_NAME).dll \
  182 + $(DESTDIR)$(libdir)/lib$(MODULE_NAME).dll.5.2
  183 +
  184 + @$(LN_S) \
  185 + lib$(MODULE_NAME).dll.5.2 \
  186 + $(DESTDIR)$(libdir)/lib$(MODULE_NAME).dll
  187 +
  188 +install-windows-lib: \
  189 + $(BINRLS)/lib$(MODULE_NAME).dll
  190 +
  191 + @$(MKDIR) \
  192 + $(DESTDIR)$(bindir)
  193 +
  194 + @$(INSTALL_PROGRAM) \
  195 + $(BINRLS)/lib$(MODULE_NAME).dll \
  196 + $(DESTDIR)$(bindir)/lib$(MODULE_NAME).dll
  197 +
  198 + @$(MKDIR) \
  199 + $(DESTDIR)$(libdir)
  200 +
  201 + @$(DLLTOOL) \
  202 + --input-def $(BINRLS)/lib$(MODULE_NAME).def \
  203 + --dllname lib$(MODULE_NAME).dll \
  204 + --output-lib $(DESTDIR)$(libdir)/lib$(MODULE_NAME).dll.a
  205 +
  206 + @$(MKDIR) \
  207 + $(DESTDIR)$(datarootdir)/$(PRODUCT_NAME)/def
  208 +
  209 + @$(INSTALL_DATA) \
  210 + $(BINRLS)/lib$(MODULE_NAME).def \
  211 + $(DESTDIR)$(datarootdir)/$(PRODUCT_NAME)/def
  212 +
  213 +install-static: \
  214 + $(BINRLS)/lib$(MODULE_NAME).static.a
  215 +
  216 + @$(MKDIR) \
  217 + $(DESTDIR)$(libdir)
  218 +
  219 + @$(INSTALL_PROGRAM) \
  220 + $(BINRLS)/lib$(MODULE_NAME).static.a \
  221 + $(DESTDIR)$(libdir)
  222 +
  223 + @$(MKDIR) \
  224 + $(DESTDIR)$(libdir)/pkgconfig
  225 +
  226 + @$(INSTALL_DATA) \
  227 + sdk/ipc3270-static.pc \
  228 + $(DESTDIR)$(libdir)/pkgconfig/ipc3270-static.pc
  229 +
  230 +install-devel:
  231 +
  232 + @$(MKDIR) \
  233 + $(DESTDIR)$(includedir)/lib3270
  234 +
  235 + @$(MKDIR) \
  236 + $(DESTDIR)$(includedir)/lib3270/ipc
  237 +
  238 + @$(INSTALL_DATA) \
  239 + src/include/lib3270/ipc.h \
  240 + $(DESTDIR)$(includedir)/lib3270
  241 +
  242 + @$(INSTALL_DATA) \
  243 + src/include/lib3270/ipc/*.h \
  244 + $(DESTDIR)$(includedir)/lib3270/ipc
  245 +
  246 + # Install PKG-CONFIG files
  247 + @$(MKDIR) \
  248 + $(DESTDIR)$(libdir)/pkgconfig
  249 +
  250 + @$(INSTALL_DATA) \
  251 + sdk/ipc3270.pc \
  252 + $(DESTDIR)$(libdir)/pkgconfig/ipc3270.pc
  253 +
  254 +#---[ Misc Targets ]---------------------------------------------------------------------
  255 +
  256 +$(POTDIR)/$(MODULE_NAME).pot: \
  257 + $(foreach SRC, $(basename $(MAIN_SOURCES)), $(POTDIR)/$(MODULE_NAME)/$(SRC).pot)
  258 +
  259 + @rm -f $@
  260 + @mkdir -p `dirname $@`
  261 + @$(MSGCAT) --sort-output $^ > $@
  262 +
  263 +locale: \
  264 + $(POTDIR)/$(MODULE_NAME).pot
  265 +
  266 +
  267 +#---[ Debug Targets ]--------------------------------------------------------------------
  268 +
  269 +Debug: \
  270 + $(BINDBG)/$(MODULE_NAME)-client.exe
  271 +
  272 +$(BINDBG)/$(MODULE_NAME)-client.exe: \
  273 + $(foreach SRC, $(basename $(TEST_SOURCES)), $(OBJDBG)/$(SRC).o) \
  274 + $(BINDBG)/lib$(MODULE_NAME).dll
  275 +
  276 + @$(MKDIR) $(@D)
  277 + @echo $< ...
  278 + @$(LD) \
  279 + -o $@ \
  280 + $^ \
  281 + -L$(BINDBG) \
  282 + -Wl,-rpath,$(BINDBG) \
  283 + \
  284 + $(LDFLAGS) \
  285 + $(LIBS)
  286 +
  287 +
  288 +$(BINDBG)/lib$(MODULE_NAME).dll: \
  289 + $(foreach SRC, $(basename $(MAIN_SOURCES)), $(OBJDBG)/$(SRC).o) \
  290 + $(foreach SRC, $(basename $(DYNAMIC_SOURCES)), $(OBJDBG)/$(SRC).o)
  291 +
  292 + @$(MKDIR) $(@D)
  293 + @echo $< ...
  294 + @$(LD) \
  295 + -shared -static-libgcc -static-libstdc++ -Wl,--output-def,$(@D)/\lib$(MODULE_NAME).def \
  296 + -Wl,-soname,$(@F) \
  297 + -o $@ \
  298 + $(LDFLAGS) \
  299 + $^ \
  300 + $(LIBS)
  301 +
  302 +
  303 +run: \
  304 + $(BINDBG)/$(MODULE_NAME)-client.exe
  305 +
  306 +ifeq ($(VALGRIND),no)
  307 +
  308 + @LD_LIBRARY_PATH=$(BINDBG) \
  309 + $(BINDBG)/$(MODULE_NAME)-client.exe
  310 +
  311 +else
  312 + @touch valgrind.suppression
  313 +
  314 + @LD_LIBRARY_PATH=$(BINDBG) \
  315 + $(VALGRIND) --leak-check=full --track-origins=yes --gen-suppressions=all --suppressions=valgrind.suppression \
  316 + $(BINDBG)/$(MODULE_NAME)-client.exe
  317 +endif
  318 +
  319 +#---[ Clean Targets ]--------------------------------------------------------------------
  320 +
  321 +clean: \
  322 + cleanDebug \
  323 + cleanRelease
  324 +
  325 +cleanDebug:
  326 +
  327 + @rm -fr $(OBJDBG)
  328 + @rm -fr $(BINDBG)
  329 +
  330 +cleanRelease:
  331 +
  332 + @rm -fr $(OBJRLS)
  333 + @rm -fr $(BINRLS)
  334 + @rm -fr $(POTDIR)
  335 + @rm -f $(MODULE_NAME).pot
  336 +
  337 +clean: \
  338 + cleanDebug \
  339 + cleanRelease
  340 +
  341 +
... ...