llvm-project/lldb/gtest/make/Makefile.rules
Todd Fiala b3185e710e Fixup gtest layout, add Linux ThreadStateCoordinator.cpp.
This change does the following:
* Remove test/c++/...
* Add gtest.
* Add gtest/unittest directory for unittesting individual classes.
* Add an initial Plugins/Process?linux/ThreadStateCoordinatorTest.cpp.
  - currently failing a test (intentional).
  - added a bare-bones ThreadStateCoordinator.cpp to Plugins/Process/Linux,
    more soon. Just enough to prove out running gtest on Ubuntu and MacOSX.
* Added recursive make machinery so that doing a 'make' in gtest/ is
  sufficient to kick off the existing test several directories down.
  - Caveat - I currently short circuit from gtest/unittest/Makefile directly to
    the one and only gtest/unittest/Plugins/Process/Linux directory.  We'll need
    to add the intervening layers.  I haven't done this yet since to fix the
    Xcode test failure correspondence, I may need to add a python layer which
    might just handle the directory crawling.
* Added an Xcode project to the lldb workspace for gtest.
  - Runs the recursive make system in gtest/Makefile.
  - Default target is 'test'.  test and clean are supported.
  - Currently does not support test failure file/line correspondence.
    Requires a bit of text transformation to hook that up.

llvm-svn: 218460
2014-09-25 19:25:07 +00:00

91 lines
2.9 KiB
Makefile

# Retrieve this Makefile's location.
THIS_FILE_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))/
# Set default target to be test
.DEFAULT_GOAL := test
# Set up GTEST for canonical Linux and MacOSX source trees.
ifneq ($(wildcard $(THIS_FILE_DIR)../../llvm/utils/unittest/googletest),)
# Assume lldb/llvm (MacOSX Xcode) directory form.
LLVM_BASE_DIR := $(realpath $(THIS_FILE_DIR)../../llvm)
else
# Assume llvm/tools/lldb (Non-MacOSX) directory form.
LLVM_BASE_DIR := $(realpath $(THIS_FILE_DIR)../../../..)
endif
ifeq ($(GTEST_DIR),)
GTEST_DIR := $(LLVM_BASE_DIR)/utils/unittest/googletest
endif
GTEST_INCLUDE_DIR := $(GTEST_DIR)/include
ifeq ($(LLVM_BUILD_DIR),)
ifneq ($(wildcard $(THIS_FILE_DIR)../../llvm-build/Release+Asserts/x86_64/Release+Asserts),)
LLVM_BUILD_DIR := $(realpath $(THIS_FILE_DIR)../../llvm-build/Release+Asserts/x86_64/Release+Asserts)
else ifneq ($(wildcard $(THIS_FILE_DIR)../../../../../build-debug/lib),)
LLVM_BUILD_DIR := $(realpath $(THIS_FILE_DIR)../../../../../build-debug)
endif
endif
ifeq ($(LLVM_BUILD_DIR),)
$(error Could not find LLVM build output dir, please set it with LLVM_BUILD_DIR)
endif
GTEST_STATIC_LIB_DIR := $(LLVM_BUILD_DIR)/lib
ifeq ($(LLVM_BUILD_INCLUDE_DIR),)
ifneq ($(wildcard $(LLVM_BUILD_DIR)/../include),)
LLVM_BUILD_INCLUDE_DIR := $(realpath $(LLVM_BUILD_DIR)/../include)
else ifneq ($(wildcard $(LLVM_BUILD_DIR)/include),)
LLVM_BUILD_INCLUDE_DIR := $(realpath $(LLVM_BUILD_DIR)/include)
endif
endif
ifeq ($(LLVM_BUILD_INCLUDE_DIR),)
$(error Could not find LLVM build directory include dir, please set it with LLVM_BUILD_INCLUDE_DIR)
endif
# $(info LLVM_BASE_DIR = $(LLVM_BASE_DIR))
# $(info LLVM_BUILD_DIR = $(LLVM_BUILD_DIR))
# $(info GTEST_DIR = $(GTEST_DIR))
# $(info GTEST_INCLUDE_DIR = $(GTEST_INCLUDE_DIR))
# $(info GTEST_STATIC_LIB_DIR = $(GTEST_STATIC_LIB_DIR))
# Note lldb/include is already added for us by test/make/Makefile.rules
LLDB_HEADER_DIRS += \
-I $(realpath $(THIS_FILE_DIR)../../source/)
# -I $(realpath $(THIS_FILE_DIR)../../include)
CFLAGS_EXTRAS += -I $(GTEST_INCLUDE_DIR) -I $(LLVM_BASE_DIR)/include -I $(LLVM_BUILD_INCLUDE_DIR) $(LLDB_HEADER_DIRS)
LD_EXTRAS += $(GTEST_STATIC_LIB_DIR)/libgtest.a $(GTEST_STATIC_LIB_DIR)/libgtest_main.a $(GTEST_STATIC_LIB_DIR)/libLLVMSupport.a
.PHONY: clean test
# Handle subdirs
ifneq ($(SUBDIRS),)
.PHONY: subdirs $(SUBDIRS)
subdirs: $(SUBDIRS)
test:: subdirs
clean:: subdirs
$(SUBDIRS):
$(MAKE) -C $@ $(MAKECMDGOALS)
endif
# Skip pulling in build rules when we don't have an CXX_SOURCES defined.
# If this is the case, then we're just recursing directories.
# Consider doing directory handling/makefile running via a python script
# like test/dotest.py.
ifneq ($(CXX_SOURCES),)
include $(realpath $(THIS_FILE_DIR)../../test/make/Makefile.rules)
test:: $(EXE)
$(realpath $(EXE))
endif