1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-25 14:02:52 +02:00
Commit Graph

23 Commits

Author SHA1 Message Date
NAKAMURA Takumi
c0d73fdf1e CMake: Add the folder "Tablegenning" on llvm-tblgen targets.
llvm-svn: 149219
2012-01-30 03:01:03 +00:00
Chandler Carruth
9f579b4d66 Fix a typo noticed by Peter Collingbourne. No one depends on this
working today, but it shouldn't corrupt state for some poor soul to
debug later.

llvm-svn: 143545
2011-11-02 16:55:57 +00:00
Chandler Carruth
50523ec780 The TableGen parts of the CMake build are seriously broken. This fixes
one aspect of them by having them use the (annoying, if not broken)
proper library dependency model for adding the LLVMTableGen library as
a dependency. This could manifest as a link order issue in the presence
of separate LLVM / Clang source builds with CMake and a linker that
really cares about such things.

Also, add the Support dependency to llvm-tblgen itself so that it
doesn't rely on TableGen's transitive Support dependency. A parallel
change for clang-tblgen will be forthcoming.

llvm-svn: 143531
2011-11-02 05:03:06 +00:00
Peter Collingbourne
253c6a3690 Build system infrastructure for multiple tblgens.
llvm-svn: 141266
2011-10-06 01:51:51 +00:00
Chandler Carruth
a571c5d5d3 Clean up a pile of hacks in our CMake build relating to TableGen.
The first problem to fix is to stop creating synthetic *Table_gen
targets next to all of the LLVM libraries. These had no real effect as
CMake specifies that add_custom_command(OUTPUT ...) directives (what the
'tablegen(...)' stuff expands to) are implicitly added as dependencies
to all the rules in that CMakeLists.txt.

These synthetic rules started to cause problems as we started more and
more heavily using tablegen files from *subdirectories* of the one where
they were generated. Within those directories, the set of tablegen
outputs was still available and so these synthetic rules added them as
dependencies of those subdirectories. However, they were no longer
properly associated with the custom command to generate them. Most of
the time this "just worked" because something would get to the parent
directory first, and run tablegen there. Once run, the files existed and
the build proceeded happily. However, as more and more subdirectories
have started using this, the probability of this failing to happen has
increased. Recently with the MC refactorings, it became quite common for
me when touching a large enough number of targets.

To add insult to injury, several of the backends *tried* to fix this by
adding explicit dependencies back to the parent directory's tablegen
rules, but those dependencies didn't work as expected -- they weren't
forming a linear chain, they were adding another thread in the race.

This patch removes these synthetic rules completely, and adds a much
simpler function to declare explicitly that a collection of tablegen'ed
files are referenced by other libraries. From that, we can add explicit
dependencies from the smaller libraries (such as every architectures
Desc library) on this and correctly form a linear sequence. All of the
backends are updated to use it, sometimes replacing the existing attempt
at adding a dependency, sometimes adding a previously missing dependency
edge.

Please let me know if this causes any problems, but it fixes a rather
persistent and problematic source of build flakiness on our end.

llvm-svn: 136023
2011-07-26 00:09:08 +00:00
Oscar Fuentes
920738256c CMake: generalize the system that creates custom targets for
tablegenning to all libraries and executables.

llvm-svn: 135908
2011-07-25 14:11:55 +00:00
Oscar Fuentes
e04e812abe Add the tablegenned files to the `clean' target.
llvm-svn: 124854
2011-02-04 03:47:50 +00:00
Oscar Fuentes
51a072b7d8 Changes for building Clang and others using LLVM as an external
library.

Installs tblgen (required by Clang).

Translates handling of user settings and platform-dependant options to
its own file, where it can included by another project.

Installs the .cmake files required by projects like Clang.

llvm-svn: 124816
2011-02-03 20:57:36 +00:00
Oscar Fuentes
f7309748a5 TableGen.cmake: sometimes the .td file is not in the current directory
(clang/include/clang/Basic/StmtNodes.td, for instance, is tablegenned
from clang/include/clang/AST/CMakeLists.txt) so it is not contained on
the list of all .td files on the current source directory which is
used as the DEPENDS of the custom command. We must add the .td file to
the DEPENDS list of the custom command. Otherwise some .inc files are
not regenerated when the corresponding .td file changes.

llvm-svn: 122768
2011-01-03 20:01:32 +00:00
Oscar Fuentes
b7f2510588 Avoid stalled file dependency when tablegenning.
Patch by Frits van Bommel!

llvm-svn: 117113
2010-10-22 17:37:42 +00:00
Oscar Fuentes
e9b7aa0d30 Teach CMake to only touch tablegen-generated files if anything
actually changed.

Patch by Frits van Bommel!

llvm-svn: 117102
2010-10-22 16:20:10 +00:00
Douglas Gregor
5d2a26361d Allow absolute paths in LLVM_TARGET_DEFINITIONS for CMake's TableGen rule
llvm-svn: 106219
2010-06-17 15:17:07 +00:00
Douglas Gregor
1e5d914bc0 CMake: Don't use copy_if_different for TableGen output, because it does not work with IDE targets
llvm-svn: 79732
2009-08-22 07:00:18 +00:00
Oscar Fuentes
d7a89664c6 CMake: tablegen: Add .td files under the inlude/llvm directory
hierarchy to the list of dependencies.

llvm-svn: 75510
2009-07-13 21:35:00 +00:00
Douglas Gregor
7841f61ced Add missing dependencies to the CMake build system.
llvm-svn: 74161
2009-06-25 05:03:06 +00:00
Oscar Fuentes
cfe2266e89 CMake: Fixed parallel build problem related to native tblgen when
cross-compiling.

llvm-svn: 73180
2009-06-11 04:16:10 +00:00
Douglas Gregor
5f2d01236e CMake: Make sure to build TableGen'd files in the binary directory
llvm-svn: 67052
2009-03-16 21:35:18 +00:00
Oscar Fuentes
fa0053e297 CMake: Do not rebuild the world when tblgen changes but the .inc files
it produces are not affected by the change.

llvm-svn: 59763
2008-11-21 00:18:45 +00:00
Oscar Fuentes
2d0e56a05a CMake: Use LLVM_MAIN_SRC_DIR instead of CMAKE_SOURCE_DIR, for
consistency.

Patch by Kevin Andre!

llvm-svn: 59326
2008-11-14 22:21:02 +00:00
Oscar Fuentes
fab3ce2295 CMake: Fixed dependencies of .cpp source files on .td and tablegenned
files.

llvm-svn: 59325
2008-11-14 22:06:14 +00:00
Oscar Fuentes
bb9c221f2a CMake: Support for cross-compiling. For now, requires a previously
built native tblgen which is passed to cmake in the variable
LLVM_TABLEGEN.

See

http://www.cmake.org/Wiki/CmakeMingw

for a quick example on how to cross-compile with CMake.

llvm-svn: 58939
2008-11-09 18:53:19 +00:00
Oscar Fuentes
c2a8e16a50 CMake: Removed some cruft.
llvm-svn: 58358
2008-10-29 02:33:15 +00:00
Oscar Fuentes
65859a84d0 CMake: Builds all targets.
llvm-svn: 56641
2008-09-26 04:40:32 +00:00