# # Copyright 2008 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Microsoft Windows namke file which builds the cmockery library and example # applications. # # To use this makefile... # Select Start->Run and run "cmd.exe" to open the command line. # Run "vsvars.bat" located in Microsoft Visual Studio's directory. # Run "nmake" to build the cmockery library and example applications. # Run "nmake clean" to delete all files built by this makefile. # Target directories. !IFNDEF EXECUTABLE_DIR EXECUTABLE_DIR=. !ENDIF # EXECUTABLE_DIR !IFNDEF LIBRARY_DIR LIBRARY_DIR=. !ENDIF # LIBRARY_DIR !IFNDEF INSTALL_DIR INSTALL_DIR=..\0_1_2 !ENDIF # INSTALL_DIR !IFNDEF OBJECT_DIR OBJECT_DIR=. !ENDIF # OBJECT_DIR # Tools !IFNDEF LIBTOOL LIBTOOL=lib.exe !ENDIF # LIBTOOL !IFNDEF LINK LINK=link.exe !ENDIF # LINK # Source directories. LIBRARY_SOURCE_DIRECTORY=..\src EXAMPLE_SOURCE_DIRECTORY=..\src\example # Compiler flags and commands. CC_COMMAND=$(CC) /nologo /c /D_WIN32_WINNT=0x501 \ /I$(LIBRARY_SOURCE_DIRECTORY)\google $(CFLAGS) $(**) /Fo$(@) CC_COMMAND_UNIT_TEST=$(CC_COMMAND) /DUNIT_TESTING=1 \ /I$(EXAMPLE_SOURCE_DIRECTORY) LIBLINKFLAGS=/NOLOGO # Library archiver flags and command. LIB_COMMAND=$(LIBTOOL) $(LIBLINKFLAGS) $(LIBFLAGS) $(**) /OUT:$(@) # Linker flags and command. LINK_COMMAND=$(LINK) $(LIBLINKFLAGS) /SUBSYSTEM:console \ libcmt.lib kernel32.lib /NODEFAULTLIB:libc.lib \ $(LFLAGS) $(**) /OUT:$(@) .SUFFIXES: .exe .lib .obj .c all: $(EXECUTABLE_DIR) $(LIBRARY_DIR) $(OBJECT_DIR) \ $(LIBRARY_DIR)\cmockery.lib examples $(EXECUTABLE_DIR): mkdir $@ !IF "$(LIBRARY_DIR)" != "$(EXECUTABLE_DIR)" $(LIBRARY_DIR): mkdir $* !ENDIF !IF "$(OBJECT_DIR)" != "$(LIBRARY_DIR)" && \ "$(OBJECT_DIR)" != "$(EXECUTABLE_DIR)" $(OBJECT_DIR): mkdir $@ !ENDIF examples: \ $(EXECUTABLE_DIR)\calculator.exe \ $(EXECUTABLE_DIR)\calculator_test.exe \ $(EXECUTABLE_DIR)\allocate_module_test.exe \ $(EXECUTABLE_DIR)\assert_macro_test.exe \ $(EXECUTABLE_DIR)\customer_database_test.exe \ $(EXECUTABLE_DIR)\key_value_test.exe \ $(EXECUTABLE_DIR)\product_database_test.exe \ $(EXECUTABLE_DIR)\run_tests.exe install: mkdir -p $(INSTALL_DIR)\lib mkdir -p $(INSTALL_DIR)\include\google cp -f $(LIBRARY_DIR)\cmockery.lib $(INSTALL_DIR)\lib cp -f $(LIBRARY_SOURCE_DIRECTORY)\google\cmockery.h $(INSTALL_DIR)\include\google clean: -cmd /c "@for %A in (\ $(LIBRARY_DIR)\cmockery.lib \ $(OBJECT_DIR)\cmockery.obj \ $(EXECUTABLE_DIR)\calculator.exe \ $(OBJECT_DIR)\calculator.obj \ $(EXECUTABLE_DIR)\calculator_test.exe \ $(OBJECT_DIR)\calculator_test.obj \ $(OBJECT_DIR)\calculator_test-calculator.obj \ $(EXECUTABLE_DIR)\allocate_module_test.exe \ $(OBJECT_DIR)\allocate_module_test.obj \ $(OBJECT_DIR)\allocate_module.obj \ $(EXECUTABLE_DIR)\assert_macro_test.exe \ $(OBJECT_DIR)\assert_macro_test.obj \ $(OBJECT_DIR)\assert_macro.obj \ $(EXECUTABLE_DIR)\customer_database_test.exe \ $(OBJECT_DIR)\customer_database_test.obj \ $(OBJECT_DIR)\customer_database.obj \ $(EXECUTABLE_DIR)\key_value_test.exe \ $(OBJECT_DIR)\key_value_test.obj \ $(OBJECT_DIR)\key_value.obj \ $(EXECUTABLE_DIR)\product_database_test.exe \ $(OBJECT_DIR)\product_database_test.obj \ $(OBJECT_DIR)\product_database.obj \ $(EXECUTABLE_DIR)\run_tests.exe \ $(OBJECT_DIR)\run_tests.obj) do @del %A 2>NUL" -rmdir $(EXECUTABLE_DIR) $(OBJECT_DIR) $(LIBRARY_DIR) 2>NUL # Rules for the cmockery library. $(LIBRARY_DIR)\cmockery.lib: $(OBJECT_DIR)\cmockery.obj $(OBJECT_DIR)\cmockery.obj: $(LIBRARY_SOURCE_DIRECTORY)\cmockery.c # Rules for the calculator application. $(EXECUTABLE_DIR)\calculator.exe: $(OBJECT_DIR)\calculator.obj $(OBJECT_DIR)\calculator.obj: $(EXAMPLE_SOURCE_DIRECTORY)\calculator.c $(CC_COMMAND) # Rules for the calculator test application. $(EXECUTABLE_DIR)\calculator_test.exe: \ $(OBJECT_DIR)\calculator_test.obj \ $(OBJECT_DIR)\calculator_test-calculator.obj \ $(LIBRARY_DIR)\cmockery.lib $(LINK_COMMAND) $(OBJECT_DIR)\calculator_test.obj: \ $(EXAMPLE_SOURCE_DIRECTORY)\calculator_test.c $(OBJECT_DIR)\calculator_test-calculator.obj: \ $(EXAMPLE_SOURCE_DIRECTORY)\calculator.c $(CC_COMMAND_UNIT_TEST) # Sample code applications. $(EXECUTABLE_DIR)\allocate_module_test.exe: \ $(OBJECT_DIR)\allocate_module_test.obj \ $(OBJECT_DIR)\allocate_module.obj \ $(LIBRARY_DIR)\cmockery.lib $(LINK_COMMAND) $(OBJECT_DIR)\allocate_module_test.obj: \ $(EXAMPLE_SOURCE_DIRECTORY)\allocate_module_test.c $(OBJECT_DIR)\allocate_module.obj: \ $(EXAMPLE_SOURCE_DIRECTORY)\allocate_module.c $(EXECUTABLE_DIR)\assert_macro_test.exe: \ $(OBJECT_DIR)\assert_macro_test.obj \ $(OBJECT_DIR)\assert_macro.obj \ $(LIBRARY_DIR)\cmockery.lib $(LINK_COMMAND) $(OBJECT_DIR)\assert_macro_test.obj: \ $(EXAMPLE_SOURCE_DIRECTORY)\assert_macro_test.c $(OBJECT_DIR)\assert_macro.obj: $(EXAMPLE_SOURCE_DIRECTORY)\assert_macro.c $(EXECUTABLE_DIR)\customer_database_test.exe: \ $(OBJECT_DIR)\customer_database_test.obj \ $(OBJECT_DIR)\customer_database.obj \ $(LIBRARY_DIR)\cmockery.lib $(LINK_COMMAND) $(OBJECT_DIR)\customer_database_test.obj: \ $(EXAMPLE_SOURCE_DIRECTORY)\customer_database_test.c $(OBJECT_DIR)\customer_database.obj: \ $(EXAMPLE_SOURCE_DIRECTORY)\customer_database.c $(EXECUTABLE_DIR)\key_value_test.exe: \ $(OBJECT_DIR)\key_value_test.obj \ $(OBJECT_DIR)\key_value.obj \ $(LIBRARY_DIR)\cmockery.lib $(LINK_COMMAND) $(OBJECT_DIR)\key_value_test.obj: $(EXAMPLE_SOURCE_DIRECTORY)\key_value_test.c $(OBJECT_DIR)\key_value.obj: $(EXAMPLE_SOURCE_DIRECTORY)\key_value.c $(EXECUTABLE_DIR)\product_database_test.exe: \ $(OBJECT_DIR)\product_database_test.obj \ $(OBJECT_DIR)\product_database.obj \ $(LIBRARY_DIR)\cmockery.lib $(LINK_COMMAND) $(OBJECT_DIR)\product_database_test.obj: \ $(EXAMPLE_SOURCE_DIRECTORY)\product_database_test.c $(OBJECT_DIR)\product_database.obj: \ $(EXAMPLE_SOURCE_DIRECTORY)\product_database.c $(EXECUTABLE_DIR)\run_tests.exe: \ $(OBJECT_DIR)\run_tests.obj $(LIBRARY_DIR)\cmockery.lib $(LINK_COMMAND) $(OBJECT_DIR)\run_tests.obj: $(EXAMPLE_SOURCE_DIRECTORY)\run_tests.c # Inference rules. {$(OBJECT_DIR)\}.obj{$(EXECUTABLE_DIR)\}.exe: $(LINK_COMMAND) {$(OBJECT_DIR)\}.obj{$(LIBRARY_DIR)\}.lib: $(LIB_COMMAND) {$(LIBRARY_SOURCE_DIRECTORY)\}.c{$(OBJECT_DIR)\}.obj: $(CC_COMMAND) {$(EXAMPLE_SOURCE_DIRECTORY)\}.c{$(OBJECT_DIR)\}.obj: $(CC_COMMAND_UNIT_TEST)