ObjFW  Check-in [30bc1fb225]

Overview
Comment:Override Clang's block declarations on Windows

This is necessary as Clang's implicit declarations for block-related
things are dllimport, while we need dllexport when compiling ObjFW
itself.

Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 30bc1fb225ba0de24b2a99aa3bb651ea4777449c13e738dde48f37ae7b4c896a
User & Date: js on 2017-01-07 23:23:19
Other Links: manifest | tags
Context
2017-01-07
23:37
Add Clang/Win32 to {PLATFORMS,README-WINDOWS}.md check-in: 8cf1390ea2 user: js tags: trunk
23:23
Override Clang's block declarations on Windows check-in: 30bc1fb225 user: js tags: trunk
23:08
Update buildsys check-in: 888b97ef5a user: js tags: trunk
Changes

Modified src/Makefile from [585cef9f50] to [dc8c07a997].

170
171
172
173
174
175
176
177
178
179
	     ${FORWARDING_FORWARDING_A}
LIB_OBJS_EXTRA = ${RUNTIME_RUNTIME_LIB_A}	\
		 ${EXCEPTIONS_EXCEPTIONS_LIB_A}	\
		 ${FORWARDING_FORWARDING_LIB_A}

include ../buildsys.mk

CPPFLAGS += -I. -I.. -Iexceptions -Iruntime
LD = ${OBJC}
LDFLAGS += ${REEXPORT_LIBOBJC}







|


170
171
172
173
174
175
176
177
178
179
	     ${FORWARDING_FORWARDING_A}
LIB_OBJS_EXTRA = ${RUNTIME_RUNTIME_LIB_A}	\
		 ${EXCEPTIONS_EXCEPTIONS_LIB_A}	\
		 ${FORWARDING_FORWARDING_LIB_A}

include ../buildsys.mk

CPPFLAGS += -I. -I.. -Iexceptions -Iruntime -DOF_COMPILING_OBJFW
LD = ${OBJC}
LDFLAGS += ${REEXPORT_LIBOBJC}

Modified src/OFObject.h from [fb4f549aa8] to [12add09603].

26
27
28
29
30
31
32

33
34
35
36
37
38
39
#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>
#include <limits.h>

#import "macros.h"
#import "autorelease.h"


OF_ASSUME_NONNULL_BEGIN

/*! @file */

/*!
 * @brief A result of a comparison.







>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>
#include <limits.h>

#import "macros.h"
#import "autorelease.h"
#import "block.h"

OF_ASSUME_NONNULL_BEGIN

/*! @file */

/*!
 * @brief A result of a comparison.

Modified src/block.h from [261f53d6e7] to [2b08db5321].

37
38
39
40
41
42
43












44
45
46
47
48
49
50
} of_block_literal_t;

#ifdef __cplusplus
extern "C" {
#endif
extern void* _Block_copy(const void*);
extern void _Block_release(const void*);












#ifdef __cplusplus
}
#endif

#ifndef Block_copy
# define Block_copy(...) \
    ((__typeof__(__VA_ARGS__))_Block_copy((const void*)(__VA_ARGS__)))







>
>
>
>
>
>
>
>
>
>
>
>







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
} of_block_literal_t;

#ifdef __cplusplus
extern "C" {
#endif
extern void* _Block_copy(const void*);
extern void _Block_release(const void*);

# if defined(OF_WINDOWS) && defined(OF_COMPILING_OBJFW)
/*
 * Clang has implicit declarations for these, but they are dllimport. When
 * compiling ObjFW itself, these need to be dllexport.
 */
extern __declspec(dllexport) struct objc_abi_class _NSConcreteStackBlock;
extern __declspec(dllexport) struct objc_abi_class _NSConcreteGlobalBlock;
extern __declspec(dllexport) void _Block_object_assign(void*, const void*,
    const int);
extern __declspec(dllexport) void _Block_object_dispose(const void*, const int);
# endif
#ifdef __cplusplus
}
#endif

#ifndef Block_copy
# define Block_copy(...) \
    ((__typeof__(__VA_ARGS__))_Block_copy((const void*)(__VA_ARGS__)))

Modified src/exceptions/Makefile from [0569261c12] to [054622fd42].

65
66
67
68
69
70
71
72
	       OFThreadStartFailedException.m		\
	       OFThreadStillRunningException.m

INCLUDES = ${SRCS:.m=.h}

include ../../buildsys.mk

CPPFLAGS += -I. -I.. -I../.. -I../runtime







|
65
66
67
68
69
70
71
72
	       OFThreadStartFailedException.m		\
	       OFThreadStillRunningException.m

INCLUDES = ${SRCS:.m=.h}

include ../../buildsys.mk

CPPFLAGS += -I. -I.. -I../.. -I../runtime -DOF_COMPILING_OBJFW

Modified src/runtime/Makefile from [44d89a0e24] to [fe020dcb16].

25
26
27
28
29
30
31
32
INCLUDES = runtime.h

OBJS_EXTRA = ${LOOKUP_ASM_LOOKUP_ASM_A}
LIB_OBJS_EXTRA = ${LOOKUP_ASM_LOOKUP_ASM_LIB_A}

include ../../buildsys.mk

CPPFLAGS += -I. -I.. -I../..







|
25
26
27
28
29
30
31
32
INCLUDES = runtime.h

OBJS_EXTRA = ${LOOKUP_ASM_LOOKUP_ASM_A}
LIB_OBJS_EXTRA = ${LOOKUP_ASM_LOOKUP_ASM_LIB_A}

include ../../buildsys.mk

CPPFLAGS += -I. -I.. -I../.. -DOF_COMPILING_OBJFW