Overview
| Comment: | runtime: Generate and install Amiga inline header |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
ec343c7ae613316b41315f8926ed7c2f |
| User & Date: | js on 2018-04-30 11:20:32 |
| Other Links: | manifest | tags |
Context
|
2018-04-30
| ||
| 14:51 | runtime: Never use assert() (check-in: 2ae3bc33e1 user: js tags: trunk) | |
| 11:20 | runtime: Generate and install Amiga inline header (check-in: ec343c7ae6 user: js tags: trunk) | |
| 10:54 | runtime: Generate function table from .sfd file (check-in: 28fdcad722 user: js tags: trunk) | |
Changes
Modified .gitignore from [eae67b34f5] to [8910d110af].
| ︙ | ︙ | |||
26 27 28 29 30 31 32 | generators/gen_tables.exe src/Info.plist src/ObjFW.framework src/bridge/Info.plist src/bridge/ObjFW_Bridge.framework src/objfw-defs.h src/runtime/ObjFW_RT.framework | | > | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | generators/gen_tables.exe src/Info.plist src/ObjFW.framework src/bridge/Info.plist src/bridge/ObjFW_Bridge.framework src/objfw-defs.h src/runtime/ObjFW_RT.framework src/runtime/ObjFW_RT_inline.h src/runtime/amiga-library-functable.inc tests/*.map tests/EBOOT.PBP tests/Info.plist tests/PARAM.SFO tests/iOS.xcodeproj/*.pbxuser tests/iOS.xcodeproj/project.xcworkspace tests/iOS.xcodeproj/xcuserdata |
| ︙ | ︙ |
Modified configure.ac from [c8d51c9342] to [7300383902].
| ︙ | ︙ | |||
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | [Minimum value for long long]) AC_DEFINE(__have_longlong64, 1, [Required for AmigaOS to correctly define PRI?64]) AC_SUBST(NOIXEMUL, -noixemul) AC_SUBST(OBJFW_RT_AMIGA_LIB, objfw_rt.library) ;; powerpc-*-amigaos*) enable_shared="no" enable_threads="no" ;; *-morphos*) AS_IF([test x"$with_ixemul" != x"yes"], [ OBJCFLAGS="$OBJCFLAGS -noixemul" LDFLAGS="$LDFLAGS -noixemul" enable_files="yes" # Required for reading ENV: AC_SUBST(NOIXEMUL, -noixemul) AC_SUBST(OBJFW_RT_AMIGA_LIB, objfw_rt.library) ]) enable_shared="no" enable_threads="no" ;; *-msdosdjgpp*) enable_shared="no" | > > > > | 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | [Minimum value for long long]) AC_DEFINE(__have_longlong64, 1, [Required for AmigaOS to correctly define PRI?64]) AC_SUBST(NOIXEMUL, -noixemul) AC_SUBST(OBJFW_RT_AMIGA_LIB, objfw_rt.library) AC_SUBST(OBJFW_RT_INLINE_H, ObjFW_RT_inline.h) AC_SUBST(SFDC_TARGET, m68k-amigaos) ;; powerpc-*-amigaos*) enable_shared="no" enable_threads="no" ;; *-morphos*) AS_IF([test x"$with_ixemul" != x"yes"], [ OBJCFLAGS="$OBJCFLAGS -noixemul" LDFLAGS="$LDFLAGS -noixemul" enable_files="yes" # Required for reading ENV: AC_SUBST(NOIXEMUL, -noixemul) AC_SUBST(OBJFW_RT_AMIGA_LIB, objfw_rt.library) AC_SUBST(OBJFW_RT_INLINE_H, ObjFW_RT_inline.h) AC_SUBST(SFDC_TARGET, ppc-morphos) ]) enable_shared="no" enable_threads="no" ;; *-msdosdjgpp*) enable_shared="no" |
| ︙ | ︙ |
Modified extra.mk.in from [4111d16366] to [b4e501de40].
| ︙ | ︙ | |||
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | LIBOBJFW_RT_DEP = @LIBOBJFW_RT_DEP@ LIBOBJFW_RT_DEP_LVL2 = @LIBOBJFW_RT_DEP_LVL2@ LOOKUP_ASM_A = @LOOKUP_ASM_A@ LOOKUP_ASM_LIB_A = @LOOKUP_ASM_LIB_A@ LOOKUP_ASM_LOOKUP_ASM_A = @LOOKUP_ASM_LOOKUP_ASM_A@ LOOKUP_ASM_LOOKUP_ASM_LIB_A = @LOOKUP_ASM_LOOKUP_ASM_LIB_A@ MAP_LDFLAGS = @MAP_LDFLAGS@ OFBLOCKTESTS_M = @OFBLOCKTESTS_M@ OFHASH = @OFHASH@ OFHTTP = @OFHTTP@ OFHTTPCLIENTTESTS_M = @OFHTTPCLIENTTESTS_M@ OFHTTPCLIENT_M = @OFHTTPCLIENT_M@ OFKERNELEVENTOBSERVER_EPOLL_M = @OFKERNELEVENTOBSERVER_EPOLL_M@ OFKERNELEVENTOBSERVER_KQUEUE_M = @OFKERNELEVENTOBSERVER_KQUEUE_M@ OFKERNELEVENTOBSERVER_POLL_M = @OFKERNELEVENTOBSERVER_POLL_M@ OFKERNELEVENTOBSERVER_SELECT_M = @OFKERNELEVENTOBSERVER_SELECT_M@ OFPROCESS_M = @OFPROCESS_M@ OFSTDIOSTREAM_WIN32CONSOLE_M = @OFSTDIOSTREAM_WIN32CONSOLE_M@ OFURLHANDLER_HTTP_M = @OFURLHANDLER_HTTP_M@ OFZIP = @OFZIP@ REEXPORT_RUNTIME = @REEXPORT_RUNTIME@ REEXPORT_RUNTIME_FRAMEWORK = @REEXPORT_RUNTIME_FRAMEWORK@ RUNTIME = @RUNTIME@ RUNTIME_FRAMEWORK_LIBS = @RUNTIME_FRAMEWORK_LIBS@ RUNTIME_LIBS = @RUNTIME_LIBS@ RUN_TESTS = @RUN_TESTS@ TESTPLUGIN = @TESTPLUGIN@ TESTPLUGIN_LIBS = @TESTPLUGIN_LIBS@ TESTS_LIBS = @TESTS_LIBS@ TESTS_OBJCFLAGS = @TESTS_OBJCFLAGS@ TESTS_STATIC_LIB = @TESTS_STATIC_LIB@ UNICODE_M = @UNICODE_M@ USE_INCLUDES_ATOMIC = @USE_INCLUDES_ATOMIC@ USE_SRCS_FILES = @USE_SRCS_FILES@ USE_SRCS_PLUGINS = @USE_SRCS_PLUGINS@ USE_SRCS_SOCKETS = @USE_SRCS_SOCKETS@ USE_SRCS_THREADS = @USE_SRCS_THREADS@ WEAK_NSFOUNDATIONVERSIONNUMBER = @WEAK_NSFOUNDATIONVERSIONNUMBER@ WRAPPER = @WRAPPER@ | > > | 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | LIBOBJFW_RT_DEP = @LIBOBJFW_RT_DEP@ LIBOBJFW_RT_DEP_LVL2 = @LIBOBJFW_RT_DEP_LVL2@ LOOKUP_ASM_A = @LOOKUP_ASM_A@ LOOKUP_ASM_LIB_A = @LOOKUP_ASM_LIB_A@ LOOKUP_ASM_LOOKUP_ASM_A = @LOOKUP_ASM_LOOKUP_ASM_A@ LOOKUP_ASM_LOOKUP_ASM_LIB_A = @LOOKUP_ASM_LOOKUP_ASM_LIB_A@ MAP_LDFLAGS = @MAP_LDFLAGS@ OBJFW_RT_INLINE_H = @OBJFW_RT_INLINE_H@ OFBLOCKTESTS_M = @OFBLOCKTESTS_M@ OFHASH = @OFHASH@ OFHTTP = @OFHTTP@ OFHTTPCLIENTTESTS_M = @OFHTTPCLIENTTESTS_M@ OFHTTPCLIENT_M = @OFHTTPCLIENT_M@ OFKERNELEVENTOBSERVER_EPOLL_M = @OFKERNELEVENTOBSERVER_EPOLL_M@ OFKERNELEVENTOBSERVER_KQUEUE_M = @OFKERNELEVENTOBSERVER_KQUEUE_M@ OFKERNELEVENTOBSERVER_POLL_M = @OFKERNELEVENTOBSERVER_POLL_M@ OFKERNELEVENTOBSERVER_SELECT_M = @OFKERNELEVENTOBSERVER_SELECT_M@ OFPROCESS_M = @OFPROCESS_M@ OFSTDIOSTREAM_WIN32CONSOLE_M = @OFSTDIOSTREAM_WIN32CONSOLE_M@ OFURLHANDLER_HTTP_M = @OFURLHANDLER_HTTP_M@ OFZIP = @OFZIP@ REEXPORT_RUNTIME = @REEXPORT_RUNTIME@ REEXPORT_RUNTIME_FRAMEWORK = @REEXPORT_RUNTIME_FRAMEWORK@ RUNTIME = @RUNTIME@ RUNTIME_FRAMEWORK_LIBS = @RUNTIME_FRAMEWORK_LIBS@ RUNTIME_LIBS = @RUNTIME_LIBS@ RUN_TESTS = @RUN_TESTS@ SFDC_TARGET = @SFDC_TARGET@ TESTPLUGIN = @TESTPLUGIN@ TESTPLUGIN_LIBS = @TESTPLUGIN_LIBS@ TESTS_LIBS = @TESTS_LIBS@ TESTS_OBJCFLAGS = @TESTS_OBJCFLAGS@ TESTS_STATIC_LIB = @TESTS_STATIC_LIB@ UNICODE_M = @UNICODE_M@ USE_INCLUDES_ATOMIC = @USE_INCLUDES_ATOMIC@ USE_SRCS_FILES = @USE_SRCS_FILES@ USE_SRCS_PLUGINS = @USE_SRCS_PLUGINS@ USE_SRCS_SOCKETS = @USE_SRCS_SOCKETS@ USE_SRCS_THREADS = @USE_SRCS_THREADS@ WEAK_NSFOUNDATIONVERSIONNUMBER = @WEAK_NSFOUNDATIONVERSIONNUMBER@ WRAPPER = @WRAPPER@ |
Modified src/runtime/Makefile from [16c807433c] to [37696a2fb5].
1 2 3 4 5 6 7 8 9 10 |
include ../../extra.mk
SUBDIRS = lookup-asm
SHARED_LIB = ${OBJFW_RT_SHARED_LIB}
STATIC_LIB = ${OBJFW_RT_STATIC_LIB}
FRAMEWORK = ${OBJFW_RT_FRAMEWORK}
AMIGA_LIB = ${OBJFW_RT_AMIGA_LIB}
LIB_MAJOR = ${OBJFW_RT_LIB_MAJOR}
LIB_MINOR = ${OBJFW_RT_LIB_MINOR}
| > | 1 2 3 4 5 6 7 8 9 10 11 |
include ../../extra.mk
SUBDIRS = lookup-asm
CLEAN = ${OBJFW_RT_INLINE_H}
SHARED_LIB = ${OBJFW_RT_SHARED_LIB}
STATIC_LIB = ${OBJFW_RT_STATIC_LIB}
FRAMEWORK = ${OBJFW_RT_FRAMEWORK}
AMIGA_LIB = ${OBJFW_RT_AMIGA_LIB}
LIB_MAJOR = ${OBJFW_RT_LIB_MAJOR}
LIB_MINOR = ${OBJFW_RT_LIB_MINOR}
|
| ︙ | ︙ | |||
23 24 25 26 27 28 29 |
selector.m \
sparsearray.m \
static-instances.m \
synchronized.m \
${USE_SRCS_THREADS}
SRCS_THREADS = threading.m \
../threading.m
| | > > | > > > | | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
selector.m \
sparsearray.m \
static-instances.m \
synchronized.m \
${USE_SRCS_THREADS}
SRCS_THREADS = threading.m \
../threading.m
INCLUDES = ObjFW_RT.h ${OBJFW_RT_INLINE_H}
includesubdir = ObjFW_RT
OBJS_EXTRA = ${LOOKUP_ASM_LOOKUP_ASM_A}
LIB_OBJS_EXTRA = ${LOOKUP_ASM_LOOKUP_ASM_LIB_A}
AMIGA_LIB_OBJS_EXTRA = amiga-glue.amigalib.o \
amiga-library.amigalib.o \
${LOOKUP_ASM_LOOKUP_ASM_A}
include ../../buildsys.mk
${OBJFW_RT_AMIGA_LIB}: ${OBJFW_RT_INLINE_H}
amiga-library.m: amiga-library-functable.inc
amiga-library-functable.inc: ObjFW_RT.sfd
sfdc -q --target=${SFDC_TARGET} --mode=functable -o $@ $<
${OBJFW_RT_INLINE_H}: ObjFW_RT.sfd
sfdc -q --target=${SFDC_TARGET} --mode=macros -o $@ $<
CPPFLAGS += -I. -I.. -I../.. \
-DOF_COMPILING_OBJFW_RT \
-DOBJFW_RT_LIB_MAJOR=${OBJFW_RT_LIB_MAJOR} \
-DOBJFW_RT_LIB_MINOR=${OBJFW_RT_LIB_MINOR}
AMIGA_LIB_CFLAGS += -DOBJC_COMPILING_AMIGA_LIBRARY
LD = ${OBJC}
FRAMEWORK_LIBS = ${LIBS}
|
Modified src/runtime/ObjFW_RT.h from [afbf85daff] to [45784520cd].
| ︙ | ︙ | |||
59 60 61 62 63 64 65 | #define NO false #if defined(__amigaos__) && !defined(__MORPHOS__) && !defined(__amigaos4__) # define OBJC_M68K_REG(reg) __asm__(reg) #else # define OBJC_M68K_REG(reg) #endif | | | 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | #define NO false #if defined(__amigaos__) && !defined(__MORPHOS__) && !defined(__amigaos4__) # define OBJC_M68K_REG(reg) __asm__(reg) #else # define OBJC_M68K_REG(reg) #endif #if defined(__MORPHOS__) && defined(OBJC_COMPILING_AMIGA_LIBRARY) # define OBJC_M68K_FUNC(name, ...) name(void) # define OBJC_M68K_ARG(type, name, reg) type name = (type)reg; #else # define OBJC_M68K_FUNC(name, ...) name(__VA_ARGS__) # define OBJC_M68K_ARG(type, name, reg) #endif |
| ︙ | ︙ | |||
217 218 219 220 221 222 223 224 225 226 227 228 229 230 |
long count;
Protocol *__unsafe_unretained _Nonnull list[1];
};
#ifdef __cplusplus
extern "C" {
#endif
extern SEL _Nonnull sel_registerName(
const char *_Nonnull name OBJC_M68K_REG("a0"));
extern const char *_Nonnull sel_getName(SEL _Nonnull sel OBJC_M68K_REG("a0"));
extern bool sel_isEqual(SEL _Nonnull sel1 OBJC_M68K_REG("a0"),
SEL _Nonnull sel2 OBJC_M68K_REG("a1"));
extern Class _Nonnull objc_allocateClassPair(
Class _Nullable superclass OBJC_M68K_REG("a0"),
| > > > > | 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 |
long count;
Protocol *__unsafe_unretained _Nonnull list[1];
};
#ifdef __cplusplus
extern "C" {
#endif
# ifdef OBJC_AMIGA_LIBRARY
# import "ObjFW_RT_inline.h"
extern struct Library *ObjFWRTBase;
# else
extern SEL _Nonnull sel_registerName(
const char *_Nonnull name OBJC_M68K_REG("a0"));
extern const char *_Nonnull sel_getName(SEL _Nonnull sel OBJC_M68K_REG("a0"));
extern bool sel_isEqual(SEL _Nonnull sel1 OBJC_M68K_REG("a0"),
SEL _Nonnull sel2 OBJC_M68K_REG("a1"));
extern Class _Nonnull objc_allocateClassPair(
Class _Nullable superclass OBJC_M68K_REG("a0"),
|
| ︙ | ︙ | |||
280 281 282 283 284 285 286 |
objc_setUncaughtExceptionHandler(
objc_uncaught_exception_handler _Nullable handler OBJC_M68K_REG("a0"));
extern void objc_setForwardHandler(IMP _Nullable forward OBJC_M68K_REG("a0"),
IMP _Nullable forward_stret OBJC_M68K_REG("a1"));
extern void objc_setEnumerationMutationHandler(
objc_enumeration_mutation_handler _Nullable handler OBJC_M68K_REG("a0"));
extern void objc_zero_weak_references(id _Nonnull value OBJC_M68K_REG("a0"));
| < < | 284 285 286 287 288 289 290 291 292 293 294 295 296 297 |
objc_setUncaughtExceptionHandler(
objc_uncaught_exception_handler _Nullable handler OBJC_M68K_REG("a0"));
extern void objc_setForwardHandler(IMP _Nullable forward OBJC_M68K_REG("a0"),
IMP _Nullable forward_stret OBJC_M68K_REG("a1"));
extern void objc_setEnumerationMutationHandler(
objc_enumeration_mutation_handler _Nullable handler OBJC_M68K_REG("a0"));
extern void objc_zero_weak_references(id _Nonnull value OBJC_M68K_REG("a0"));
# endif
/*
* Used by the compiler, but can also be called manually.
*
* These declarations are also required to prevent Clang's implicit
* declarations which include __declspec(dllimport) on Windows.
|
| ︙ | ︙ |
Modified src/runtime/ObjFW_RT.sfd from [6493c088a1] to [5ad9f953ab].
1 2 3 4 | ==base _ObjFWRTBase ==basetype struct Library * ==libname objfw_rt.library ==bias 30 | | | | < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | ==base _ObjFWRTBase ==basetype struct Library * ==libname objfw_rt.library ==bias 30 ==public * Functions for the linklib void objc_set_libc(struct objc_libc *libc)(a0) * Used by the compiler - these need glue code void glue___objc_exec_class(void *module)(a0) IMP glue_objc_msg_lookup(id obj, SEL sel)(a0,a1) IMP glue_objc_msg_lookup_stret(id obj, SEL sel)(a0,a1) IMP glue_objc_msg_lookup_super(struct objc_super *super, SEL sel)(a0,a1) IMP glue_objc_msg_lookup_super_stret(struct objc_super *super, SEL sel)(a0,a1) id glue_objc_lookUpClass(const char *name)(a0) id glue_objc_getClass(const char *name)(a0) id glue_objc_getRequiredClass(const char *name)(a0) void glue_objc_exception_throw(id object)(a0) int glue_objc_sync_enter(id object)(a0) int glue_objc_sync_exit(id object)(a0) id glue_objc_getProperty(id self, SEL _cmd, ptrdiff_t offset, bool atomic)(a0,a1,d0,d1) void glue_objc_setProperty(id self, SEL _cmd, ptrdiff_t offset, id value, bool atomic, signed char copy)(a0,a1,d0,a2,d1,d2) void glue_objc_getPropertyStruct(void *dest, const void *src, ptrdiff_t size, bool atomic, bool strong)(a0,a1,d0,d1,d2) void glue_objc_setPropertyStruct(void *dest, const void *src, ptrdiff_t size, bool atomic, bool strong)(a0,a1,d0,d1,d2) void glue_objc_enumerationMutation(id obj)(a0) * Functions declared in ObjFW_RT.h SEL _Nonnull sel_registerName(const char *_Nonnull name)(a0) const char *_Nonnull sel_getName(SEL _Nonnull sel)(a0) bool sel_isEqual(SEL _Nonnull sel1, SEL _Nonnull sel2)(a0,a1) Class _Nonnull objc_allocateClassPair(Class _Nullable superclass, const char *_Nonnull name, size_t extra_bytes)(a0,a1,d0) void objc_registerClassPair(Class _Nonnull cls)(a0) unsigned int objc_getClassList(Class _Nonnull *_Nullable buf, unsigned int count)(a0,d0) |
| ︙ | ︙ |
Modified src/runtime/private.h from [34219e64f0] to [9b8ebef4c7].
| ︙ | ︙ | |||
130 131 132 133 134 135 136 | } *_Nonnull buckets[256]; #else IMP _Nullable buckets[256]; #endif } *_Nonnull buckets[256]; }; | | | 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
} *_Nonnull buckets[256];
#else
IMP _Nullable buckets[256];
#endif
} *_Nonnull buckets[256];
};
#ifdef OBJC_COMPILING_AMIGA_LIBRARY
# undef stdout
# undef stderr
extern struct objc_libc {
void *(*malloc)(size_t);
void *(*calloc)(size_t, size_t);
void *(*realloc)(void *, size_t);
void (*free)(void *);
|
| ︙ | ︙ |