mirror of
https://github.com/libssh2/libssh2.git
synced 2025-11-21 14:00:51 +03:00
NMakefile: merge them into a single file [ci skip] (#902)
Also: - allow to override `AR` and `ARFLAGS`. - The extra `src` subdir in the target directory is no longer, to simplify things. - gone the dynamically generated `objects.mk`. Now replaced with some tricky logic to do that inline. - add necessary `LIBS` for WinCNG. (untested) Lightly tested via clang-cl.
This commit is contained in:
107
NMakefile
107
NMakefile
@@ -1,4 +1,56 @@
|
||||
!include "win32/config.mk"
|
||||
# Tweak these for your system
|
||||
!if "$(OPENSSLINC)" == ""
|
||||
OPENSSLINC=..\openssl\include
|
||||
!endif
|
||||
|
||||
!if "$(OPENSSLLIB)" == ""
|
||||
OPENSSLLIB=..\openssl\lib
|
||||
!endif
|
||||
|
||||
!if "$(ZLIBINC)" == ""
|
||||
ZLIBINC=..\zlib
|
||||
!endif
|
||||
|
||||
!if "$(ZLIBLIB)" == ""
|
||||
ZLIBLIB=..\zlib
|
||||
!endif
|
||||
|
||||
!if "$(TARGET)" == ""
|
||||
TARGET=Release
|
||||
!endif
|
||||
|
||||
!if "$(TARGET)" == "Debug"
|
||||
SUFFIX=_debug
|
||||
CPPFLAGS=/Od /MDd
|
||||
DLLFLAGS=/DEBUG /LDd
|
||||
!else
|
||||
CPPFLAGS=/Oi /O2 /Oy /GF /Y- /MD /DNDEBUG
|
||||
DLLFLAGS=/DEBUG /LD
|
||||
!endif
|
||||
|
||||
CPPFLAGS=/nologo /GL /Zi /EHsc $(CPPFLAGS) /Iwin32 /Iinclude
|
||||
|
||||
!if "$(WITH_WINCNG)" == "1"
|
||||
CPPFLAGS=$(CPPFLAGS) /DLIBSSH2_WINCNG
|
||||
LIBS=ws2_32.lib crypt32.lib bcrypt.lib
|
||||
!else
|
||||
CPPFLAGS=$(CPPFLAGS) /DLIBSSH2_OPENSSL /I$(OPENSSLINC)
|
||||
LIBS=$(LIBS) $(OPENSSLLIB)\lib\crypto.lib $(OPENSSLLIB)\lib\ssl.lib
|
||||
!endif
|
||||
|
||||
!if "$(WITH_ZLIB)" == "1"
|
||||
CPPFLAGS=$(CPPFLAGS) /DLIBSSH2_HAVE_ZLIB /I$(ZLIBINC)
|
||||
LIBS=$(LIBS) $(ZLIBLIB)\zlib.lib
|
||||
!endif
|
||||
|
||||
CFLAGS=$(CPPFLAGS)
|
||||
RCFLAGS=/Iinclude
|
||||
DLLFLAGS=$(CFLAGS) $(DLLFLAGS)
|
||||
LIBS=$(LIBS) ws2_32.lib user32.lib advapi32.lib gdi32.lib
|
||||
|
||||
INTDIR=$(TARGET)
|
||||
|
||||
SUBDIR=src
|
||||
|
||||
!if "$(WITH_WINCNG)" == "1"
|
||||
!include "Makefile.WinCNG.inc"
|
||||
@@ -9,15 +61,53 @@
|
||||
|
||||
OBJECTS=$(CSOURCES:.c=.obj)
|
||||
|
||||
# SUBDIRS=src example
|
||||
SUBDIRS=src
|
||||
!if "$(TARGET)" == "Debug"
|
||||
OBJECTS=Debug/$(OBJECTS: = Debug/)
|
||||
OBJECTS=$(OBJECTS: Debug/ = )
|
||||
!else
|
||||
TARGET=Release
|
||||
OBJECTS=Release/$(OBJECTS: = Release/)
|
||||
OBJECTS=$(OBJECTS: Release/ = )
|
||||
!endif
|
||||
|
||||
all-sub: win32\objects.mk
|
||||
-for %D in ($(SUBDIRS)) do $(MAKE) /nologo /f %D/NMakefile BUILD=$(BUILD) SUBDIR=%D all-sub
|
||||
CFLAGS=$(CFLAGS)
|
||||
|
||||
!if "$(AR)" == ""
|
||||
AR=lib
|
||||
ARFLAGS=-nologo /LTCG
|
||||
!endif
|
||||
|
||||
RESOURCE=$(INTDIR)\libssh2.res
|
||||
DLL=libssh2$(SUFFIX).dll
|
||||
STATICLIB=$(INTDIR)\libssh2.lib
|
||||
|
||||
!if "$(BUILD_STATIC_LIB)" == ""
|
||||
all: $(INTDIR) $(DLL)
|
||||
!else
|
||||
all: $(INTDIR) $(STATICLIB)
|
||||
!endif
|
||||
|
||||
$(INTDIR):
|
||||
@if not exist $(INTDIR) mkdir $(INTDIR)
|
||||
|
||||
$(DLL): $(OBJECTS) $(RESOURCE)
|
||||
$(CC) -o $(DLL) $(DLLFLAGS) $(OBJECTS) $(RESOURCE) $(LIBS)
|
||||
|
||||
$(STATICLIB): $(OBJECTS)
|
||||
$(AR) $(ARFLAGS) -out:$@ $(OBJECTS)
|
||||
|
||||
$(RESOURCE): win32\libssh2.rc
|
||||
$(RC) $(RCFLAGS) /Fo"$@" $?
|
||||
|
||||
all-sub: $(INTDIR) all
|
||||
|
||||
clean-sub: clean
|
||||
|
||||
{$(SUBDIR)}.c{$(INTDIR)}.obj::
|
||||
$(CC) -c $(CFLAGS) /Fo"$(INTDIR)\\" $<
|
||||
|
||||
clean:
|
||||
-rmdir 2>NUL /s/q $(TARGET)
|
||||
-del 2>NUL win32\objects.mk
|
||||
|
||||
real-clean vclean: clean
|
||||
-del 2>NUL libssh2.dll
|
||||
@@ -25,8 +115,3 @@ real-clean vclean: clean
|
||||
-del 2>NUL libssh2.ilk
|
||||
-del 2>NUL libssh2.lib
|
||||
-del 2>NUL *.pdb
|
||||
|
||||
win32\objects.mk: Makefile.inc
|
||||
@echo OBJECTS = \>$@
|
||||
@for %O in ($(OBJECTS)) do @echo $$(INTDIR)\%O \>>$@
|
||||
@echo $$(EOL)>>$@
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
!include "win32/config.mk"
|
||||
|
||||
!include "win32/objects.mk"
|
||||
|
||||
CFLAGS=$(CFLAGS)
|
||||
|
||||
AR = lib
|
||||
ARFLAGS = -nologo /LTCG
|
||||
|
||||
RESOURCE=$(INTDIR)\libssh2.res
|
||||
DLL=libssh2$(SUFFIX).dll
|
||||
STATICLIB=$(INTDIR)\libssh2.lib
|
||||
|
||||
!if "$(BUILD_STATIC_LIB)" == ""
|
||||
all: $(DLL)
|
||||
!else
|
||||
all: $(STATICLIB)
|
||||
!endif
|
||||
|
||||
$(DLL): $(OBJECTS) $(RESOURCE)
|
||||
$(CC) -o $(DLL) $(DLLFLAGS) $(OBJECTS) $(RESOURCE) $(LIBS)
|
||||
|
||||
$(STATICLIB): $(OBJECTS)
|
||||
$(AR) $(ARFLAGS) -out:$@ $(OBJECTS)
|
||||
|
||||
$(RESOURCE): win32\libssh2.rc
|
||||
$(RC) $(RCFLAGS) /Fo"$@" $?
|
||||
|
||||
!include "win32/rules.mk"
|
||||
9
win32/.gitignore
vendored
9
win32/.gitignore
vendored
@@ -1,13 +1,4 @@
|
||||
*.lib
|
||||
*.pdb
|
||||
*.dll
|
||||
*.exe
|
||||
*.obj
|
||||
.*.swp
|
||||
Debug
|
||||
Release
|
||||
*.exp
|
||||
*.ncb
|
||||
*.opt
|
||||
*.plg
|
||||
objects.mk
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
# Tweak these for your system
|
||||
!if "$(OPENSSLINC)" == ""
|
||||
OPENSSLINC=..\openssl\include
|
||||
!endif
|
||||
|
||||
!if "$(OPENSSLLIB)" == ""
|
||||
OPENSSLLIB=..\openssl\lib
|
||||
!endif
|
||||
|
||||
!if "$(ZLIBINC)" == ""
|
||||
ZLIBINC=..\zlib
|
||||
!endif
|
||||
|
||||
!if "$(ZLIBLIB)" == ""
|
||||
ZLIBLIB=..\zlib
|
||||
!endif
|
||||
|
||||
!if "$(TARGET)" == ""
|
||||
TARGET=Release
|
||||
!endif
|
||||
|
||||
!if "$(TARGET)" == "Debug"
|
||||
SUFFIX=_debug
|
||||
CPPFLAGS=/Od /MDd
|
||||
DLLFLAGS=/DEBUG /LDd
|
||||
!else
|
||||
CPPFLAGS=/Oi /O2 /Oy /GF /Y- /MD /DNDEBUG
|
||||
DLLFLAGS=/DEBUG /LD
|
||||
!endif
|
||||
|
||||
CPPFLAGS=/nologo /GL /Zi /EHsc $(CPPFLAGS) /Iwin32 /Iinclude
|
||||
|
||||
!if "$(WITH_WINCNG)" == "1"
|
||||
CPPFLAGS=$(CPPFLAGS) /DLIBSSH2_WINCNG
|
||||
# LIBS=bcrypt.lib crypt32.lib
|
||||
!else
|
||||
CPPFLAGS=$(CPPFLAGS) /DLIBSSH2_OPENSSL /I$(OPENSSLINC)
|
||||
LIBS=$(LIBS) $(OPENSSLLIB)\lib\crypto.lib $(OPENSSLLIB)\lib\ssl.lib
|
||||
!endif
|
||||
|
||||
!if "$(WITH_ZLIB)" == "1"
|
||||
CPPFLAGS=$(CPPFLAGS) /DLIBSSH2_HAVE_ZLIB /I$(ZLIBINC)
|
||||
LIBS=$(LIBS) $(ZLIBLIB)\zlib.lib
|
||||
!endif
|
||||
|
||||
CFLAGS=$(CPPFLAGS)
|
||||
RCFLAGS=/Iinclude
|
||||
DLLFLAGS=$(CFLAGS) $(DLLFLAGS)
|
||||
LIBS=$(LIBS) ws2_32.lib user32.lib advapi32.lib gdi32.lib
|
||||
|
||||
INTDIR=$(TARGET)\$(SUBDIR)
|
||||
@@ -1,12 +0,0 @@
|
||||
all-sub: $(INTDIR) all
|
||||
|
||||
clean-sub: clean
|
||||
|
||||
$(INTDIR):
|
||||
!if "$(SRCDIR)" == ""
|
||||
@if not exist $(TARGET) mkdir $(TARGET)
|
||||
!endif
|
||||
@if not exist $(INTDIR) mkdir $(INTDIR)
|
||||
|
||||
{$(SUBDIR)}.c{$(INTDIR)}.obj::
|
||||
$(CC) -c $(CFLAGS) /Fo"$(INTDIR)\\" $<
|
||||
Reference in New Issue
Block a user