forked from OSchip/llvm-project
llvm-config-2: Implement build system support for getting the variables we only
know at build time. llvm-svn: 143649
This commit is contained in:
parent
4a1a9eceb5
commit
803b761cbb
|
@ -17,9 +17,12 @@ if( NOT WIN32 OR MSYS OR CYGWIN )
|
|||
# must keep llvm-config as the first entry on the list of tools to
|
||||
# be built.
|
||||
add_subdirectory(llvm-config)
|
||||
|
||||
# We currently require 'sed' to build llvm-config-2, so don't try to build it
|
||||
# on pure Win32.
|
||||
add_subdirectory(llvm-config-2)
|
||||
endif()
|
||||
|
||||
add_subdirectory(llvm-config-2)
|
||||
add_subdirectory(opt)
|
||||
add_subdirectory(llvm-as)
|
||||
add_subdirectory(llvm-dis)
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
//===-- BuildVariables.inc.in - llvm-config build variables -*- C++ -*-----===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file is configured by the build system to define the variables
|
||||
// llvm-config wants to report to the user, but which can only be determined at
|
||||
// build time.
|
||||
//
|
||||
// The non .in variant of this file has been autogenerated by the LLVM build. Do
|
||||
// not edit!
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#define LLVM_SRC_ROOT "@LLVM_SRC_ROOT@"
|
||||
#define LLVM_OBJ_ROOT "@LLVM_OBJ_ROOT@"
|
||||
#define LLVM_CPPFLAGS "@LLVM_CPPFLAGS@"
|
||||
#define LLVM_CFLAGS "@LLVM_CFLAGS@"
|
||||
#define LLVM_LDFLAGS "@LLVM_LDFLAGS@"
|
||||
#define LLVM_CXXFLAGS "@LLVM_CXXFLAGS@"
|
||||
#define LLVM_BUILDMODE "@LLVM_BUILDMODE@"
|
||||
#define LLVM_SYSTEM_LIBS "@LLVM_SYSTEM_LIBS@"
|
|
@ -1,5 +1,41 @@
|
|||
set(LLVM_LINK_COMPONENTS support)
|
||||
|
||||
# We need to generate the BuildVariables.inc file containing values which are
|
||||
# only defined when under certain build modes. Unfortunately, that precludes
|
||||
# doing this inside CMake so we have to shell out to sed. For now, that means we
|
||||
# can't expect to build llvm-config on Window.s
|
||||
set(BUILDVARIABLES_SRCPATH ${CMAKE_CURRENT_SOURCE_DIR}/BuildVariables.inc.in)
|
||||
set(BUILDVARIABLES_OBJPATH ${CMAKE_CURRENT_BINARY_DIR}/BuildVariables.inc)
|
||||
set(SEDSCRIPT_OBJPATH ${CMAKE_CURRENT_BINARY_DIR}/BuildVariables.configure.sed)
|
||||
|
||||
# Compute the substitution values for various items.
|
||||
get_system_libs(LLVM_SYSTEM_LIBS_LIST)
|
||||
foreach(l ${LLVM_SYSTEM_LIBS_LIST})
|
||||
set(SYSTEM_LIBS ${SYSTEM_LIBS} "-l${l}")
|
||||
endforeach()
|
||||
set(C_FLGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${uppercase_CMAKE_BUILD_TYPE}} ${LLVM_DEFINITIONS}")
|
||||
set(CXX_FLGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${uppercase_CMAKE_BUILD_TYPE}} ${LLVM_DEFINITIONS}")
|
||||
set(CPP_FLGS "${CMAKE_CPP_FLAGS} ${CMAKE_CPP_FLAGS_${uppercase_CMAKE_BUILD_TYPE}} ${LLVM_DEFINITIONS}")
|
||||
|
||||
add_custom_command(OUTPUT ${BUILDVARIABLES_OBJPATH}
|
||||
COMMAND echo s!@LLVM_SRC_ROOT@!${LLVM_MAIN_SRC_DIR}! > ${SEDSCRIPT_OBJPATH}
|
||||
COMMAND echo s!@LLVM_OBJ_ROOT@!${LLVM_BINARY_DIR}! >> ${SEDSCRIPT_OBJPATH}
|
||||
COMMAND echo s!@LLVM_CPPFLAGS@!${CPP_FLGS}! >> ${SEDSCRIPT_OBJPATH}
|
||||
COMMAND echo s!@LLVM_CFLAGS@!${C_FLGS}! >> ${SEDSCRIPT_OBJPATH}
|
||||
COMMAND echo s!@LLVM_CXXFLAGS@!${CXX_FLGS}! >> ${SEDSCRIPT_OBJPATH}
|
||||
# TODO: Use general flags for linking! not just for shared libs:
|
||||
COMMAND echo s!@LLVM_LDFLAGS@!${CMAKE_SHARED_LINKER_FLAGS}! >> ${SEDSCRIPT_OBJPATH}
|
||||
COMMAND echo s!@LLVM_BUILDMODE@!${CMAKE_BUILD_TYPE}! >> ${SEDSCRIPT_OBJPATH}
|
||||
COMMAND echo s!@LLVM_SYSTEM_LIBS@!${SYSTEM_LIBS}! >> ${SEDSCRIPT_OBJPATH}
|
||||
COMMAND sed -f ${SEDSCRIPT_OBJPATH} < ${BUILDVARIABLES_SRCPATH} > ${BUILDVARIABLES_OBJPATH}
|
||||
VERBATIM
|
||||
COMMENT "Building BuildVariables.inc include."
|
||||
)
|
||||
|
||||
# Add the llvm-config tool.
|
||||
add_llvm_tool(llvm-config-2
|
||||
llvm-config.cpp
|
||||
)
|
||||
|
||||
# Add the dependency on the generation step.
|
||||
add_file_dependencies(${CMAKE_CURRENT_SOURCE_DIR}/llvm-config.cpp ${BUILDVARIABLES_OBJPATH})
|
||||
|
|
|
@ -11,7 +11,47 @@ LEVEL := ../..
|
|||
TOOLNAME := llvm-config-2
|
||||
LINK_COMPONENTS := support
|
||||
|
||||
# We generate sources in the build directory, make sure it is in the include
|
||||
# paths.
|
||||
INCLUDE_BUILD_DIR := 1
|
||||
|
||||
# This tool has no plugins, optimize startup time.
|
||||
TOOL_NO_EXPORTS := 1
|
||||
|
||||
# Note that we have to use lazy expansion here.
|
||||
BUILDVARIABLES_SRCPATH = $(PROJ_SRC_ROOT)/tools/$(TOOLNAME)/BuildVariables.inc.in
|
||||
BUILDVARIABLES_OBJPATH = $(ObjDir)/BuildVariables.inc
|
||||
BUILT_SOURCES = $(BUILDVARIABLES_OBJPATH)
|
||||
|
||||
include $(LEVEL)/Makefile.common
|
||||
|
||||
# Combine preprocessor flags (except for -I) and CXX flags.
|
||||
SUB_CPPFLAGS := ${CPP.BaseFlags}
|
||||
SUB_CFLAGS := ${CPP.BaseFlags} ${C.Flags}
|
||||
SUB_CXXFLAGS := ${CPP.BaseFlags} ${CXX.Flags}
|
||||
|
||||
# This is blank for now. We need to be careful about adding stuff here:
|
||||
# LDFLAGS tend not to be portable, and we don't currently require the
|
||||
# user to use libtool when linking against LLVM.
|
||||
SUB_LDFLAGS :=
|
||||
|
||||
$(ObjDir)/BuildVariables.inc: $(BUILDVARIABLES_SRCPATH) Makefile $(ObjDir)/.dir
|
||||
$(Echo) "Building llvm-config BuildVariables.inc file."
|
||||
$(Verb) $(ECHO) 's/@LLVM_SRC_ROOT@/$(subst /,\/,$(LLVM_SRC_ROOT))/' \
|
||||
> temp.sed
|
||||
$(Verb) $(ECHO) 's/@LLVM_OBJ_ROOT@/$(subst /,\/,$(LLVM_OBJ_ROOT))/' \
|
||||
>> temp.sed
|
||||
$(Verb) $(ECHO) 's/@LLVM_CPPFLAGS@/$(subst /,\/,$(SUB_CPPFLAGS))/' \
|
||||
>> temp.sed
|
||||
$(Verb) $(ECHO) 's/@LLVM_CFLAGS@/$(subst /,\/,$(SUB_CFLAGS))/' \
|
||||
>> temp.sed
|
||||
$(Verb) $(ECHO) 's/@LLVM_CXXFLAGS@/$(subst /,\/,$(SUB_CXXFLAGS))/' \
|
||||
>> temp.sed
|
||||
$(Verb) $(ECHO) 's/@LLVM_LDFLAGS@/$(subst /,\/,$(SUB_LDFLAGS))/' \
|
||||
>> temp.sed
|
||||
$(Verb) $(ECHO) 's/@LLVM_BUILDMODE@/$(subst /,\/,$(BuildMode))/' \
|
||||
>> temp.sed
|
||||
$(Verb) $(ECHO) 's/@LLVM_SYSTEM_LIBS@/$(subst /,\/,$(LIBS))/' \
|
||||
>> temp.sed
|
||||
$(Verb) $(SED) -f temp.sed < $< > $@
|
||||
$(Verb) $(RM) temp.sed
|
||||
|
|
|
@ -33,15 +33,9 @@
|
|||
|
||||
using namespace llvm;
|
||||
|
||||
// FIXME: Need to get various bits of build time information.
|
||||
const char LLVM_SRC_ROOT[] = "FIXME";
|
||||
const char LLVM_OBJ_ROOT[] = "FIXME";
|
||||
const char LLVM_CPPFLAGS[] = "FIXME";
|
||||
const char LLVM_CFLAGS[] = "FIXME";
|
||||
const char LLVM_LDFLAGS[] = "FIXME";
|
||||
const char LLVM_CXXFLAGS[] = "FIXME";
|
||||
const char LLVM_BUILDMODE[] = "FIXME";
|
||||
const char LLVM_SYSTEM_LIBS[] = "FIXME";
|
||||
// Include the build time variables we can report to the user. This is generated
|
||||
// at build time from the BuildVariables.inc.in file by the build system.
|
||||
#include "BuildVariables.inc"
|
||||
|
||||
// Include the component table. This creates an array of struct
|
||||
// AvailableComponent entries, which record the component name, library name,
|
||||
|
|
Loading…
Reference in New Issue