Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 1 | # |
| 2 | # Copyright (c) 2017, Alliance for Open Media. All rights reserved |
| 3 | # |
| 4 | # This source code is subject to the terms of the BSD 2 Clause License and the |
| 5 | # Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License was |
| 6 | # not distributed with this source code in the LICENSE file, you can obtain it |
| 7 | # at www.aomedia.org/license/software. If the Alliance for Open Media Patent |
| 8 | # License 1.0 was not distributed with this source code in the PATENTS file, you |
| 9 | # can obtain it at www.aomedia.org/license/patent. |
| 10 | # |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 11 | cmake_minimum_required(VERSION 3.5) |
| 12 | |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 13 | set(REQUIRED_ARGS "AOM_ROOT" "AOM_CONFIG_DIR" "AOM_TARGET_SYSTEM" |
| 14 | "AOM_SYM_FILE" "CONFIG_AV1_DECODER" "CONFIG_AV1_ENCODER") |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 15 | |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 16 | foreach(arg ${REQUIRED_ARGS}) |
| 17 | if("${${arg}}" STREQUAL "") |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 18 | message(FATAL_ERROR "${arg} must not be empty.") |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 19 | endif() |
| 20 | endforeach() |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 21 | |
| 22 | include("${AOM_ROOT}/build/cmake/exports_sources.cmake") |
| 23 | |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 24 | if("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin") |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 25 | set(symbol_prefix "_") |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 26 | elseif("${AOM_TARGET_SYSTEM}" MATCHES "Windows\|MSYS" AND AOM_MSVC) |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 27 | set(symbol_prefix "_") |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 28 | file(WRITE "${AOM_SYM_FILE}" "LIBRARY libaom INITINSTANCE TERMINSTANCE\n" |
| 29 | "DATA MULTIPLE NONSHARED\n" "EXPORTS\n") |
| 30 | else() |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 31 | set(symbol_suffix ";") |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 32 | endif() |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 33 | |
| 34 | set(aom_sym_file "${AOM_SYM_FILE}") |
| 35 | |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 36 | if("${AOM_TARGET_SYSTEM}" STREQUAL "Darwin") |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 37 | file(REMOVE "${aom_sym_file}") |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 38 | elseif("${AOM_TARGET_SYSTEM}" MATCHES "Windows\|MSYS") |
| 39 | file(WRITE "${aom_sym_file}" "LIBRARY libaom INITINSTANCE TERMINSTANCE\n" |
| 40 | "DATA MULTIPLE NONSHARED\n" "EXPORTS\n") |
| 41 | else() |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 42 | file(WRITE "${aom_sym_file}" "{ global:\n") |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 43 | endif() |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 44 | |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 45 | foreach(export_file ${AOM_EXPORTS_SOURCES}) |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 46 | file(STRINGS "${export_file}" exported_file_data) |
| 47 | set(exported_symbols "${exported_symbols} ${exported_file_data};") |
| 48 | string(STRIP "${exported_symbols}" exported_symbols) |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 49 | endforeach() |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 50 | |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 51 | foreach(exported_symbol ${exported_symbols}) |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 52 | string(STRIP "${exported_symbol}" exported_symbol) |
| 53 | string(REGEX REPLACE "text \|data " "" "exported_symbol" "${exported_symbol}") |
| 54 | set(exported_symbol "${symbol_prefix}${exported_symbol}${symbol_suffix}") |
| 55 | file(APPEND "${aom_sym_file}" "${exported_symbol}\n") |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 56 | endforeach() |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 57 | |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 58 | if("${aom_sym_file}" MATCHES "ver$") |
Tom Finegan | 84f2d79 | 2017-06-15 23:06:44 -0700 | [diff] [blame] | 59 | file(APPEND "${aom_sym_file}" " };") |
Johann | 589bae8 | 2018-04-27 10:57:44 -0700 | [diff] [blame] | 60 | endif() |