Make libdawn a shared library, add a DAWN_EXPORT macro

This commit is contained in:
Corentin Wallez 2018-07-25 12:41:29 +02:00 committed by Corentin Wallez
parent e37234cd22
commit 5dcaadb0f9
4 changed files with 42 additions and 6 deletions

View File

@ -216,9 +216,11 @@ Generate(
${GENERATOR_COMMON_ARGS}
-T libdawn
)
target_compile_definitions(libdawn_autogen PRIVATE DAWN_IMPLEMENTATION)
add_library(libdawn STATIC
add_library(libdawn SHARED
$<TARGET_OBJECTS:libdawn_autogen>
${INCLUDE_DIR}/dawn/dawn_export.h
${INCLUDE_DIR}/dawn/dawn_wsi.h
${INCLUDE_DIR}/dawn/EnumClassBitmasks.h
)

View File

@ -15,6 +15,8 @@
#ifndef DAWN_DAWN_H_
#define DAWN_DAWN_H_
#include "dawn/dawn_export.h"
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
@ -81,12 +83,12 @@ typedef struct dawnProcTable_s dawnProcTable;
// Stuff below is for convenience and will forward calls to a static dawnProcTable.
// Set which dawnProcTable will be used
void dawnSetProcs(const dawnProcTable* procs);
DAWN_EXPORT void dawnSetProcs(const dawnProcTable* procs);
{% for type in by_category["object"] %}
// Methods of {{type.name.CamelCase()}}
{% for method in native_methods(type) %}
{{as_cType(method.return_type.name)}} {{as_cMethod(type.name, method.name)}}(
DAWN_EXPORT {{as_cType(method.return_type.name)}} {{as_cMethod(type.name, method.name)}}(
{{-as_cType(type.name)}} {{as_varName(type.name)}}
{%- for arg in method.arguments -%}
, {{as_annotated_cType(arg)}}

View File

@ -15,8 +15,8 @@
#ifndef DAWN_DAWNCPP_H_
#define DAWN_DAWNCPP_H_
#include "dawn.h"
#include "dawn/dawn.h"
#include "dawn/dawn_export.h"
#include "dawn/EnumClassBitmasks.h"
namespace dawn {
@ -141,7 +141,7 @@ namespace dawn {
{% for type in by_category["object"] %}
{% set CppType = as_cppType(type.name) %}
{% set CType = as_cType(type.name) %}
class {{CppType}} : public ObjectBase<{{CppType}}, {{CType}}> {
class DAWN_EXPORT {{CppType}} : public ObjectBase<{{CppType}}, {{CType}}> {
public:
using ObjectBase::ObjectBase;
using ObjectBase::operator=;

View File

@ -0,0 +1,32 @@
// Copyright 2018 The Dawn Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef DAWN_EXPORT_H_
#define DAWN_EXPORT_H_
#if defined(WIN32)
# if defined(DAWN_IMPLEMENTATION)
# define DAWN_EXPORT __declspec(dllexport)
# else
# define DAWN_EXPORT __declspec(dllimport)
# endif
#else
# if defined(DAWN_IMPLEMENTATION)
# define DAWN_EXPORT __attribute__((visibility("default")))
# else
# define DAWN_EXPORT
# endif
#endif
#endif // DAWN_EXPORT_H_