1. When srcdir == objdir have "spotless" say that it isn't supported in
that mode rather than just let make say "no such target"
2. Minor doc cleanups
3. Fix the double rebuild problem with yacc files. A missing dependency
caused parallel builds to skip building the .cpp file after the .cpp
file was regenerated by bison.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24924 91177308-0d34-0410-b5e6-96231b3b80d8
* Add --enable-debug-runtime option, defaults to disabled
* Pass the new config var, DEBUG_RUNTIME, to Makefiles
* Don't use -Wa,-strip-debug if debug-runtime is enabled
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24891 91177308-0d34-0410-b5e6-96231b3b80d8
into the LLVMAnalysis library.
This allows LLVMTranform and LLVMTransformUtils to be archives and linked
with LLVMAnalysis.a, which provides any missing definitions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24036 91177308-0d34-0410-b5e6-96231b3b80d8
SparcV9 JIT.
2. Make LLVMTransformUtils a relinked object file and always link it before
LLVMAnalysis.a. These two libraries have circular dependencies on each
other which creates problem when building the SparcV9 JIT. This change
fixes the dependency on all platforms problems with a minimum of fuss.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24023 91177308-0d34-0410-b5e6-96231b3b80d8
pointer marking the end of the list, the zero *must* be cast to the pointer
type. An un-cast zero is a 32-bit int, and at least on x86_64, gcc will
not extend the zero to 64 bits, thus allowing the upper 32 bits to be
random junk.
The new END_WITH_NULL macro may be used to annotate a such a function
so that GCC (version 4 or newer) will detect the use of un-casted zero
at compile time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23888 91177308-0d34-0410-b5e6-96231b3b80d8
These changes modify the makefiles so that the output of flex and bison are
placed in the SRC directory, not the OBJ directory. It is intended that they
be checked in as any other LLVM source so that platforms without convenient
access to flex/bison can be compiled. From now on, if you change a .y or
.l file you *must* also commit the generated .cpp and .h files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23115 91177308-0d34-0410-b5e6-96231b3b80d8
Move the implementation of the fix from Makefile.rules to Makefile. This
ensures that it is only checked on a top-level rebuild, and not in every
single subdirectory. This removes some annoying messages from the build and
numerous executions of config.status if the .in file changes but not
substantively enough to cause the .h file to be modified by config.status.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23039 91177308-0d34-0410-b5e6-96231b3b80d8
Make any header files that are automatically generated be preconditions of
the compilation. This ensures that if a *.h.in file is changed then its
corresponding *.h file gets updated on the next rebuild. Note that this can
lead to confusing (but correct) results if the *.h.in file changed
unsubstantially so that autoheader doesn't update the *.h file. In that case,
manually touch the *.h file in question to restore order. Moral of the story,
if you're going to "touch" a *.in file then modify it substantially.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23006 91177308-0d34-0410-b5e6-96231b3b80d8
1. Allow DIST_CHECK_CONFIG_OPTION to specify a set of options to be passed
to the configure script during the dist-check target. This allows things
to be passed down on a project basis so the configure doesn't fail.
2. Use the tar | (cd ; tar ) idiom to copy files which is more flexible
than using the cp command. THis allows us to exclude CVS .svn
directories at source rather than stripping them out of the tar ball.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22166 91177308-0d34-0410-b5e6-96231b3b80d8
llvm archive or re-linked libraries:
1. Permit the "JIT" special keyword on LLVMLIBS to be recognized when
building a library, not just for building tools
2. If LINK_LIBS_IN_SHARED is set, the LLVMLIBS and USEDLIBS can be specified
when linking a shared library and the libraries listed will be
incorported into the shared library. THis is only used when the
SHARED_LIBRARY variable is set.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22127 91177308-0d34-0410-b5e6-96231b3b80d8
* Consolidate all "install" usage to the install program/script found by
autoconf which includes the autoconf/install-sh script if necessary
* Change Makefile.rules to not use the -D flag to install but use the
MKDIR command as necessary.
* Change Makefile.rules to differentiate between installation of executable
files and regular data files to get the permission modes correct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20294 91177308-0d34-0410-b5e6-96231b3b80d8
* Make it possible to have the Install program run in verbose mode when
the TOOL_VERBOSE=1 option is set
* Ensure non-executable installed files do not install with execute perms.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20214 91177308-0d34-0410-b5e6-96231b3b80d8
When llvm-gcc is not available, bypass rules for Modules and Bytecode
Libraries that require llvm-gcc and emit instead a warning that llvm-gcc
is not available. This permits "make LLVMGCC=" to build LLVM completely
without error and provides warnings about the modules and bc libs that
could not be constructed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20185 91177308-0d34-0410-b5e6-96231b3b80d8
* Rename BUILD_* to PROJ_*
* Differentiate between LLVM's Makefile.conf and the project's
* Use project specific install locations
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19590 91177308-0d34-0410-b5e6-96231b3b80d8
passes the -module option on the libtool command line to ensure that the
shared library being built can be dlopened and dlsym can work on that
module. LOADABLE_MODULE should be sent only in conjunction with the
SHARED_LIBRARY directive. It should generally be used for any module that
is intended to be the target of an LLVM -load option. Note that loadable
modules will not have the lib prefix but otherwise look like shared
libraries. This is per the libtool recommendations and prevents these
special shared libraries from being linked in via -l option to the linker.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19454 91177308-0d34-0410-b5e6-96231b3b80d8
Reverting the quote patch. For some reason, this breaks the building of
llvm/runtime (the shell doesn't like it for some reason). I might play
with it to see if I can get the quotes done in such a way that the shell
like it, but no promises.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19275 91177308-0d34-0410-b5e6-96231b3b80d8
exceptions to abort() in cases where it should not.
Many thanks to Duraid Madina for doing the heavy lifting on the analysis
of this problem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19256 91177308-0d34-0410-b5e6-96231b3b80d8
* When reconfiguring, make sure the config.cache file is blown away so that
its (old) values don't short-circuit doing the tests. When a reconfigure
is done, it should be done from scratch, without the cache.
* For dist-check, don't pass --with-llvmgccdir any more because configure
doesn't have this option any more.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19126 91177308-0d34-0410-b5e6-96231b3b80d8
* Cleanup LLVMGCXX and LLVMGCC by providing LLVMGXXWITHPATH and LLVMGCCWITHPATH
variables that add the $(LLVMToolDir) to the path so the CFE tools can find
the right LLVM tools they depend on.
* Standardize the name of a variable: cferuntime_libdir -> CFERuntimeLibDir
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19095 91177308-0d34-0410-b5e6-96231b3b80d8
* Convert "cmp" usage to $(CMP)
* Convert "cp" usage to $(CP)
* Fix some build messages to reflect what's actually going on
* Add a "reconfigure" target for forcing a reconfigure. Helps with testing
things like Chris's recent changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18991 91177308-0d34-0410-b5e6-96231b3b80d8
files that USE the .inc file unless the contents of the .inc file changes.
This should fix the problem where reconfiguring causes all targets to be
completely rebuilt (because config.h is usually modified, causing libsystem
to be rebuilt, causing tblgen to be rebuilt, causing .inc files to be
rebuilt, causing .o files to be rebuilt).
This patch also checks in a gross hack where .o files now explicitly depend
on $(BUILT_SOURCES), to avoid problems where the .inc files are not completely
generated before the .o files start to compile.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18986 91177308-0d34-0410-b5e6-96231b3b80d8
to BUILD_OBJ_SRC. This will save the config.status and mklib files, then
wipe out the BUILD_OBJ_ROOT, copy back config.status and mklib, and then
run config.status to regenerate the makefiles. This target gives you a
completely clean/fresh BUILD_OBJ_ROOT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18981 91177308-0d34-0410-b5e6-96231b3b80d8
specify where the bytecode library is to be installed. This allows the
default location ($prefix/lib) to be overridden, for special case runtime
libraries like the cfe runtime libs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18879 91177308-0d34-0410-b5e6-96231b3b80d8
present in a directory that LLVM normally builds, it will skip building
the directory entirely. This is useful for allowing a bunch of projects to
live in the source tree but not be compiled from time to time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18671 91177308-0d34-0410-b5e6-96231b3b80d8
* Implement the FAKE_SOURCES feature for GCCLibraries/crtend \
* Search for distribution files >first< in srcdir and >second< in objdir \
* Make dist-hook only run in top level directory. \
* Make dist-check run correctly in parallel builds \
* Wrap lines to 80 cols \
* Standardize variable names
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18504 91177308-0d34-0410-b5e6-96231b3b80d8
Change construction of bytecode libraries from producing a single bytecode
file to producing a library containing bytecode files. This gets around the
problem of multiple symbol definitions in the linker if something like
-lc -lc is attempted on the command line. Previously this happened because
the linker would find libc.bc as a "library". It will now find libc.a which
it can simply search for missing symbols instead of linking in wholesale.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18425 91177308-0d34-0410-b5e6-96231b3b80d8
changing directory first. Also make sure that we don't attempt to run
config.status if the recheck didn't work.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18351 91177308-0d34-0410-b5e6-96231b3b80d8
* Get rid of appending -lbz2 and -lz to ExtraLibs now that we don't need
them any more.
* Fix the dist-check target so that EXTRA_DIST can be defined AFTER the
include of Makefile.common. This is needed because Makefile.common
provides variable definitions that may need to be used in computing the
value of EXTRA_DIST.
* Clean up some "distdir" target output.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18329 91177308-0d34-0410-b5e6-96231b3b80d8
Tools and libraries will be built into $(BUILD_OBJ_ROOT)/$(BuildMode)/bin and \
$(BUILD_OBJ_ROOT)/$(BuildMode)/lib, respectively. Furthermore, the example \
programs will go in $(BUILD_OBJ_ROOT)/$(BuildMode)/examples to keep them \
separate from the tools and hopefully out of the PATH. Install targets \
have not changed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17953 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't include Makefile.rules in set of preconditions, it never has to be
copied to objdir.
* Enable the "update makefile first before executing targets" feature in
gnu make by *not* using a full path to the Makefile in the rule.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17920 91177308-0d34-0410-b5e6-96231b3b80d8
* Provide the correct set of input directories to the TAGS target
* Provide a CTAGS target for building Vi style ctags files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17688 91177308-0d34-0410-b5e6-96231b3b80d8
$(ObjDir) and clean out all build modes (Debug, Release, Profile) in
addition to the normal "clean" rules.
* Fix "clean" problems with Lex/Yacc so all files are remove properly.
* Ensure errors from "rm" don't thwart the uninstall and clean targets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17433 91177308-0d34-0410-b5e6-96231b3b80d8
sub-makes and recursively append causing huge command lines and incorrect
compilation results.
Also, fix the printvars target to align its output and ensure that the
contents of variables can't get interpreted by the shell.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17348 91177308-0d34-0410-b5e6-96231b3b80d8
* Move rules that build directories earlier in the file so that they are
always built before the things that depend on them. This enables a
parallel "dist-check" target.
* Fix use of TOOLLINKOPTS and TOOLLINKOPTSB (thanks to Henrik Bach)
* Standardize the output - some scripts using plain echo instead of $(ECHO)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17318 91177308-0d34-0410-b5e6-96231b3b80d8
* Ensure that BUILT_SOURCES depends on OBJ_DIR/Makefile so that they do not
get built before the Makefile is updated.
* Fix build script for yacc & lex files by stopping it from thwarting the
dependencies on the file. If the .y file changes, it needs to be rebuilt.
This also cleans up the problem with llvmAsmParser ALWAYS rebuilding its
Yacc files just to throw them away because there's no change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17288 91177308-0d34-0410-b5e6-96231b3b80d8
* Force preconditions to be met FIRST
* Fix dist-check dependency
* Add some variables to the printvars target
* Automatically update Makefile.* as well as just Makefile
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17268 91177308-0d34-0410-b5e6-96231b3b80d8
tarball.
* Fix bugs in the "dist" target (a precursor to dist-check).
* Correct the implementation of the "install" targets so that they ensure
the installation directories are created before attmpting to install
directories in them.
* Reduce the verbosity of the output of the makefile system
* Ensure output includes the configuration whenever libraries or tools are
built, installed, or uninstalled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17250 91177308-0d34-0410-b5e6-96231b3b80d8
* "dist" target now builds tar.gz, tar.bz2, and zip files suitable for
distribution. "dist" can only be run from $(BUILD_OBJ_ROOT) and implies
a "check".
* made the preconditions not do a recursive make and ensured that they are
executed sequentially.
* made the messages output by the makefile be prefixed with "llvm" and the
make level (e.g. llvm[1]: ) in the same way that make does so that the
messages are uniform and more readable.
* Fixed the tags target so that tags depends on TAGS which contains the
rules to build a file named TAGS
* Implemented the EXTRA_DIST feature in a few directories to make sure it
works.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17210 91177308-0d34-0410-b5e6-96231b3b80d8
* Fixed the install target to install files correctly
* Implemented the uninstall target to remove files from install dirs
* Isolated the top level targets (dist, dist-check, dist-clean, tags) so
they only run/exist from the top level directory
* Put if/endif gaurds around potentially dangerous $(RM) commands.
* Implemented place-holder rules for distribution targets to just say that
they aren't implemented yet.
* Implemented tags target in Makefile.rules so all projects can use it
* Made a pony for resistor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17202 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix parallel build problem on generated dependency files
* Fix rule confusion between .a and .la libraries so that parallel builds
don't get confused on who is building which .o and which library it is
going into.
* Fix dependency inclusion to only include C/C++ dependency files because
other types of sources won't have dependencies auto generated.
* Change "Source" to "SOURCES" for naming consistency
* Update parallel build rules for new recursive targets
* Implement EXPERIMENTAL_DIRS (failure allowed) feature
* Implement -local version of targets (all-local, clean-local, etc)
* Implement recursive targets in terms of their local counterparts
* Clarify names of some internal variables
* Move documentation to docs/MakefileGuide.html
* Clean up commentary
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17192 91177308-0d34-0410-b5e6-96231b3b80d8
* Use LLVM_SRC_ROOT as the anchor for the Target.td file
* Use MFLAGS instead of MAKEFLAGS for recursive makes so we don't try
to build a target "w" or "s" mysteriously.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17186 91177308-0d34-0410-b5e6-96231b3b80d8
this allows us to have sub-targets whose depth in the tree is not the same as it
is for the standard X86/PowerPC/Sparc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17170 91177308-0d34-0410-b5e6-96231b3b80d8
CONFIG_FILES=a b c
in a Makefile and when you "make install" the files a b and c will get
installed into the $prefix/etc directory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15948 91177308-0d34-0410-b5e6-96231b3b80d8
libtool can't parse, e.g., "/path/to/g++ -some-funny-options",
then it will still be able to compile and link.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14072 91177308-0d34-0410-b5e6-96231b3b80d8
slightly slower, but I think we can handle it, especially if it means
BytecodeLibs are correctly regenerated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11122 91177308-0d34-0410-b5e6-96231b3b80d8
lives near the other installation dirs (like libdir, bindir, etc.).
Move the rule for making bytecode_libdir out of the ifdef LIBRARYNAME...endif.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10964 91177308-0d34-0410-b5e6-96231b3b80d8
called bytecode_libdir. Make install-bytecode-library depend on
the existence of that directory, and add a rule for creating it if
it does not exist by calling mkinstalldirs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10946 91177308-0d34-0410-b5e6-96231b3b80d8
Directory targets no longer check for existance of the directory in the
object tree; if the Makefile doesn't exist, we will re-create the directory.
This seems to be a pretty good assumption and saves us from checking
directory existance each time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10211 91177308-0d34-0410-b5e6-96231b3b80d8
object tree if it is missing. This means that new Makefiles should get
picked up automagically, requiring less bothersome re-configuring after
updates.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10209 91177308-0d34-0410-b5e6-96231b3b80d8
This helps to disambiguate when linking begins and when the library/program
is linked and ready to be used.
This is sort of as preference thing, so feel free to modify/revert the change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9687 91177308-0d34-0410-b5e6-96231b3b80d8
Fixed the header comment in Makefile.rules
Changed all references to the echo program in Makefile.rules to the value
found by autoconf.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9151 91177308-0d34-0410-b5e6-96231b3b80d8
directory.
Added Makefile.spec to the list of files to copy to the object directory.
Moved the configuration of $SourceDir to Makefile.config and corrected the
conditional that surrounds it. This allows SPEC to reset it and get the correct
VPATH.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8475 91177308-0d34-0410-b5e6-96231b3b80d8
much cleaner and easier.
Labeled .td as a suffix for tblgen files in Makefile.rules.
Modified build rules so that source files generated during the build are placed
in the build directory and not the source directory (and not in a Debug
directory). This makes the system cleaner and allows us to have a read-only
source tree.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8424 91177308-0d34-0410-b5e6-96231b3b80d8
Moved Makefile.common to Makefile.rules. This makes project Makefiles easier
to support, and allows for easier overriding of default configuration values
that used to be in Makefile.common.
Modified Makefile.config.in to determine paths for directories (like
LLVM_SRC_ROOT) and to use the pwd binary as opposed to the shell builtin (this
works better for symbolic links).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8377 91177308-0d34-0410-b5e6-96231b3b80d8
and explicitly declare all the ones we're using for LLVM.
This quickly cancels many of GNU Make's implicit rules and reduces build time.
The only caveat is that any new suffixes may need to be explictly added to
the .SUFFIXES pseudo target.
Removed the -only-static option as it is no longer used.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7979 91177308-0d34-0410-b5e6-96231b3b80d8
broken by libtoolification anyways, and noone can use it because purify doesn't
support the 64-bit sparc compilers even if it weren't broken!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7850 91177308-0d34-0410-b5e6-96231b3b80d8
the pre-release 1.1 branch and pre-release 1.1.1).
Made the USE_SPEC option work.
Silenced unnecessary error output from the cmp command when checking for
updates to lex/yacc generated files. This fixes a problem where we get error
messages the first time the file is generated.
Fixed the distclean option. It is now in the Makefile (i.e. only runs in the
top level source directory), removes more files, and plays nicely with
external project Makefiles.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7780 91177308-0d34-0410-b5e6-96231b3b80d8
The shell AND/OR operators short-circuit on command success/failure, which is
the inverse of exit status (i.e. 0 means success, non-zero means failure).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7616 91177308-0d34-0410-b5e6-96231b3b80d8
o Not all versions of diff have the -q option
o The cmp program is probably faster than diff
Fixed the logic that only copies the file over if no differences are found.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7615 91177308-0d34-0410-b5e6-96231b3b80d8
hide the bison command line.
* If running flex or bison gives us the files we already have, don't overwrite
the ones we have, which cause unnecessary compilation. I demand the ability
to make meaningless changes without penalty!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7571 91177308-0d34-0410-b5e6-96231b3b80d8
This can be done using the disable-shared tag that comes with libtool.
This change also required changing how .o libraries are linked.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7458 91177308-0d34-0410-b5e6-96231b3b80d8
up builds a little bit since it will prevent GNU make from matching these
phony targets against implicit rules.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7183 91177308-0d34-0410-b5e6-96231b3b80d8
One of the test Makefiles uses the same variable names for something else,
and this was probably interfering with it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7024 91177308-0d34-0410-b5e6-96231b3b80d8
do the following:
1) Determine their default values without $HOME
2) Configure the default values as full absolute pathnames.
This should help fix the nightly test builds.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6719 91177308-0d34-0410-b5e6-96231b3b80d8