diff --git a/makefile.vs b/makefile.vs new file mode 100644 index 0000000..7588522 --- /dev/null +++ b/makefile.vs @@ -0,0 +1,82 @@ +# nmake "NCODEC1=1" "NCODEC2=1" /f makefile.msc +# or +# nmake "AVX2=1" /f makefile.msc + +.SUFFIXES: .c .obj .dllobj + +CC = cl /nologo +LD = link /nologo +AR = lib /nologo +CFLAGS = /MD /O2 -I. +LDFLAGS = + +LIB_LIB = libic.lib +LIB_DLL = ic.dll +LIB_IMP = ic.lib + +OBJS = bitpack.obj bitutil.obj fp.obj transpose.obj vp4c.obj vp4d.obj vsimple.obj bitunpack.obj vint.obj + +!IF "$(AVX2)" == "1" +OBJS = $(OBJS) transpose_avx2.obj +DEFS = $(DEFS) /D__AVX2__ +!endif + +!if "$(NSIMD)" == "1" +OBJS = $(OBJS) transpose_sse.obj +DEFS = $(DEFS) /DNSIMD +NCODEC1=1 +NCODEC2=1 +!else +DEFS = $(DEFS) /D__SSE2__ /D__SSSE3__ +CFLAGS = $(CFLAGS) /DUSE_SSE +!endif + +!if "$(NCODEC1)" == "1" +DEFS = $(DEFS) /DNCODEC1 +!endif + +!IF "$(NCODEC2)" == "1" +DEFS = $(DEFS) /DNCODEC2 +!endif + +!IF "($(BLOSC)" == "1" +DEFS = $(DEFS) /DBLOSC +!endif + +DLL_OBJS = $(OBJS:.obj=.dllobj) + +all: $(LIB_LIB) icbench.exe + +#$(LIB_DLL) $(LIB_IMP) + +transpose.obj: transpose.c + $(CC) /O2 $(CFLAGS) -c transpose.c /Fotranspose.obj + +transpose_sse.obj: transpose.c + $(CC) /O2 $(CFLAGS) /DSSE2_ON /D__SSE2__ /arch:SSE2 /c transpose.c /Fotranspose_sse.obj + +transpose_avx2.obj: transpose.c + $(CC) /O2 $(CFLAGS) /DAVX2_ON /D__AVX2__ /arch:avx2 /c transpose.c /Fotranspose_avx2.obj + +.c.obj: + $(CC) -c /Fo$@ /O2 $(CFLAGS) $(DEFS) $** + +.cc.obj: + $(CC) -c /Fo$@ /O2 $(CFLAGS) $(DEFS) $** + +.c.dllobj: + $(CC) -c /Fo$@ /O2 $(CFLAGS) $(DEFS) /DLIB_DLL $** + +$(LIB_LIB): $(OBJS) + $(AR) $(ARFLAGS) -out:$@ $(OBJS) + +$(LIB_DLL): $(DLL_OBJS) + $(LD) $(LDFLAGS) -out:$@ -dll -implib:$(LIB_IMP) $(DLL_OBJS) + +$(LIB_IMP): $(LIB_DLL) + +icbench.exe: icbench.obj vs/getopt.obj plugins.obj eliasfano.obj vsimple.obj transpose.obj transpose_sse.obj $(LIB_LIB) + $(LD) $(LDFLAGS) -out:$@ $** + +clean: + -del *.dll *.exe *.exp *.obj *.dllobj *.lib *.manifest 2>nul