Skip to content

Commit 47ae311

Browse files
committed
Import of version 1.3.1
1 parent 9aa2e0d commit 47ae311

11 files changed

+129
-91
lines changed

CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
cmake_minimum_required(VERSION 2.6)
22

33
project(jthread)
4-
set(VERSION 1.3.0)
4+
set(VERSION 1.3.1)
55

66
set (_DEFAULT_LIBRARY_INSTALL_DIR lib)
77
if (EXISTS "${CMAKE_INSTALL_PREFIX}/lib32/" AND CMAKE_SIZEOF_VOID_P EQUAL 4)

ChangeLog

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
July 25, 2011
1+
November 8, 2011
22

33

44

@@ -7,6 +7,12 @@
77
---------
88

99

10+
1.3.1 (November 2011)
11+
* Fixed a bug in the CMake configuration: was unable to handle
12+
path names with spaces.
13+
* In an MS-Windows environment, you can now choose to build a
14+
DLL instead of a static library.
15+
1016
1.3.0 (July 2011)
1117
* Switched to CMake
1218
* Added namespace 'jthread'

README.TXT

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
July 25, 2011
1+
November 8, 2011
22

33

4-
Notes about JThread (v1.3.0)
4+
Notes about JThread (v1.3.1)
55

66

77

cmake/JThreadConfig.cmake.in

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
2-
set(JTHREAD_FOUND 1)
3-
4-
set(JTHREAD_INCLUDE_DIRS ${CMAKE_INSTALL_PREFIX}/include)
5-
6-
set(JTHREAD_LIBRARIES ${JTHREAD_LIBS})
7-
8-
1+
2+
set(JTHREAD_FOUND 1)
3+
4+
set(JTHREAD_INCLUDE_DIRS "${CMAKE_INSTALL_PREFIX}/include")
5+
6+
set(JTHREAD_LIBRARIES ${JTHREAD_LIBS_CMAKECONFIG})
7+
8+

