Skip to content

Commit f6ace19

Browse files
Revert commit 145449 (ddunbar) since it is breaking the dragonegg buildbots.
Original commit message: llvm-config: Replace with C++ version (was llvm-config-2). - Reapply of r144300, with lots of fixes/migration easement in between. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145582 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 7d5a61e commit f6ace19

17 files changed

+1303
-426
lines changed

CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ endif()
230230

231231
set(LLVMBUILDTOOL "${LLVM_MAIN_SRC_DIR}/utils/llvm-build/llvm-build")
232232
set(LLVMCONFIGLIBRARYDEPENDENCIESINC
233-
"${LLVM_BINARY_DIR}/tools/llvm-config/LibraryDependencies.inc")
233+
"${LLVM_BINARY_DIR}/tools/llvm-config-2/LibraryDependencies.inc")
234234
set(LLVMBUILDCMAKEFRAG
235235
"${LLVM_BINARY_DIR}/LLVMBuild.cmake")
236236
message(STATUS "Constructing LLVMBuild project information")

Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ LEVEL := .
2727
ifneq ($(findstring llvmCore, $(RC_ProjectName)),llvmCore) # Normal build (not "Apple-style").
2828

2929
ifeq ($(BUILD_DIRS_ONLY),1)
30-
DIRS := lib/Support lib/TableGen utils tools/llvm-config
30+
DIRS := lib/Support lib/TableGen utils tools/llvm-config-2
3131
OPTIONAL_DIRS := tools/clang/utils/TableGen
3232
else
3333
DIRS := lib/Support lib/TableGen utils lib/VMCore lib tools/llvm-shlib \
34-
tools/llvm-config tools runtime docs unittests
34+
tools/llvm-config tools/llvm-config-2 tools runtime docs unittests
3535
OPTIONAL_DIRS := projects bindings
3636
endif
3737

Makefile.rules

+3-3
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ LLVMBuildTool := $(PROJ_SRC_ROOT)/utils/llvm-build/llvm-build
7979
# The files we are going to generate using llvm-build.
8080
LLVMBuildMakeFrag := $(PROJ_OBJ_ROOT)/Makefile.llvmbuild
8181
LLVMConfigLibraryDependenciesInc := \
82-
$(PROJ_OBJ_ROOT)/tools/llvm-config/LibraryDependencies.inc
82+
$(PROJ_OBJ_ROOT)/tools/llvm-config-2/LibraryDependencies.inc
8383

8484
# This is for temporary backwards compatibility.
8585
ifndef TARGET_NATIVE_ARCH
@@ -528,9 +528,9 @@ ifndef LLVM_TBLGEN
528528
endif
529529
endif
530530
ifeq ($(LLVM_CROSS_COMPILING),1)
531-
LLVM_CONFIG := $(BuildLLVMToolDir)/llvm-config$(BUILD_EXEEXT)
531+
LLVM_CONFIG := $(BuildLLVMToolDir)/llvm-config-2$(BUILD_EXEEXT)
532532
else
533-
LLVM_CONFIG := $(LLVMToolDir)/llvm-config$(EXEEXT)
533+
LLVM_CONFIG := $(LLVMToolDir)/llvm-config-2$(EXEEXT)
534534
endif
535535
ifndef LLVMLD
536536
LLVMLD := $(LLVMToolDir)/llvm-ld$(EXEEXT)

autoconf/configure.ac

+3
Original file line numberDiff line numberDiff line change
@@ -1578,6 +1578,9 @@ if test -f ${srcdir}/tools/clang/README.txt; then
15781578
AC_CONFIG_FILES([tools/clang/docs/doxygen.cfg])
15791579
fi
15801580

1581+
dnl Do the first stage of configuration for llvm-config.in.
1582+
AC_CONFIG_FILES([tools/llvm-config/llvm-config.in])
1583+
15811584
dnl OCaml findlib META file
15821585
AC_CONFIG_FILES([bindings/ocaml/llvm/META.llvm])
15831586

configure

+1-1
Original file line numberDiff line numberDiff line change
@@ -21100,7 +21100,7 @@ if test -f ${srcdir}/tools/clang/README.txt; then
2110021100

2110121101
fi
2110221102

21103-
21103+
ac_config_files="$ac_config_files tools/llvm-config/llvm-config.in"
2110421104

2110521105

2110621106
ac_config_files="$ac_config_files bindings/ocaml/llvm/META.llvm"

tools/CMakeLists.txt

+9-2
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,16 @@ if( EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/polly/CMakeLists.txt )
1111
endif( EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/polly/CMakeLists.txt )
1212

