Add cmake, include and libcef_dll directories to minimal binary distribution (issue #1897)

This commit is contained in:
Marshall Greenblatt 2016-05-16 14:44:47 -04:00
parent 575c968a55
commit 80c7c1bd77
5 changed files with 107 additions and 60 deletions

View File

@ -1,6 +1,13 @@
CONTENTS CONTENTS
-------- --------
cmake Contains CMake configuration files shared by all targets.
include Contains all required CEF header files.
libcef_dll Contains the source code for the libcef_dll_wrapper static library
that all applications using the CEF C++ API must link against.
Release Contains libcef.so and other components required to run the release Release Contains libcef.so and other components required to run the release
version of CEF-based applications. By default these files should be version of CEF-based applications. By default these files should be
placed in the same directory as the executable. placed in the same directory as the executable.
@ -12,6 +19,10 @@ Resources Contains resources required by libcef.so. By default these files
USAGE USAGE
----- -----
Building using CMake:
CMake can be used to generate project files in many different formats. See
usage instructions at the top of the CMakeLists.txt file.
Please visit the CEF Website for additional usage information. Please visit the CEF Website for additional usage information.
https://bitbucket.org/chromiumembedded/cef/ https://bitbucket.org/chromiumembedded/cef/

View File

@ -1,6 +1,13 @@
CONTENTS CONTENTS
-------- --------
cmake Contains CMake configuration files shared by all targets.
include Contains all required CEF header files.
libcef_dll Contains the source code for the libcef_dll_wrapper static library
that all applications using the CEF C++ API must link against.
Release Contains the "Chromium Embedded Framework.framework" and other Release Contains the "Chromium Embedded Framework.framework" and other
components required to run the release version of CEF-based components required to run the release version of CEF-based
applications. applications.
@ -9,6 +16,10 @@ Release Contains the "Chromium Embedded Framework.framework" and other
USAGE USAGE
----- -----
Building using CMake:
CMake can be used to generate project files in many different formats. See
usage instructions at the top of the CMakeLists.txt file.
Please visit the CEF Website for additional usage information. Please visit the CEF Website for additional usage information.
https://bitbucket.org/chromiumembedded/cef/ https://bitbucket.org/chromiumembedded/cef/

View File

@ -1,19 +1,29 @@
CONTENTS CONTENTS
-------- --------
cmake Contains CMake configuration files shared by all targets.
include Contains all required CEF header files.
libcef_dll Contains the source code for the libcef_dll_wrapper static library
that all applications using the CEF C++ API must link against.
Release Contains libcef.dll, libcef.lib and other components required to Release Contains libcef.dll, libcef.lib and other components required to
build and run the release version of CEF-based applications. By build and run the release version of CEF-based applications. By
default these files should be placed in the same directory as the default these files should be placed in the same directory as the
executable. executable.
Resources Contains resources required by libcef.dll. By default these files Resources Contains resources required by libcef.dll. By default these files
should be placed in the same directory as libcef.dll. By default should be placed in the same directory as libcef.dll.
these files should be placed in the same directory as libcef.dll.
USAGE USAGE
----- -----
Building using CMake:
CMake can be used to generate project files in many different formats. See
usage instructions at the top of the CMakeLists.txt file.
Please visit the CEF Website for additional usage information. Please visit the CEF Website for additional usage information.
https://bitbucket.org/chromiumembedded/cef/ https://bitbucket.org/chromiumembedded/cef/

View File

@ -98,9 +98,9 @@ def create_readme():
'section of this document for licensing terms and conditions.' 'section of this document for licensing terms and conditions.'
elif mode == 'minimal': elif mode == 'minimal':
distrib_type = 'Minimal' distrib_type = 'Minimal'
distrib_desc = 'This distribution contains only the components required to distribute an\n' \ distrib_desc = 'This distribution contains the minimial components necessary to build and\n' \
'application using CEF on the ' + platform_str + ' platform. Please see the LICENSING\n' \ 'distribute an application using CEF on the ' + platform_str + ' platform. Please see\n' \
'section of this document for licensing terms and conditions.' 'the LICENSING section of this document for licensing terms and conditions.'
elif mode == 'client': elif mode == 'client':
distrib_type = 'Client' distrib_type = 'Client'
distrib_desc = 'This distribution contains a release build of the cefclient sample application\n' \ distrib_desc = 'This distribution contains a release build of the cefclient sample application\n' \
@ -137,7 +137,7 @@ def normalize_headers(file, new_path = ''):
"// Include path modified for CEF Binary Distribution.\n#include \""+new_path+"\\1\"", data) "// Include path modified for CEF Binary Distribution.\n#include \""+new_path+"\\1\"", data)
write_file(file, data) write_file(file, data)
def transfer_files(cef_dir, script_dir, transfer_cfg, output_dir, quiet): def eval_transfer_file(cef_dir, script_dir, transfer_cfg, output_dir, quiet):
""" Transfer files based on the specified configuration. """ """ Transfer files based on the specified configuration. """
if not path_exists(transfer_cfg): if not path_exists(transfer_cfg):
return return
@ -168,6 +168,14 @@ def transfer_files(cef_dir, script_dir, transfer_cfg, output_dir, quiet):
new_path = cfg['new_header_path'] new_path = cfg['new_header_path']
normalize_headers(dst, new_path) normalize_headers(dst, new_path)
def transfer_files(cef_dir, script_dir, transfer_cfg_dir, mode, output_dir, quiet):
# Non-mode-specific transfers.
transfer_cfg = os.path.join(transfer_cfg_dir, 'transfer.cfg')
eval_transfer_file(cef_dir, script_dir, transfer_cfg, output_dir, quiet)
# Mode-specific transfers.
transfer_cfg = os.path.join(transfer_cfg_dir, 'transfer_%s.cfg' % mode)
eval_transfer_file(cef_dir, script_dir, transfer_cfg, output_dir, quiet)
def combine_libs(build_dir, libs, dest_lib): def combine_libs(build_dir, libs, dest_lib):
""" Combine multiple static libraries into a single static library. """ """ Combine multiple static libraries into a single static library. """
cmdline = 'msvs_env.bat python combine_libs.py -o "%s"' % dest_lib cmdline = 'msvs_env.bat python combine_libs.py -o "%s"' % dest_lib
@ -341,19 +349,11 @@ cef_paths = cef_paths['variables']
cef_paths2 = eval_file(os.path.join(cef_dir, 'cef_paths2.gypi')) cef_paths2 = eval_file(os.path.join(cef_dir, 'cef_paths2.gypi'))
cef_paths2 = cef_paths2['variables'] cef_paths2 = cef_paths2['variables']
if mode == 'standard': if mode == 'standard' or mode == 'minimal':
# create the include directory # create the include directory
include_dir = os.path.join(output_dir, 'include') include_dir = os.path.join(output_dir, 'include')
make_dir(include_dir, options.quiet) make_dir(include_dir, options.quiet)
# create the cefclient directory
cefclient_dir = os.path.join(output_dir, 'cefclient')
make_dir(cefclient_dir, options.quiet)
# create the cefsimple directory
cefsimple_dir = os.path.join(output_dir, 'cefsimple')
make_dir(cefsimple_dir, options.quiet)
# create the cmake directory # create the cmake directory
cmake_dir = os.path.join(output_dir, 'cmake') cmake_dir = os.path.join(output_dir, 'cmake')
make_dir(cmake_dir, options.quiet) make_dir(cmake_dir, options.quiet)
@ -374,20 +374,6 @@ if mode == 'standard':
transfer_gypi_files(cef_dir, cef_paths['autogen_capi_includes'], \ transfer_gypi_files(cef_dir, cef_paths['autogen_capi_includes'], \
'include/', include_dir, options.quiet) 'include/', include_dir, options.quiet)
# transfer common cefclient files
transfer_gypi_files(cef_dir, cef_paths2['cefclient_sources_browser'], \
'tests/cefclient/', cefclient_dir, options.quiet)
transfer_gypi_files(cef_dir, cef_paths2['cefclient_sources_common'], \
'tests/cefclient/', cefclient_dir, options.quiet)
transfer_gypi_files(cef_dir, cef_paths2['cefclient_sources_renderer'], \
'tests/cefclient/', cefclient_dir, options.quiet)
transfer_gypi_files(cef_dir, cef_paths2['cefclient_sources_resources'], \
'tests/cefclient/', cefclient_dir, options.quiet)
# transfer common cefsimple files
transfer_gypi_files(cef_dir, cef_paths2['cefsimple_sources_common'], \
'tests/cefsimple/', cefsimple_dir, options.quiet)
# transfer common libcef_dll_wrapper files # transfer common libcef_dll_wrapper files
transfer_gypi_files(cef_dir, cef_paths2['libcef_dll_wrapper_sources_base'], \ transfer_gypi_files(cef_dir, cef_paths2['libcef_dll_wrapper_sources_base'], \
'libcef_dll/', libcef_dll_dir, options.quiet) 'libcef_dll/', libcef_dll_dir, options.quiet)
@ -396,19 +382,9 @@ if mode == 'standard':
transfer_gypi_files(cef_dir, cef_paths['autogen_client_side'], \ transfer_gypi_files(cef_dir, cef_paths['autogen_client_side'], \
'libcef_dll/', libcef_dll_dir, options.quiet) 'libcef_dll/', libcef_dll_dir, options.quiet)
# transfer gyp files
copy_file(os.path.join(script_dir, 'distrib/cefclient.gyp'), output_dir, options.quiet)
paths_gypi = os.path.join(cef_dir, 'cef_paths2.gypi')
data = read_file(paths_gypi)
data = data.replace('tests/cefclient/', 'cefclient/')
data = data.replace('tests/cefsimple/', 'cefsimple/')
write_file(os.path.join(output_dir, 'cef_paths2.gypi'), data)
copy_file(os.path.join(cef_dir, 'cef_paths.gypi'), \
os.path.join(output_dir, 'cef_paths.gypi'), options.quiet)
# transfer additional files # transfer additional files
transfer_files(cef_dir, script_dir, os.path.join(script_dir, 'distrib/transfer.cfg'), \ transfer_files(cef_dir, script_dir, os.path.join(script_dir, 'distrib'), \
output_dir, options.quiet) mode, output_dir, options.quiet)
# process cmake templates # process cmake templates
variables = dict(cef_paths.items() + cef_paths2.items()) variables = dict(cef_paths.items() + cef_paths2.items())
@ -427,6 +403,31 @@ if mode == 'standard':
process_cmake_template(os.path.join(cef_dir, 'libcef_dll', 'CMakeLists.txt.in'), \ process_cmake_template(os.path.join(cef_dir, 'libcef_dll', 'CMakeLists.txt.in'), \
os.path.join(libcef_dll_dir, 'CMakeLists.txt'), \ os.path.join(libcef_dll_dir, 'CMakeLists.txt'), \
variables, options.quiet) variables, options.quiet)
if mode == 'standard':
# create the cefclient directory
cefclient_dir = os.path.join(output_dir, 'cefclient')
make_dir(cefclient_dir, options.quiet)
# create the cefsimple directory
cefsimple_dir = os.path.join(output_dir, 'cefsimple')
make_dir(cefsimple_dir, options.quiet)
# transfer common cefclient files
transfer_gypi_files(cef_dir, cef_paths2['cefclient_sources_browser'], \
'tests/cefclient/', cefclient_dir, options.quiet)
transfer_gypi_files(cef_dir, cef_paths2['cefclient_sources_common'], \
'tests/cefclient/', cefclient_dir, options.quiet)
transfer_gypi_files(cef_dir, cef_paths2['cefclient_sources_renderer'], \
'tests/cefclient/', cefclient_dir, options.quiet)
transfer_gypi_files(cef_dir, cef_paths2['cefclient_sources_resources'], \
'tests/cefclient/', cefclient_dir, options.quiet)
# transfer common cefsimple files
transfer_gypi_files(cef_dir, cef_paths2['cefsimple_sources_common'], \
'tests/cefsimple/', cefsimple_dir, options.quiet)
# process cmake templates
process_cmake_template(os.path.join(cef_dir, 'tests', 'cefclient', 'CMakeLists.txt.in'), \ process_cmake_template(os.path.join(cef_dir, 'tests', 'cefclient', 'CMakeLists.txt.in'), \
os.path.join(cefclient_dir, 'CMakeLists.txt'), \ os.path.join(cefclient_dir, 'CMakeLists.txt'), \
variables, options.quiet) variables, options.quiet)
@ -434,6 +435,17 @@ if mode == 'standard':
os.path.join(cefsimple_dir, 'CMakeLists.txt'), \ os.path.join(cefsimple_dir, 'CMakeLists.txt'), \
variables, options.quiet) variables, options.quiet)
# transfer gyp files
copy_file(os.path.join(script_dir, 'distrib/cefclient.gyp'), output_dir, options.quiet)
paths_gypi = os.path.join(cef_dir, 'cef_paths2.gypi')
data = read_file(paths_gypi)
data = data.replace('tests/cefclient/', 'cefclient/')
data = data.replace('tests/cefsimple/', 'cefsimple/')
write_file(os.path.join(output_dir, 'cef_paths2.gypi'), data)
copy_file(os.path.join(cef_dir, 'cef_paths.gypi'), \
os.path.join(output_dir, 'cef_paths.gypi'), options.quiet)
if platform == 'windows': if platform == 'windows':
binaries = [ binaries = [
'd3dcompiler_47.dll', 'd3dcompiler_47.dll',
@ -526,11 +538,16 @@ if platform == 'windows':
copy_file(os.path.join(build_dir, 'icudtl.dat'), dst_dir, options.quiet) copy_file(os.path.join(build_dir, 'icudtl.dat'), dst_dir, options.quiet)
copy_dir(os.path.join(build_dir, 'locales'), os.path.join(dst_dir, 'locales'), options.quiet) copy_dir(os.path.join(build_dir, 'locales'), os.path.join(dst_dir, 'locales'), options.quiet)
if mode == 'standard': if mode == 'standard' or mode == 'minimal':
# transfer include files # transfer include files
transfer_gypi_files(cef_dir, cef_paths2['includes_win'], \ transfer_gypi_files(cef_dir, cef_paths2['includes_win'], \
'include/', include_dir, options.quiet) 'include/', include_dir, options.quiet)
# transfer additional files, if any
transfer_files(cef_dir, script_dir, os.path.join(script_dir, 'distrib', 'win'), \
mode, output_dir, options.quiet)
if mode == 'standard':
# transfer cefclient files # transfer cefclient files
transfer_gypi_files(cef_dir, cef_paths2['cefclient_sources_win'], \ transfer_gypi_files(cef_dir, cef_paths2['cefclient_sources_win'], \
'tests/cefclient/', cefclient_dir, options.quiet) 'tests/cefclient/', cefclient_dir, options.quiet)
@ -539,10 +556,6 @@ if platform == 'windows':
transfer_gypi_files(cef_dir, cef_paths2['cefsimple_sources_win'], \ transfer_gypi_files(cef_dir, cef_paths2['cefsimple_sources_win'], \
'tests/cefsimple/', cefsimple_dir, options.quiet) 'tests/cefsimple/', cefsimple_dir, options.quiet)
# transfer additional files, if any
transfer_files(cef_dir, script_dir, os.path.join(script_dir, 'distrib/win/transfer.cfg'), \
output_dir, options.quiet)
if not options.nodocs: if not options.nodocs:
# generate doc files # generate doc files
os.popen('make_cppdocs.bat '+cef_rev) os.popen('make_cppdocs.bat '+cef_rev)
@ -593,11 +606,16 @@ elif platform == 'macosx':
dst_path = os.path.join(symbol_output_dir, '%s.dSYM' % framework_name) dst_path = os.path.join(symbol_output_dir, '%s.dSYM' % framework_name)
run('dsymutil "%s" -o "%s"' % (src_path, dst_path), cef_dir) run('dsymutil "%s" -o "%s"' % (src_path, dst_path), cef_dir)
if mode == 'standard': if mode == 'standard' or mode == 'minimal':
# transfer include files # transfer include files
transfer_gypi_files(cef_dir, cef_paths2['includes_mac'], \ transfer_gypi_files(cef_dir, cef_paths2['includes_mac'], \
'include/', include_dir, options.quiet) 'include/', include_dir, options.quiet)
# transfer additional files, if any
transfer_files(cef_dir, script_dir, os.path.join(script_dir, 'distrib', 'mac'), \
mode, output_dir, options.quiet)
if mode == 'standard':
# transfer cefclient files # transfer cefclient files
transfer_gypi_files(cef_dir, cef_paths2['cefclient_sources_mac'], \ transfer_gypi_files(cef_dir, cef_paths2['cefclient_sources_mac'], \
'tests/cefclient/', cefclient_dir, options.quiet) 'tests/cefclient/', cefclient_dir, options.quiet)
@ -623,10 +641,6 @@ elif platform == 'macosx':
copy_dir(os.path.join(cef_dir, 'tests/cefsimple/mac/'), os.path.join(output_dir, 'cefsimple/mac/'), \ copy_dir(os.path.join(cef_dir, 'tests/cefsimple/mac/'), os.path.join(output_dir, 'cefsimple/mac/'), \
options.quiet) options.quiet)
# transfer additional files, if any
transfer_files(cef_dir, script_dir, os.path.join(script_dir, 'distrib/mac/transfer.cfg'), \
output_dir, options.quiet)
elif platform == 'linux': elif platform == 'linux':
out_dir = os.path.join(src_dir, 'out') out_dir = os.path.join(src_dir, 'out')
lib_dir_name = 'lib' lib_dir_name = 'lib'
@ -686,11 +700,16 @@ elif platform == 'linux':
copy_file(os.path.join(build_dir, 'icudtl.dat'), dst_dir, options.quiet) copy_file(os.path.join(build_dir, 'icudtl.dat'), dst_dir, options.quiet)
copy_dir(os.path.join(build_dir, 'locales'), os.path.join(dst_dir, 'locales'), options.quiet) copy_dir(os.path.join(build_dir, 'locales'), os.path.join(dst_dir, 'locales'), options.quiet)
if mode == 'standard': if mode == 'standard' or mode == 'minimal':
# transfer include files # transfer include files
transfer_gypi_files(cef_dir, cef_paths2['includes_linux'], \ transfer_gypi_files(cef_dir, cef_paths2['includes_linux'], \
'include/', include_dir, options.quiet) 'include/', include_dir, options.quiet)
# transfer additional files, if any
transfer_files(cef_dir, script_dir, os.path.join(script_dir, 'distrib', 'linux'), \
mode, output_dir, options.quiet)
if mode == 'standard':
# transfer cefclient files # transfer cefclient files
transfer_gypi_files(cef_dir, cef_paths2['cefclient_sources_linux'], \ transfer_gypi_files(cef_dir, cef_paths2['cefclient_sources_linux'], \
'tests/cefclient/', cefclient_dir, options.quiet) 'tests/cefclient/', cefclient_dir, options.quiet)
@ -701,20 +720,16 @@ elif platform == 'linux':
transfer_gypi_files(cef_dir, cef_paths2['cefsimple_sources_linux'], \ transfer_gypi_files(cef_dir, cef_paths2['cefsimple_sources_linux'], \
'tests/cefsimple/', cefsimple_dir, options.quiet) 'tests/cefsimple/', cefsimple_dir, options.quiet)
# transfer additional files, if any
transfer_files(cef_dir, script_dir, os.path.join(script_dir, 'distrib/linux/transfer.cfg'), \
output_dir, options.quiet)
if not options.noarchive: if not options.noarchive:
# create an archive for each output directory # create an archive for each output directory
archive_extenstion = '.zip' archive_extension = '.zip'
if os.getenv('CEF_COMMAND_7ZIP', '') != '': if os.getenv('CEF_COMMAND_7ZIP', '') != '':
archive_extenstion = '.7z' archive_extension = '.7z'
for dir in archive_dirs: for dir in archive_dirs:
zip_file = os.path.split(dir)[1] + archive_extenstion zip_file = os.path.split(dir)[1] + archive_extension
if not options.quiet: if not options.quiet:
sys.stdout.write('Creating '+zip_file+"...\n") sys.stdout.write('Creating '+zip_file+"...\n")
if archive_extenstion == '.zip': if archive_extension == '.zip':
create_archive(dir, os.path.join(dir, os.pardir, zip_file)) create_archive(dir, os.path.join(dir, os.pardir, zip_file))
else: else:
create_7z_archive(dir, os.path.join(dir, os.pardir, zip_file)) create_7z_archive(dir, os.path.join(dir, os.pardir, zip_file))