Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
Actor Framework
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cpp-libs
Actor Framework
Commits
ab31da2d
Commit
ab31da2d
authored
Apr 13, 2020
by
Dominik Charousset
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Re-write configure script for new CMake scaffold
parent
f0be589e
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
220 additions
and
362 deletions
+220
-362
configure
configure
+220
-362
No files found.
configure
View file @
ab31da2d
#!/bin/sh
# Convenience wrapper for easily viewing/setting options that
# the project's CMake scripts will recognize.
set
-e
command
=
"
$0
$*
"
dirname_0
=
`
dirname
$0
`
sourcedir
=
`
cd
$dirname_0
&&
pwd
`
# Convenience wrapper for easily setting options that the project's CMake
# scripts will recognize.
Command
=
"
$0
$*
"
CommandDirname
=
`
dirname
$0
`
SourceDir
=
`
cd
$CommandDirname
&&
pwd
`
usage
=
"
\
Usage:
$0
[OPTION]... [VAR=VALUE]...
Usage:
Build Options:
--cmake=PATH set a custom path to the CMake binary
--generator=GENERATOR set CMake generator (see cmake --help)
--build-type=TYPE set CMake build type [RelWithDebInfo]:
- Debug: debugging flags enabled
- MinSizeRel: minimal output size
- Release: optimizations on, debugging off
- RelWithDebInfo: release flags plus debugging
--extra-flags=STRING additional compiler flags (sets CMAKE_CXX_FLAGS)
--build-dir=DIR place build files in directory [build]
--bin-dir=DIR executable directory [build/bin]
--lib-dir=DIR library directory [build/lib]
--with-clang=FILE path to clang++ executable
--with-gcc=FILE path to g++ executable
--with-qt-prefix=PATH prefix path for Qt5 cmake modules
--with-openssl=PATH path to OpenSSL library and headers
--dual-build build using both gcc and clang
--build-static build as static library
--static-runtime build with static C++ runtime
--no-compiler-check disable compiler version check
--no-auto-libc++ do not automatically enable libc++ for Clang
--no-exceptions do not catch exceptions in CAF
--force-no-exceptions build CAF with '-fno-exceptions'
--warnings-as-errors build with '-Werror'
$0
[--<variable>=<value>...]
Optional Targets:
--with-qt-examples build Qt example(s)
--with-protobuf-examples build Google Protobuf example(s)
General CMake options:
Installation Directories:
--prefix=PREFIX installation directory [/usr/local]
--cmake=PATH set a custom path to the CMake binary
--build-dir=PATH set build directory [build]
--build-type=STRING set build type of single-configuration generators
--generator=STRING set CMake generator (see cmake --help)
--cxx-flags=STRING set CMAKE_CXX_FLAGS when running CMake
--prefix=PATH set installation directory
Remove Standard Features (even if all dependencies are available):
--no-memory-management build without memory management
--no-examples build without examples
--no-curl-examples build without libcurl examples
--no-unit-tests build without unit tests
--no-openssl build without OpenSSL module
--no-tools build without CAF tools such as caf-run
--no-io build without I/O module
--no-summary do not print configuration before building
--libs-only sets no-examples, no-tools and no-unit-tests
--core-only same as libs-only but also adds sets
no-openssl, and no-io
Debugging options:
Debugging:
--with-runtime-checks build with requirement checks at runtime
--with-log-level=LVL build with debugging output, possible values:
--log-level=STRING build with debugging output, possible values:
- ERROR
- WARNING
- INFO
- DEBUG
- TRACE
--with-sanitizers=LIST build with this list of sanitizers enabled
--with-actor-profiler enables the (experimental) actor_profiler API
Convenience options:
--dev-mode sets --build-type=debug, --no-examples,
--no-tools, --with-runtime-checks,
--log-level=trace, and
--with-sanitizers=address,undefined
--sanitizers=STRING build with this list of sanitizers enabled
Convenience options:
--dev-mode shortcut for passing:
--build-type=Debug
--log-level=TRACE
--sanitizers=address,undefined
--disable-examples
--disable-tools
--enable-utility-targets
--enable-runtime-checks
Flags (use --enable-<name> to activate and --disable-<name> to deactivate):
shared-libs build shared library targets [ON]
export-compile-commands write JSON compile commands database [ON]
prefer-pthread-flag prefer -pthread flag if available [ON]
curl-examples build examples with libcurl [OFF]
protobuf-examples build examples with Google Protobuf [OFF]
qt5-examples build examples with the Qt5 framework [OFF]
runtime-checks build CAF with extra runtime assertions [OFF]
utility-targets include targets like consistency-check [OFF]
actor-profiler enable experimental proiler API [OFF]
examples build small programs showcasing CAF features [ON]
io-module build networking I/O module [ON]
testing build unit test suites [ON]
tools build utility programs such as caf-run [ON]
with-exceptions build CAF with support for exceptions [ON]
Influential Environment Variables (only on first invocation):
Influential Environment Variables (only on first invocation):
CXX C++ compiler command
CXXFLAGS C++ compiler flags (overrides defaults)
CXXFLAGS Additional C++ compiler flags
LDFLAGS Additional linker flags
CMAKE_GENERATOR Selects a custom generator
iOS Build Options (should be used with XCode generator):
--sysroot=DIR set system root for Clang
- iphoneos: for iOS device
- iphonesimulator: for iOS simulator
--ios-min-ver=VERSION set the ios deployment target version
"
# Appends a CMake cache entry definition to the CMakeCacheEntries variable.
# $1 is the cache entry variable name
# $2 is the cache entry variable type
# $3 is the cache entry variable value
append_cache_entry
()
{
# $1: variable name
# $2: CMake type
# $3: value
append_cache_entry
()
{
case
"
$3
"
in
*
\
*
)
# string contains whitespace
...
...
@@ -103,108 +85,52 @@ append_cache_entry ()
esac
}
#
Creates a build directory via CMak
e.
# $1
is the path to a compiler executable.
# $2
is the suffix of the build directory.
# $3 is the executable output path.
# $4 is the library output path.
# $5 is the CMake generator.
configure
()
{
CMakeCacheEntries
=
$CMakeDefaultCache
if
[
-n
"
$1
"
]
;
then
append_cache_entry CMAKE_CXX_COMPILER FILEPATH
$1
fi
case
"
$builddir
"
in
/
*
)
#absolute path given
absolute_builddir
=
"
$builddir
"
;;
#
Appends a BOOL cache entry to the CMakeCacheEntries variabl
e.
# $1
: flag name
# $2
: value (ON or OFF)
set_build_flag
()
{
FlagName
=
''
case
"
$1
"
in
shared-libs
)
FlagName
=
'BUILD_SHARED_LIBS'
;;
export-compile-commands
)
FlagName
=
'CMAKE_EXPORT_COMPILE_COMMANDS'
;;
prefer-pthread-flag
)
FlagName
=
'THREADS_PREFER_PTHREAD_FLAG'
;;
curl-examples
)
FlagName
=
'CAF_ENABLE_CURL_EXAMPLES'
;;
protobuf-examples
)
FlagName
=
'CAF_ENABLE_PROTOBUF_EXAMPLES'
;;
qt5-examples
)
FlagName
=
'CAF_ENABLE_QT5_EXAMPLES'
;;
runtime-checks
)
FlagName
=
'CAF_ENABLE_RUNTIME_CHECKS'
;;
utility-targets
)
FlagName
=
'CAF_ENABLE_UTILITY_TARGETS'
;;
actor-profiler
)
FlagName
=
'CAF_ENABLE_ACTOR_PROFILER'
;;
examples
)
FlagName
=
'CAF_ENABLE_EXAMPLES'
;;
io-module
)
FlagName
=
'CAF_ENABLE_IO_MODULE'
;;
testing
)
FlagName
=
'CAF_ENABLE_TESTING'
;;
tools
)
FlagName
=
'CAF_ENABLE_TOOLS'
;;
with-exceptions
)
FlagName
=
'CAF_ENABLE_WITH_EXCEPTIONS'
;;
*
)
# relative path given; convert to absolute path
absolute_builddir
=
"
$PWD
/
$builddir
"
echo
"Invalid flag '
$1
'. Try
$0
--help to see available options."
exit
1
;;
esac
if
[
-n
"
$2
"
]
;
then
workdir
=
"
$absolute_builddir
-
$2
"
else
workdir
=
"
$absolute_builddir
"
fi
workdirs
=
"
$workdirs
$workdir
"
if
[
-n
"
$3
"
]
;
then
append_cache_entry EXECUTABLE_OUTPUT_PATH PATH
"
$3
"
else
append_cache_entry EXECUTABLE_OUTPUT_PATH PATH
"
$workdir
/bin"
fi
if
[
-n
"
$4
"
]
;
then
append_cache_entry LIBRARY_OUTPUT_PATH PATH
"
$4
"
else
append_cache_entry LIBRARY_OUTPUT_PATH PATH
"
$workdir
/lib"
fi
if
[
-d
"
$workdir
"
]
;
then
# If a build directory exists, check if it has a CMake cache.
if
[
-f
"
$workdir
/CMakeCache.txt"
]
;
then
# If the CMake cache exists, delete it so that this configuration
# is not tainted by a previous one.
rm
-f
"
$workdir
/CMakeCache.txt"
fi
else
mkdir
-p
"
$workdir
"
fi
cd
"
$workdir
"
if
[
-n
"
$5
"
]
;
then
"
$CMakeCommand
"
-G
"
$5
"
$CMakeCacheEntries
"
$sourcedir
"
else
"
$CMakeCommand
"
$CMakeCacheEntries
"
$sourcedir
"
fi
printf
"#!/bin/sh
\n\n
"
>
config.status
printf
"# Switch to the source of this build directory.
\n
"
>>
config.status
printf
"cd
\"
$sourcedir
\"\n\n
"
>>
config.status
printf
"# Invoke the command to configure this build.
\n
"
>>
config.status
if
[
-n
"
$CC
"
]
;
then
printf
"CC=
\"
%s
\"\n
"
"
$CC
"
>>
config.status
fi
if
[
-n
"
$CXX
"
]
;
then
printf
"CXX=
\"
%s
\"\n
"
"
$CXX
"
>>
config.status
fi
if
[
-n
"
$CXXFLAGS
"
]
;
then
printf
"CXXFLAGS=
\"
%s
\"\n
"
"
$CXXFLAGS
"
>>
config.status
fi
if
[
-n
"
$LDFLAGS
"
]
;
then
printf
"LDFLAGS=
\"
%s
\"\n
"
"
$LDFLAGS
"
>>
config.status
fi
echo
$command
>>
config.status
chmod
u+x config.status
echo
"append_cache_entry
$FlagName
BOOL
$2
"
append_cache_entry
$FlagName
BOOL
$2
}
# Set defaults.
builddir
=
"
$sourced
ir
/build"
CMakeBuildDir
=
"
$SourceD
ir
/build"
CMakeCacheEntries
=
""
append_cache_entry CMAKE_INSTALL_PREFIX PATH /usr/local
append_cache_entry CAF_ENABLE_RUNTIME_CHECKS BOOL
false
# parse custom environment variable to initialize CMakeGenerator
if
[
-n
"
$CMAKE_GENERATOR
"
]
;
then
CMakeGenerator
=
"
$CMAKE_GENERATOR
"
fi
# Parse arguments.
# Parse user input.
while
[
$#
-ne
0
]
;
do
# Fetch the option argument.
case
"
$1
"
in
-
*
=
*
)
optarg
=
`
echo
"
$1
"
|
sed
's/[-_a-zA-Z0-9]*=//'
`
;;
*
)
optarg
=
;;
--
*
=
*
)
optarg
=
`
echo
"
$1
"
|
sed
's/[-_a-zA-Z0-9]*=//'
`
;;
--enable-
*
)
optarg
=
`
echo
"
$1
"
|
sed
's/--enable-//'
`
;;
--disable-
*
)
optarg
=
`
echo
"
$1
"
|
sed
's/--disable-//'
`
;;
*
)
echo
"Invalid syntax '
$1
'. Try
$0
--help to see available options."
exit
1
;;
esac
# Consume current input.
case
"
$1
"
in
--help
|
-h
)
echo
"
${
usage
}
"
1>&2
...
...
@@ -213,139 +139,55 @@ while [ $# -ne 0 ]; do
--cmake
=
*
)
CMakeCommand
=
"
$optarg
"
;;
--build-dir
=
*
)
CMakeBuildDir
=
"
$optarg
"
;;
--generator
=
*
)
CMakeGenerator
=
"
$optarg
"
;;
--prefix
=
*
)
append_cache_entry CMAKE_INSTALL_PREFIX PATH
"
$optarg
"
;;
--with-runtime-checks
)
append_cache_entry CAF_ENABLE_RUNTIME_CHECKS BOOL
yes
;;
--with-sanitizers
=
*
)
append_cache_entry CAF_SANITIZERS STRING
"
$optarg
"
;;
--with-actor-profiler
)
append_cache_entry CAF_ENABLE_ACTOR_PROFILER BOOL
yes
;;
--no-memory-management
)
append_cache_entry CAF_NO_MEM_MANAGEMENT BOOL
yes
;;
--no-compiler-check
)
append_cache_entry CAF_NO_COMPILER_CHECK BOOL
yes
;;
--no-auto-libc
++
)
append_cache_entry CAF_NO_AUTO_LIBCPP BOOL
yes
;;
--no-exceptions
)
append_cache_entry CAF_NO_EXCEPTIONS BOOL
yes
;;
--force-no-exceptions
)
append_cache_entry CAF_NO_EXCEPTIONS BOOL
yes
append_cache_entry CAF_FORCE_NO_EXCEPTIONS BOOL
yes
;;
--sysroot
=
*
)
append_cache_entry CAF_OSX_SYSROOT PATH
"
$optarg
"
;;
--ios-min-ver
=
*
)
append_cache_entry CMAKE_OSX_ARCHITECTURES STRING
"
\$
(ARCHS_STANDARD_32_64_BIT)"
append_cache_entry CAF_IOS_DEPLOYMENT_TARGET STRING
"
$optarg
"
;;
--with-log-level
=
*
)
append_cache_entry CAF_LOG_LEVEL STRING
"
$optarg
"
;;
--with-clang
=
*
)
clang
=
"
$optarg
"
;;
--with-gcc
=
*
)
gcc
=
"
$optarg
"
;;
--with-qt-prefix
=
*
)
append_cache_entry CAF_QT_PREFIX_PATH STRING
"
$optarg
"
;;
--with-openssl
=
*
)
append_cache_entry OPENSSL_ROOT_DIR PATH
"
$optarg
"
;;
--build-type
=
*
)
append_cache_entry CMAKE_BUILD_TYPE STRING
"
$optarg
"
CMakeBuildType
=
"
$optarg
"
;;
--extra
-flags
=
*
)
--cxx
-flags
=
*
)
append_cache_entry CMAKE_CXX_FLAGS STRING
"
$optarg
"
;;
--build-dir
=
*
)
builddir
=
"
$optarg
"
;;
--bin-dir
=
*
)
bindir
=
"
$optarg
"
;;
--lib-dir
=
*
)
libdir
=
"
$optarg
"
;;
--dual-build
)
dualbuild
=
1
;;
--no-examples
)
append_cache_entry CAF_NO_EXAMPLES BOOL
yes
;;
--with-qt-examples
)
append_cache_entry CAF_BUILD_QT_EXAMPLES BOOL
yes
;;
--with-protobuf-examples
)
append_cache_entry CAF_BUILD_PROTOBUF_EXAMPLES BOOL
yes
;;
--no-curl-examples
)
append_cache_entry CAF_NO_CURL_EXAMPLES BOOL
yes
;;
--no-unit-tests
)
append_cache_entry CAF_NO_UNIT_TESTS BOOL
yes
;;
--no-openssl
)
append_cache_entry CAF_NO_OPENSSL BOOL
yes
;;
--build-static
)
append_cache_entry BUILD_SHARED_LIBS BOOL no
;;
--static-runtime
)
append_cache_entry CAF_BUILD_STATIC_RUNTIME BOOL
yes
;;
--no-tools
)
append_cache_entry CAF_NO_TOOLS BOOL
yes
--prefix
=
*
)
append_cache_entry CMAKE_INSTALL_PREFIX PATH
"
$optarg
"
;;
--no-io
)
append_cache_entry CAF_NO_IO BOOL
yes
--log-level
=
*
)
append_cache_entry CAF_LOG_LEVEL STRING
"
$optarg
"
;;
--no-summary
)
append_cache_entry CAF_NO_SUMMARY BOOL
yes
--sanitizers
=
*
)
append_cache_entry CAF_SANITIZERS STRING
"
$optarg
"
;;
--libs-only
)
for
var
in
CAF_NO_TOOLS CAF_NO_EXAMPLES CAF_NO_UNIT_TESTS
;
do
append_cache_entry
$var
BOOL
yes
done
--dev-mode
)
append_cache_entry CAF_LOG_LEVEL STRING
"
$optarg
"
CMakeBuildType
=
'Debug'
append_cache_entry CAF_LOG_LEVEL STRING
'TRACE'
append_cache_entry CAF_SANITIZERS STRING
'address,undefined'
set_build_flag examples OFF
set_build_flag tools OFF
set_build_flag utility-targets ON
set_build_flag runtime-checks ON
;;
--core-only
)
for
var
in
CAF_NO_TOOLS CAF_NO_EXAMPLES CAF_NO_UNIT_TESTS CAF_NO_IO CAF_NO_OPENSSL
;
do
append_cache_entry
$var
BOOL
yes
done
--enable-
*
)
set_build_flag
$optarg
ON
;;
--dev-mode
)
for
var
in
CAF_NO_TOOLS CAF_NO_EXAMPLES CAF_ENABLE_RUNTIME_CHECKS
;
do
append_cache_entry
$var
BOOL
yes
done
append_cache_entry CMAKE_BUILD_TYPE STRING Debug
append_cache_entry CAF_LOG_LEVEL STRING TRACE
append_cache_entry CAF_SANITIZERS STRING address,undefined
--disable-
*
)
set_build_flag
$optarg
OFF
;;
*
)
echo
"Invalid option '
$1
'. Try
$0
--help to see available options."
exit
1
;;
esac
# Get next input.
shift
done
# Check for `cmake` command.
if
[
-z
"
$CMakeCommand
"
]
;
then
# prefer cmake3 over "regular" cmake (cmake == cmake2 on RHEL)
# Prefer cmake3 over "regular" cmake (cmake == cmake2 on RHEL).
if
command
-v
cmake3
>
/dev/null 2>&1
;
then
CMakeCommand
=
"cmake3"
elif
command
-v
cmake
>
/dev/null 2>&1
;
then
...
...
@@ -354,34 +196,50 @@ if [ -z "$CMakeCommand" ]; then
echo
"This package requires CMake, please install it first."
echo
"Then you may use this script to configure the CMake build."
echo
"Note: pass --cmake=PATH to use cmake in non-standard locations."
exit
1
;
exit
1
fi
fi
# At this point we save the global CMake variables so that configure() can
# later use them.
CMakeDefaultCache
=
$CMakeCacheEntries
# Make sure the build directory is an absolute path.
case
"
$CMakeBuildDir
"
in
/
*
)
CMakeAbsoluteBuildDir
=
"
$CMakeBuildDir
"
;;
*
)
CMakeAbsoluteBuildDir
=
"
$PWD
/
$CMakeBuildDir
"
;;
esac
if
[
-n
"
$dualbuild
"
]
;
then
# Use what we got in $PATH if --with-clang or --with-gcc is not specified.
if
[
-z
"
$clang
"
]
;
then
clang
=
clang++
fi
if
[
-z
"
$gcc
"
]
;
then
gcc
=
g++
# If a build directory exists, delete any existing cache to have a clean build.
if
[
-d
"
$CMakeAbsoluteBuildDir
"
]
;
then
if
[
-f
"
$CMakeAbsoluteBuildDir
/CMakeCache.txt"
]
;
then
rm
-f
"
$CMakeAbsoluteBuildDir
/CMakeCache.txt"
fi
else
mkdir
-p
"
$CMakeAbsoluteBuildDir
"
fi
for
i
in
gcc clang
;
do
eval
"compiler=
\$
$i
"
configure
$compiler
$i
""
""
$CMakeGenerator
done
# Run CMake.
cd
"
$CMakeAbsoluteBuildDir
"
if
[
-n
"
$CMakeGenerator
"
]
;
then
"
$CMakeCommand
"
-G
"
$CMakeGenerator
"
$CMakeCacheEntries
"
$SourceDir
"
else
# Prefer Clang to GCC.
if
[
-n
"
$clang
"
]
;
then
compiler
=
$clang
elif
[
-n
"
$gcc
"
]
;
then
compiler
=
$gcc
fi
"
$CMakeCommand
"
$CMakeCacheEntries
"
$SourceDir
"
fi
configure
"
$compiler
"
""
"
$bindir
"
"
$libdir
"
"
$CMakeGenerator
"
# Generate a config.status file that allows re-running a clean build.
printf
"#!/bin/sh
\n\n
"
>
config.status
printf
"# Switch to the source of this build directory.
\n
"
>>
config.status
printf
"cd
\"
%s
\"\n\n
"
"
$CMakeAbsoluteBuildDir
"
>>
config.status
printf
"# Invoke the command to configure this build.
\n
"
>>
config.status
if
[
-n
"
$CXX
"
]
;
then
printf
"CXX=
\"
%s
\"\n
"
"
$CXX
"
>>
config.status
fi
if
[
-n
"
$CXXFLAGS
"
]
;
then
printf
"CXXFLAGS=
\"
%s
\"\n
"
"
$CXXFLAGS
"
>>
config.status
fi
if
[
-n
"
$LDFLAGS
"
]
;
then
printf
"LDFLAGS=
\"
%s
\"\n
"
"
$LDFLAGS
"
>>
config.status
fi
echo
$Command
>>
config.status
chmod
u+x config.status
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment