1 2LIBEXT = .lib 3 4!if "$(ARCH)" == "win64" 5TARGET = x86_64-x64-vc$(VC_VER)-$(BUILD_MODE) 6TARGET_FLAGS = /DPJ_WIN64=1 /DPJ_M_X86_64=1 7!else 8 9TARGET = i386-win32-vc$(VC_VER)-$(BUILD_MODE) 10TARGET_FLAGS = /DPJ_WIN32=1 /DPJ_M_I386=1 11!endif 12 13!if "$(BUILD_MODE)" == "debug" 14BUILD_FLAGS = /MTd /Od /Zi /W4 15!elseif "$(BUILD_MODE)" == "debug-static" 16BUILD_FLAGS = /MTd /Od /Zi /W4 17!elseif "$(BUILD_MODE)" == "debug-dynamic" 18BUILD_FLAGS = /MDd /Od /Zi /W4 19!elseif "$(BUILD_MODE)" == "release-static" 20BUILD_FLAGS = /Ox /MT /DNDEBUG /W4 21!else 22BUILD_FLAGS = /Ox /MD /DNDEBUG /W4 23!endif 24 25PJLIB_LIB = ..\..\pjlib\lib\pjlib-$(TARGET)$(LIBEXT) 26PJLIB_UTIL_LIB = ..\..\pjlib-util\lib\pjlib-util-$(TARGET)$(LIBEXT) 27PJNATH_LIB = ..\..\pjnath\lib\pjnath-$(TARGET)$(LIBEXT) 28PJMEDIA_LIB = ..\..\pjmedia\lib\pjmedia-$(TARGET)$(LIBEXT) 29PJMEDIA_CODEC_LIB = ..\..\pjmedia\lib\pjmedia-codec-$(TARGET)$(LIBEXT) 30PJMEDIA_AUDIODEV_LIB = ..\..\pjmedia\lib\pjmedia-audiodev-$(TARGET)$(LIBEXT) 31PJMEDIA_VIDEODEV_LIB = ..\..\pjmedia\lib\pjmedia-videodev-$(TARGET)$(LIBEXT) 32PJSIP_LIB = ..\..\pjsip\lib\pjsip-core-$(TARGET)$(LIBEXT) 33PJSIP_UA_LIB = ..\..\pjsip\lib\pjsip-ua-$(TARGET)$(LIBEXT) 34PJSIP_SIMPLE_LIB = ..\..\pjsip\lib\pjsip-simple-$(TARGET)$(LIBEXT) 35PJSUA_LIB_LIB = ..\..\pjsip\lib\pjsua-lib-$(TARGET)$(LIBEXT) 36 37GSM_LIB = ..\..\third_party\lib\libgsmcodec-$(TARGET)$(LIBEXT) 38ILBC_LIB = ..\..\third_party\lib\libilbccodec-$(TARGET)$(LIBEXT) 39#PORTAUDIO_LIB = ..\..\third_party\lib\libportaudio-$(TARGET)$(LIBEXT) 40RESAMPLE_LIB = ..\..\third_party\lib\libresample-$(TARGET)$(LIBEXT) 41SPEEX_LIB = ..\..\third_party\lib\libspeex-$(TARGET)$(LIBEXT) 42SRTP_LIB = ..\..\third_party\lib\libsrtp-$(TARGET)$(LIBEXT) 43G7221_LIB = ..\..\third_party\lib\libg7221codec-$(TARGET)$(LIBEXT) 44BASECLASSES_LIB = ..\..\third_party\lib\libbaseclasses-$(TARGET)$(LIBEXT) 45YUV_LIB = ..\..\third_party\lib\libyuv-$(TARGET)$(LIBEXT) 46WEBRTC_LIB = ..\..\third_party\lib\libwebrtc-$(TARGET)$(LIBEXT) 47 48THIRD_PARTY_LIBS = $(GSM_LIB) $(ILBC_LIB) $(RESAMPLE_LIB) \ 49 $(SPEEX_LIB) $(SRTP_LIB) $(G7221_LIB) $(BASECLASSES_LIB) \ 50 $(YUV_LIB) $(WEBRTC_LIB) 51 52LIBS = $(PJSUA_LIB_LIB) $(PJSIP_UA_LIB) $(PJSIP_SIMPLE_LIB) \ 53 $(PJSIP_LIB) $(PJMEDIA_CODEC_LIB) $(PJMEDIA_AUDIODEV_LIB) \ 54 $(PJMEDIA_VIDEODEV_LIB) \ 55 $(PJMEDIA_LIB) $(PJNATH_LIB) $(PJLIB_UTIL_LIB) $(PJLIB_LIB) \ 56 $(THIRD_PARTY_LIBS) 57 58CFLAGS = $(TARGET_FLAGS) \ 59 $(BUILD_FLAGS) \ 60 -I..\..\pjsip\include \ 61 -I..\..\pjlib\include \ 62 -I..\..\pjlib-util\include \ 63 -I..\..\pjmedia\include \ 64 -I..\..\pjnath/include 65LDFLAGS = $(BUILD_FLAGS) $(LIBS) \ 66 Iphlpapi.lib ole32.lib user32.lib dsound.lib dxguid.lib netapi32.lib \ 67 mswsock.lib ws2_32.lib gdi32.lib advapi32.lib oleaut32.lib 68 69SRCDIR = ..\src\samples 70OBJDIR = .\output\samples-$(TARGET) 71BINDIR = ..\bin\samples\$(TARGET) 72 73 74SAMPLES = $(BINDIR)\auddemo.exe \ 75 $(BINDIR)\aectest.exe \ 76 $(BINDIR)\aviplay.exe \ 77 $(BINDIR)\clidemo.exe \ 78 $(BINDIR)\confsample.exe \ 79 $(BINDIR)\confbench.exe \ 80 $(BINDIR)\encdec.exe \ 81 $(BINDIR)\httpdemo.exe \ 82 $(BINDIR)\icedemo.exe \ 83 $(BINDIR)\jbsim.exe \ 84 $(BINDIR)\latency.exe \ 85 $(BINDIR)\level.exe \ 86 $(BINDIR)\mix.exe \ 87 $(BINDIR)\pcaputil.exe\ 88 $(BINDIR)\pjsip-perf.exe \ 89 $(BINDIR)\playfile.exe \ 90 $(BINDIR)\playsine.exe\ 91 $(BINDIR)\recfile.exe \ 92 $(BINDIR)\resampleplay.exe \ 93 $(BINDIR)\simpleua.exe \ 94 $(BINDIR)\simple_pjsua.exe \ 95 $(BINDIR)\sipecho.exe \ 96 $(BINDIR)\siprtp.exe \ 97 $(BINDIR)\sipstateless.exe \ 98 $(BINDIR)\stateful_proxy.exe \ 99 $(BINDIR)\stateless_proxy.exe \ 100 $(BINDIR)\stereotest.exe \ 101 $(BINDIR)\streamutil.exe \ 102 $(BINDIR)\strerror.exe \ 103 $(BINDIR)\tonegen.exe \ 104 $(BINDIR)\vid_streamutil.exe 105 106 107all: $(BINDIR) $(OBJDIR) $(SAMPLES) 108 109$(SAMPLES): $(SRCDIR)\$(@B).c $(LIBS) $(SRCDIR)\util.h Samples-vc.mak 110 cl -nologo -c $(SRCDIR)\$(@B).c /Fo$(OBJDIR)\$(@B).obj $(CFLAGS) 111 cl /nologo $(OBJDIR)\$(@B).obj /Fe$@ /Fm$(OBJDIR)\$(@B).map $(LDFLAGS) 112 @rem the following two lines is just for cleaning up the 'bin' directory 113 if exist $(BINDIR)\*.ilk del /Q $(BINDIR)\*.ilk 114 if exist $(BINDIR)\*.pdb del /Q $(BINDIR)\*.pdb 115 116$(BINDIR): 117 if not exist $(BINDIR) mkdir $(BINDIR) 118 119$(OBJDIR): 120 if not exist $(OBJDIR) mkdir $(OBJDIR) 121 122clean: 123 echo Cleaning up samples... 124 if exist $(BINDIR) del /Q $(BINDIR)\* 125 if exist $(BINDIR) rmdir $(BINDIR) 126 if exist $(OBJDIR) del /Q $(OBJDIR)\*.* 127 128