Index: src/OFThread.h ================================================================== --- src/OFThread.h +++ src/OFThread.h @@ -169,13 +169,10 @@ # endif /*! * @brief The main routine of the thread. You need to reimplement this! * - * It can access the object passed to the @ref threadWithObject: or - * @ref initWithObject: method using the instance variable named object. - * * @return The object the join method should return when called for this thread */ - (nullable id)main; /*! Index: tests/objc_sync/Makefile ================================================================== --- tests/objc_sync/Makefile +++ tests/objc_sync/Makefile @@ -1,38 +1,62 @@ include ../../extra.mk PROG_NOINST = objc_sync${PROG_SUFFIX} SRCS = test.m -.PHONY: run-tests -run-tests: all +include ../../buildsys.mk + +post-all: ${RUN_TESTS} + +.PHONY: run +run: rm -f libobjfw.so.${OBJFW_LIB_MAJOR} rm -f libobjfw.so.${OBJFW_LIB_MAJOR_MINOR} - rm -f libobjfw.dll libobjfw.dylib + rm -f libobjfw.dll libobjfw.${OBJFW_LIB_MAJOR}.dylib + rm -f libobjfw-rt.so.${OBJFW_RT_LIB_MAJOR} + rm -f libobjfw-rt.so.${OBJFW_RT_LIB_MAJOR_MINOR} + rm -f libobjfw-rt.dll libobjfw-rt.${OBJFW_RT_LIB_MAJOR}.dylib if test -f ../../src/libobjfw.so; then \ ${LN_S} ../../src/libobjfw.so libobjfw.so.${OBJFW_LIB_MAJOR}; \ ${LN_S} ../../src/libobjfw.so \ - libobjfw.so.${OBJFW_LIB_MAJOR_MINOR}; \ + libobjfw.so.${OBJFW_LIB_MAJOR_MINOR}; \ elif test -f ../../src/libobjfw.so.${OBJFW_LIB_MAJOR_MINOR}; then \ ${LN_S} ../../src/libobjfw.so.${OBJFW_LIB_MAJOR_MINOR} \ - libobjfw.so.${OBJFW_LIB_MAJOR_MINOR}; \ + libobjfw.so.${OBJFW_LIB_MAJOR_MINOR}; \ fi if test -f ../../src/libobjfw.dll; then \ ${LN_S} ../../src/libobjfw.dll libobjfw.dll; \ fi if test -f ../../src/libobjfw.dylib; then \ - ${LN_S} ../../src/libobjfw.dylib libobjfw.dylib; \ + ${LN_S} ../../src/libobjfw.dylib \ + libobjfw.${OBJFW_LIB_MAJOR}.dylib; \ + fi + if test -f ../../src/runtime/libobjfw-rt.so; then \ + ${LN_S} ../../src/runtime/libobjfw-rt.so \ + libobjfw-rt.so.${OBJFW_RT_LIB_MAJOR}; \ + ${LN_S} ../../src/runtime/libobjfw-rt.so \ + libobjfw-rt.so.${OBJFW_RT_LIB_MAJOR_MINOR}; \ + elif test -f ../../src/runtime/libobjfw-rt.so.${OBJFW_RT_LIB_MAJOR_MINOR}; then \ + ${LN_S} ../../src/runtime/libobjfw-rt.so.${OBJFW_RT_LIB_MAJOR_MINOR} libobjfw-rt.so.${OBJFW_RT_LIB_MAJOR_MINOR}; \ + fi + if test -f ../../src/runtime/libobjfw-rt.dll; then \ + ${LN_S} ../../src/runtime/libobjfw-rt.dll libobjfw-rt.dll; \ + fi + if test -f ../../src/runtime/libobjfw-rt.dylib; then \ + ${LN_S} ../../src/runtime/libobjfw-rt.dylib \ + libobjfw-rt.${OBJFW_RT_LIB_MAJOR}.dylib; \ fi LD_LIBRARY_PATH=.$${LD_LIBRARY_PATH+:}$$LD_LIBRARY_PATH \ DYLD_LIBRARY_PATH=.$${DYLD_LIBRARY_PATH+:}$$DYLD_LIBRARY_PATH \ LIBRARY_PATH=.$${LIBRARY_PATH+:}$$LIBRARY_PATH \ - ${TEST_LAUNCHER} ./${PROG_NOINST}; EXIT=$$?; \ + ${WRAPPER} ./${PROG_NOINST}; EXIT=$$?; \ rm -f libobjfw.so.${OBJFW_LIB_MAJOR}; \ - rm -f libobjfw.so.${OBJFW_LIB_MAJOR_MINOR} libobjfw.dll \ - rm -f libobjfw.dylib; \ + rm -f libobjfw.so.${OBJFW_LIB_MAJOR_MINOR} libobjfw.dll; \ + rm -f libobjfw.${OBJFW_LIB_MAJOR}.dylib; \ + rm -f libobjfw-rt.so.${OBJFW_RT_LIB_MAJOR}; \ + rm -f libobjfw-rt.so.${OBJFW_RT_LIB_MAJOR_MINOR} libobjfw-rt.dll; \ + rm -f libobjfw-rt.${OBJFW_RT_LIB_MAJOR}.dylib; \ exit $$EXIT -include ../../buildsys.mk - CPPFLAGS += -I../../src/runtime -I../../src -I../.. LIBS := -L../../src -lobjfw ${LIBS} LD = ${OBJC} Index: tests/objc_sync/test.m ================================================================== --- tests/objc_sync/test.m +++ tests/objc_sync/test.m @@ -22,40 +22,47 @@ #import "OFThread.h" OFObject *lock; @interface MyThread: OFThread -- main; @end @implementation MyThread -- main -{ - printf("[%s] Entering #1\n", [object UTF8String]); - @synchronized (lock) { - printf("[%s] Entering #2\n", [object UTF8String]); - @synchronized (lock) { - printf("[%s] Hello!\n", [object UTF8String]); - } - printf("[%s] Left #2\n", [object UTF8String]); - } - printf("[%s] Left #1\n", [object UTF8String]); +- (id)main +{ + const char *name = [[[OFThread currentThread] name] UTF8String]; + + printf("[%s] Entering #1\n", name); + @synchronized (lock) { + printf("[%s] Entering #2\n", name); + @synchronized (lock) { + printf("[%s] Hello!\n", name); + } + printf("[%s] Left #2\n", name); + } + printf("[%s] Left #1\n", name); return nil; } @end int main() { + MyThread *t1, *t2; + lock = [[OFObject alloc] init]; - MyThread *t1 = [MyThread threadWithObject: @"A"]; - MyThread *t2 = [MyThread threadWithObject: @"B"]; + + t1 = [MyThread thread]; + [t1 setName: @"A"]; + + t2 = [MyThread thread]; + [t2 setName: @"B"]; [t1 start]; [t2 start]; [t1 join]; [t2 join]; return 0; }