###############################################################################
# BRLTTY - A background process providing access to the console screen (when in
#          text mode) for a blind person using a refreshable braille display.
#
# Copyright (C) 1995-2023 by The BRLTTY Developers.
#
# BRLTTY comes with ABSOLUTELY NO WARRANTY.
#
# This is free software, placed under the terms of the
# GNU Lesser General Public License, as published by the Free Software
# Foundation; either version 2.1 of the License, or (at your option) any
# later version. Please see the file LICENSE-LGPL for details.
#
# Web Page: http://brltty.app/
#
# This software is maintained by Dave Mielke <dave@mielke.cc>.
###############################################################################

WE_OBJS = webrloem.$O
WE_NAME = webrloem109
WE_LIB = $(WE_NAME).$(LIB_EXT)
WE_DLL = $(WE_NAME).$(LIB_EXT)
WE_IMPLIB = $(ARC_PFX)$(WE_NAME).$(ARC_EXT)
WE_IMPLIB_VERSIONED = $(ARC_PFX)$(WE_NAME).$(ARC_EXT)
WE_DEF = $(WE_NAME).def

we: $(WE_DYNAMIC_LIBRARY)

we-dynamic-library-windows: $(WE_DLL)
$(WE_DLL): $(WE_OBJS) brlapi
	-rm -f implib.a lib.def
	$(MKLIB:<name>=${WE_LIB}) $@ $(WE_OBJS) $(API_LIBS)
	[ ! -f implib.a ] || mv implib.a $(WE_IMPLIB)
	[ ! -f lib.def ] || mv lib.def $(WE_DEF)

webrloem.$O:
	$(CC) $(LIBCFLAGS) -c $(SRC_DIR)/webrloem.c

test$X: we-dynamic-library-windows $(SRC_DIR)/test.c
	$(CC) $(LDFLAGS) -o $@ $(SRC_DIR)/test.c -L. -l$(WE_NAME) $(LDLIBS)
