barrier/lib/platform/nmake.mak

120 lines
4.2 KiB
Makefile

# synergy -- mouse and keyboard sharing utility
# Copyright (C) 2007 Chris Schoeneman
#
# This package is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# found in the file COPYING that should have accompanied this file.
#
# This package is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
LIB_PLATFORM_SRC = lib\platform
LIB_PLATFORM_DST = $(BUILD_DST)\$(LIB_PLATFORM_SRC)
LIB_PLATFORM_LIB = "$(LIB_PLATFORM_DST)\platform.lib"
LIB_PLATFORM_CPP = \
"CMSWindowsClipboard.cpp" \
"CMSWindowsClipboardAnyTextConverter.cpp" \
"CMSWindowsClipboardBitmapConverter.cpp" \
"CMSWindowsClipboardHTMLConverter.cpp" \
"CMSWindowsClipboardTextConverter.cpp" \
"CMSWindowsClipboardUTF16Converter.cpp" \
"CMSWindowsDesks.cpp" \
"CMSWindowsEventQueueBuffer.cpp" \
"CMSWindowsKeyState.cpp" \
"CMSWindowsScreen.cpp" \
"CMSWindowsScreenSaver.cpp" \
"CMSWindowsUtil.cpp" \
$(NULL)
LIB_PLATFORM_OBJ = \
"$(LIB_PLATFORM_DST)\CMSWindowsClipboard.obj" \
"$(LIB_PLATFORM_DST)\CMSWindowsClipboardAnyTextConverter.obj" \
"$(LIB_PLATFORM_DST)\CMSWindowsClipboardBitmapConverter.obj" \
"$(LIB_PLATFORM_DST)\CMSWindowsClipboardHTMLConverter.obj" \
"$(LIB_PLATFORM_DST)\CMSWindowsClipboardTextConverter.obj" \
"$(LIB_PLATFORM_DST)\CMSWindowsClipboardUTF16Converter.obj" \
"$(LIB_PLATFORM_DST)\CMSWindowsDesks.obj" \
"$(LIB_PLATFORM_DST)\CMSWindowsEventQueueBuffer.obj" \
"$(LIB_PLATFORM_DST)\CMSWindowsKeyState.obj" \
"$(LIB_PLATFORM_DST)\CMSWindowsScreen.obj" \
"$(LIB_PLATFORM_DST)\CMSWindowsScreenSaver.obj" \
"$(LIB_PLATFORM_DST)\CMSWindowsUtil.obj" \
$(NULL)
LIB_PLATFORM_HOOK_CPP = \
"$(LIB_PLATFORM_SRC)\CSynergyHook.cpp" \
$(NULL)
LIB_PLATFORM_HOOK_OBJ = \
"$(LIB_PLATFORM_DST)\CSynergyHook.obj" \
$(NULL)
LIB_PLATFORM_HOOK_DLL = "$(BUILD_DST)\synrgyhk.dll"
LIB_PLATFORM_INC = \
/I"lib\common" \
/I"lib\arch" \
/I"lib\base" \
/I"lib\mt" \
/I"lib\io" \
/I"lib\net" \
/I"lib\synergy" \
$(NULL)
CPP_FILES = $(CPP_FILES) $(LIB_PLATFORM_CPP)
OBJ_FILES = $(OBJ_FILES) $(LIB_PLATFORM_OBJ)
LIB_FILES = $(LIB_FILES) $(LIB_PLATFORM_LIB) $(LIB_PLATFORM_HOOK_DLL)
# Hook should be as small as possible.
cpphookdebug = $(cppdebug:-Ox=-O1)
# Don't do security checks or run time error checking on hook.
cpphookflags = $(cppflags:-GS=)
cpphookdebug = $(cpphookdebug:/GZ=)
cpphookdebug = $(cpphookdebug:/RTC1=)
# Dependency rules
$(LIB_PLATFORM_OBJ): $(AUTODEP)
!if EXIST($(LIB_PLATFORM_DST)\deps.mak)
!include $(LIB_PLATFORM_DST)\deps.mak
!endif
# Build rules. Use batch-mode rules if possible.
!if DEFINED(_NMAKE_VER)
{$(LIB_PLATFORM_SRC)\}.cpp{$(LIB_PLATFORM_DST)\}.obj::
!else
{$(LIB_PLATFORM_SRC)\}.cpp{$(LIB_PLATFORM_DST)\}.obj:
!endif
@$(ECHO) Compile in $(LIB_PLATFORM_SRC)
-@$(MKDIR) $(LIB_PLATFORM_DST) 2>NUL:
$(cpp) $(cppdebug) $(cppflags) $(cppvarsmt) /showIncludes \
$(LIB_PLATFORM_INC) \
/Fo$(LIB_PLATFORM_DST)\ \
/Fd$(LIB_PLATFORM_LIB:.lib=.pdb) \
$< | $(AUTODEP) $(LIB_PLATFORM_SRC) $(LIB_PLATFORM_DST)
$(LIB_PLATFORM_LIB): $(LIB_PLATFORM_OBJ)
@$(ECHO) Link $(@F)
$(implib) $(ildebug) $(ilflags) \
/out:$@ \
$**
$(AUTODEP) $(LIB_PLATFORM_SRC) $(LIB_PLATFORM_DST) \
$(LIB_PLATFORM_OBJ:.obj=.d) $(LIB_PLATFORM_HOOK_OBJ:.obj=.d)
# Hook build rules
$(LIB_PLATFORM_HOOK_OBJ): \
$(LIB_PLATFORM_HOOK_CPP) $(LIB_PLATFORM_HOOK_CPP:.cpp=.h)
@$(ECHO) Compile $(LIB_PLATFORM_HOOK_CPP)
-@$(MKDIR) $(LIB_PLATFORM_DST) 2>NUL:
$(cpp) $(cpphookdebug) $(cpphookflags) $(cppvarsmt) /showIncludes \
-D_DLL -D_USRDLL -DSYNRGYHK_EXPORTS \
$(LIB_PLATFORM_INC) \
/Fo$(LIB_PLATFORM_DST)\ \
/Fd$(@:.obj=.pdb) \
$(LIB_PLATFORM_HOOK_CPP) | \
$(AUTODEP) $(LIB_PLATFORM_SRC) $(LIB_PLATFORM_DST)
$(LIB_PLATFORM_HOOK_DLL): $(LIB_PLATFORM_HOOK_OBJ)
@$(ECHO) Link $(@F)
$(link) $(ldebug) $(lflags) $(guilibsmt) \
/entry:"DllMain$(DLLENTRY)" /dll \
/out:$@ \
$**
$(AUTODEP) $(LIB_PLATFORM_SRC) $(LIB_PLATFORM_DST) \
$(LIB_PLATFORM_OBJ:.obj=.d) $(LIB_PLATFORM_HOOK_OBJ:.obj=.d)