diff --git a/CMakeLists.txt.in b/CMakeLists.txt.in index 867a83b96..82d8c3b7f 100644 --- a/CMakeLists.txt.in +++ b/CMakeLists.txt.in @@ -26,7 +26,7 @@ # # CMakeLists.txt Bootstrap that sets up the CMake environment and # loads the other CMake files. -# cmake.macros Helper macros for building a generic CEF-based +# macros.cmake Helper macros for building a generic CEF-based # application. # libcef_dll/CMakeLists.txt Defines the libcef_dll_wrapper target. # cefclient/CMakeLists.txt Defines the cefclient target. diff --git a/libcef_dll/CMakeLists.txt.in b/libcef_dll/CMakeLists.txt.in index 9f8f025c3..3e6ba55b4 100644 --- a/libcef_dll/CMakeLists.txt.in +++ b/libcef_dll/CMakeLists.txt.in @@ -4,9 +4,27 @@ add_definitions(-DUSING_CEF_SHARED) +# Append platform specific sources to a list of sources. +# Should be kept synchronized with APPEND_PLATFORM_SOURCES from macros.cmake. +macro(LIBCEF_APPEND_PLATFORM_SOURCES name_of_list) + if(OS_LINUX AND ${name_of_list}_LINUX) + list(APPEND ${name_of_list} ${${name_of_list}_LINUX}) + endif() + if(OS_POSIX AND ${name_of_list}_POSIX) + list(APPEND ${name_of_list} ${${name_of_list}_POSIX}) + endif() + if(OS_WINDOWS AND ${name_of_list}_WINDOWS) + list(APPEND ${name_of_list} ${${name_of_list}_WINDOWS}) + endif() + if(OS_MACOSX AND ${name_of_list}_MACOSX) + list(APPEND ${name_of_list} ${${name_of_list}_MACOSX}) + endif() +endmacro() + {{ 'prefix': 'libcef', 'library': 'libcef_dll_wrapper', + 'append_macro': 'LIBCEF_APPEND_PLATFORM_SOURCES', 'includes': [ 'includes_common', 'autogen_cpp_includes', @@ -20,3 +38,6 @@ add_definitions(-DUSING_CEF_SHARED) 'autogen_client_side', ], }} + +# Remove the default "lib" prefix from the resulting library. +set_target_properties(libcef_dll_wrapper PROPERTIES PREFIX "") diff --git a/tools/make_cmake.py b/tools/make_cmake.py index b848b6613..7aa0807bc 100644 --- a/tools/make_cmake.py +++ b/tools/make_cmake.py @@ -48,7 +48,7 @@ def format_cmake_set(name, values): result += ' %s\n' % value return result + ' )\n' -def format_cmake_group(cmake_path, name, files, platform_sep): +def format_cmake_group(cmake_path, name, files, platform_sep, append_macro): platforms = {} common = [] @@ -87,7 +87,7 @@ def format_cmake_group(cmake_path, name, files, platform_sep): keys = sorted(platforms.keys()) for key in keys: result += format_cmake_set(name + '_' + key, platforms[key]) - result += 'APPEND_PLATFORM_SOURCES(%s)\n' % name + result += '%s(%s)\n' % (append_macro, name) result += 'source_group(%s FILES ${%s})\n\n' % (folder, name) return result @@ -105,6 +105,7 @@ def process_cmake_template_segment(segment, segment_ct, cmake_path, variables): includes = [] suffix = '_SRCS' # Appended to each group name before the platform name. platform_sep = ':' # Used to separate value from platform name. + append_macro = 'APPEND_PLATFORM_SOURCES' # CMake macro name. # Extract values from |segment|. Example |segment| contents: # 'prefix': 'cefsimple', @@ -126,6 +127,9 @@ def process_cmake_template_segment(segment, segment_ct, cmake_path, variables): if 'set' in values: set = values['set'] + if 'append_macro' in values: + append_macro = values['append_macro'] + if 'includes' in values and len(values['includes']) > 0: for include in values['includes']: parts = include.strip().split(platform_sep) @@ -163,7 +167,7 @@ def process_cmake_template_segment(segment, segment_ct, cmake_path, variables): for key in keys: # Add a group of files that share the same path. result += format_cmake_group(cmake_path, key + suffix, groups[key], \ - platform_sep) + platform_sep, append_macro) if not library is None: # Add the library declaration if requested.