# Make liblouis.dll and liblouis.lib

# Do not edit this file. Make changes in configure.mk

!include configure.mk

CC = cl

CFLAGS = /nologo /O2 /W3 /c /MD /Iinclude /D_EXPORTING
# The Visual C++ C Runtime deprecates several standard library functions in
# preference for _s variants that are specific to Visual C++. This removes
# those deprecation warnings.
CFLAGS = $(CFLAGS) /D_CRT_SECURE_NO_WARNINGS
# The Visual C++ C Runtime deprecates standard POSIX APIs that conflict with
# reserved ISO C names (like strdup) in favour of non-portable conforming
# variants that start with an '_'. This removes those deprecation warnings. */
CFLAGS = $(CFLAGS) /D_CRT_NONSTDC_NO_DEPRECATE

!if "$(UCS)" == "2"
WIDECHAR_TYPE = unsigned short int
!else
WIDECHAR_TYPE = unsigned int
!endif

DLLFLAGS = /dll /nologo
LIBFLAGS = /nologo

HEADERS = $(SRCDIR)\internal.h $(SRCDIR)\liblouis.h \
    include\config.h
OBJ = commonTranslationFunctions.obj compileTranslationTable.obj \
    logging.obj lou_backTranslateString.obj lou_translateString.obj \
    metadata.obj pattern.obj utils.obj

all: liblouis.lib
    link $(DLLFLAGS) /OUT:liblouis.dll $(OBJ)  

clean:
    clean.bat

liblouis.lib: $(OBJ)
    lib $(LIBFLAGS) $(OBJ) /out:liblouis.lib

$(SRCDIR)\liblouis.h: $(SRCDIR)\liblouis.h.in
    PowerShell -ExecutionPolicy RemoteSigned \
    -File $(UTILSDIR)\find-replace.ps1 \
    -InputFile $(SRCDIR)\liblouis.h.in -OutputFile $(SRCDIR)\liblouis.h \
    -Str1 @WIDECHAR_TYPE@ -Str2 "$(WIDECHAR_TYPE)"

commonTranslationFunctions.obj: $(SRCDIR)\commonTranslationFunctions.c \
   $(HEADERS)
   $(CC) $(CFLAGS) $(SRCDIR)\commonTranslationFunctions.c

compileTranslationTable.obj: $(SRCDIR)\compileTranslationTable.c \
    $(HEADERS)
    $(CC) $(CFLAGS) $(SRCDIR)\compileTranslationTable.c

logging.obj: $(SRCDIR)\logging.c $(HEADERS)
    $(CC) $(CFLAGS) $(SRCDIR)\logging.c

lou_backTranslateString.obj: $(SRCDIR)\lou_backTranslateString.c \
    $(HEADERS)
    $(CC) $(CFLAGS) $(SRCDIR)\lou_backTranslateString.c

lou_translateString.obj: $(SRCDIR)\lou_translateString.c $(HEADERS)
    $(CC) $(CFLAGS) $(SRCDIR)\lou_translateString.c

metadata.obj: $(SRCDIR)\metadata.c $(HEADERS)
    $(CC) $(CFLAGS) $(SRCDIR)\metadata.c

pattern.obj: $(SRCDIR)\pattern.c $(HEADERS)
    $(CC) $(CFLAGS) $(SRCDIR)\pattern.c

utils.obj: $(SRCDIR)\utils.c $(HEADERS)
    $(CC) $(CFLAGS) $(SRCDIR)\utils.c
