1 # Get sources 2 file(GLOB LIBCXX_SOURCES ../src/*.cpp) 3 if(WIN32) 4 file(GLOB LIBCXX_WIN32_SOURCES ../src/support/win32/*.cpp) 5 list(APPEND LIBCXX_SOURCES ${LIBCXX_WIN32_SOURCES}) 6 endif() 7 8 # Add all the headers to the project for IDEs. 9 if (MSVC_IDE OR XCODE) 10 file(GLOB_RECURSE LIBCXX_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/../include/*) 11 if(WIN32) 12 file( GLOB LIBCXX_WIN32_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/../include/support/win32/*.h) 13 list(APPEND LIBCXX_HEADERS ${LIBCXX_WIN32_HEADERS}) 14 endif() 15 # Force them all into the headers dir on MSVC, otherwise they end up at 16 # project scope because they don't have extensions. 17 if (MSVC_IDE) 18 source_group("Header Files" FILES ${LIBCXX_HEADERS}) 19 endif() 20 endif() 21 22 if (LIBCXX_ENABLE_SHARED) 23 add_library(cxx SHARED 24 ${LIBCXX_SOURCES} 25 ${LIBCXX_HEADERS} 26 ) 27 else() 28 add_library(cxx STATIC 29 ${LIBCXX_SOURCES} 30 ${LIBCXX_HEADERS} 31 ) 32 endif() 33 34 if (DEFINED LIBCXX_CXX_ABI_DEPS) 35 add_dependencies(cxx ${LIBCXX_CXX_ABI_DEPS}) 36 endif() 37 38 # Generate library list. 39 set(libraries ${LIBCXX_CXX_ABI_LIBRARIES}) 40 append_if(libraries LIBCXX_HAS_PTHREAD_LIB pthread) 41 append_if(libraries LIBCXX_HAS_C_LIB c) 42 append_if(libraries LIBCXX_HAS_M_LIB m) 43 append_if(libraries LIBCXX_HAS_RT_LIB rt) 44 append_if(libraries LIBCXX_HAS_GCC_S_LIB gcc_s) 45 46 target_link_libraries(cxx ${libraries}) 47 48 # Setup flags. 49 append_if(compile_flags LIBCXX_HAS_FPIC_FLAG -fPIC) 50 append_if(link_flags LIBCXX_HAS_NODEFAULTLIBS_FLAG -nodefaultlibs) 51 52 set_target_properties(cxx 53 PROPERTIES 54 COMPILE_FLAGS "${compile_flags}" 55 LINK_FLAGS "${link_flags}" 56 OUTPUT_NAME "c++" 57 VERSION "1.0" 58 SOVERSION "1" 59 ) 60 61 install(TARGETS cxx 62 LIBRARY DESTINATION lib 63 ARCHIVE DESTINATION lib 64 ) 65 66 install(DIRECTORY ../include/ 67 DESTINATION include/c++/v1 68 FILES_MATCHING 69 PATTERN "*" 70 PATTERN ".svn" EXCLUDE 71 ) 72