@ -1,16 +1,30 @@
cmake_minimum_required ( VERSION 3.1 )
cmake_minimum_required ( VERSION 3.1 6 )
project ( libobjc C ASM CXX )
INCLUDE ( CheckCXXSourceCompiles )
if ( NOT "${CMAKE_C_COMPILER_ID}" MATCHES Clang* )
message ( WARNING "WARNING: It is strongly recommended that you compile with clang" )
elseif ( WIN32 AND "${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "MSVC" )
message ( WARNING "WARNING: It is strongly recommended that you compile with clang (clang-cl is not supported)" )
endif ( )
# f i x u p C M a k e O b j e c t i v e - C c o m p i l e r d e t e c t i o n o n W i n d o w s b e f o r e e n a b l i n g l a n g u a g e s b e l o w
if ( WIN32 )
foreach ( lang IN ITEMS C CXX )
set ( CMAKE_OBJ ${ lang } _COMPILER_FORCED ON )
foreach ( runtimeLibrary IN ITEMS MultiThreaded MultiThreadedDLL MultiThreadedDebug MultiThreadedDebugDLL )
set ( CMAKE_OBJ ${ lang } _COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_ ${ runtimeLibrary } ${ CMAKE_${lang } _COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_ ${ runtimeLibrary } } )
endforeach ( )
endforeach ( )
endif ( )
enable_language ( OBJC OBJCXX )
set ( CMAKE_C_FLAGS_DEBUG "-O0 -Xclang -fno-inline ${CMAKE_C_FLAGS_DEBUG}" )
set ( CMAKE_C_FLAGS_RELEASE "-O3 ${CMAKE_C_FLAGS_RELEASE}" )
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" )
INCLUDE ( CheckCXXSourceCompiles )
set ( libobjc_VERSION 4.6 )
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Xclang -fexceptions -Xclang -fobjc-exceptions" )
if ( MSVC )
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /EHas" )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHas" )
@ -19,10 +33,11 @@ if (MSVC)
set ( CMAKE_EXE_LINKER_FLAGS "/DEBUG /INCREMENTAL:NO ${CMAKE_EXE_LINKER_FLAGS}" )
set ( objc_LINK_FLAGS "/DEBUG /INCREMENTAL:NO ${objc_LINK_FLAGS}" )
endif ( )
# B u i l d c o n f i g u r a t i o n
add_ definitions( -D GNUSTEP -D __OBJC_RUNTIME_INTERNAL__=1)
add_ compile_ definitions( GNUSTEP __OBJC_RUNTIME_INTERNAL__=1)
set ( CMAKE_CXX_STANDARD 1 4 )
set ( CMAKE_CXX_STANDARD 1 7 )
set ( libobjc_ASM_SRCS
b l o c k _ t r a m p o l i n e s . S
@ -44,6 +59,7 @@ set(libobjc_C_SRCS
c l a s s _ t a b l e . c
d t a b l e . c
e n c o d i n g 2 . c
g c _ n o n e . c
h o o k s . c
i v a r . c
l o a d e r . c
@ -94,47 +110,6 @@ if (NOT EXISTS "${CMAKE_SOURCE_DIR}/third_party/robin-map/include/tsl/robin_map.
" h t t p s : / / g i t h u b . c o m / T e s s i l / r o b i n - m a p / " )
endif ( )
# F o r r e l e a s e b u i l d s , w e d i s a b l e s p a m m i n g t h e t e r m i n a l w i t h w a r n i n g s a b o u t
# s e l e c t o r t y p e m i s m a t c h e s
if ( CMAKE_BUILD_TYPE STREQUAL Release )
add_definitions ( -DNO_SELECTOR_MISMATCH_WARNINGS )
else ( )
add_definitions ( -DGC_DEBUG )
endif ( )
set ( TYPE_DEPENDENT_DISPATCH TRUE CACHE BOOL
" E n a b l e t y p e - d e p e n d e n t d i s p a t c h " )
if ( TYPE_DEPENDENT_DISPATCH )
add_definitions ( -DTYPE_DEPENDENT_DISPATCH )
endif ( )
set ( ENABLE_TRACING FALSE CACHE BOOL
" E n a b l e t r a c i n g support ( slower, not recommended for deployment ) " )
if ( ENABLE_TRACING )
add_definitions ( -DWITH_TRACING=1 )
endif ( ENABLE_TRACING )
set ( BOEHM_GC FALSE CACHE BOOL
" E n a b l e g a r b a g e c o l l e c t i o n support ( not recommended ) " )
if ( BOEHM_GC )
include ( FindPkgConfig )
pkg_check_modules ( GC REQUIRED bdw-gc )
link_directories ( ${ GC_LIBRARY_DIRS } )
# I f t h e r e ' s a t h r e a d e d v e r s i o n , u s e i t
find_library ( LIBGC gc-threaded PATHS "${GC_LIBRARY_DIRS}" )
if ( LIBGC )
else ( )
find_library ( LIBGC gc PATHS GC_LIBRARY_DIRS )
endif ( )
message ( STATUS "Using Boehm GC library: ${LIBGC}" )
include_directories ( GC_INCLUDE_DIRS )
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GC_CFLAGS}" )
set ( CMAKE_OBJC_FLAGS "${CMAKE_OBJC_FLAGS} -fobjc-gc" )
set ( objc_LINK_FLAGS "${objc_LINK_FLAGS} ${GC_CFLAGS}" )
add_definitions ( -DENABLE_GC )
list ( APPEND libobjc_OBJC_SRCS gc_boehm.c )
else ( )
list ( APPEND libobjc_OBJC_SRCS gc_none.c )
endif ( )
if ( WIN32 )
set ( OLD_ABI_COMPAT_DEFAULT false )
@ -142,18 +117,25 @@ else()
set ( OLD_ABI_COMPAT_DEFAULT true )
endif ( )
set ( OLDABI_COMPAT ${ OLD_ABI_COMPAT_DEFAULT } CACHE BOOL
" E n a b l e c o m p a t i b i l i t y w i t h G C C a n d o l d G N U s t e p A B I s " )
option ( TYPE_DEPENDENT_DISPATCH "Enable type-dependent dispatch" ON )
option ( ENABLE_TRACING
" E n a b l e t r a c i n g support ( slower, not recommended for deployment ) " O F F )
option ( OLDABI_COMPAT
" E n a b l e c o m p a t i b i l i t y w i t h G C C a n d o l d G N U s t e p A B I s "
$ { O L D _ A B I _ C O M P A T _ D E F A U L T } )
option ( LEGACY_COMPAT "Enable legacy compatibility features" OFF )
option ( DEBUG_ARC_COMPAT
" L o g w a r n i n g s f o r c l a s s e s t h a t d o n ' t h i t A R C f a s t p a t h s " O F F )
option ( ENABLE_OBJCXX "Enable support for Objective-C++" ON )
option ( TESTS "Enable building the tests" )
set ( LEGACY_COMPAT FALSE CACHE BOOL
" E n a b l e l e g a c y c o m p a t i b i l i t y f e a t u r e s " )
set ( DEBUG_ARC_COMPAT FALSE CACHE BOOL
" L o g w a r n i n g s f o r c l a s s e s t h a t d o n ' t h i t A R C f a s t p a t h s " )
if ( DEBUG_ARC_COMPAT )
add_definitions ( -DDEBUG_ARC_COMPAT )
endif( )
# F o r r e l e a s e b u i l d s , w e d i s a b l e s p a m m i n g t h e t e r m i n a l w i t h w a r n i n g s a b o u t
# s e l e c t o r t y p e m i s m a t c h e s
add_compile_definitions ( $< $<CONFIG:Release > :NO_SELECTOR_MISMATCH_WARNINGS> )
add_compile_definitions( $< $<BOOL:${TYPE_DEPENDENT_DISPATCH} > :TYPE_DEPENDENT_DISPATCH> )
add_compile_definitions ( $< $<BOOL:${ENABLE_TRACING} > :WITH_TRACING=1> )
add_compile_definitions( $< $<BOOL:${DEBUG_ARC_COMPAT} > :DEBUG_ARC_COMPAT> )
if ( OLDABI_COMPAT )
list ( APPEND libobjc_C_SRCS legacy.c abi_version.c statics_loader.c )
@ -172,82 +154,11 @@ set(LIBOBJC_NAME "objc" CACHE STRING
set ( INCLUDE_DIRECTORY "objc" CACHE STRING
" S u b d i r e c t o r y o f t h e i n c l u d e p a t h t o i n s t a l l t h e h e a d e r s . " )
if ( ${ CMAKE_C_COMPILER_ID } MATCHES Clang* )
set ( CMAKE_OBJC_FLAGS "${CMAKE_OBJC_FLAGS} -Wno-deprecated-objc-isa-usage -Wno-objc-root-class" )
if ( ${ CMAKE_C_COMPILER_VERSION } VERSION_GREATER 3.1 )
set ( CMAKE_OBJC_FLAGS "${CMAKE_OBJC_FLAGS} -fobjc-runtime=gnustep-2.0" )
endif ( )
else ( ${ CMAKE_C_COMPILER_ID } MATCHES Clang* )
MESSAGE ( "WARNING: It is strongly recommended that you compile with clang" )
endif ( ${ CMAKE_C_COMPILER_ID } MATCHES Clang* )
if ( ${ CMAKE_SYSTEM_PROCESSOR } STREQUAL "i686" )
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i586" )
endif ( )
add_compile_options ( "$<$<OR:$<COMPILE_LANGUAGE:OBJC>,$<COMPILE_LANGUAGE:OBJCXX>>:-Wno-deprecated-objc-isa-usage;-Wno-objc-root-class;-fobjc-runtime=gnustep-2.0>$<$<COMPILE_LANGUAGE:C>:-Xclang;-fexceptions>" )
add_compile_options ( $< $<STREQUAL:${CMAKE_SYSTEM_PROCESSOR},i686 > :-march=i586> )
set ( INSTALL_TARGETS objc )
# O n W i n d o w s , C M a k e a d d s / T C t o t h e c l a n g - c l f l a g s a n d d o e s n ' t p r o v i d e a w a y t o
# t e l l i t n o t t o . W e f i x t h i s b y t e l l i n g c l a n g d o d i s r e g a r d t h a t o p t i o n ,
# unconditionally ( which means that it still defaults to C for .c files ) .
set ( ENV{CCC_OVERRIDE_OPTIONS} "x/TC x/Gm-" )
set_source_files_properties (
$ { l i b o b j c _ A S M _ S R C S }
L A N G U A G E C
C O M P I L E _ F L A G S " $ { C M A K E _ O B J C _ F L A G S } - X c l a n g - x - X c l a n g a s s e m b l e r - w i t h - c p p "
)
set_source_files_properties (
$ { l i b o b j c _ C X X _ S R C S }
L A N G U A G E C X X
C O M P I L E _ F L A G S " $ { C M A K E _ C X X _ F L A G S } "
)
set_source_files_properties (
$ { l i b o b j c _ O B J C _ S R C S }
C O M P I L E _ F L A G S " $ { C M A K E _ O B J C _ F L A G S } - X c l a n g - x - X c l a n g o b j e c t i v e - c "
)
set_source_files_properties (
$ { l i b o b j c _ O B J C X X _ S R C S }
C O M P I L E _ F L A G S " $ { C M A K E _ O B J C _ F L A G S } - X c l a n g - x - X c l a n g o b j e c t i v e - c + + "
)
#
# C + + R u n t i m e i n t e r a c t i o n
#
function ( test_cxx CXX_RUNTIME_NAME IS_STDLIB )
set ( CXX_RUNTIME_NAME_FULL "${CMAKE_SHARED_LIBRARY_PREFIX}${CXX_RUNTIME_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}" )
find_library ( CXX_RUNTIME_LIB NAMES ${ CXX_RUNTIME_NAME_FULL } ${ CXX_RUNTIME_NAME } )
if ( CXX_RUNTIME_LIB )
message ( STATUS "Testing ${CXX_RUNTIME_LIB} as the C++ runtime library" )
if ( ANDROID )
# p a s s o n A n d r o i d t o o l c h a i n f l a g s
set ( CXX_RUNTIME_FLAGS "-DANDROID_NDK=${ANDROID_NDK}" "-DANDROID_ABI=${ANDROID_ABI}" "-DANDROID_ARM_MODE=${ANDROID_ARM_MODE}" "-DANDROID_LD=${ANDROID_LD}" "-DANDROID_PLATFORM=${ANDROID_PLATFORM}" "-DANDROID_STL=${ANDROID_STL}" )
endif ( )
try_compile ( USERUNTIME
" $ { C M A K E _ B I N A R Y _ D I R } / C M a k e "
" $ { C M A K E _ C U R R E N T _ L I S T _ D I R } / C M a k e "
t e s t _ c x x _ r u n t i m e
C M A K E _ F L A G S " - D C X X _ R U N T I M E = $ { C X X _ R U N T I M E _ L I B } " $ { C X X _ R U N T I M E _ F L A G S } )
if ( USERUNTIME )
set ( CXX_RUNTIME ${ CXX_RUNTIME_LIB } PARENT_SCOPE )
else ( )
unset ( CXX_RUNTIME_LIB CACHE )
endif ( )
endif ( )
endfunction ( )
set ( ENABLE_OBJCXX true CACHE BOOL
" E n a b l e s u p p o r t f o r O b j e c t i v e - C + + " )
set ( CXXRT_IS_STDLIB false )
if ( WIN32 )
if ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
set ( ASM_TARGET -m64 )
@ -278,86 +189,31 @@ endif()
if ( ENABLE_OBJCXX )
if ( WIN32 )
message ( STATUS "Using MSVC-compatible exception model" )
else ( )
message ( STATUS "Testing C++ interop" )
# T r y t o f i n d l i b c x x r t . s o . W e c a n l i n k t o t h i s t o p r o v i d e t h e C + + A B I
# l a y e r , i f i t e x i s t s .
test_cxx ( cxxrt false )
# I f i t d o e s n ' t , t h e n l o o k f o r G N U l i b s u p c + + . s o instead ( either works,
# t h e y ' r e A B I c o m p a t i b l e ) .
if ( NOT CXX_RUNTIME )
test_cxx ( supc++ false )
endif ( NOT CXX_RUNTIME )
if ( NOT CXX_RUNTIME )
list ( FIND CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "c++" _libcxx_index )
if ( ${ _libcxx_index } GREATER -1 )
test_cxx ( c++abi false )
endif ( )
endif ( NOT CXX_RUNTIME )
# I f w e h a v e a C + + A B I l i b r a r y , t h e n w e c a n p r o d u c e a s i n g l e l i b o b j c t h a t
# w o r k s f o r O b j e c t i v e - C a n d O b j e c t i v e - C + + . I f n o t , t h e n w e n e e d t o p r o v i d e
# a s e p a r a t e l i b o b j c x x .
if ( CXX_RUNTIME )
message ( STATUS "Using ${CXX_RUNTIME} as the C++ runtime library" )
else ( )
message ( STATUS "Testing C++ standard library" )
message ( STATUS "Using ${CMAKE_C_COMPILER}" )
try_compile ( USERUNTIME
" $ { C M A K E _ B I N A R Y _ D I R } / C M a k e "
" $ { C M A K E _ C U R R E N T _ L I S T _ D I R } / C M a k e "
t e s t _ c x x _ s t d l i b )
if ( ${ USERUNTIME } )
message ( STATUS "libobjc will depend on C++ standard library" )
set ( CXXRT_IS_STDLIB true )
else ( )
message ( STATUS "No useable C++ runtime found" )
set ( ENABLE_OBJCXX false )
endif ( )
endif ( )
separate_arguments ( EH_PERSONALITY_FLAGS NATIVE_COMMAND ${ CMAKE_CXX_FLAGS } )
if ( CMAKE_CXX_COMPILER_TARGET )
list ( APPEND EH_PERSONALITY_FLAGS "${CMAKE_CXX_COMPILE_OPTIONS_TARGET}${CMAKE_CXX_COMPILER_TARGET}" )
endif ( )
add_custom_command ( OUTPUT eh_trampoline.s
C O M M A N D $ { C M A K E _ C X X _ C O M P I L E R } A R G S $ { E H _ P E R S O N A L I T Y _ F L A G S } - f P I C - S " $ { C M A K E _ S O U R C E _ D I R } / e h _ t r a m p o l i n e . c c " - o - - f e x c e p t i o n s - f n o - i n l i n e | s e d " s / _ _ g x x _ p e r s o n a l i t y _ v 0 / t e s t _ e h _ p e r s o n a l i t y / g " > " $ { C M A K E _ B I N A R Y _ D I R } / e h _ t r a m p o l i n e . s "
M A I N _ D E P E N D E N C Y e h _ t r a m p o l i n e . c c )
list ( APPEND libobjc_ASM_SRCS eh_trampoline.s )
list ( APPEND libobjc_CXX_SRCS objcxx_eh.cc )
# F i n d l i b m f o r l i n k i n g , a s s o m e v e r s i o n s o f l i b c + + d o n ' t l i n k a g a i n s t i t
find_library ( M_LIBRARY m )
if ( WIN32 )
message ( STATUS "Using MSVC-compatible exception model" )
else ( )
separate_arguments ( EH_PERSONALITY_FLAGS NATIVE_COMMAND ${ CMAKE_CXX_FLAGS } )
if ( CMAKE_CXX_COMPILER_TARGET )
list ( APPEND EH_PERSONALITY_FLAGS "${CMAKE_CXX_COMPILE_OPTIONS_TARGET}${CMAKE_CXX_COMPILER_TARGET}" )
endif ( )
endif ( ENABLE_OBJCXX )
add_custom_command ( OUTPUT eh_trampoline.S
C O M M A N D $ { C M A K E _ C X X _ C O M P I L E R } A R G S $ { E H _ P E R S O N A L I T Y _ F L A G S } - f P I C - S " $ { C M A K E _ S O U R C E _ D I R } / e h _ t r a m p o l i n e . c c " - o - - f e x c e p t i o n s - f n o - i n l i n e | s e d " s / _ _ g x x _ p e r s o n a l i t y _ v 0 / t e s t _ e h _ p e r s o n a l i t y / g " > " $ { C M A K E _ B I N A R Y _ D I R } / e h _ t r a m p o l i n e . S "
M A I N _ D E P E N D E N C Y e h _ t r a m p o l i n e . c c )
list ( APPEND libobjc_ASM_SRCS eh_trampoline.S )
list ( APPEND libobjc_CXX_SRCS objcxx_eh.cc )
# F i n d l i b m f o r l i n k i n g , a s s o m e v e r s i o n s o f l i b c + + d o n ' t l i n k a g a i n s t i t
find_library ( M_LIBRARY m )
endif ( )
add_library ( objc SHARED ${ libobjc_C_SRCS } ${ libobjc_ASM_SRCS } ${ libobjc_OBJC_SRCS } ${ libobjc_OBJCXX_SRCS } ${ libobjc_ASM_OBJS } )
if ( ENABLE_OBJCXX )
if ( NOT CXXRT_IS_STDLIB )
# W e d o n ' t w a n t t o l i n k t h e S T L implementation ( e.g. libstdc++ ) i f
# w e h a v e a s e p a r a t e C + + r u n t i m e .
set ( CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "" )
target_link_libraries ( objc ${ CXX_RUNTIME } )
endif ( )
list ( APPEND libobjc_CXX_SRCS ${ libobjcxx_CXX_SRCS } )
target_sources ( objc PRIVATE ${ libobjc_CXX_SRCS } )
else ( )
add_definitions ( -DNO_OBJCXX )
endif ( )
list ( APPEND libobjc_CXX_SRCS ${ libobjcxx_CXX_SRCS } )
target_sources ( objc PRIVATE ${ libobjc_CXX_SRCS } )
# C u r r e n t l y , w e a c t u a l l y n e e d p t h r e a d s , b u t w e s h o u l d u s e t h e p l a t f o r m ' s n a t i v e
# t h r e a d i n g implementation ( we do for everything except thread-local storage )
set ( CMAKE_THREAD_PREFER_PTHREAD )
include ( FindThreads )
target_link_libraries ( objc Threads::Threads )
set_target_properties ( objc PROPERTIES
L I N K E R _ L A N G U A G E C
S O V E R S I O N $ { l i b o b j c _ V E R S I O N }
@ -367,8 +223,7 @@ set_target_properties(objc PROPERTIES
set_property ( TARGET PROPERTY NO_SONAME true )
set ( BUILD_STATIC_LIBOBJC false CACHE BOOL
" B u i l d t h e s t a t i c v e r s i o n o f l i b o b j c " )
option ( BUILD_STATIC_LIBOBJC "Build the static version of libobjc" OFF )
if ( BUILD_STATIC_LIBOBJC )
add_library ( objc-static STATIC ${ libobjc_C_SRCS } ${ libobjc_ASM_SRCS } ${ libobjc_OBJC_SRCS } ${ libobjc_CXX_SRCS } )
set_target_properties ( objc-static PROPERTIES
@ -377,11 +232,6 @@ if (BUILD_STATIC_LIBOBJC)
list ( APPEND INSTALL_TARGETS objc-static )
endif ( )
# E x p l i c i t l y l i n k l i b g c i f w e a r e c o m p i l i n g w i t h g c s u p p o r t .
if ( LIBGC )
target_link_libraries ( objc ${ LIBGC } )
endif ( )
# E x p l i c i t l y l i n k l i b m , a s a n i m p l i c i t d e p e n d e n c y o f t h e C + + r u n t i m e
if ( M_LIBRARY )
target_link_libraries ( objc ${ M_LIBRARY } )
@ -455,7 +305,7 @@ set(CPACK_PACKAGE_VENDOR "The GNUstep Project")
set ( CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md" )
set ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING" )
set ( CPACK_PACKAGE_VERSION_MAJOR "2" )
set ( CPACK_PACKAGE_VERSION_MINOR " 0 ")
set ( CPACK_PACKAGE_VERSION_MINOR " 2 ")
set ( CPACK_PACKAGE_VERSION_PATCH "0" )
set ( CPACK_PACKAGE_CONTACT "GNUstep Developer <gnustep-dev@gnu.org>" )
set ( CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}" )
@ -466,22 +316,13 @@ include (CPack)
# p k g - c o n f i g d e s c r i p t o r
if ( BOEHM_GC )
set ( PC_REQUIRES_PRIVATE_BOEHM_GC "Requires.private: bdw-gc" )
set ( PC_LIBS_PRIVATE ${ CMAKE_CXX_IMPLICIT_LINK_LIBRARIES } )
if ( M_LIBRARY )
list ( APPEND PC_LIBS_PRIVATE ${ M_LIBRARY } )
endif ( )
if ( ENABLE_OBJCXX )
if ( CXXRT_IS_STDLIB )
set ( PC_LIBS_PRIVATE ${ CMAKE_CXX_IMPLICIT_LINK_LIBRARIES } )
else ( )
list ( APPEND PC_LIBS_PRIVATE ${ CXX_RUNTIME } )
if ( M_LIBRARY )
list ( APPEND PC_LIBS_PRIVATE ${ M_LIBRARY } )
endif ( )
endif ( )
list ( REMOVE_DUPLICATES PC_LIBS_PRIVATE )
string ( REPLACE ";" " -l" PC_LIBS_PRIVATE "${PC_LIBS_PRIVATE}" )
set ( PC_LIBS_PRIVATE "Libs.private: -l${PC_LIBS_PRIVATE}" )
endif ( )
list ( REMOVE_DUPLICATES PC_LIBS_PRIVATE )
string ( REPLACE ";" " -l" PC_LIBS_PRIVATE "${PC_LIBS_PRIVATE}" )
set ( PC_LIBS_PRIVATE "Libs.private: -l${PC_LIBS_PRIVATE}" )
configure_file ( "libobjc.pc.in" "libobjc.pc" @ONLY )
install ( FILES "${CMAKE_CURRENT_BINARY_DIR}/libobjc.pc"
@ -499,8 +340,6 @@ add_custom_target(uninstall
C O M M A N D $ { C M A K E _ C O M M A N D } - P $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / c m a k e _ u n i n s t a l l . c m a k e )
set ( TESTS TRUE CACHE BOOL
" E n a b l e b u i l d i n g t h e t e s t s " )
if ( TESTS )
enable_testing ( )
@ -516,8 +355,4 @@ CHECK_CXX_SOURCE_COMPILES("
# i n c l u d e < e x c e p t i o n >
i n t main ( ) { r e t u r n 0 ; } " C X A _ A L L O C A T E _ E X C E P T I O N _ N O E X C E P T _ C O M P I L E S )
if ( CXA_ALLOCATE_EXCEPTION_NOEXCEPT_COMPILES )
add_definitions ( -DCXA_ALLOCATE_EXCEPTION_SPECIFIER=noexcept )
else ( )
add_definitions ( -DCXA_ALLOCATE_EXCEPTION_SPECIFIER= )
endif ( )
add_compile_definitions ( $< IF:$<BOOL:${CXA_ALLOCATE_EXCEPTION_NOEXCEPT_COMPILES} > ,CXA_ALLOCATE_EXCEPTION_SPECIFIER=noexcept,CXA_ALLOCATE_EXCEPTION_SPECIFIER> )