* Moved the optional package dependency definitions into the new

build/jam/OptionalPackageDependencies and include it earlier (before the
  Jamfiles).
* Introduced build/jam/OptionalBuildFeatures which is supposed to do the setup
  for optional build features that need it.
* Renamed USE_SSL to HAIKU_BUILD_FEATURE_SSL and made it more intelligent.
  The OpenSSL optional package is downloaded and unzipped automatically when
  enabled. Switching between enabled/disabled HAIKU_BUILD_FEATURE_SSL is
  handled gracefully -- the concerned components are built in separate
  subdirectories. Adding the OpenSSL optional package to the image also enables
  HAIKU_BUILD_FEATURE_SSL.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30021 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold 2009-04-08 10:07:17 +00:00
parent d339b68bef
commit ff81d306d4
12 changed files with 175 additions and 111 deletions

View File

@ -132,6 +132,11 @@ Depends ScreenSaverKit :
Haiku
;
# Evaluate optional package dependencies and prepare the optional build
# features before parsing the Jamfile tree.
include [ FDirName $(HAIKU_BUILD_RULES_DIR) OptionalPackageDependencies ] ;
include [ FDirName $(HAIKU_BUILD_RULES_DIR) OptionalBuildFeatures ] ;
# Optionally we allow not to include the "src" subdirectory.
if $(HAIKU_DONT_INCLUDE_SRC) {
# Don't include "src", but at least include the stuff needed for the

View File

@ -8,6 +8,8 @@ HAIKU_BUILD_RULES_DIR = [ FDirName $(HAIKU_BUILD_DIR) jam ] ;
HAIKU_OBJECT_DIR = [ FDirName $(HAIKU_OUTPUT_DIR) objects ] ;
HAIKU_COMMON_PLATFORM_OBJECT_DIR = [ FDirName $(HAIKU_OBJECT_DIR) common ] ;
HAIKU_DOWNLOAD_DIR = [ FDirName $(HAIKU_OUTPUT_DIR) download ] ;
HAIKU_OPTIONAL_BUILD_PACKAGES_DIR = [ FDirName $(HAIKU_OUTPUT_DIR)
build_packages ] ;
# Cache files for header scanning and jamfile caching
HCACHEFILE = header_cache ;

View File

@ -0,0 +1,47 @@
# This file contains setup for features that can optionally be used for the
# build. For features that require downloading a zip file from somewhere it is
# likely the same file use for an optional package.
# SSL
# Automatically enable the SSL feature, when the optional OpenSSL optional
# package is enabled.
if [ IsOptionalHaikuImagePackageAdded OpenSSL ] {
HAIKU_BUILD_FEATURE_SSL = 1 ;
}
local baseURL = http://haiku-files.org/files/optional-packages ;
HAIKU_OPENSSL_PACKAGE = openssl-0.9.8j-gcc2-2009-01-28 ;
HAIKU_OPENSSL_URL = $(baseURL)/$(HAIKU_OPENSSL_PACKAGE).zip ;
if $(HAIKU_BUILD_FEATURE_SSL) {
if $(TARGET_ARCH) != x86 {
Echo "SSL build feature not available for $(TARGET_ARCH)" ;
} else {
# Download the zip archive.
local zipFile = [ DownloadOptionalPackage $(HAIKU_OPENSSL_PACKAGE)
: $(HAIKU_OPENSSL_URL) ] ;
# zip file and output directory
HAIKU_OPENSSL_ZIP_FILE = $(zipFile) ;
HAIKU_OPENSSL_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR)
$(HAIKU_OPENSSL_PACKAGE) ] ;
# unzip headers and libraries
HAIKU_OPENSSL_HEADERS_DEPENDENCY = [ UnzipArchive $(HAIKU_OPENSSL_DIR)
: common/include/ : $(zipFile)
] ;
HAIKU_OPENSSL_LIBS = [ UnzipArchive $(HAIKU_OPENSSL_DIR)
:
common/lib/libcrypto.so
common/lib/libssl.so
: $(zipFile)
] ;
HAIKU_OPENSSL_ENABLED = 1 ;
HAIKU_OPENSSL_HEADERS
= [ FDirName $(HAIKU_OPENSSL_DIR) common include ] ;
}
}

View File

