1610969f87667a485b9207086b3ff475bab909f95Evgeniy StepanovSVN_ROOT=.. 2610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovinclude ../common.mk 3610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 4610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovifeq ($(OS), darwin) 5610969f87667a485b9207086b3ff475bab909f95Evgeniy StepanovDEFINES=-DOS_$(OS) -DARCH_$(ARCH) -DOS_$(DARWIN_VERSION) 6610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovelse 7610969f87667a485b9207086b3ff475bab909f95Evgeniy StepanovDEFINES=-DOS_$(OS) -DARCH_$(ARCH) 8610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovendif 9610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 10610969f87667a485b9207086b3ff475bab909f95Evgeniy StepanovCFLAGS+=$(OPTFLAGS) $(ARCHFLAGS) $(OS_CFLAGS) $(DEFINES) $(EXTRA_CFLAGS) 11610969f87667a485b9207086b3ff475bab909f95Evgeniy StepanovCXXFLAGS+=$(OPTFLAGS) $(ARCHFLAGS) $(OS_CXXFLAGS) $(DEFINES) $(EXTRA_CXXFLAGS) 12610969f87667a485b9207086b3ff475bab909f95Evgeniy StepanovOPT_CXXFLAGS=$(CXXFLAGS) -O2 -g $(ARCHFLAGS) $(OS_CXXFLAGS) $(DEFINES) $(EXTRA_CXXFLAGS) -foptimize-sibling-calls 13610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovifeq ($(OS), darwin) 14610969f87667a485b9207086b3ff475bab909f95Evgeniy StepanovLDFLAGS=$(LDOPT) $(ARCHFLAGS) $(STATICFLAGS) -framework Foundation 15610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovelse 16610969f87667a485b9207086b3ff475bab909f95Evgeniy StepanovLDFLAGS=$(LDOPT) $(ARCHFLAGS) $(STATICFLAGS) 17610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovendif 18610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 19610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov# OS = linux, darwin, windows 20610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov# ARCH= x86, amd64 21610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov# OX = O0, O1, ... 22610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov# S= <empty>, -static 23610969f87667a485b9207086b3ff475bab909f95Evgeniy StepanovBUILD=${OS}-${ARCH}-${OX}${S}${EXTRA_BUILD_SUFFIX} 24610969f87667a485b9207086b3ff475bab909f95Evgeniy StepanovBIN=bin/ 25610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 26610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovifeq ($(OS), linux) 27610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov OS_CXXFLAGS=-Wall -Werror -Wno-sign-compare -Wshadow -Wno-unused-function -std=c++0x 28610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov OS_CFLAGS=-Wall -Werror -Wno-sign-compare -Wshadow -Wno-unused-function -std=c89 29610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov LIBS=-lpthread -lrt 30610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovelse ifeq ($(OS), darwin) 31610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov OS_CXXFLAGS=-Wall -Werror -Wno-sign-compare -Wshadow -Wno-unused-function 32610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov OS_CFLAGS=-Wall -Werror -Wno-sign-compare -Wshadow -Wno-unused-function -std=c89 33610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov LIBS=-lpthread 34610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovelse ifeq ($(OS), windows) 35610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov OS_CXXFLAGS=/EHs- /EHa- /wd4530 /D_CRT_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /nologo /Gy /D "WIN32" 36610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov OS_CFLAGS=/EHs- /EHa- /wd4530 /D_CRT_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 /nologo /Gy /D "WIN32" 37610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovelse 38610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov OS=UNKNOWN_OS 39610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovendif 40610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 41610969f87667a485b9207086b3ff475bab909f95Evgeniy StepanovOUTPUT_TESTS_LIST=$(patsubst output_tests/%.cc,%,$(wildcard output_tests/*.cc)) 42610969f87667a485b9207086b3ff475bab909f95Evgeniy StepanovOUTPUT_TESTS_OBJS=$(patsubst %,$(BIN)output_tests/%-$(BUILD)$(EXE),$(OUTPUT_TESTS_LIST)) 43610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 44610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovall: $(BIN)racecheck_unittest-$(BUILD)$(EXE) $(BIN)demo_tests-$(BUILD)$(EXE) \ 45610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov $(BIN)bigtest-$(BUILD)$(EXE) output_tests \ 46610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov $(BIN)memory_unittest-$(BUILD)$(EXE) 47610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovifeq ($(OS), linux) 48610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovall: $(BIN)deadlock_unittest-$(BUILD)$(EXE) 49610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovendif 50610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 51610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovoutput_tests: bin/output_tests $(OUTPUT_TESTS_OBJS) 52610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 53610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovrun_output_tests: output_tests 54610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov BUILD=$(BUILD) BIN=$(BIN) ./run_output_tests.sh $(OUTPUT_TESTS_LIST) 55610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 56610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovw: 57610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov $(MAKE) all OS=windows ARCH=x86 58610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovm: m32 m64 59610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovm32: 60610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov $(MAKE) all OS=darwin ARCH=x86 61610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovm64: 62610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov $(MAKE) all OS=darwin ARCH=amd64 63610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovl: l32 l64 64610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovl32: 65610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov $(MAKE) all OS=linux ARCH=x86 66610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovl64: 67610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov $(MAKE) all OS=linux ARCH=amd64 68610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 69610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovbin: 70610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov mkdir -p bin 71610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovbin/output_tests: 72610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov mkdir -p bin/output_tests 73610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 74610969f87667a485b9207086b3ff475bab909f95Evgeniy StepanovDYNAMIC_ANNOTATIONS_DIR=../dynamic_annotations 75610969f87667a485b9207086b3ff475bab909f95Evgeniy StepanovDYNAMIC_ANNOTATIONS_H=${DYNAMIC_ANNOTATIONS_DIR}/dynamic_annotations.h 76610969f87667a485b9207086b3ff475bab909f95Evgeniy StepanovDYNAMIC_ANNOTATIONS_C=${DYNAMIC_ANNOTATIONS_DIR}/dynamic_annotations.c 77610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovifndef OMIT_DYNAMIC_ANNOTATIONS_IMPL 78610969f87667a485b9207086b3ff475bab909f95Evgeniy StepanovDYNAMIC_ANNOTATIONS_O=$(BIN)dynamic_annotations-$(BUILD).$(OBJ) 79610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovelse 80610969f87667a485b9207086b3ff475bab909f95Evgeniy StepanovDYNAMIC_ANNOTATIONS_O= 81610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovendif 82610969f87667a485b9207086b3ff475bab909f95Evgeniy StepanovDYNAMIC_ANNOTATIONS=${DYNAMIC_ANNOTATIONS_C} ${DYNAMIC_ANNOTATIONS_H} 83610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 84610969f87667a485b9207086b3ff475bab909f95Evgeniy StepanovTEST_UTILS_O=$(BIN)test_utils-$(BUILD).$(OBJ) 85610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 86610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov$(BIN)racecheck_unittest-$(BUILD)$(EXE): $(BIN)racecheck_unittest-$(BUILD).$(OBJ) \ 87610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov $(BIN)old_test_suite-$(BUILD).$(OBJ) \ 88610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov $(BIN)opt_tests-$(BUILD).$(OBJ) \ 89610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov $(BIN)atomicity_tests-$(BUILD).$(OBJ) \ 90610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov $(TEST_UTILS_O) $(GTEST_LIB) ${DYNAMIC_ANNOTATIONS_O} | bin 91610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov ${LD} ${LDFLAGS} $^ $(LIBS) $(LINKO)$@ 92610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 93610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovifeq ($(OS), windows) 94610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov$(BIN)racecheck_unittest-$(BUILD)$(EXE): $(BIN)windows_tests-$(BUILD).$(OBJ) 95610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovelse 96610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov$(BIN)racecheck_unittest-$(BUILD)$(EXE): $(BIN)posix_tests-$(BUILD).$(OBJ) 97610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovendif 98610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 99610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovifeq ($(OS), linux) 100610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovifndef OMIT_CPP0X 101610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov$(BIN)racecheck_unittest-$(BUILD)$(EXE): $(BIN)libstdc++_tests-$(BUILD).$(OBJ) 102610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovendif 103610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovendif 104610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 105610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovifeq ($(OS), darwin) 106610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov$(BIN)racecheck_unittest-$(BUILD)$(EXE): $(BIN)mac_tests-$(BUILD).$(OBJ) 107610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovendif 108610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 109610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov$(BIN)deadlock_unittest-$(BUILD)$(EXE): $(BIN)deadlock_unittest-$(BUILD).$(OBJ) $(BIN)old_test_suite-$(BUILD).$(OBJ) \ 110610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov $(TEST_UTILS_O) $(GTEST_LIB) ${DYNAMIC_ANNOTATIONS_O} | bin 111610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov ${LD} ${LDFLAGS} $^ $(LIBS) $(LINKO)$@ 112610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 113610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov$(BIN)demo_tests-$(BUILD)$(EXE): $(BIN)demo_tests-$(BUILD).$(OBJ) \ 114610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov $(TEST_UTILS_O) $(GTEST_LIB) ${DYNAMIC_ANNOTATIONS_O} | bin 115610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov ${LD} $(LDFLAGS) $^ $(LIBS) $(LINKO)$@ 116610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 117610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov$(BIN)output_tests/%-$(BUILD)$(EXE): $(BIN)output_tests/%-$(BUILD).$(OBJ) \ 118610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov ${TEST_UTILS_O} ${DYNAMIC_ANNOTATIONS_O} | bin 119610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov ${LD} $(LDFLAGS) $^ $(LIBS) $(LINKO)$@ 120610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 121610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov$(BIN)bigtest-$(BUILD)$(EXE): $(BIN)bigtest-$(BUILD).$(OBJ) ${DYNAMIC_ANNOTATIONS_O} | bin 122610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov ${LD} $(LDFLAGS) $^ $(LIBS) $(LINKO)$@ 123610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 124610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov$(BIN)memory_unittest-$(BUILD)$(EXE): $(BIN)memory_unittest-$(BUILD).$(OBJ) $(BIN)old_test_suite-$(BUILD).$(OBJ) \ 125610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov $(TEST_UTILS_O) $(GTEST_LIB) ${DYNAMIC_ANNOTATIONS_O} | bin 126610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov ${LD} $(LDFLAGS) $^ $(LIBS) $(LINKO)$@ 127610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 128610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov$(BIN)%-$(BUILD).$(OBJ): %.cc ${DYNAMIC_ANNOTATIONS} thread_wrappers.h \ 129610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov thread_wrappers_win.h thread_wrappers_pthread.h old_test_suite.h \ 130610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov test_utils.h gtest_fixture_injection.h | bin 131610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov ${CXX} ${CXXFLAGS} \ 132610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov -I${DYNAMIC_ANNOTATIONS_DIR} -I${GTEST_ROOT}/include -I. \ 133610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov -DDYNAMIC_ANNOTATIONS_ENABLED=1 -c $< $(O)$@ 134610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 135610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov$(BIN)opt_tests-$(BUILD).$(OBJ): opt_tests.cc ${DYNAMIC_ANNOTATIONS} thread_wrappers.h thread_wrappers_win.h thread_wrappers_pthread.h old_test_suite.h test_utils.h | bin 136610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov ${CXX} ${OPT_CXXFLAGS} \ 137610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov -I${DYNAMIC_ANNOTATIONS_DIR} -I${GTEST_ROOT}/include -I. \ 138610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov -DDYNAMIC_ANNOTATIONS_ENABLED=1 -c $< $(O)$@ 139610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 140610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov$(BIN)%-$(BUILD).$(OBJ): %.mm ${DYNAMIC_ANNOTATIONS} thread_wrappers.h thread_wrappers_win.h thread_wrappers_pthread.h old_test_suite.h test_utils.h | bin 141610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov ${CXX} ${CXXFLAGS} \ 142610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov -I${DYNAMIC_ANNOTATIONS_DIR} -I${GTEST_ROOT}/include -I. \ 143610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov -DDYNAMIC_ANNOTATIONS_ENABLED=1 -c $< $(O)$@ 144610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 145610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 146610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov${DYNAMIC_ANNOTATIONS_O}: ${DYNAMIC_ANNOTATIONS_C} 147610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov ${CC} ${CFLAGS} $< \ 148610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov -I${DYNAMIC_ANNOTATIONS_DIR} -DDYNAMIC_ANNOTATIONS_ENABLED=1 \ 149610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov -c $(O)$@ 150610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov 151610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanovclean: GTEST_CLEAN 152610969f87667a485b9207086b3ff475bab909f95Evgeniy Stepanov rm -rf bin racecheck_unittest demo_tests bigtest *.o *.O1 *.O2 *.obj *.dSYM *.exe *.pdb *.ilk *.idb *.manifest 153