2020-04-05 04:35:07 +01:00
|
|
|
AC_PREREQ([2.64])
|
2016-02-29 18:19:01 +00:00
|
|
|
AC_INIT([OpenAFS],[m4_esyscmd(build-tools/git-version .)],[openafs-bugs@openafs.org],[],[http://www.openafs.org/])
|
2010-07-15 01:29:34 +01:00
|
|
|
AC_CONFIG_AUX_DIR([build-tools])
|
Add libtool support
Add support for using libtool to the Unix build system to build
both pthreaded and lwp libraries. For purely pthread libraries,
this just provides convenience macros to invoke the standard GNU
libtool from the OpenAFS build system. For libraries that have
lwp variants, we provide an initial wrapper script - lwptool,
which handles building a non-PIC LWP object before asking libtool
to build the pthread variants.
For a given source example.c, example.o is the non-PIC pthread
object, .libs/example.o is the PIC pthread object, and
.lwp/example.o is the LWP object.
To use libtool for a particular library directory, add the line
include @TOP_OBJDIR@/src/config/Makefile.libtool
to the file's preamble. Makefile.pthread, or Makefile.lwp should be
included as normal to indicate whether the libraries in this Makefile
are pthread only, or should be built for both pthread and LWP objects.
The variables LT_current, LT_revision and LT_age may be used to control
the version of the shared objects produced. They have the same meaning
as that documented in the Versioning section of the libtool manual.
The LT_objs variable should be set to a space separated list of the .lo
objects included in the library. Note that there should _never_ be a
dependency on the .o form of these objects in the Makefile, as this
breaks parallel builds.
LT_deps is a list of the libtool dependencies of the library, and
LT_libs is a list of the external (non-OpenAFS) library dependencies.
A file called <libraryname>.sym should be created which contains a
newline seperated list of all of the symbols exported from this
library.
LWP library names remain the same as always. To distinguish the
pthreaded static and shared libraries these
LWP libraries should be linked using
libexample.a: $(LT_objs)
$(LTLWP_LDLIB) $(LT_objs)
Shared libraries should be linked using
libexample.la: $(LT_objs) $(LT_deps)
(note that the pattern rules in the included Makefile take care of the
build rule here)
If necessary, static convenience libraries can be produced using:
libconvenience.a: $(LT_objs)
$(LTLWP_LDLIB_static) $(LT_objs)
PIC convenience libaries can be linked using:
libconvenience_pic.a: $(LT_objs)
$(LTLWP_LDLIB_pic) $(LT_objs)
Libtool libraries should be installed using the $(LT_INSTALL_DATA) macro
Binaries linking agains libtool libraries should be linked using the
$(LT_LDRULE) or $(LT_LRDULE_static) options, with library paths in the
built locations relative to the top of the tree. For example
example_test: example_test.o $(top_builddir)/src/example/libexample.la
$(LT_LDRULE) example_test.o \
$(top_builddir)/src/example/libexample.la
Change-Id: I32b162e8443119e8115febc532c5b5a0ec8fed32
Reviewed-on: http://gerrit.openafs.org/8033
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
2012-05-21 08:57:05 +01:00
|
|
|
AC_CONFIG_MACRO_DIR([src/cf])
|
2010-06-26 17:39:20 +01:00
|
|
|
AC_CONFIG_SRCDIR([src/config/stds.h])
|
|
|
|
|
2021-11-02 15:18:51 +00:00
|
|
|
AC_CONFIG_HEADERS([src/config/afsconfig.h])
|
2024-11-08 19:15:56 +00:00
|
|
|
MACOS_VERSION=1.9.2
|
2007-10-11 18:51:56 +01:00
|
|
|
|
2013-06-22 17:28:01 +01:00
|
|
|
AC_SUBST([MACOS_VERSION])
|
2001-06-28 07:44:19 +01:00
|
|
|
|
2009-03-17 15:44:15 +00:00
|
|
|
AC_PATH_PROGS([PATH_CPP], [cpp], [${CC-cc} -E], [$PATH:/lib:/usr/ccs/lib])
|
2008-07-01 01:00:40 +01:00
|
|
|
AC_SUBST([PATH_CPP])
|
cf: Set CC before calling AC_PROG_CC
On some platforms (HPUX, SOLARIS, AIX), we forcibly set CC or set a
default CC, because we must use a specific compiler to build kernel
modules, and we specify certain compiler-specific flags. But we do
this after AC_PROG_CC has run, which also searches for a compiler to
use, and runs a few tests against it. AC_PROG_CC often chooses a
different compiler (it prefers gcc if it's available).
As a result, some compiler-derived info may be wrong, which can yield
confusing results, even breaking the build depending on what the
user's PATH is, or what compilers are installed on the system.
We can avoid all of this if we move our CC-setting logic to before
AC_PROG_CC is called. This is a little tricky, because our logic to
set AFS_SYSNAME requires the C compiler, so we must do this before
OPENAFS_SYSNAME, and also before AC_USE_SYSTEM_EXTENSIONS, or any
other autoconf macro that uses the C compiler.
Move our CC-setting logic into a new macro, OPENAFS_PATH_CC, which is
separate from OPENAFS_CONFIGURE_COMMON and must be called before
OPENAFS_CONFIGURE_COMMON. Add some safeguards to try to detect if
AC_PROG_CC is already called to try to prevent future changes from
breaking this; this isn't perfect, but it's better than nothing.
Change-Id: I7c327df5acc5d1ff701b70825eecaaaab4aa44a8
Reviewed-on: https://gerrit.openafs.org/15456
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
Reviewed-by: Ben Huntsman <ben@huntsmans.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
2023-05-19 22:53:55 +01:00
|
|
|
|
|
|
|
OPENAFS_PATH_CC
|
2001-10-09 16:48:25 +01:00
|
|
|
OPENAFS_CONFIGURE_COMMON
|
2018-06-29 20:48:58 +01:00
|
|
|
OPENAFS_KRB5
|
|
|
|
OPENAFS_GSS
|
2010-09-02 08:44:27 +01:00
|
|
|
|
2013-10-03 17:44:30 +01:00
|
|
|
dnl Checks for summary
|
|
|
|
OPENAFS_SUMMARY_CHECK_NAMEI
|
|
|
|
|
2016-02-29 18:19:01 +00:00
|
|
|
AC_CONFIG_FILES([
|
2013-06-22 17:28:01 +01:00
|
|
|
Makefile
|
2024-06-11 21:26:47 +01:00
|
|
|
doc/man-pages/Makefile
|
|
|
|
doc/man-pages/install-man
|
|
|
|
doc/xml/AdminGuide/Makefile
|
|
|
|
doc/xml/QuickStartUnix/Makefile
|
|
|
|
doc/xml/UserGuide/Makefile
|
|
|
|
doc/xml/AdminRef/Makefile
|
|
|
|
doc/xml/mobi-fixup.xsl
|
|
|
|
doc/doxygen/Doxyfile
|
2013-06-22 17:28:01 +01:00
|
|
|
src/afs/Makefile
|
|
|
|
src/afsd/Makefile
|
|
|
|
src/afsmonitor/Makefile
|
|
|
|
src/aklog/Makefile
|
|
|
|
src/audit/Makefile
|
|
|
|
src/auth/Makefile
|
|
|
|
src/auth/test/Makefile
|
|
|
|
src/bozo/Makefile
|
|
|
|
src/bozo/test/Makefile
|
|
|
|
src/bu_utils/Makefile
|
|
|
|
src/bubasics/Makefile
|
|
|
|
src/bucoord/Makefile
|
|
|
|
src/budb/Makefile
|
|
|
|
src/tbudb/Makefile
|
|
|
|
src/butc/Makefile
|
|
|
|
src/butm/Makefile
|
|
|
|
src/cmd/Makefile
|
|
|
|
src/cmd/test/Makefile
|
|
|
|
src/comerr/Makefile
|
|
|
|
src/comerr/test/Makefile
|
|
|
|
src/config/Makefile
|
|
|
|
src/config/Makefile.config
|
|
|
|
src/config/Makefile.libtool
|
|
|
|
src/config/Makefile.lwp
|
|
|
|
src/config/Makefile.lwptool
|
|
|
|
src/config/Makefile.pthread
|
|
|
|
src/config/Makefile.version-CML
|
|
|
|
src/config/Makefile.version-NOCML
|
2018-09-06 19:42:11 +01:00
|
|
|
src/config/cc-wrapper
|
2013-06-22 17:28:01 +01:00
|
|
|
src/config/shlib-build
|
|
|
|
src/config/shlib-install
|
|
|
|
src/crypto/hcrypto/Makefile
|
|
|
|
src/crypto/rfc3961/Makefile
|
|
|
|
src/dir/Makefile
|
|
|
|
src/dir/test/Makefile
|
|
|
|
src/dviced/Makefile
|
|
|
|
src/dvolser/Makefile
|
|
|
|
src/export/Makefile
|
|
|
|
src/finale/Makefile
|
|
|
|
src/fsint/Makefile
|
|
|
|
src/fsprobe/Makefile
|
|
|
|
src/gtx/Makefile
|
|
|
|
src/kauth/Makefile
|
|
|
|
src/kauth/test/Makefile
|
|
|
|
src/kopenafs/Makefile
|
|
|
|
src/libacl/Makefile
|
|
|
|
src/libacl/test/Makefile
|
|
|
|
src/libadmin/Makefile
|
|
|
|
src/libadmin/adminutil/Makefile
|
|
|
|
src/libadmin/bos/Makefile
|
|
|
|
src/libadmin/cfg/Makefile
|
|
|
|
src/libadmin/cfg/test/Makefile
|
|
|
|
src/libadmin/client/Makefile
|
|
|
|
src/libadmin/kas/Makefile
|
|
|
|
src/libadmin/pts/Makefile
|
|
|
|
src/libadmin/samples/Makefile
|
|
|
|
src/libadmin/test/Makefile
|
|
|
|
src/libadmin/vos/Makefile
|
|
|
|
src/libafs/Makefile.common
|
|
|
|
src/libafs/MakefileProto.${MKAFS_OSTYPE}
|
|
|
|
${DARWIN_PLIST}
|
|
|
|
src/libafsauthent/Makefile
|
|
|
|
src/libafsrpc/Makefile
|
|
|
|
src/libuafs/Makefile.common
|
|
|
|
src/libuafs/MakefileProto.${MKAFS_OSTYPE}
|
|
|
|
src/log/Makefile
|
|
|
|
src/log/test/Makefile
|
|
|
|
src/lwp/Makefile
|
|
|
|
src/lwp/test/Makefile
|
|
|
|
src/opr/Makefile
|
|
|
|
src/packaging/MacOS/OpenAFS-debug.Description.plist
|
|
|
|
src/packaging/MacOS/OpenAFS-debug.Info.plist
|
|
|
|
src/packaging/MacOS/OpenAFS.Description.plist
|
|
|
|
src/packaging/MacOS/OpenAFS.Info.plist
|
|
|
|
src/packaging/MacOS/OpenAFS.info
|
|
|
|
src/packaging/MacOS/buildpkg.sh
|
macos: use pkgbuild to build the package on 10.10/10.11
PackageMaker is no longer part of OS X. As a result, it
is not possible to build the package on OS X 10.10 and
OS X 10.11 using the existing code.
To solve this problem, a new script, along with a couple
of new files, are provided.
- pkgbuild.sh
This script uses the command line tools pkgbuild and
productbuild to build the package on OS X 10.10 and
OS X 10.11. By default, the package built by this
script will not be signed. Optionally, the package
might be signed.
- Distribution.xml
This file is nothing more than an XML file used by
productbuild. It is mainly used to configure how the
installer will look and behave.
- conclusion.txt
Contains the text that is displayed by Installer at
the end of the installation process. Only used by
El Capitan and further.
- Uninstall.14.15
This script can be used by OS X 10.10/10.11 users
to uninstall OpenAFS.
Notes:
- This work is based on a patch made by Brandon Allbery
<ballbery@sinenomine.net> with fixes and updates from
Andrew Deason <adeason@dson.org>.
- El Capitan and further prevent us from touching
/usr/bin directly. As a result, /opt is used.
- If the package is not signed, the user will have
to disable the OS X security protections. Otherwise,
the client will not work.
- Now we have two different scripts to build the
package on OS X. For OS X 10.10 and newer versions,
pkgbuild.sh will be used. For older versions,
the existing buildpkg.sh will be used.
Change-Id: If8320666c553b82af450c0263f5e80a00c33e3b8
Reviewed-on: https://gerrit.openafs.org/12239
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
2016-07-15 16:22:11 +01:00
|
|
|
src/packaging/MacOS/pkgbuild.sh
|
2013-06-22 17:28:01 +01:00
|
|
|
src/pam/Makefile
|
|
|
|
src/platform/Makefile
|
|
|
|
src/platform/${MKAFS_OSTYPE}/Makefile
|
|
|
|
src/platform/DARWIN/growlagent/Makefile
|
DARWIN: Add 'privhelper' tool for PrefPane
The prefpane for macOS runs as the logged-in user, but needs root access
for some operations: starting/stopping the client, editing various
configuration files like CellServDB, etc. We currently use functions
like AuthorizationExecuteWithPrivileges() to run commands with root
privileges directly, but this approach no longer works as of macOS 10.8
(Mountain Lion); the relevant functions have been removed.
Instead, a new approach exists as of macOS 10.6 (Snow Leopard). The
prefpane application itself cannot gain root privileges, but we can
provide another daemon process that runs as root, and the PrefPane sends
requests to that process to perform the privileged operations we need.
In this commit, create a separate helper program called PrivilegedHelper
(privhelper for short) that serves this purpose. Define the
executePrivTask() method in TaskUtil to handle communicating with
privhelper over XPC.
This commit does not define any of the tasks that privhelper will
actually perform; this just implements privhelper itself. Later commits
will add and use various privileged tasks in privhelper.
In order for privhelper to be able to run as root, both privhelper and
the prefpane itself must be code signed and the relevant apple team id
must be specified in their Info.plist when they are built, as well as
inside privhelper.c. Currently, we have
no way of specifying code signatures info during the build, since all code
signing is done when generating packages (via pkgbuild.sh) after
binaries are built. For now, just put a commented-out section in
src/platform/DARWIN/AFSPreference/Info.plist and
src/platform/DARWIN/PrivilegedHelper/privhelper-info.plist and a
placeholder in src/platform/DARWIN/PrivilegedHelper/privhelper.c to show
how to add this information. The package builder must add their own team
id to these before privhelper can work properly.
The privhelper tool checks that the calling user has authorization to
run commands as root (via AuthorizationCopyRights()), and that the
calling process is either our AFSBackgrounder menu bar or the prefpane.
We use xpc_connection_set_peer_code_signing_requirement() for this where
available, but fallback to using SecCodeCheckValidity() with
SecCodeCreateWithXPCMessage() or
xpc_dictionary_get_audit_token()/SecCodeCopyGuestWithAttributes() if
needed.
Change-Id: I724b6d486ee5397c89c79e589ddcb2a5987a895b
Reviewed-on: https://gerrit.openafs.org/15956
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
2024-11-23 14:46:52 +00:00
|
|
|
src/platform/DARWIN/PrivilegedHelper/Makefile
|
2013-06-22 17:28:01 +01:00
|
|
|
src/procmgmt/Makefile
|
|
|
|
src/procmgmt/test/Makefile
|
|
|
|
src/ptserver/Makefile
|
|
|
|
src/tptserver/Makefile
|
|
|
|
src/roken/Makefile
|
|
|
|
src/rx/Makefile
|
|
|
|
src/rx/bulk.example/Makefile
|
|
|
|
src/rx/bulktest/Makefile
|
|
|
|
src/rx/multi.example/Makefile
|
|
|
|
src/rx/simple.example/Makefile
|
|
|
|
src/rx/test/Makefile
|
|
|
|
src/rxdebug/Makefile
|
|
|
|
src/rxgen/Makefile
|
2013-01-04 21:16:04 +00:00
|
|
|
src/rxgk/Makefile
|
2013-06-22 17:28:01 +01:00
|
|
|
src/rxkad/Makefile
|
|
|
|
src/rxkad/test/Makefile
|
|
|
|
src/rxosd/Makefile
|
|
|
|
src/rxstat/Makefile
|
|
|
|
src/scout/Makefile
|
|
|
|
src/sys/Makefile
|
|
|
|
src/tbutc/Makefile
|
|
|
|
src/tests/Makefile
|
|
|
|
src/tests/run-tests
|
|
|
|
src/tools/Makefile
|
|
|
|
src/tools/dumpscan/Makefile
|
|
|
|
src/tools/rxperf/Makefile
|
|
|
|
src/tsalvaged/Makefile
|
|
|
|
src/tsm41/Makefile
|
|
|
|
src/tvolser/Makefile
|
|
|
|
src/ubik/Makefile
|
|
|
|
src/tubik/Makefile
|
|
|
|
src/update/Makefile
|
|
|
|
src/usd/Makefile
|
|
|
|
src/usd/test/Makefile
|
|
|
|
src/uss/Makefile
|
|
|
|
src/util/Makefile
|
|
|
|
src/util/test/Makefile
|
|
|
|
src/libafscp/Makefile
|
|
|
|
src/venus/Makefile
|
|
|
|
src/venus/test/Makefile
|
|
|
|
src/vfsck/Makefile
|
|
|
|
src/viced/Makefile
|
|
|
|
src/vlserver/Makefile
|
|
|
|
src/tvlserver/Makefile
|
|
|
|
src/vol/Makefile
|
|
|
|
src/volser/Makefile
|
|
|
|
src/xstat/Makefile
|
|
|
|
src/helper-splint.sh
|
|
|
|
tests/Makefile
|
|
|
|
tests/auth/Makefile
|
|
|
|
tests/cmd/Makefile
|
|
|
|
tests/common/Makefile
|
|
|
|
tests/opr/Makefile
|
|
|
|
tests/rx/Makefile
|
|
|
|
tests/tap/Makefile
|
|
|
|
tests/util/Makefile
|
2016-02-29 18:19:01 +00:00
|
|
|
tests/volser/Makefile])
|
|
|
|
AC_CONFIG_COMMANDS([default],[chmod a+x src/config/shlib-build
|
2018-09-06 19:42:11 +01:00
|
|
|
chmod a+x src/config/shlib-install
|
|
|
|
chmod a+x src/config/cc-wrapper],[])
|
2016-02-29 18:19:01 +00:00
|
|
|
AC_OUTPUT
|
2010-11-21 22:01:53 +00:00
|
|
|
|
|
|
|
# print a final summary
|
2013-10-03 17:44:30 +01:00
|
|
|
OPENAFS_SUMMARY
|