@ -0,0 +1,9 @@
# package dependencies
OptionalPackageDependencies APR-util : APR ;
OptionalPackageDependencies BeHappy : BeBook NetSurf ;
OptionalPackageDependencies Development : Perl ;
OptionalPackageDependencies LibLayout : Development ;
OptionalPackageDependencies NetSurf : OpenSSL ;
OptionalPackageDependencies OpenSSH : OpenSSL ;
OptionalPackageDependencies Subversion : OpenSSL ;

View File

@ -43,16 +43,6 @@ if $(HAIKU_ADD_ALTERNATIVE_GCC_LIBS) && $(HAIKU_ALTERNATIVE_GCC_OUTPUT_DIR) {
# Yasm
# package dependencies
OptionalPackageDependencies APR-util : APR ;
OptionalPackageDependencies BeHappy : BeBook NetSurf ;
OptionalPackageDependencies Development : Perl ;
OptionalPackageDependencies LibLayout : Development ;
OptionalPackageDependencies NetSurf : OpenSSL ;
OptionalPackageDependencies OpenSSH : OpenSSL ;
OptionalPackageDependencies Subversion : OpenSSL ;
# APR
if [ IsOptionalHaikuImagePackageAdded APR ] {
if $(TARGET_ARCH) != x86 {
@ -446,16 +436,14 @@ if [ IsOptionalHaikuImagePackageAdded OpenSSL ] {
if $(TARGET_ARCH) != x86 {
Echo "No optional package OpenSSL available for $(TARGET_ARCH)" ;
} else {
local baseURL = http://haiku-files.org/files/optional-packages ;
InstallOptionalHaikuImagePackage openssl-0.9.8j-gcc2-2009-01-28
: $(baseURL)/openssl-0.9.8j-gcc2-2009-01-28.zip
InstallOptionalHaikuImagePackage $(HAIKU_OPENSSL_PACKAGE)
: $(HAIKU_OPENSSL_URL)
:
;
}
}
# P7zip
if [ IsOptionalHaikuImagePackageAdded P7zip ] {
if $(TARGET_ARCH) != x86 {
@ -481,8 +469,6 @@ if [ IsOptionalHaikuImagePackageAdded P7zip ] {
}
# Pe text editor
if [ IsOptionalHaikuImagePackageAdded Pe ] {
if $(TARGET_ARCH) != x86 {

View File

@ -9,7 +9,6 @@ switch $(HAIKU_BUILD_PROFILE) {
AddGroupToHaikuImage party : 101 : user sshd ;
HAIKU_IMAGE_HOST_NAME = shredder ;
HAIKU_IMAGE_SIZE = 400 ;
USE_SSL = 1 ;
AddOptionalHaikuImagePackages BePDF Firefox Pe Vision VLC WonderBrush ;
AddOptionalHaikuImagePackages CVS Development Subversion OpenSSH Yasm ;

View File

@ -49,6 +49,11 @@ AppendToConfigVar DEFINES : HAIKU_TOP src kits : RUN_WITHOUT_REGISTRAR
# has no effect on executables or other shared objects.
DEBUG on <src!bin!gdb!gdb!>haiku-nat.o = 1 ;
# Enables the SSL build feature. Several targets will be compiled with SSL
# support. Adding the OpenSSL optional package will automatically enable this
# feature.
HAIKU_BUILD_FEATURE_SSL = 1 ;
# Haiku Image Related Modifications

View File

@ -11,29 +11,30 @@ UsePrivateHeaders mail ;
SubDirHdrs [ FDirName $(HAIKU_TOP) headers os add-ons mail_daemon ] ;
local sslDir ;
if $(USE_SSL) {
SubDirC++Flags -DUSE_SSL ;
if ! $(SSL_DIR) {
sslDir = [ FDirName $(HAIKU_OUTPUT_DIR) cross-ssl common ] ;
} else {
sslDir = $(SSL_DIR) ;
}
SubDirSysHdrs [ FDirName $(sslDir) include ] ;
}
Addon IMAP :
local sources =
imap_client.cpp
imap_config.cpp
NestedString.cpp ;
NestedString.cpp
;
LinkAgainst IMAP : be libmail.so $(TARGET_NETWORK_LIBS) ;
if $(USE_SSL) {
LinkAgainst IMAP : $(sslDir)/lib/libssl.so $(sslDir)/lib/libcrypto.so ;
# use OpenSSL, if enabled
if $(HAIKU_OPENSSL_ENABLED) {
SubDirC++Flags -DUSE_SSL ;
SubDirSysHdrs $(HAIKU_OPENSSL_HEADERS) ;
Includes [ FGristFiles $(sources) ] : $(HAIKU_OPENSSL_HEADERS_DEPENDENCY) ;
# Dependency needed to trigger downloading/unzipping the package before
# compiling the files.
SetupFeatureObjectsDir ssl ;
} else {
SetupFeatureObjectsDir no-ssl ;
}
Addon IMAP
: $(sources)
: be libmail.so $(TARGET_NETWORK_LIBS) $(HAIKU_OPENSSL_LIBS)
;
Package haiku-maildaemon-cvs :
IMAP :
boot home config add-ons mail_daemon inbound_protocols ;
boot home config add-ons mail_daemon inbound_protocols
;

View File

@ -11,30 +11,31 @@ UsePrivateHeaders mail ;
SubDirHdrs [ FDirName $(HAIKU_TOP) headers os add-ons mail_daemon ] ;
local sslDir ;
if $(USE_SSL) {
SubDirC++Flags -DUSE_SSL ;
if ! $(SSL_DIR) {
sslDir = [ FDirName $(HAIKU_OUTPUT_DIR) cross-ssl common ] ;
} else {
sslDir = $(SSL_DIR) ;
}
SubDirSysHdrs [ FDirName $(sslDir) include ] ;
}
Addon POP3 :
local sources =
MessageIO.cpp
pop3.cpp
SimpleMailProtocol.cpp
md5c.c ;
md5c.c
;
LinkAgainst POP3 : be libmail.so $(TARGET_NETWORK_LIBS) ;
if $(USE_SSL) {
LinkAgainst POP3 : $(sslDir)/lib/libssl.so $(sslDir)/lib/libcrypto.so ;
# use OpenSSL, if enabled
if $(HAIKU_OPENSSL_ENABLED) {
SubDirC++Flags -DUSE_SSL ;
SubDirSysHdrs $(HAIKU_OPENSSL_HEADERS) ;
Includes [ FGristFiles $(sources) ] : $(HAIKU_OPENSSL_HEADERS_DEPENDENCY) ;
# Dependency needed to trigger downloading/unzipping the package before
# compiling the files.
SetupFeatureObjectsDir ssl ;
} else {
SetupFeatureObjectsDir no-ssl ;
}
Addon POP3
: $(sources)
: be libmail.so $(TARGET_NETWORK_LIBS) $(HAIKU_OPENSSL_LIBS)
;
Package haiku-maildaemon-cvs :
POP3 :
boot home config add-ons mail_daemon inbound_protocols ;
boot home config add-ons mail_daemon inbound_protocols
;

View File

@ -11,26 +11,30 @@ UsePrivateHeaders mail ;
SubDirHdrs [ FDirName $(HAIKU_TOP) headers os add-ons mail_daemon ] ;
if $(USE_SSL) {
SubDirC++Flags -DUSE_SSL ;
if ! $(SSL_DIR) {
sslDir = [ FDirName $(HAIKU_OUTPUT_DIR) cross-ssl common ] ;
} else {
sslDir = $(SSL_DIR) ;
}
SubDirSysHdrs [ FDirName $(sslDir) include ] ;
}
Addon SMTP :
local sources =
smtp.cpp
md5c.c ;
md5c.c
;
LinkAgainst SMTP : be libmail.so $(TARGET_NETWORK_LIBS) $(TARGET_LIBSTDC++) ;
if $(USE_SSL) {
LinkAgainst SMTP : $(sslDir)/lib/libssl.so $(sslDir)/lib/libcrypto.so ;
# use OpenSSL, if enabled
if $(HAIKU_OPENSSL_ENABLED) {
SubDirC++Flags -DUSE_SSL ;
SubDirSysHdrs $(HAIKU_OPENSSL_HEADERS) ;
Includes [ FGristFiles $(sources) ] : $(HAIKU_OPENSSL_HEADERS_DEPENDENCY) ;
# Dependency needed to trigger downloading/unzipping the package before
# compiling the files.
SetupFeatureObjectsDir ssl ;
} else {
SetupFeatureObjectsDir no-ssl ;
}
Addon SMTP
: $(sources)
: be libmail.so $(TARGET_NETWORK_LIBS) $(TARGET_LIBSTDC++)
$(HAIKU_OPENSSL_LIBS)
;
Package haiku-maildaemon-cvs :
SMTP :
boot home config add-ons mail_daemon outbound_protocols ;
boot home config add-ons mail_daemon outbound_protocols
;

View File

@ -1,28 +1,34 @@
SubDir HAIKU_TOP src bin network wget ;
UseHeaders [ FDirName $(SUBDIR) src ] : true ;
SEARCH_SOURCE += [ FDirName $(SUBDIR) src ] ;
local defines = [ FDefines HAVE_CONFIG_H=1 ] ;
SubDirCcFlags $(defines) ;
SubDirC++Flags $(defines) ;
local SSL_FILES ;
local SSL_LIBS ;
if $(USE_SSL) {
# use OpenSSL, if enabled
local sslSources ;
if $(HAIKU_OPENSSL_ENABLED) {
SubDirCcFlags -DHAVE_LIBSSL ;
if ! $(SSL_DIR) {
sslDir = [ FDirName $(HAIKU_OUTPUT_DIR) cross-ssl common ] ;
} else {
sslDir = $(SSL_DIR) ;
}
SubDirSysHdrs [ FDirName $(sslDir) include ] ;
SSL_FILES = openssl.c ;
SSL_LIBS = $(sslDir)/lib/libssl.so $(sslDir)/lib/libcrypto.so ;
SubDirSysHdrs $(HAIKU_OPENSSL_HEADERS) ;
sslSources = openssl.c ;
Includes [ FGristFiles $(sslSources) ]
: $(HAIKU_OPENSSL_HEADERS_DEPENDENCY) ;
# Dependency needed to trigger downloading/unzipping the package before
# compiling the files.
SetupFeatureObjectsDir ssl ;
} else {
SetupFeatureObjectsDir no-ssl ;
}
SEARCH_SOURCE += [ FDirName $(SUBDIR) src ] ;
# needs to be invoked after SetupFeatureObjectsDir
BinCommand wget :
cmpt.c
connect.c
@ -55,6 +61,6 @@ BinCommand wget :
utils.c
version.c
xmalloc.c
$(SSL_FILES)
: $(TARGET_NETWORK_LIBS) $(SSL_LIBS)
$(sslSources)
: $(TARGET_NETWORK_LIBS) $(HAIKU_OPENSSL_LIBS)
;

View File

@ -15,25 +15,12 @@ SubDirHdrs [ FDirName $(HAIKU_TOP) headers os add-ons mail_daemon ] ;
UsePrivateHeaders shared ;
# TODO(bga): E-mail preferences does not really need to link against the
# OpenSSL libraries. Remove this after problems with the runtile loader are
# OpenSSL libraries. Remove this after problems with the runtime loader are
# sorted up. Details here:
#
# http://www.freelists.org/post/haiku-development/Runtime-loader-problem
local sslDir ;
if $(USE_SSL) {
SubDirC++Flags -DUSE_SSL ;
if ! $(SSL_DIR) {
sslDir = [ FDirName $(HAIKU_OUTPUT_DIR) cross-ssl common ] ;
} else {
sslDir = $(SSL_DIR) ;
}
SubDirSysHdrs [ FDirName $(sslDir) include ] ;
}
Preference E-mail :
local sources =
Account.cpp
AutoConfig.cpp
AutoConfigWindow.cpp
@ -43,17 +30,29 @@ Preference E-mail :
ConfigWindow.cpp
DNSQuery.cpp
main.cpp
: be libmail.so $(HAIKU_NETWORK_LIBS) $(TARGET_NETAPI_LIB)
: e-mail.rdef
;
;
if $(USE_SSL) {
LinkAgainst E-mail : $(sslDir)/lib/libssl.so $(sslDir)/lib/libcrypto.so ;
if $(HAIKU_OPENSSL_ENABLED) {
SubDirC++Flags -DUSE_SSL ;
SubDirSysHdrs $(HAIKU_OPENSSL_HEADERS) ;
Includes [ FGristFiles $(sources) ] : $(HAIKU_OPENSSL_HEADERS_DEPENDENCY) ;
# Dependency needed to trigger downloading/unzipping the package before
# compiling the files.
SetupFeatureObjectsDir ssl ;
} else {
SetupFeatureObjectsDir no-ssl ;
}
Preference E-mail
: $(sources)
: be libmail.so $(HAIKU_NETWORK_LIBS) $(TARGET_NETAPI_LIB)
$(HAIKU_OPENSSL_LIBS)
: e-mail.rdef
;
Package haiku-maildaemon-cvs :
E-mail :
boot beos preferences ;
boot beos preferences
;
SubInclude HAIKU_TOP src preferences mail ProviderInfo ;