Skip to content

Commit

Permalink
[CMake] Support generating Config.h
Browse files Browse the repository at this point in the history
Summary:
This patch removes the hand maintained config files in favor of auto-generating the config file. We will still need to maintain the defines for the Xcode builds on Mac, but all CMake builds use the generated header instead.

This will enable finer grained platform support tests and enable supporting LLDB on more platforms with less manual maintenance.

I have only tested this patch on Darwin, and any help testing it out on other platforms would be greatly appreciated. I've probably messed something up somewhere.

Reviewers: labath, zturner

Reviewed By: labath

Subscribers: krytarowski, emaste, srhines, lldb-commits, mgorny

Differential Revision: https://reviews.llvm.org/D31969

llvm-svn: 300372
  • Loading branch information
Chris Bieneman committed Apr 14, 2017
1 parent 116aebc commit b90bee0
Show file tree
Hide file tree
Showing 12 changed files with 56 additions and 263 deletions.
28 changes: 27 additions & 1 deletion lldb/cmake/modules/LLDBConfig.cmake
Expand Up @@ -270,8 +270,8 @@ string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" LLDB_VERSION
message(STATUS "LLDB version: ${LLDB_VERSION}")

include_directories(BEFORE
${CMAKE_CURRENT_BINARY_DIR}/include
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_CURRENT_BINARY_DIR}/include
)

if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
Expand All @@ -281,6 +281,17 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
FILES_MATCHING
PATTERN "*.h"
PATTERN ".svn" EXCLUDE
PATTERN ".cmake" EXCLUDE
PATTERN "Config.h" EXCLUDE
)

install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/
COMPONENT lldb_headers
DESTINATION include
FILES_MATCHING
PATTERN "*.h"
PATTERN ".svn" EXCLUDE
PATTERN ".cmake" EXCLUDE
)
endif()

Expand Down Expand Up @@ -421,3 +432,18 @@ if ((CMAKE_SYSTEM_NAME MATCHES "Android") AND LLVM_BUILD_STATIC AND
endif()

find_package(Backtrace)

check_include_file(termios.h HAVE_TERMIOS_H)

# These checks exist in LLVM's configuration, so I want to match the LLVM names
# so that the check isn't duplicated, but we translate them into the LLDB names
# so that I don't have to change all the uses at the moment.
set(LLDB_CONFIG_TERMIOS_SUPPORTED ${HAVE_TERMIOS_H})
if(NOT UNIX)
set(LLDB_DISABLE_POSIX 1)
endif()

# This should be done at the end
configure_file(
${LLDB_INCLUDE_ROOT}/lldb/Host/Config.h.cmake
${CMAKE_CURRENT_BINARY_DIR}/include/lldb/Host/Config.h)
42 changes: 9 additions & 33 deletions lldb/include/lldb/Host/Config.h
Expand Up @@ -7,45 +7,21 @@
//
//===----------------------------------------------------------------------===//

#ifndef liblldb_Config_h_
#define liblldb_Config_h_

#ifndef LLDB_HOST_CONFIG_H
#define LLDB_HOST_CONFIG_H
#if defined(__APPLE__)

#include "lldb/Host/macosx/Config.h"

#elif defined(__ANDROID__)

#include "lldb/Host/android/Config.h"

#elif defined(__linux__) || defined(__GNU__)

#include "lldb/Host/linux/Config.h"

#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)

#include "lldb/Host/freebsd/Config.h"

#elif defined(__NetBSD__)

#include "lldb/Host/netbsd/Config.h"

#elif defined(__OpenBSD__)

#include "lldb/Host/openbsd/Config.h"

#elif defined(__MINGW__) || defined(__MINGW32__)

#include "lldb/Host/mingw/Config.h"

#elif defined(_MSC_VER)
// This block of code only exists to keep the Xcode project working in the
// absence of a configuration step.
#define LLDB_CONFIG_TERMIOS_SUPPORTED 1

#include "lldb/Host/msvc/Config.h"
#define HAVE_SYS_EVENT_H 1

#else

#error undefined platform
#error This file is only used by the Xcode build.

#endif

#endif // #ifndef liblldb_Config_h_
#endif // #ifndef LLDB_HOST_CONFIG_H
19 changes: 19 additions & 0 deletions lldb/include/lldb/Host/Config.h.cmake
@@ -0,0 +1,19 @@
//===-- Config.h -----------------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef LLDB_HOST_CONFIG_H
#define LLDB_HOST_CONFIG_H

#cmakedefine01 LLDB_CONFIG_TERMIOS_SUPPORTED

#cmakedefine LLDB_DISABLE_POSIX

#cmakedefine01 HAVE_SYS_EVENT_H

#endif // #ifndef LLDB_HOST_CONFIG_H
28 changes: 0 additions & 28 deletions lldb/include/lldb/Host/android/Config.h

This file was deleted.

28 changes: 0 additions & 28 deletions lldb/include/lldb/Host/freebsd/Config.h

This file was deleted.

28 changes: 0 additions & 28 deletions lldb/include/lldb/Host/linux/Config.h

This file was deleted.

28 changes: 0 additions & 28 deletions lldb/include/lldb/Host/macosx/Config.h

This file was deleted.

30 changes: 0 additions & 30 deletions lldb/include/lldb/Host/mingw/Config.h

This file was deleted.

30 changes: 0 additions & 30 deletions lldb/include/lldb/Host/msvc/Config.h

This file was deleted.

28 changes: 0 additions & 28 deletions lldb/include/lldb/Host/netbsd/Config.h

This file was deleted.

28 changes: 0 additions & 28 deletions lldb/include/lldb/Host/openbsd/Config.h

This file was deleted.

2 changes: 1 addition & 1 deletion lldb/source/Host/common/File.cpp
Expand Up @@ -307,7 +307,7 @@ void File::Clear() {

Error File::GetFileSpec(FileSpec &file_spec) const {
Error error;
#ifdef LLDB_CONFIG_FCNTL_GETPATH_SUPPORTED
#ifdef F_GETPATH
if (IsValid()) {
char path[PATH_MAX];
if (::fcntl(GetDescriptor(), F_GETPATH, path) == -1)
Expand Down

0 comments on commit b90bee0

Please sign in to comment.