From 150aa4ef1974f75e3ca77017366bee6c28658243 Mon Sep 17 00:00:00 2001 From: theraven Date: Sat, 22 Dec 2012 16:43:17 +0000 Subject: [PATCH] Fix linkage in libobjc. --- CMakeLists.txt | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2120a49..895bb02 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,11 +81,13 @@ set(TYPE_DEPENDENT_DISPATCH TRUE CACHE BOOL if (TYPE_DEPENDENT_DISPATCH) add_definitions(-DTYPE_DEPENDENT_DISPATCH) endif () + set(LOW_MEMORY FALSE CACHE BOOL "Enable low-memory profile *HIGHLY EXPERIMENTAL*") if (LOW_MEMORY) add_definitions(-D__OBJC_LOW_MEMORY__) endif () + set(BOEHM_GC FALSE CACHE BOOL "Enable garbage collection support (not recommended)") if (BOEHM_GC) @@ -102,9 +104,10 @@ if (BOEHM_GC) include_directories(GC_INCLUDE_DIRS) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GC_CFLAGS}") set(CMAKE_OBJC_FLAGS "${CMAKE_OBJC_FLAGS} -fobjc-gc") - set(CMAKE_LINK_FLAGS "${CMAKE_LINK_FLAGS} ${GC_CFLAGS}") + set(objc_LINK_FLAGS "${objc_LINK_FLAGS} ${GC_CFLAGS}") add_definitions(-DENABLE_GC) endif () + set(LEGACY_COMPAT FALSE CACHE BOOL "Enable legacy compatibility features") if (LEGACY_COMPAT) @@ -112,14 +115,16 @@ if (LEGACY_COMPAT) else () add_definitions(-DNO_LEGACY) endif () + set(LLVM_OPTS TRUE CACHE BOOL "Build LLVM Objective-C optimisations") if (LLVM_OPTS) - #add_subdirectory(opts) + add_subdirectory(opts) endif () set(LIBOBJC_NAME "objc" CACHE STRING "Name of the Objective-C runtime library (e.g. objc2 for libobjc2)") + set(INCLUDE_DIRECTORY "objc" CACHE STRING "Subdirectory of the include path to install the headers.") @@ -176,12 +181,21 @@ else (CXX_RUNTIME) set(CXX_RUNTIME "") endif (CXX_RUNTIME) +# Currently, we actually need pthreads, but we should use the platform's native +# threading implementation (we do for everything except thread-local storage) +set(CMAKE_THREAD_PREFER_PTHREAD) +include(FindThreads) +set(objc_LINK_FLAGS "${objc_LINK_FLAGS} ${CMAKE_THREAD_LIBS_INIT}") + + + add_library(objc SHARED ${libobjc_C_SRCS} ${libobjc_ASM_SRCS} ${libobjc_OBJC_SRCS} ${libobjc_CXX_SRCS}) set_target_properties(objc PROPERTIES LINKER_LANGUAGE C SOVERSION ${libobjc_VERSION} OUTPUT_NAME ${LIBOBJC_NAME} + LINK_FLAGS "${objc_LINK_FLAGS}" ) set(INSTALL_TARGETS objc) @@ -197,11 +211,6 @@ if (BUILD_STATIC_LIBOBJC) endif () -# Currently, we actually need pthreads, but we should use the platform's native -# threading implementation (we do for everything except thread-local storage) -set(CMAKE_THREAD_PREFER_PTHREAD) -include(FindThreads) -list(APPEND CMAKE_LINK_FLAGS CMAKE_THREAD_LIBS_INIT) # Explicitly link the C++ runtime and libgc if we are compiling with gc support. target_link_libraries(objc ${CXX_RUNTIME}) @@ -278,3 +287,6 @@ configure_file( add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) +#enable_testing() +#add_subdirectory(Test) +