Split up libtool support into LWP and pthread Currently, the type of library you build is determined by whether the library is build in a pthread, or an lwp build directory. However, this prevents building an LWP library in a directory that builds pthreaded clients and servers. As we want to continue to provide LWP libraries for backwards compatibility, but move over to pthreaded binaries, this causes some issues. So, split up the libtool logic, so we have Makefile.libtool, which you include if you want to build a pthreaded libtool library, and Makefile.lwptool, for building a library which supports LWP and pthreaded use. These only affect how .lo files are built - so the .o files used for non-library objects are managed with the Makefile.pthread and Makefile.lwp includes as before. Change-Id: Ib1af48342253230abab9056eb15a3f79bd77a6de Reviewed-on: http://gerrit.openafs.org/8126 Tested-by: BuildBot <buildbot@rampaginggeek.com> Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
usd: Convert to using libtool Turn the libusd library into a libtool object (it has no pthread/LWP differences, and so can just become a pthreaded library), and include it as such in butc and the volser. liboafs_usd.la is the libtool object, libusd.a is preserved as a static object for backwards compatibility. Change-Id: I25c3d0f429415527fe529c3d3e5afbad9490ea45 Reviewed-on: http://gerrit.openafs.org/8057 Tested-by: BuildBot <buildbot@rampaginggeek.com> Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
Build system: Move install definitions to include Move the definitions of the INSTALL_* variables out to Makefile.config rather than replicating them in each file. Change-Id: I5f74dcbf544a93716994418bee3be2c51a2a82d0 Reviewed-on: http://gerrit.openafs.org/4781 Tested-by: BuildBot <buildbot@rampaginggeek.com> Reviewed-by: Derrick Brashear <shadow@dementia.org>
Unix: Rework build system Rework the unix build system so that we support taking CFLAGS and LDFLAGS from the command line, and don't replace them with our own settings. Also, take the opportunity to bring some sanity and consistency into our Makefiles. The standard Makefile.config now defines rules for LWP, pthreaded and shared library builds. The CFLAGS settings for these are called LWP_CFLAGS, PTH_CFLAGS and SHD_CFLAGS, respectively. Similarly named variables are provided for LDFLAGS. A module may select to use a particular build type for its suffix rule by including either Makefile.lwp, Makefile.pthread or Makefile.shared from src/config. This creates an appropriate .c.o suffix rule, defines AFS_CFLAGS and AFS_LDFLAGS as appropriate, and creates two rules AFS_CCRULE and AFS_LDRULE, which can be used to build, and link objects. For example: foo.o: foo.c $(AFS_CCRULE) foo.c foo: foo.o $(AFS_LDRULE) foo.o If a you wish to override the CFLAGS or LDFLAGS for an object build using these rules (or through the .c.o suffix rule) you can do so, by defining CFLAGS_<object> or LDFLAGS_<object>. For example: CFLAGS_foo.o= -DDEBUG LDFLAGS_foo = -ldebugging A module may also alter the behaviour of the compile and link steps module wide by defining MODULE_CFLAGS or MODULE_LDFLAGS. This functionality is now used throughout the tree: *) Suffix rules are used wherever possible, removing a number of unecessary build rules. *) All link steps are replaced with AFS_LDRULE *) All standard compile steps are replaced with AFS_CCRULE *) Unusal compile steps are defined, as far as possible, int terms of the LWP_ PTH_ and SHD_ variables. *) The use of $? has been removed entirely, as it makes it impossible to provide build rules with dependency information Change-Id: If76207e45da402a0ed9d7c1bdbe83c58c911a4f2 Reviewed-on: http://gerrit.openafs.org/2896 Tested-by: BuildBot <buildbot@rampaginggeek.com> Tested-by: Derrick Brashear <shadow@dementia.org> Reviewed-by: Derrick Brashear <shadow@dementia.org>
Fix objdir install/dest targets Many 'install' and 'dest' targets were referring to source files without a srcdir prefix. Fix them so we can 'make install' / 'make dest' with objdir. Change-Id: Id76c5e326309baf8ec3f1213ecb2e40b19aea7d4 Reviewed-on: http://gerrit.openafs.org/2522 Tested-by: BuildBot <buildbot@rampaginggeek.com> Reviewed-by: Derrick Brashear <shadow@dementia.org> Tested-by: Derrick Brashear <shadow@dementia.org>
Rationalise our include paths Our include paths are a bit of a mess. Fix these so that they're more rational, and more in line with normal coding style. In particular: *) Don't include all of the subdirectories of our top level include directory. If a file wants afs/file.h, it should include that, not "file.h" *) Try to avoid including '.' in the search path (although objdir builds make this harder) *) Don't blindly include other directories from the code tree in the search path. If a package wants another packages header, then it should get it from the include directory *) Use the convention that quoted includes ("") pick up local headers. Bracketed includes (<>) pick up ones from the top level include dir *) In directories which pull in files from multiple packages, don't blindly put all of the package directories in the search path. Specifically include the file's package directory when required The big change here is that it's no longer possible to hide a system include by placing a header of the same name in include/afs. The most common case where this was happening was for 'assert.h' Change-Id: I0796fabcf83ffcd74e533624c64e138a160dd632 Reviewed-on: http://gerrit.openafs.org/834 Reviewed-by: Derrick Brashear <shadow@dementia.org> Tested-by: Derrick Brashear <shadow@dementia.org>
autoconf-likes-relative-paths-20060802 When using the install-sh that ships with the source tree, Autoconf substitutes in a relative path just to be annoying. Define the INSTALL variables in each individual Makefile so that they find the proper file. Remove the definitions from Makefile.config so that no one will accidentally get the wrong ones.
death-to-pinstall-20060801 Delete pinstall and convert the entire tree to use the install program found by configure (falling back on install-sh in the local tree). This means that we have to pre-create directories with install -d. Also redo the install and dest rules to be lists of install rules rather than dependencies driving separate make rules so that running make install will always update the target directory with the current code, even if there are files in the install area that are newer. Stop installing libafssetpag; we're about to kill it in favor of a different library. Remove some djgpp rules.
darwin-x86-and-leopard-20060309 updates for darwin x86, and pre-leopard
build-system-specific-makefile-configuration-from-configure-20011031 junk all of Makefile.${SYS_NAME} in favor of a common makefile built by configure, and use it
initial-objdir-support-20011017 first cut at objdir support
make-install-support-for-transarc-and-prefix-style-universes-20010907 according to jeff: - Renames the top-level 'install' target to 'build'. This should be transparent, since no one should be using that. - Improves on Sam's dirpath patches, by splitting out server binaries into separate bin, sbin, and libexec directories in GCS mode (these are all /usr/afs/bin in Transarc mode). - Updates the top-level 'all' target so that it builds the software but does not generate a dest tree. Top-level 'lib' and 'include' directories are generated to hold the intermediate libraries and headers used during the build. - Adds a new top-level 'install' target, which installs things in the appropriate directories under ${DESTDIR}, based on configure's install directories plus the extras added by Sam's patch. - Adds a new top-level 'dest' target, which creates an old-style dest directory under ${DEST}. The ${DEST} variable defaults to the traditional value of ${SRCDIR_PARENT}/${SYS_NAME}/dest. Note that this variable used to be called ${DESTDIR}; it was renamed to avoid conflicts with the de facto standard usage of ${DESTDIR}. ==================== This delta was composed from multiple commits as part of the CVS->Git migration. The checkin message with each commit was inconsistent. The following are the additional commit messages. ==================== fix missed makefile ==================== update another missed file ==================== eliminate bogus escaping ==================== get rid of another bogus escape ==================== remove unused include directory ==================== get rid of no longer used libdir ==================== remove unused incdir ==================== fix up some problems for make compatibility and missing trailing / ==================== put afs.exp in the right place ==================== remove bogus afssrvdir reference ==================== update dest version of output ==================== update ref to libexecdir ==================== kill refs to afssrvdir ==================== convert missed LIBDIR to TOP_LIBDIR ==================== remove explicit INSTALL and use makefile.@sys value instead ==================== except it's helpful to actually include makefile.@sys ==================== convert LIBDIR to TOP_LIBDIR
more-makefiles-cleanup-20010829 get rid of cases where we'd end up with two / because of DESTDIR pasting macroize calls to rm ==================== This delta was composed from multiple commits as part of the CVS->Git migration. The checkin message with each commit was inconsistent. The following are the additional commit messages. ==================== get rid of another case of bogus trailing quoting
makefile-updates-20010828 clean up all the makefiles to remove bogus targets, eliminate trailing / requirement from DESTDIR, avoid needing to pass things like DESTDIR around between makefiles ==================== This delta was composed from multiple commits as part of the CVS->Git migration. The checkin message with each commit was inconsistent. The following are the additional commit messages. ==================== remove bogus quoting
convert-all-makefiles-to-makefile-ins-20010802 all relevant variables become subst'd and not passed in the environment