doc/manual.tex

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
\lstset{language=C++}
44
\lstset{tabsize=4}
55
\begin{document}
6-
\title{JThread manual (v1.3.0)}
6+
\title{JThread manual (v1.3.1)}
77
\author{Jori Liesenborgs\\
88
9-
\date{July 25, 2011}
9+
\date{November 8, 2011}
1010
\maketitle
1111

1212
\section{Introduction}

src/CMakeLists.txt

+96-72
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,96 @@
1-
set (HEADERS jmutex.h jthread.h jmutexautolock.h ${PROJECT_BINARY_DIR}/src/jthreadconfig.h)
2-
3-
if (CMAKE_USE_WIN32_THREADS_INIT)
4-
set(SOURCES win32/jmutex.cpp win32/jthread.cpp)
5-
set(JTHREAD_CONFIG_WIN32THREADS "#define JTHREAD_CONFIG_WIN32THREADS")
6-
set(JTHREAD_WIN32_CRITICALSECTION OFF CACHE BOOL "If set to false, use standard mutex. If set to true, use a critical section object.")
7-
if (JTHREAD_WIN32_CRITICALSECTION)
8-
set(JTHREAD_CONFIG_JMUTEXCRITICALSECTION "#define JTHREAD_CONFIG_JMUTEXCRITICALSECTION")
9-
else (JTHREAD_WIN32_CRITICALSECTION)
10-
set(JTHREAD_CONFIG_JMUTEXCRITICALSECTION "// Using standard Win32 mutex")
11-
endif (JTHREAD_WIN32_CRITICALSECTION)
12-
else (CMAKE_USE_WIN32_THREADS_INIT) # Use pthread
13-
set(SOURCES pthread/jmutex.cpp pthread/jthread.cpp)
14-
set(JTHREAD_CONFIG_WIN32THREADS "// Using pthread based threads")
15-
set(JTHREAD_CONFIG_JMUTEXCRITICALSECTION "")
16-
endif (CMAKE_USE_WIN32_THREADS_INIT)
17-
18-
if (NOT UNIX)
19-
set(CMAKE_DEBUG_POSTFIX _d)
20-
endif (NOT UNIX)
21-
22-
set(JTHREAD_INSTALLTARGETS jthread-static)
23-
add_library(jthread-static STATIC ${SOURCES} ${HEADERS})
24-
set_target_properties(jthread-static PROPERTIES OUTPUT_NAME jthread)
25-
set_target_properties(jthread-static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
26-
target_link_libraries(jthread-static ${CMAKE_THREAD_LIBS_INIT})
27-
28-
if (UNIX)
29-
add_library(jthread-shared SHARED ${SOURCES} ${HEADERS})
30-
set_target_properties(jthread-shared PROPERTIES VERSION ${VERSION})
31-
set_target_properties(jthread-shared PROPERTIES OUTPUT_NAME jthread)
32-
set_target_properties(jthread-shared PROPERTIES CLEAN_DIRECT_OUTPUT 1)
33-
set(JTHREAD_INSTALLTARGETS ${JTHREAD_INSTALLTARGETS} jthread-shared)
34-
target_link_libraries(jthread-shared ${CMAKE_THREAD_LIBS_INIT})
35-
endif (UNIX)
36-
37-
include_directories(${PROJECT_SOURCE_DIR}/src)
38-
include_directories(${PROJECT_BINARY_DIR}/src)
39-
40-
install(FILES ${HEADERS} DESTINATION include/jthread)
41-
install(TARGETS ${JTHREAD_INSTALLTARGETS} DESTINATION ${LIBRARY_INSTALL_DIR})
42-
43-
if (UNIX)
44-
get_target_property(JTHREAD_LOCAL_LIBRARY_NAME jthread-shared LOCATION)
45-
get_filename_component(JTHREAD_LIBNAME "${JTHREAD_LOCAL_LIBRARY_NAME}" NAME)
46-
set(JTHREAD_LIBS "${LIBRARY_INSTALL_DIR}/${JTHREAD_LIBNAME}" ${CMAKE_THREAD_LIBS_INIT})
47-
else (UNIX)
48-
get_target_property(JTHREAD_LOCAL_LIBRARY_NAME jthread-static RELEASE_LOCATION)
49-
get_filename_component(JTHREAD_LIBNAME_RELEASE "${JTHREAD_LOCAL_LIBRARY_NAME}" NAME)
50-
get_target_property(JTHREAD_LOCAL_LIBRARY_NAME jthread-static DEBUG_LOCATION)
51-
get_filename_component(JTHREAD_LIBNAME_DEBUG "${JTHREAD_LOCAL_LIBRARY_NAME}" NAME)
52-
set(JTHREAD_LIBS optimized "${LIBRARY_INSTALL_DIR}/${JTHREAD_LIBNAME_RELEASE}"
53-
debug "${LIBRARY_INSTALL_DIR}/${JTHREAD_LIBNAME_DEBUG}" ${CMAKE_THREAD_LIBS_INIT})
54-
endif (UNIX)
55-
56-
configure_file("${PROJECT_SOURCE_DIR}/src/jthreadconfig.h.in"
57-
"${PROJECT_BINARY_DIR}/src/jthreadconfig.h")
58-
configure_file("${PROJECT_SOURCE_DIR}/cmake/JThreadConfig.cmake.in"
59-
"${PROJECT_BINARY_DIR}/cmake/JThreadConfig.cmake")
60-
install(FILES
61-
"${PROJECT_BINARY_DIR}/cmake/JThreadConfig.cmake"
62-
DESTINATION ${LIBRARY_INSTALL_DIR}/cmake/JThread)
63-
64-
if (UNIX)
65-
foreach(ARG ${JTHREAD_LIBS})
66-
set(JTHREAD_LIBS_PKGCONFIG "${JTHREAD_LIBS_PKGCONFIG} ${ARG}")
67-
endforeach()
68-
69-
configure_file(${PROJECT_SOURCE_DIR}/pkgconfig/jthread.pc.in ${PROJECT_BINARY_DIR}/pkgconfig/jthread.pc)
70-
install(FILES ${PROJECT_BINARY_DIR}/pkgconfig/jthread.pc DESTINATION ${LIBRARY_INSTALL_DIR}/pkgconfig)
71-
endif (UNIX)
72-
1+
set (HEADERS jmutex.h jthread.h jmutexautolock.h ${PROJECT_BINARY_DIR}/src/jthreadconfig.h)
2+
3+
add_definitions(-DJTHREAD_COMPILING)
4+
5+
if (CMAKE_USE_WIN32_THREADS_INIT)
6+
set(SOURCES win32/jmutex.cpp win32/jthread.cpp)
7+
set(JTHREAD_CONFIG_WIN32THREADS "#define JTHREAD_CONFIG_WIN32THREADS")
8+
set(JTHREAD_WIN32_CRITICALSECTION OFF CACHE BOOL "If set to false, use standard mutex. If set to true, use a critical section object.")
9+
if (JTHREAD_WIN32_CRITICALSECTION)
10+
set(JTHREAD_CONFIG_JMUTEXCRITICALSECTION "#define JTHREAD_CONFIG_JMUTEXCRITICALSECTION")
11+
else (JTHREAD_WIN32_CRITICALSECTION)
12+
set(JTHREAD_CONFIG_JMUTEXCRITICALSECTION "// Using standard Win32 mutex")
13+
endif (JTHREAD_WIN32_CRITICALSECTION)
14+
else (CMAKE_USE_WIN32_THREADS_INIT) # Use pthread
15+
set(SOURCES pthread/jmutex.cpp pthread/jthread.cpp)
16+
set(JTHREAD_CONFIG_WIN32THREADS "// Using pthread based threads")
17+
set(JTHREAD_CONFIG_JMUTEXCRITICALSECTION "")
18+
endif (CMAKE_USE_WIN32_THREADS_INIT)
19+
20+
if (NOT UNIX)
21+
set(CMAKE_DEBUG_POSTFIX _d)
22+
set(JTHREAD_COMPILE_STATIC ON CACHE BOOL "Flag indicating if a static library should be built, or a dynamic one")
23+
endif (NOT UNIX)
24+
25+
if (UNIX OR JTHREAD_COMPILE_STATIC)
26+
set(JTHREAD_INSTALLTARGETS jthread-static)
27+
add_library(jthread-static STATIC ${SOURCES} ${HEADERS})
28+
set_target_properties(jthread-static PROPERTIES OUTPUT_NAME jthread)
29+
set_target_properties(jthread-static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
30+
target_link_libraries(jthread-static ${CMAKE_THREAD_LIBS_INIT})
31+
endif(UNIX OR JTHREAD_COMPILE_STATIC)
32+
if (UNIX OR NOT JTHREAD_COMPILE_STATIC)
33+
add_library(jthread-shared SHARED ${SOURCES} ${HEADERS})
34+
set_target_properties(jthread-shared PROPERTIES VERSION ${VERSION})
35+
set_target_properties(jthread-shared PROPERTIES OUTPUT_NAME jthread)
36+
set_target_properties(jthread-shared PROPERTIES CLEAN_DIRECT_OUTPUT 1)
37+
set(JTHREAD_INSTALLTARGETS ${JTHREAD_INSTALLTARGETS} jthread-shared)
38+
target_link_libraries(jthread-shared ${CMAKE_THREAD_LIBS_INIT})
39+
endif (UNIX OR NOT JTHREAD_COMPILE_STATIC)
40+
41+
include_directories(${PROJECT_SOURCE_DIR}/src)
42+
include_directories(${PROJECT_BINARY_DIR}/src)
43+
44+
install(FILES ${HEADERS} DESTINATION include/jthread)
45+
install(TARGETS ${JTHREAD_INSTALLTARGETS} DESTINATION ${LIBRARY_INSTALL_DIR})
46+
47+
if (UNIX)
48+
get_target_property(JTHREAD_LOCAL_LIBRARY_NAME jthread-shared LOCATION)
49+
get_filename_component(JTHREAD_LIBNAME "${JTHREAD_LOCAL_LIBRARY_NAME}" NAME)
50+
set(JTHREAD_LIBS "${LIBRARY_INSTALL_DIR}/${JTHREAD_LIBNAME}" ${CMAKE_THREAD_LIBS_INIT})
51+
else (UNIX)
52+
if (JTHREAD_COMPILE_STATIC)
53+
get_target_property(JTHREAD_LOCAL_LIBRARY_NAME jthread-static RELEASE_LOCATION)
54+
get_filename_component(JTHREAD_LIBNAME_RELEASE "${JTHREAD_LOCAL_LIBRARY_NAME}" NAME_WE)
55+
get_target_property(JTHREAD_LOCAL_LIBRARY_NAME jthread-static DEBUG_LOCATION)
56+
get_filename_component(JTHREAD_LIBNAME_DEBUG "${JTHREAD_LOCAL_LIBRARY_NAME}" NAME_WE)
57+
else (JTHREAD_COMPILE_STATIC)
58+
get_target_property(JTHREAD_LOCAL_LIBRARY_NAME jthread-shared RELEASE_LOCATION)
59+
get_filename_component(JTHREAD_LIBNAME_RELEASE "${JTHREAD_LOCAL_LIBRARY_NAME}" NAME_WE)
60+
get_target_property(JTHREAD_LOCAL_LIBRARY_NAME jthread-shared DEBUG_LOCATION)
61+
get_filename_component(JTHREAD_LIBNAME_DEBUG "${JTHREAD_LOCAL_LIBRARY_NAME}" NAME_WE)
62+
endif (JTHREAD_COMPILE_STATIC)
63+
set(JTHREAD_LIBS optimized "${LIBRARY_INSTALL_DIR}/${JTHREAD_LIBNAME_RELEASE}.lib"
64+
debug "${LIBRARY_INSTALL_DIR}/${JTHREAD_LIBNAME_DEBUG}.lib" ${CMAKE_THREAD_LIBS_INIT})
65+
endif (UNIX)
66+
67+
if (UNIX OR JTHREAD_COMPILE_STATIC)
68+
set(JTHREAD_IMPORT "")
69+
set(JTHREAD_EXPORT "")
70+
else (UNIX OR JTHREAD_COMPILE_STATIC)
71+
set(JTHREAD_IMPORT "__declspec(dllimport)")
72+
set(JTHREAD_EXPORT "__declspec(dllexport)")
73+
endif (UNIX OR JTHREAD_COMPILE_STATIC)
74+
75+
configure_file("${PROJECT_SOURCE_DIR}/src/jthreadconfig.h.in"
76+
"${PROJECT_BINARY_DIR}/src/jthreadconfig.h")
77+
78+
foreach(ARG ${JTHREAD_LIBS})
79+
set(JTHREAD_LIBS_CMAKECONFIG "${JTHREAD_LIBS_CMAKECONFIG} \"${ARG}\"")
80+
endforeach()
81+
82+
configure_file("${PROJECT_SOURCE_DIR}/cmake/JThreadConfig.cmake.in"
83+
"${PROJECT_BINARY_DIR}/cmake/JThreadConfig.cmake")
84+
install(FILES
85+
"${PROJECT_BINARY_DIR}/cmake/JThreadConfig.cmake"
86+
DESTINATION ${LIBRARY_INSTALL_DIR}/cmake/JThread)
87+
88+
if (UNIX)
89+
foreach(ARG ${JTHREAD_LIBS})
90+
set(JTHREAD_LIBS_PKGCONFIG "${JTHREAD_LIBS_PKGCONFIG} ${ARG}")
91+
endforeach()
92+
93+
configure_file(${PROJECT_SOURCE_DIR}/pkgconfig/jthread.pc.in ${PROJECT_BINARY_DIR}/pkgconfig/jthread.pc)
94+
install(FILES ${PROJECT_BINARY_DIR}/pkgconfig/jthread.pc DESTINATION ${LIBRARY_INSTALL_DIR}/pkgconfig)
95+
endif (UNIX)
96+

src/jmutex.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
namespace jthread
4848
{
4949

50-
class JMutex
50+
class JTHREAD_IMPORTEXPORT JMutex
5151
{
5252
public:
5353
JMutex();

src/jmutexautolock.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
namespace jthread
3636
{
3737

38-
class JMutexAutoLock
38+
class JTHREAD_IMPORTEXPORT JMutexAutoLock
3939
{
4040
public:
4141
JMutexAutoLock(JMutex &m) : mutex(m) { mutex.Lock(); }

src/jthread.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
namespace jthread
4242
{
4343

44-
class JThread
44+
class JTHREAD_IMPORTEXPORT JThread
4545
{
4646
public:
4747
JThread();

src/jthreadconfig.h.in

+8
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,14 @@
2929

3030
#define JTHREADCONFIG_H
3131

32+
#define JTHREAD_IMPORT ${JTHREAD_IMPORT}
33+
#define JTHREAD_EXPORT ${JTHREAD_EXPORT}
34+
#ifdef JTHREAD_COMPILING
35+
#define JTHREAD_IMPORTEXPORT JTHREAD_EXPORT
36+
#else
37+
#define JTHREAD_IMPORTEXPORT JTHREAD_IMPORT
38+
#endif // JTHREAD_COMPILING
39+
3240
${JTHREAD_CONFIG_WIN32THREADS}
3341

3442
${JTHREAD_CONFIG_JMUTEXCRITICALSECTION}

src/win32/jthread.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
*/
2727

2828
#include "jthread.h"
29+
#include "jmutexautolock.h"
2930

3031
#ifndef _WIN32_WCE
3132
#include <process.h>
@@ -133,14 +134,13 @@ bool JThread::IsRunning()
133134

134135
void *JThread::GetReturnValue()
135136
{
137+
JMutexAutoLock autolock(runningmutex);
136138
void *val;
137139

138-
runningmutex.Lock();
139140
if (running)
140141
val = NULL;
141142
else
142143
val = retval;
143-
runningmutex.Unlock();
144144
return val;
145145
}
146146

0 commit comments

Comments
 (0)