1## 2## nmake file - to build in compiler console window for 3## microsoft compiler (cl) or compilers (like intel's icl) 4## which try to be mostly compatible (but better) 5## 6## this nmake file builds a static utilib 7## 8## it expects to find a writeable utilib/src source directory at TOP 9## 10## (nmake libutilib.dll will make a shared library) 11## 12TOP=..\.. 13 14UTILIB=$(TOP)\src 15STUDIES=$(TOP)\test\studies 16 17INCLUDE_DIRS= /I . /I $(UTILIB) 18 19RANLIB_LOC=$(UTILIB)\libs 20ADT_LOC=$(UTILIB)\libs 21MATH_LOC=$(UTILIB)\libs 22CORE_LOC=$(UTILIB)\libs 23IO_LOC=$(UTILIB)\libs 24SYS_LOC=$(UTILIB)\libs 25TYPEMNGR_LOC=$(UTILIB)\libs 26 27CPPFLAGS=$(CPPFLAGS) /wd4244 /wd4996 /wd4530 /wd4552 # suppress warnings 28 29all: libutilib.lib libutilib.dll 30 31check: test_utilib.exe 32 33help: 34 @echo "nmake all" will build the library 35 @echo "nmake clean" will delete all generated files 36 @echo "nmake check" will build and run an executable 37 @echo "nmake /?" lists all nmake options 38 39RANLIB_C_SRC = \ 40 $(RANLIB_LOC)\gencau.c \ 41 $(RANLIB_LOC)\scauchy.c \ 42 $(RANLIB_LOC)\genbet.c \ 43 $(RANLIB_LOC)\genchi.c \ 44 $(RANLIB_LOC)\genexp.c \ 45 $(RANLIB_LOC)\genf.c \ 46 $(RANLIB_LOC)\gengam.c \ 47 $(RANLIB_LOC)\genmn.c \ 48 $(RANLIB_LOC)\gennch.c \ 49 $(RANLIB_LOC)\gennf.c \ 50 $(RANLIB_LOC)\gennor.c \ 51 $(RANLIB_LOC)\genunf.c \ 52 $(RANLIB_LOC)\ignbin.c \ 53 $(RANLIB_LOC)\ignpoi.c \ 54 $(RANLIB_LOC)\sexpo.c \ 55 $(RANLIB_LOC)\sgamma.c \ 56 $(RANLIB_LOC)\snorm.c \ 57 $(RANLIB_LOC)\genprm.c \ 58 $(RANLIB_LOC)\global_rng.c \ 59 $(RANLIB_LOC)\ParkMiller.c 60 61RANLIB_CPP_SRC = \ 62 $(RANLIB_LOC)\globals.cpp \ 63 $(RANLIB_LOC)\LCG.cpp \ 64 $(RANLIB_LOC)\PM_LCG.cpp 65 66RANLIB_OBJ = $(RANLIB_CPP_SRC:.cpp=.obj) $(RANLIB_C_SRC:.c=.obj) 67RANLIB_SRC= $(RANLIB_C_SRC) $(RANLIB_CPP_SRC) 68 69ADT_CPP_SRC = \ 70 $(ADT_LOC)\CharString.cpp \ 71 $(ADT_LOC)\BitArray.cpp \ 72 $(ADT_LOC)\MixedIntVars.cpp \ 73 $(ADT_LOC)\lookupa.cpp \ 74 $(ADT_LOC)\hash_fn.cpp \ 75 $(ADT_LOC)\Factory.cpp \ 76 $(ADT_LOC)\Ereal.cpp 77 78ADT_OBJ = $(ADT_CPP_SRC:.cpp=.obj) 79ADT_SRC= $(ADT_CPP_SRC) 80 81MATH_C_SRC = $(MATH_LOC)\cov.c $(MATH_LOC)\math.c 82 83MATH_CPP_SRC = \ 84 $(MATH_LOC)\median.cpp \ 85 $(MATH_LOC)\cholesky.cpp \ 86 $(MATH_LOC)\math_basic.cpp 87 88MATH_OBJ = $(MATH_CPP_SRC:.cpp=.obj) $(MATH_C_SRC:.c=.obj) 89MATH_SRC= $(MATH_C_SRC) $(MATH_CPP_SRC) 90 91SYS_C_SRC = $(SYS_LOC)\misc.c 92 93SYS_CPP_SRC = $(SYS_LOC)\seconds.cpp $(SYS_LOC)\memdebug.cpp 94 95SYS_OBJ = $(SYS_CPP_SRC:.cpp=.obj) $(SYS_C_SRC:.c=.obj) 96SYS_SRC= $(SYS_C_SRC) $(SYS_CPP_SRC) 97 98CORE_CPP_SRC = \ 99 $(CORE_LOC)\CommonIO.cpp \ 100 $(CORE_LOC)\exception_mngr.cpp 101 102CORE_OBJ = $(CORE_CPP_SRC:.cpp=.obj) 103CORE_SRC = $(CORE_SRC) 104 105IO_CPP_SRC = \ 106 $(IO_LOC)\comments.cpp \ 107 $(IO_LOC)\mpiUtil.cpp \ 108 $(IO_LOC)\logEvent.cpp \ 109 $(IO_LOC)\nicePrint.cpp \ 110 $(IO_LOC)\OptionParser.cpp \ 111 $(IO_LOC)\TinyXML_helper.cpp \ 112 $(IO_LOC)\Property.cpp \ 113 $(IO_LOC)\PropertyDict.cpp \ 114 $(IO_LOC)\Parameter.cpp \ 115 $(IO_LOC)\ParameterSet.cpp \ 116 $(IO_LOC)\ParameterList.cpp 117 118IO_OBJ = $(IO_CPP_SRC:.cpp=.obj) 119IO_SRC = $(IO_CPP_SRC) 120 121TYPEMNGR_CPP_SRC = \ 122 $(TYPEMNGR_LOC)\Any.cpp \ 123 $(TYPEMNGR_LOC)\PackBuf.cpp \ 124 $(TYPEMNGR_LOC)\Serialize.cpp \ 125 $(TYPEMNGR_LOC)\SerialStream.cpp \ 126 $(TYPEMNGR_LOC)\BinarySerialStream.cpp \ 127 $(TYPEMNGR_LOC)\fSerialStream.cpp \ 128 $(TYPEMNGR_LOC)\sSerialStream.cpp \ 129 $(TYPEMNGR_LOC)\MPIStream.cpp \ 130 $(TYPEMNGR_LOC)\XMLSerialStream.cpp \ 131 $(TYPEMNGR_LOC)\fXMLSerialStream.cpp \ 132 $(TYPEMNGR_LOC)\TypeManager.cpp 133 134TYPEMNGR_OBJ = $(TYPEMNGR_CPP_SRC:.cpp=.obj) 135TYPEMNGR_SRC = $(TYPEMNGR_CPP_SRC) 136 137SOURCE_FILES= $(RANLIB_SRC) $(ADT_SRC) $(MATH_SRC) $(SYS_SRC) $(IO_SRC) $(CORE_SRC) $(TYPEMNGR_SRC) 138 139OBJ_FILES= $(RANLIB_OBJ) $(ADT_OBJ) $(MATH_OBJ) $(SYS_OBJ) $(IO_OBJ) $(CORE_OBJ) $(TYPEMNGR_OBJ) 140 141libutilib.lib: static/libutilib.lib 142 143libutilib.dll: shared/libutilib.dll 144 145static/libutilib.lib: headers $(OBJ_FILES) 146 @if not exist static mkdir static 147 lib /out:static/libutilib.lib /verbose $(OBJ_FILES) 148 149shared/libutilib.dll: headers $(OBJ_FILES) 150 @if not exist shared mkdir shared 151 link /dll /out:shared/libutilib.dll /implib:shared/libutilib.lib $(OBJ_FILES) 152 153headers: 154 @if not exist utilib mkdir utilib 155 @copy utilib_config.txt utilib_config.h 156 157{$(RANLIB_LOC)}.cpp.{$(RANLIB_LOC)}.obj: 158 $(CPP) $(CPPFLAGS) $(INCLUDE_DIRS) /Fo$@ /c $*.cpp 159 160{$(RANLIB_LOC)}.c.{$(RANLIB_LOC)}.obj: 161 $(CC) $(CFLAGS) $(INCLUDE_DIRS) /Fo$@ /c $*.c 162 163{$(ADT_LOC)}.cpp.{$(ADT_LOC)}.obj: 164 $(CPP) $(CPPFLAGS) $(INCLUDE_DIRS) /Fo$@ /c $*.cpp 165 166{$(MATH_LOC)}.cpp.{$(MATH_LOC)}.obj: 167 $(CPP) $(CPPFLAGS) $(INCLUDE_DIRS) /Fo$@ /c $*.cpp 168 169{$(MATH_LOC)}.c.{$(MATH_LOC)}.obj: 170 $(CC) $(CFLAGS) $(INCLUDE_DIRS) /Fo$@ /c $*.c 171 172{$(SYS_LOC)}.cpp.{$(SYS_LOC)}.obj: 173 $(CPP) $(CPPFLAGS) $(INCLUDE_DIRS) /Fo$@ /c $*.cpp 174 175{$(SYS_LOC)}.c.{$(SYS_LOC)}.obj: 176 $(CC) $(CFLAGS) $(INCLUDE_DIRS) /Fo$@ /c $*.c 177 178{$(IO_LOC)}.cpp.{$(IO_LOC)}.obj: 179 $(CPP) $(CPPFLAGS) $(INCLUDE_DIRS) /Fo$@ /c $*.cpp 180 181{$(CORE_LOC)}.cpp.{$(CORE_LOC)}.obj: 182 $(CPP) $(CPPFLAGS) $(INCLUDE_DIRS) /Fo$@ /c $*.cpp 183 184{$(TYPEMNGR_LOC)}.cpp.{$(TYPEMNGR_LOC)}.obj: 185 $(CPP) $(CPPFLAGS) $(INCLUDE_DIRS) /Fo$@ /c $*.cpp 186 187clean: 188 @-del /Q $(OBJ_FILES) 189 @-del /Q static\*.lib 190 @-rmdir static 191 @-del /Q *.lib 192 @-del /Q *.exe 193 @-del /Q *.obj 194 @-del /Q *.temp 195 @-del /Q *.tmp 196 @-del /Q iotest.* 197 @-del /Q testfile 198 @-del /Q utilib\*.h 199 @-rmdir utilib 200 201TEST_UTILIB_SRC= \ 202 $(STUDIES)\olist.cpp \ 203 $(STUDIES)\sort_test.cpp \ 204 $(STUDIES)\array.cpp \ 205 $(STUDIES)\bitarray.cpp \ 206 $(STUDIES)\multibitarray.cpp \ 207 $(STUDIES)\timing.cpp \ 208 $(STUDIES)\tuple.cpp \ 209 $(STUDIES)\iotest.cpp \ 210 $(STUDIES)\rngtest.cpp \ 211 $(STUDIES)\triang.cpp \ 212 $(STUDIES)\vectest.cpp \ 213 $(STUDIES)\stltest.cpp \ 214 $(STUDIES)\hash.cpp \ 215 $(STUDIES)\splay.cpp \ 216 $(STUDIES)\factory.cpp \ 217 $(STUDIES)\ereal.cpp \ 218 $(STUDIES)\heap.cpp \ 219 $(STUDIES)\calloc.cpp \ 220 $(STUDIES)\malloc.cpp \ 221 $(STUDIES)\pvector.cpp \ 222 $(STUDIES)\exception_test.cpp \ 223 $(STUDIES)\class_options.cpp \ 224 $(STUDIES)\option_parser.cpp \ 225 $(STUDIES)\sharedval.cpp \ 226 $(STUDIES)\any.cpp \ 227 $(STUDIES)\smartptr.cpp \ 228 $(STUDIES)\commonio.cpp \ 229 $(STUDIES)\stringtest.cpp \ 230 $(STUDIES)\listtest.cpp \ 231 $(STUDIES)\iotest_debug.cpp \ 232 $(STUDIES)\commonio_debug.cpp \ 233 $(STUDIES)\packbuf.cpp \ 234 $(STUDIES)\lphash.cpp \ 235 $(STUDIES)\hashedset.cpp \ 236 $(STUDIES)\matrix.cpp \ 237 $(STUDIES)\namespace.cpp \ 238 $(STUDIES)\qlist.cpp \ 239 $(STUDIES)\typeManager.cpp \ 240 $(STUDIES)\math.cpp \ 241 $(STUDIES)\sregistry.cpp \ 242 $(STUDIES)\paramTest.cpp \ 243 $(STUDIES)\serialize.cpp \ 244 $(STUDIES)\sserialstream.cpp \ 245 $(STUDIES)\fserialstream.cpp \ 246 $(STUDIES)\fserialstream-ref.cpp \ 247 $(STUDIES)\fxmlserialstream.cpp \ 248 $(STUDIES)\tests.cpp 249 250TEST_UTILIB_OBJ = $(TEST_UTILIB_SRC:.cpp=.obj) 251 252test_utilib.exe: headers $(TEST_UTILIB_OBJ) libutilib.lib 253 $(CPP) /Fe$@ $(TEST_UTILIB_OBJ) static/libutilib.lib 254 test_utilib.exe 255 @if errorlevel 1 echo "FAIL" 256 @if not errorlevel 1 echo "PASS" 257 258{$(STUDIES)}.cpp.{$(STUDIES)}.obj: 259 $(CPP) $(CPPFLAGS) $(INCLUDE_DIRS) /Fo$@ /c $*.cpp 260