blob: c8079d1bb83d96fcde82f0adfd6441fe5716854a [file] [log] [blame]
#
# 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)