1 # Common settings for Win32 builds
2 # This makefile expects that path to build tools and environment variables
3 # LIB and INCLUDE for target architecture set before running make
4 # They can be set using build\msvc_setenv_* scripts
15 # Default location is C:\Source\NetXMS
16 # It can be changed by setting NETXMS_BASE environment variable
18 NETXMS_BASE = C:\Source\NetXMS
26 !if "$(ARCH)" == "x64"
31 !if "$(ARCH)" == "x86"
37 OPENSSL_BASE = C:\SDK\OpenSSL
40 CURL_BASE = C:\SDK\cURL
43 JDK_BASE = C:\Program Files\Java\jdk1.8.0_121
47 NETXMS_LIBDIR = $(NETXMS_BASE)\bin\$(OBJDIR)
48 BINDIR = $(NETXMS_LIBDIR)
50 # Component specific settings
51 !if "$(COMPONENT)" == "server"
52 CPPFLAGS = $(CPPFLAGS) /I "$(NETXMS_BASE)\src\server\include"
55 # Target specific settings
56 !if "$(TYPE)" == "dll"
57 CPPFLAGS = $(CPPFLAGS) /D_USRDLL
58 IMPLIB = $(BINFILE:.dll=.lib)
59 LDFLAGS = $(LDFLAGS) /DLL /IMPLIB:$(IMPLIB)
61 !if "$(TYPE)" == "ddr"
62 CPPFLAGS = $(CPPFLAGS) /D_USRDLL
63 LDFLAGS = $(LDFLAGS) /DLL
65 !if "$(TYPE)" == "hdlink"
66 CPPFLAGS = $(CPPFLAGS) /D_USRDLL
67 LDFLAGS = $(LDFLAGS) /DLL
69 !if "$(TYPE)" == "ndd"
70 BINDIR = $(BINDIR)\ndd
71 CPPFLAGS = $(CPPFLAGS) /D_USRDLL
72 LDFLAGS = $(LDFLAGS) /DLL
74 !if "$(TYPE)" == "nsm"
75 CPPFLAGS = $(CPPFLAGS) /D_USRDLL
76 LDFLAGS = $(LDFLAGS) /DLL
79 # Common C/C++ compiler flags
80 CPPFLAGS = $(CPPFLAGS) /MD /O2 /Gd /EHs- /GR- \
81 /I "$(NETXMS_BASE)\include" \
82 /I "$(NETXMS_BASE)\build" \
83 /I "$(CURL_BASE)\$(ARCH)\include" \
84 /I "$(OPENSSL_BASE)\$(ARCH)\include" \
88 MANIFEST = $(TARGET).intermediate.manifest
89 LDFLAGS = $(LDFLAGS) /SUBSYSTEM:CONSOLE /MACHINE:$(ARCH) /MANIFESTFILE:$(MANIFEST) \
90 /LIBPATH:"$(NETXMS_LIBDIR)" \
91 /LIBPATH:"$(CURL_BASE)\$(ARCH)\lib" \
92 /LIBPATH:"$(OPENSSL_BASE)\$(ARCH)\lib"
95 LIBS = $(LIBS) ssleay32.lib libeay32.lib uuid.lib kernel32.lib user32.lib advapi32.lib shell32.lib
97 # Prepare list of object files
98 __sources = $(SOURCES:.cpp=.obj)
99 OBJ = $(__sources:.c=.obj)
102 RESOBJ = $(RESOURCES:.rc=.res)
109 BINFILE = $(BINDIR)\$(TARGET)
112 all: Makefile.w32 subdirs $(GENERATED) $(BINFILE)
117 !if "$(TYPE)" == "jar"
122 mv target/$(TARGET) $(BINFILE)
126 $(BINFILE): objdir $(OBJ) $(RESOBJ)
127 @if not exist $(BINDIR) mkdir $(BINDIR)
128 @echo " LD " $(TARGET)
129 @$(LD) /NOLOGO $(LDFLAGS) /out:$(BINFILE) $(OBJ) $(RESOBJ) $(LIBS)
135 @if not exist $(OBJDIR) mkdir $(OBJDIR)
140 @$(CC) /nologo $(CPPFLAGS) $(CFLAGS) /c $< /Fo$@ | tail -n +2
144 @$(CXX) /nologo $(CPPFLAGS) $(CXXFLAGS) /c $< /Fo$@ | tail -n +2
151 MSG00001.bin: messages.mc
152 @echo " MC messages.mc"
156 messages.h: messages.mc
157 @echo " MC messages.mc"
168 rm -rf $(OBJ) $(TARGET) $(OBJDIR) $(GENERATED) $(EXTRA_CLEAN)
169 @for %%s in ($(SUBDIRS)) do @( \
170 echo === Entering %%s === && \
173 $(MAKE) /NOLOGO /F Makefile.w32 clean || \
176 echo === Leaving %%s === && \
180 # Sub-directories building rules
184 @for %%s in ($(SUBDIRS)) do @( \
185 echo === Entering %%s === && \
188 $(MAKE) /NOLOGO /F Makefile.w32 || \
191 echo === Leaving %%s === && \