1. Don't force debug builds to have assertion checking turned on always.
Let the default (on) be taken, or overridden by the command line
2. Create two new BuildModes based on assertion checking: Release+Assert
and Debug-Assert.
3. Ensure that when building a distribution we get a release build with
assertions enabled, regardless of the tree's configuration.
4. (unrelated) Fix library name generation for llvm-config usage.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27488 91177308-0d34-0410-b5e6-96231b3b80d8
This facility allows LLVMLIBS to be specified with something like:
LLVMLIBS = config --libs jit
instead of:
LLVMLIBS = JIT
with the same effect. However, the llvm-config utility is much more versatile
than the single keyword approach. Note that "config" is the keyword after
which any arguments to llvm-config are allowed. When llvm-config is tested
and working well, we'll start using this and drop support for the JIT
keyword.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27057 91177308-0d34-0410-b5e6-96231b3b80d8
is a handy tool for users of LLVM who want to be able to quickly get
information about LLVM's configuration. It is intended to be used in the
command line of other tools. Documentation will be forthcoming in a
subsequent patch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26952 91177308-0d34-0410-b5e6-96231b3b80d8
want to copy the files when the .cpp file changes, we want to copy them
to the .cvs versions when the .l/.y file change (like the comments even say).
This avoids having bogus changes show up in diffs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26229 91177308-0d34-0410-b5e6-96231b3b80d8
like the flex stuff, which actually works when people do cvs updates and
get conflicts in the updated checked in file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26205 91177308-0d34-0410-b5e6-96231b3b80d8
GCC's syntax for auto-dependency generation stuff. This should
be changed to be disabling dependency stuff unless GCC/ICC is
found.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26201 91177308-0d34-0410-b5e6-96231b3b80d8
should solve the "updating cvs when .l files change give me conflict markers
that break my build" issue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26160 91177308-0d34-0410-b5e6-96231b3b80d8
* Make runtimes and projects build with the new front-end by not relying on
'llvm-gcc -c' to build a .bc file. Instead, use llvm-gcc -S -emit-llvm,
then an explicit invocation of gccas. Also, don't use llvm-gcc to link
.bc files together, use gccld directly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25707 91177308-0d34-0410-b5e6-96231b3b80d8
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