1# 2# Makefile for Win32 using Microsoft Visual Studio 2013 3# 4# To use from the command line: 5# 1. From the Start Menu "Visual Studio 2013" -> "Visual Studio Tools" -> "VS2013 x86 Native Tools Command Prompt" 6# 2. In the command prompt that opens goto the directory containing the sources 7# 3. Execute: nmake -f mk_mvc.mak 8# 9 10OBJEXT = obj 11include source.mak 12 13COMMON_DEFINES = 14DEFINES = -DWIN32 $(COMMON_DEFINES) -DHAVE_REPOINFO_H -DHAVE_PACKCC -DREADTAGS_DSL 15INCLUDES = -I. -Ignulib -Imain -Iparsers -Ilibreadtags -Idsl 16OPT = /O2 /WX 17PACKCC = packcc.exe 18GNULIB_OBJS = $(MVC_GNULIB_SRCS:.c=.obj) 19WIN32_OBJS = $(WIN32_SRCS:.c=.obj) 20PEG_OBJS = $(PEG_SRCS:.c=.obj) 21PACKCC_OBJ = $(PACKCC_SRC:.c=.obj) 22RES_OBJ = win32/ctags.res 23EXTRA_OBJS = $(GNULIB_OBJS) $(WIN32_OBJS) $(PEG_OBJS) $(RES_OBJ) 24ALL_OBJS = $(ALL_SRCS:.c=.obj) $(EXTRA_OBJS) 25ALL_LIB_OBJS = $(ALL_LIB_SRCS:.c=.obj) $(EXTRA_OBJS) 26READTAGS_OBJS = $(READTAGS_SRCS:.c=.obj) 27UTIL_OBJS = $(UTIL_SRCS:.c=.obj) 28READTAGS_DSL_OBJS = $(READTAGS_DSL_SRCS:.c=.obj) 29OPTSCRIPT_OBJS = $(OPTSCRIPT_SRCS:.c=.obj) 30 31!if "$(WITH_ICONV)" == "yes" 32DEFINES = $(DEFINES) -DHAVE_ICONV 33LIBS = $(LIBS) /libpath:$(ICONV_DIR)/lib iconv.lib 34INCLUDES = $(INCLUDES) -I$(ICONV_DIR)/include 35!endif 36 37!ifdef DEBUG 38DEFINES = $(DEFINES) -DDEBUG 39PDB = yes 40!endif 41 42!ifdef PDB 43OPT = $(OPT) /Zi 44PDBFLAG = /debug 45!else 46PDBFLAG = 47!endif 48 49# Generate repoinfo.h. 50!if [win32\gen-repoinfo.bat $(REPOINFO_HEADS)] 51!endif 52 53.SUFFIXES: .peg 54 55{main}.c{main}.obj:: 56 $(CC) $(OPT) $(DEFINES) $(INCLUDES) /Fomain\ /c $< 57{optlib}.c{optlib}.obj:: 58 $(CC) $(OPT) $(DEFINES) $(INCLUDES) /Fooptlib\ /c $< 59{parsers}.c{parsers}.obj:: 60 $(CC) $(OPT) $(DEFINES) $(INCLUDES) /Foparsers\ /c $< 61{parsers\cxx}.c{parsers\cxx}.obj:: 62 $(CC) $(OPT) $(DEFINES) $(INCLUDES) /Foparsers\cxx\ /c $< 63{extra-cmds}.c{extra-cmds}.obj:: 64 $(CC) $(OPT) $(DEFINES) $(INCLUDES) /Foextra-cmds\ /c $< 65{libreadtags}.c{libreadtags}.obj:: 66 $(CC) $(OPT) $(DEFINES) $(INCLUDES) /Folibreadtags\ /c $< 67{dsl}.c{dsl}.obj:: 68 $(CC) $(OPT) $(DEFINES) $(INCLUDES) /Fodsl\ /c $< 69{win32\mkstemp}.c{win32\mkstemp}.obj:: 70 $(CC) $(OPT) $(DEFINES) $(INCLUDES) /Fowin32\mkstemp\ /c $< 71{peg}.peg{peg}.c:: 72 $(PACKCC) $< 73{peg}.c{peg}.obj:: 74 $(CC) $(OPT) $(DEFINES) $(INCLUDES) /Fopeg\ /c $< 75{gnulib}.c{gnulib}.obj:: 76 $(CC) $(OPT) $(DEFINES) $(INCLUDES) /Fognulib\ /c $< 77{gnulib\malloc}.c{gnulib\malloc}.obj:: 78 $(CC) $(OPT) $(DEFINES) $(INCLUDES) /Fognulib\malloc\ /c $< 79 80all: copy_gnulib_heads $(PACKCC) ctags.exe readtags.exe optscript.exe 81 82ctags: ctags.exe 83 84ctags.exe: $(ALL_OBJS) $(ALL_HEADS) $(PEG_HEADS) $(PEG_EXTRA_HEADS) $(MVC_GNULIB_HEADS) $(WIN32_HEADS) $(REPOINFO_HEADS) 85 $(CC) $(OPT) /Fe$@ $(ALL_OBJS) /link setargv.obj $(LIBS) $(PDBFLAG) 86 87readtags.exe: $(READTAGS_OBJS) $(READTAGS_HEADS) $(UTIL_OBJS) $(UTIL_HEADS) $(READTAGS_DSL_OBJS) $(READTAGS_DSL_HEADS) $(GNULIB_OBJS) $(MVC_GNULIB_HEADS) $(WIN32_HEADS) $(WIN32_OBJS) 88 $(CC) $(OPT) /Fe$@ $(READTAGS_OBJS) $(READTAGS_DSL_OBJS) $(UTIL_OBJS) $(GNULIB_OBJS) $(WIN32_OBJS) /link setargv.obj $(PDBFLAG) 89 90optscript.exe: $(ALL_LIB_OBJS) $(OPTSCRIPT_OBJS) $(ALL_LIB_HEADS) $(OPTSCRIPT_DSL_HEADS) $(WIN32_HEADS) 91 $(CC) $(OPT) /Fe$@ $(ALL_LIB_OBJS) $(OPTSCRIPT_OBJS) /link setargv.obj $(LIBS) 92 93$(PACKCC_OBJ): $(PACKCC_SRC) 94 $(CC) /c $(OPT) /Fo$@ $(INCLUDES) $(COMMON_DEFINES) $(PACKCC_SRC) 95 96$(PACKCC): $(PACKCC_OBJ) 97 $(CC) $(OPT) /Fe$@ $(PACKCC_OBJ) /link setargv.obj $(PDBFLAG) 98 99main\repoinfo.obj: main\repoinfo.c main\repoinfo.h 100 101peg\varlink.c peg\varlink.h: peg\varlink.peg $(PACKCC) 102peg\kotlin.c peg\kotlin.h: peg\kotlin.peg $(PACKCC) 103peg\thrift.c peg\thrift.h: peg\thrift.peg $(PACKCC) 104peg\elm.c peg\elm.h: peg\elm.peg $(PACKCC) 105 106$(RES_OBJ): win32/ctags.rc win32/ctags.exe.manifest win32/resource.h 107 $(RC) /nologo /l 0x409 /Fo$@ $*.rc 108 109copy_gnulib_heads: 110 copy win32\config_mvc.h config.h 111 copy win32\gnulib_h\langinfo.h gnulib 112 copy win32\gnulib_h\fnmatch.h gnulib 113 114clean: 115 - del *.obj main\*.obj optlib\*.obj parsers\*.obj parsers\cxx\*.obj gnulib\*.obj misc\packcc\*.obj peg\*.obj extra-cmds\*.obj libreadtags\*.obj dsl\*.obj win32\mkstemp\*.obj win32\*.res main\repoinfo.h 116 - del ctags.exe readtags.exe optscript.exe $(PACKCC) 117 - del tags 118 - del config.h gnulib\langinfo.h gnulib\fnmatch.h gnulib\*.obj gnulib\malloc\*.obj 119