1313
if( NOT WIN32 OR MSYS OR CYGWIN )
14-
# We currently require 'sed' to build llvm-config, so don't try to build it
15-
# on pure Win32.
14+
# It is useful to build llvm-config before the other tools, so we
15+
# have a fresh LibDeps.txt for regenerating the hard-coded library
16+
# dependencies. llvm-config/CMakeLists.txt takes care of this but we
17+
# must keep llvm-config as the first entry on the list of tools to
18+
# be built.
1619
add_subdirectory(llvm-config)
20+
21+
# We currently require 'sed' to build llvm-config-2, so don't try to build it
22+
# on pure Win32.
23+
add_subdirectory(llvm-config-2)
1724
endif()
1825

1926
add_subdirectory(opt)

tools/Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ PARALLEL_DIRS := opt llvm-as llvm-dis \
3434
bugpoint llvm-bcanalyzer llvm-stub \
3535
llvm-diff macho-dump llvm-objdump \
3636
llvm-rtdyld llvm-dwarfdump llvm-cov \
37-
llvm-size
37+
llvm-size llvm-config-2
3838

3939
# Let users override the set of tools to build from the command line.
4040
ifdef ONLY_TOOLS
+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
//===-- BuildVariables.inc.in - llvm-config build variables -*- C++ -*-----===//
2+
//
3+
// The LLVM Compiler Infrastructure
4+
//
5+
// This file is distributed under the University of Illinois Open Source
6+
// License. See LICENSE.TXT for details.
7+
//
8+
//===----------------------------------------------------------------------===//
9+
//
10+
// This file is configured by the build system to define the variables
11+
// llvm-config wants to report to the user, but which can only be determined at
12+
// build time.
13+
//
14+
// The non .in variant of this file has been autogenerated by the LLVM build. Do
15+
// not edit!
16+
//
17+
//===----------------------------------------------------------------------===//
18+
19+
#define LLVM_SRC_ROOT "@LLVM_SRC_ROOT@"
20+
#define LLVM_OBJ_ROOT "@LLVM_OBJ_ROOT@"
21+
#define LLVM_CPPFLAGS "@LLVM_CPPFLAGS@"
22+
#define LLVM_CFLAGS "@LLVM_CFLAGS@"
23+
#define LLVM_LDFLAGS "@LLVM_LDFLAGS@"
24+
#define LLVM_CXXFLAGS "@LLVM_CXXFLAGS@"
25+
#define LLVM_BUILDMODE "@LLVM_BUILDMODE@"
26+
#define LLVM_SYSTEM_LIBS "@LLVM_SYSTEM_LIBS@"

tools/llvm-config-2/CMakeLists.txt

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
set(LLVM_LINK_COMPONENTS support)
2+
3+
# We need to generate the BuildVariables.inc file containing values which are
4+
# only defined when under certain build modes. Unfortunately, that precludes
5+
# doing this inside CMake so we have to shell out to sed. For now, that means we
6+
# can't expect to build llvm-config on Window.s
7+
set(BUILDVARIABLES_SRCPATH ${CMAKE_CURRENT_SOURCE_DIR}/BuildVariables.inc.in)
8+
set(BUILDVARIABLES_OBJPATH ${CMAKE_CURRENT_BINARY_DIR}/BuildVariables.inc)
9+
set(SEDSCRIPT_OBJPATH ${CMAKE_CURRENT_BINARY_DIR}/BuildVariables.configure.sed)
10+
11+
# Compute the substitution values for various items.
12+
get_system_libs(LLVM_SYSTEM_LIBS_LIST)
13+
foreach(l ${LLVM_SYSTEM_LIBS_LIST})
14+
set(SYSTEM_LIBS ${SYSTEM_LIBS} "-l${l}")
15+
endforeach()
16+
set(C_FLGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${uppercase_CMAKE_BUILD_TYPE}} ${LLVM_DEFINITIONS}")
17+
set(CXX_FLGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${uppercase_CMAKE_BUILD_TYPE}} ${LLVM_DEFINITIONS}")
18+
set(CPP_FLGS "${CMAKE_CPP_FLAGS} ${CMAKE_CPP_FLAGS_${uppercase_CMAKE_BUILD_TYPE}} ${LLVM_DEFINITIONS}")
19+
20+
add_custom_command(OUTPUT ${BUILDVARIABLES_OBJPATH}
21+
COMMAND echo s!@LLVM_SRC_ROOT@!${LLVM_MAIN_SRC_DIR}! > ${SEDSCRIPT_OBJPATH}
22+
COMMAND echo s!@LLVM_OBJ_ROOT@!${LLVM_BINARY_DIR}! >> ${SEDSCRIPT_OBJPATH}
23+
COMMAND echo s!@LLVM_CPPFLAGS@!${CPP_FLGS}! >> ${SEDSCRIPT_OBJPATH}
24+
COMMAND echo s!@LLVM_CFLAGS@!${C_FLGS}! >> ${SEDSCRIPT_OBJPATH}
25+
COMMAND echo s!@LLVM_CXXFLAGS@!${CXX_FLGS}! >> ${SEDSCRIPT_OBJPATH}
26+
# TODO: Use general flags for linking! not just for shared libs:
27+
COMMAND echo s!@LLVM_LDFLAGS@!${CMAKE_SHARED_LINKER_FLAGS}! >> ${SEDSCRIPT_OBJPATH}
28+
COMMAND echo s!@LLVM_BUILDMODE@!${CMAKE_BUILD_TYPE}! >> ${SEDSCRIPT_OBJPATH}
29+
COMMAND echo s!@LLVM_SYSTEM_LIBS@!${SYSTEM_LIBS}! >> ${SEDSCRIPT_OBJPATH}
30+
COMMAND sed -f ${SEDSCRIPT_OBJPATH} < ${BUILDVARIABLES_SRCPATH} > ${BUILDVARIABLES_OBJPATH}
31+
VERBATIM
32+
COMMENT "Building BuildVariables.inc include."
33+
)
34+
35+
# Add the llvm-config tool.
36+
add_llvm_tool(llvm-config-2
37+
llvm-config.cpp
38+
)
39+
40+
# Add the dependency on the generation step.
41+
add_file_dependencies(${CMAKE_CURRENT_SOURCE_DIR}/llvm-config.cpp ${BUILDVARIABLES_OBJPATH})

