Heather Lee Wilson | bdd62c5 | 2013-12-28 15:12:39 -0800 | [diff] [blame^] | 1 | # |
| 2 | # Copyright 2008 Google Inc. |
| 3 | # |
| 4 | # Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | # you may not use this file except in compliance with the License. |
| 6 | # You may obtain a copy of the License at |
| 7 | # |
| 8 | # http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | # |
| 10 | # Unless required by applicable law or agreed to in writing, software |
| 11 | # distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | # See the License for the specific language governing permissions and |
| 14 | # limitations under the License. |
| 15 | # |
| 16 | # Microsoft Windows namke file which builds the cmockery library and example |
| 17 | # applications. |
| 18 | # |
| 19 | # To use this makefile... |
| 20 | # Select Start->Run and run "cmd.exe" to open the command line. |
| 21 | # Run "vsvars.bat" located in Microsoft Visual Studio's directory. |
| 22 | # Run "nmake" to build the cmockery library and example applications. |
| 23 | # Run "nmake clean" to delete all files built by this makefile. |
| 24 | |
| 25 | # Target directories. |
| 26 | !IFNDEF EXECUTABLE_DIR |
| 27 | EXECUTABLE_DIR=. |
| 28 | !ENDIF # EXECUTABLE_DIR |
| 29 | |
| 30 | !IFNDEF LIBRARY_DIR |
| 31 | LIBRARY_DIR=. |
| 32 | !ENDIF # LIBRARY_DIR |
| 33 | |
| 34 | !IFNDEF INSTALL_DIR |
| 35 | INSTALL_DIR=..\0_1_2 |
| 36 | !ENDIF # INSTALL_DIR |
| 37 | |
| 38 | !IFNDEF OBJECT_DIR |
| 39 | OBJECT_DIR=. |
| 40 | !ENDIF # OBJECT_DIR |
| 41 | |
| 42 | # Tools |
| 43 | !IFNDEF LIBTOOL |
| 44 | LIBTOOL=lib.exe |
| 45 | !ENDIF # LIBTOOL |
| 46 | |
| 47 | !IFNDEF LINK |
| 48 | LINK=link.exe |
| 49 | !ENDIF # LINK |
| 50 | |
| 51 | # Source directories. |
| 52 | LIBRARY_SOURCE_DIRECTORY=..\src |
| 53 | EXAMPLE_SOURCE_DIRECTORY=..\src\example |
| 54 | |
| 55 | # Compiler flags and commands. |
| 56 | CC_COMMAND=$(CC) /nologo /c /D_WIN32_WINNT=0x501 \ |
| 57 | /I$(LIBRARY_SOURCE_DIRECTORY)\google $(CFLAGS) $(**) /Fo$(@) |
| 58 | CC_COMMAND_UNIT_TEST=$(CC_COMMAND) /DUNIT_TESTING=1 \ |
| 59 | /I$(EXAMPLE_SOURCE_DIRECTORY) |
| 60 | |
| 61 | LIBLINKFLAGS=/NOLOGO |
| 62 | |
| 63 | # Library archiver flags and command. |
| 64 | LIB_COMMAND=$(LIBTOOL) $(LIBLINKFLAGS) $(LIBFLAGS) $(**) /OUT:$(@) |
| 65 | |
| 66 | # Linker flags and command. |
| 67 | LINK_COMMAND=$(LINK) $(LIBLINKFLAGS) /SUBSYSTEM:console \ |
| 68 | libcmt.lib kernel32.lib /NODEFAULTLIB:libc.lib \ |
| 69 | $(LFLAGS) $(**) /OUT:$(@) |
| 70 | |
| 71 | .SUFFIXES: .exe .lib .obj .c |
| 72 | |
| 73 | all: $(EXECUTABLE_DIR) $(LIBRARY_DIR) $(OBJECT_DIR) \ |
| 74 | $(LIBRARY_DIR)\cmockery.lib examples |
| 75 | |
| 76 | $(EXECUTABLE_DIR): |
| 77 | mkdir $@ |
| 78 | |
| 79 | !IF "$(LIBRARY_DIR)" != "$(EXECUTABLE_DIR)" |
| 80 | $(LIBRARY_DIR): |
| 81 | mkdir $* |
| 82 | !ENDIF |
| 83 | |
| 84 | !IF "$(OBJECT_DIR)" != "$(LIBRARY_DIR)" && \ |
| 85 | "$(OBJECT_DIR)" != "$(EXECUTABLE_DIR)" |
| 86 | $(OBJECT_DIR): |
| 87 | mkdir $@ |
| 88 | !ENDIF |
| 89 | |
| 90 | examples: \ |
| 91 | $(EXECUTABLE_DIR)\calculator.exe \ |
| 92 | $(EXECUTABLE_DIR)\calculator_test.exe \ |
| 93 | $(EXECUTABLE_DIR)\allocate_module_test.exe \ |
| 94 | $(EXECUTABLE_DIR)\assert_macro_test.exe \ |
| 95 | $(EXECUTABLE_DIR)\customer_database_test.exe \ |
| 96 | $(EXECUTABLE_DIR)\key_value_test.exe \ |
| 97 | $(EXECUTABLE_DIR)\product_database_test.exe \ |
| 98 | $(EXECUTABLE_DIR)\run_tests.exe |
| 99 | |
| 100 | install: |
| 101 | mkdir -p $(INSTALL_DIR)\lib |
| 102 | mkdir -p $(INSTALL_DIR)\include\google |
| 103 | cp -f $(LIBRARY_DIR)\cmockery.lib $(INSTALL_DIR)\lib |
| 104 | cp -f $(LIBRARY_SOURCE_DIRECTORY)\google\cmockery.h $(INSTALL_DIR)\include\google |
| 105 | |
| 106 | clean: |
| 107 | -cmd /c "@for %A in (\ |
| 108 | $(LIBRARY_DIR)\cmockery.lib \ |
| 109 | $(OBJECT_DIR)\cmockery.obj \ |
| 110 | $(EXECUTABLE_DIR)\calculator.exe \ |
| 111 | $(OBJECT_DIR)\calculator.obj \ |
| 112 | $(EXECUTABLE_DIR)\calculator_test.exe \ |
| 113 | $(OBJECT_DIR)\calculator_test.obj \ |
| 114 | $(OBJECT_DIR)\calculator_test-calculator.obj \ |
| 115 | $(EXECUTABLE_DIR)\allocate_module_test.exe \ |
| 116 | $(OBJECT_DIR)\allocate_module_test.obj \ |
| 117 | $(OBJECT_DIR)\allocate_module.obj \ |
| 118 | $(EXECUTABLE_DIR)\assert_macro_test.exe \ |
| 119 | $(OBJECT_DIR)\assert_macro_test.obj \ |
| 120 | $(OBJECT_DIR)\assert_macro.obj \ |
| 121 | $(EXECUTABLE_DIR)\customer_database_test.exe \ |
| 122 | $(OBJECT_DIR)\customer_database_test.obj \ |
| 123 | $(OBJECT_DIR)\customer_database.obj \ |
| 124 | $(EXECUTABLE_DIR)\key_value_test.exe \ |
| 125 | $(OBJECT_DIR)\key_value_test.obj \ |
| 126 | $(OBJECT_DIR)\key_value.obj \ |
| 127 | $(EXECUTABLE_DIR)\product_database_test.exe \ |
| 128 | $(OBJECT_DIR)\product_database_test.obj \ |
| 129 | $(OBJECT_DIR)\product_database.obj \ |
| 130 | $(EXECUTABLE_DIR)\run_tests.exe \ |
| 131 | $(OBJECT_DIR)\run_tests.obj) do @del %A 2>NUL" |
| 132 | -rmdir $(EXECUTABLE_DIR) $(OBJECT_DIR) $(LIBRARY_DIR) 2>NUL |
| 133 | |
| 134 | # Rules for the cmockery library. |
| 135 | $(LIBRARY_DIR)\cmockery.lib: $(OBJECT_DIR)\cmockery.obj |
| 136 | $(OBJECT_DIR)\cmockery.obj: $(LIBRARY_SOURCE_DIRECTORY)\cmockery.c |
| 137 | |
| 138 | # Rules for the calculator application. |
| 139 | $(EXECUTABLE_DIR)\calculator.exe: $(OBJECT_DIR)\calculator.obj |
| 140 | |
| 141 | $(OBJECT_DIR)\calculator.obj: $(EXAMPLE_SOURCE_DIRECTORY)\calculator.c |
| 142 | $(CC_COMMAND) |
| 143 | |
| 144 | # Rules for the calculator test application. |
| 145 | $(EXECUTABLE_DIR)\calculator_test.exe: \ |
| 146 | $(OBJECT_DIR)\calculator_test.obj \ |
| 147 | $(OBJECT_DIR)\calculator_test-calculator.obj \ |
| 148 | $(LIBRARY_DIR)\cmockery.lib |
| 149 | $(LINK_COMMAND) |
| 150 | |
| 151 | $(OBJECT_DIR)\calculator_test.obj: \ |
| 152 | $(EXAMPLE_SOURCE_DIRECTORY)\calculator_test.c |
| 153 | |
| 154 | $(OBJECT_DIR)\calculator_test-calculator.obj: \ |
| 155 | $(EXAMPLE_SOURCE_DIRECTORY)\calculator.c |
| 156 | $(CC_COMMAND_UNIT_TEST) |
| 157 | |
| 158 | # Sample code applications. |
| 159 | $(EXECUTABLE_DIR)\allocate_module_test.exe: \ |
| 160 | $(OBJECT_DIR)\allocate_module_test.obj \ |
| 161 | $(OBJECT_DIR)\allocate_module.obj \ |
| 162 | $(LIBRARY_DIR)\cmockery.lib |
| 163 | $(LINK_COMMAND) |
| 164 | |
| 165 | $(OBJECT_DIR)\allocate_module_test.obj: \ |
| 166 | $(EXAMPLE_SOURCE_DIRECTORY)\allocate_module_test.c |
| 167 | $(OBJECT_DIR)\allocate_module.obj: \ |
| 168 | $(EXAMPLE_SOURCE_DIRECTORY)\allocate_module.c |
| 169 | |
| 170 | $(EXECUTABLE_DIR)\assert_macro_test.exe: \ |
| 171 | $(OBJECT_DIR)\assert_macro_test.obj \ |
| 172 | $(OBJECT_DIR)\assert_macro.obj \ |
| 173 | $(LIBRARY_DIR)\cmockery.lib |
| 174 | $(LINK_COMMAND) |
| 175 | |
| 176 | $(OBJECT_DIR)\assert_macro_test.obj: \ |
| 177 | $(EXAMPLE_SOURCE_DIRECTORY)\assert_macro_test.c |
| 178 | $(OBJECT_DIR)\assert_macro.obj: $(EXAMPLE_SOURCE_DIRECTORY)\assert_macro.c |
| 179 | |
| 180 | $(EXECUTABLE_DIR)\customer_database_test.exe: \ |
| 181 | $(OBJECT_DIR)\customer_database_test.obj \ |
| 182 | $(OBJECT_DIR)\customer_database.obj \ |
| 183 | $(LIBRARY_DIR)\cmockery.lib |
| 184 | $(LINK_COMMAND) |
| 185 | |
| 186 | $(OBJECT_DIR)\customer_database_test.obj: \ |
| 187 | $(EXAMPLE_SOURCE_DIRECTORY)\customer_database_test.c |
| 188 | $(OBJECT_DIR)\customer_database.obj: \ |
| 189 | $(EXAMPLE_SOURCE_DIRECTORY)\customer_database.c |
| 190 | |
| 191 | $(EXECUTABLE_DIR)\key_value_test.exe: \ |
| 192 | $(OBJECT_DIR)\key_value_test.obj \ |
| 193 | $(OBJECT_DIR)\key_value.obj \ |
| 194 | $(LIBRARY_DIR)\cmockery.lib |
| 195 | $(LINK_COMMAND) |
| 196 | |
| 197 | $(OBJECT_DIR)\key_value_test.obj: $(EXAMPLE_SOURCE_DIRECTORY)\key_value_test.c |
| 198 | $(OBJECT_DIR)\key_value.obj: $(EXAMPLE_SOURCE_DIRECTORY)\key_value.c |
| 199 | |
| 200 | $(EXECUTABLE_DIR)\product_database_test.exe: \ |
| 201 | $(OBJECT_DIR)\product_database_test.obj \ |
| 202 | $(OBJECT_DIR)\product_database.obj \ |
| 203 | $(LIBRARY_DIR)\cmockery.lib |
| 204 | $(LINK_COMMAND) |
| 205 | |
| 206 | $(OBJECT_DIR)\product_database_test.obj: \ |
| 207 | $(EXAMPLE_SOURCE_DIRECTORY)\product_database_test.c |
| 208 | $(OBJECT_DIR)\product_database.obj: \ |
| 209 | $(EXAMPLE_SOURCE_DIRECTORY)\product_database.c |
| 210 | |
| 211 | $(EXECUTABLE_DIR)\run_tests.exe: \ |
| 212 | $(OBJECT_DIR)\run_tests.obj $(LIBRARY_DIR)\cmockery.lib |
| 213 | $(LINK_COMMAND) |
| 214 | |
| 215 | $(OBJECT_DIR)\run_tests.obj: $(EXAMPLE_SOURCE_DIRECTORY)\run_tests.c |
| 216 | |
| 217 | # Inference rules. |
| 218 | {$(OBJECT_DIR)\}.obj{$(EXECUTABLE_DIR)\}.exe: |
| 219 | $(LINK_COMMAND) |
| 220 | |
| 221 | {$(OBJECT_DIR)\}.obj{$(LIBRARY_DIR)\}.lib: |
| 222 | $(LIB_COMMAND) |
| 223 | |
| 224 | {$(LIBRARY_SOURCE_DIRECTORY)\}.c{$(OBJECT_DIR)\}.obj: |
| 225 | $(CC_COMMAND) |
| 226 | |
| 227 | {$(EXAMPLE_SOURCE_DIRECTORY)\}.c{$(OBJECT_DIR)\}.obj: |
| 228 | $(CC_COMMAND_UNIT_TEST) |