project(darling-libsystem_c) cmake_minimum_required(VERSION 2.4.0) if(COMMAND cmake_policy) cmake_policy(SET CMP0003 NEW) cmake_policy(SET CMP0018 NEW) endif(COMMAND cmake_policy) # -DHAVE_STDINT_H=1 -I libc/include -I platform-include/ -I kernel-include/ -I # libc/locale/ -I libc/locale/FreeBSD/ -I libc/stdtime/FreeBSD -I # platform-include/pthread/ -I libc/fbsdcompat -I libc/pthreads -nostdinc # -DTARGET_CPU_X86_64=1 -DTARGET_OS_MAC=1 add_definitions(-DTARGET_OS_MAC=1) add_definitions(-DHAVE_STDINT_H=1) add_definitions(-D__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__=1080) add_definitions(-D__LIBC__ -D__DARWIN_UNIX03=1 -D__DARWIN_64_BIT_INO_T=1 -D__DARWIN_NON_CANCELABLE=1 -D__DARWIN_VERS_1050=1) #add_definitions("'-D__weak_reference(sym,alias)=__asm__(\".weak \" \\\#alias );__asm__(\".equ \" \\\#alias \", \" \\\#sym)'") #add_definitions("'-D__weak_reference(sym,alias)='") add_definitions("'-D__warn_references(name,warning)='") add_definitions(-Ddladdr=__darwin_dladdr) add_definitions(-DBUILDING_LIBC) # Hide warnings that get spammed add_definitions( -Wno-gnu-include-next -Wno-undef -Wno-conversion -Wno-unused-parameter -Wno-sign-conversion -Wno-macro-redefined ) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdinc -fPIC -w ") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -include ${CMAKE_CURRENT_SOURCE_DIR}/weak_reference.h") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ggdb -O0") # development flags set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -nostdlib -Wl,--version-script=${DARLING_TOP_DIRECTORY}/darwin.map -Bsymbolic-functions") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--defsym=__darwin_pthread_self=pthread_self") include_directories("${CMAKE_CURRENT_SOURCE_DIR}/fbsdcompat") include_directories("${CMAKE_CURRENT_SOURCE_DIR}/pthreads") include_directories("${CMAKE_CURRENT_SOURCE_DIR}/darwin") include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../libmalloc/src") include_directories("${CMAKE_CURRENT_SOURCE_DIR}/locale") include_directories("${CMAKE_CURRENT_SOURCE_DIR}/gen") include_directories("${CMAKE_CURRENT_SOURCE_DIR}/locale/FreeBSD") include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include/NetBSD") include_directories("${CMAKE_CURRENT_SOURCE_DIR}/stdtime/FreeBSD") include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../external/libdispatch") include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../external/libdispatch/private") add_subdirectory(db) # produces libc-db add_subdirectory(compat-43) # produces libc-compat add_subdirectory(emulated) # produces libc-emulated add_subdirectory(gdtoa) # produces libc-gdtoa add_subdirectory(gen) add_subdirectory(gmon) add_subdirectory(os) add_subdirectory(uuid) add_subdirectory(util) add_subdirectory(string) add_subdirectory(stdtime) add_subdirectory(sys) add_subdirectory(stdlib) add_subdirectory(stdio) add_subdirectory(secure) add_subdirectory(regex) add_subdirectory(pthreads) add_subdirectory(posix1e) add_subdirectory(nls) add_subdirectory(net) add_subdirectory(locale) add_subdirectory(threads) add_subdirectory(platform) # The following generate libc-hwplat if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i686") add_subdirectory(i386) # Pre-UNIX2003 variants set(extra_objs $ $ $ $ $ $ $ $ $ $ $ ) endif() if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86.64") add_subdirectory(x86_64) endif() add_subdirectory(darwin) SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/darling") SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) add_library(system_c SHARED $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ${extra_objs}) target_link_libraries(system_c system_kernel system_m) install(TARGETS system_c DESTINATION ${CMAKE_INSTALL_LIBDIR}/darling) # TODO: see ./xcodescripts/variants.xcconfig #SET_TARGET_PROPERTIES(system_c PROPERTIES LINKER_LANGUAGE C)