tools/llvm-config-2/Makefile

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
##===- tools/llvm-config/Makefile---------------------------*- Makefile -*-===##
2+
#
3+
# The LLVM Compiler Infrastructure
4+
#
5+
# This file is distributed under the University of Illinois Open Source
6+
# License. See LICENSE.TXT for details.
7+
#
8+
##===----------------------------------------------------------------------===##
9+
10+
LEVEL := ../..
11+
TOOLNAME := llvm-config-2
12+
USEDLIBS := LLVMSupport.a
13+
14+
# We generate sources in the build directory, make sure it is in the include
15+
# paths.
16+
INCLUDE_BUILD_DIR := 1
17+
18+
# This tool has no plugins, optimize startup time.
19+
TOOL_NO_EXPORTS := 1
20+
21+
# Note that we have to use lazy expansion here.
22+
BUILDVARIABLES_SRCPATH = $(PROJ_SRC_ROOT)/tools/$(TOOLNAME)/BuildVariables.inc.in
23+
BUILDVARIABLES_OBJPATH = $(ObjDir)/BuildVariables.inc
24+
BUILT_SOURCES = $(BUILDVARIABLES_OBJPATH)
25+
26+
include $(LEVEL)/Makefile.common
27+
28+
# Combine preprocessor flags (except for -I) and CXX flags.
29+
SUB_CPPFLAGS := ${CPP.BaseFlags}
30+
SUB_CFLAGS := ${CPP.BaseFlags} ${C.Flags}
31+
SUB_CXXFLAGS := ${CPP.BaseFlags} ${CXX.Flags}
32+
33+
# This is blank for now. We need to be careful about adding stuff here:
34+
# LDFLAGS tend not to be portable, and we don't currently require the
35+
# user to use libtool when linking against LLVM.
36+
SUB_LDFLAGS :=
37+
38+
$(ObjDir)/BuildVariables.inc: $(BUILDVARIABLES_SRCPATH) Makefile $(ObjDir)/.dir
39+
$(Echo) "Building llvm-config BuildVariables.inc file."
40+
$(Verb) $(ECHO) 's/@LLVM_SRC_ROOT@/$(subst /,\/,$(LLVM_SRC_ROOT))/' \
41+
> temp.sed
42+
$(Verb) $(ECHO) 's/@LLVM_OBJ_ROOT@/$(subst /,\/,$(LLVM_OBJ_ROOT))/' \
43+
>> temp.sed
44+
$(Verb) $(ECHO) 's/@LLVM_CPPFLAGS@/$(subst /,\/,$(SUB_CPPFLAGS))/' \
45+
>> temp.sed
46+
$(Verb) $(ECHO) 's/@LLVM_CFLAGS@/$(subst /,\/,$(SUB_CFLAGS))/' \
47+
>> temp.sed
48+
$(Verb) $(ECHO) 's/@LLVM_CXXFLAGS@/$(subst /,\/,$(SUB_CXXFLAGS))/' \
49+
>> temp.sed
50+
$(Verb) $(ECHO) 's/@LLVM_LDFLAGS@/$(subst /,\/,$(SUB_LDFLAGS))/' \
51+
>> temp.sed
52+
$(Verb) $(ECHO) 's/@LLVM_BUILDMODE@/$(subst /,\/,$(BuildMode))/' \
53+
>> temp.sed
54+
$(Verb) $(ECHO) 's/@LLVM_SYSTEM_LIBS@/$(subst /,\/,$(LIBS))/' \
55+
>> temp.sed
56+
$(Verb) $(SED) -f temp.sed < $< > $@
57+
$(Verb) $(RM) temp.sed

0 commit comments

Comments
 (0)