Fix linkage in libobjc.

main
theraven 13 years ago
parent db3cbec65a
commit 150aa4ef19

@ -81,11 +81,13 @@ set(TYPE_DEPENDENT_DISPATCH TRUE CACHE BOOL
if (TYPE_DEPENDENT_DISPATCH) if (TYPE_DEPENDENT_DISPATCH)
add_definitions(-DTYPE_DEPENDENT_DISPATCH) add_definitions(-DTYPE_DEPENDENT_DISPATCH)
endif () endif ()
set(LOW_MEMORY FALSE CACHE BOOL set(LOW_MEMORY FALSE CACHE BOOL
"Enable low-memory profile *HIGHLY EXPERIMENTAL*") "Enable low-memory profile *HIGHLY EXPERIMENTAL*")
if (LOW_MEMORY) if (LOW_MEMORY)
add_definitions(-D__OBJC_LOW_MEMORY__) add_definitions(-D__OBJC_LOW_MEMORY__)
endif () endif ()
set(BOEHM_GC FALSE CACHE BOOL set(BOEHM_GC FALSE CACHE BOOL
"Enable garbage collection support (not recommended)") "Enable garbage collection support (not recommended)")
if (BOEHM_GC) if (BOEHM_GC)
@ -102,9 +104,10 @@ if (BOEHM_GC)
include_directories(GC_INCLUDE_DIRS) include_directories(GC_INCLUDE_DIRS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GC_CFLAGS}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GC_CFLAGS}")
set(CMAKE_OBJC_FLAGS "${CMAKE_OBJC_FLAGS} -fobjc-gc") 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) add_definitions(-DENABLE_GC)
endif () endif ()
set(LEGACY_COMPAT FALSE CACHE BOOL set(LEGACY_COMPAT FALSE CACHE BOOL
"Enable legacy compatibility features") "Enable legacy compatibility features")
if (LEGACY_COMPAT) if (LEGACY_COMPAT)
@ -112,14 +115,16 @@ if (LEGACY_COMPAT)
else () else ()
add_definitions(-DNO_LEGACY) add_definitions(-DNO_LEGACY)
endif () endif ()
set(LLVM_OPTS TRUE CACHE BOOL set(LLVM_OPTS TRUE CACHE BOOL
"Build LLVM Objective-C optimisations") "Build LLVM Objective-C optimisations")
if (LLVM_OPTS) if (LLVM_OPTS)
#add_subdirectory(opts) add_subdirectory(opts)
endif () endif ()
set(LIBOBJC_NAME "objc" CACHE STRING set(LIBOBJC_NAME "objc" CACHE STRING
"Name of the Objective-C runtime library (e.g. objc2 for libobjc2)") "Name of the Objective-C runtime library (e.g. objc2 for libobjc2)")
set(INCLUDE_DIRECTORY "objc" CACHE STRING set(INCLUDE_DIRECTORY "objc" CACHE STRING
"Subdirectory of the include path to install the headers.") "Subdirectory of the include path to install the headers.")
@ -176,12 +181,21 @@ else (CXX_RUNTIME)
set(CXX_RUNTIME "") set(CXX_RUNTIME "")
endif (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}) add_library(objc SHARED ${libobjc_C_SRCS} ${libobjc_ASM_SRCS} ${libobjc_OBJC_SRCS} ${libobjc_CXX_SRCS})
set_target_properties(objc PROPERTIES set_target_properties(objc PROPERTIES
LINKER_LANGUAGE C LINKER_LANGUAGE C
SOVERSION ${libobjc_VERSION} SOVERSION ${libobjc_VERSION}
OUTPUT_NAME ${LIBOBJC_NAME} OUTPUT_NAME ${LIBOBJC_NAME}
LINK_FLAGS "${objc_LINK_FLAGS}"
) )
set(INSTALL_TARGETS objc) set(INSTALL_TARGETS objc)
@ -197,11 +211,6 @@ if (BUILD_STATIC_LIBOBJC)
endif () 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. # Explicitly link the C++ runtime and libgc if we are compiling with gc support.
target_link_libraries(objc ${CXX_RUNTIME}) target_link_libraries(objc ${CXX_RUNTIME})
@ -278,3 +287,6 @@ configure_file(
add_custom_target(uninstall add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
#enable_testing()
#add_subdirectory(Test)

Loading…
Cancel
Save