diff --git a/CMakeLists.txt b/CMakeLists.txt index dd1e49d5a..83072ee29 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,6 +34,8 @@ endif (${CMAKE_C_COMPILER_ID} STREQUAL "Clang" AND NOT ${CMAKE_C_COMPILER_VERSIO SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${IGNORED_WARNINGS}") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${IGNORED_WARNINGS}") +SET(CMAKE_C_FLAGS_DEBUG "-O0 -ggdb") +SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb") enable_language(ASM-ATT) diff --git a/cmake/darling_exe.cmake b/cmake/darling_exe.cmake index fbbfe4663..84f768d51 100644 --- a/cmake/darling_exe.cmake +++ b/cmake/darling_exe.cmake @@ -16,5 +16,9 @@ FUNCTION(add_darling_executable exe) use_ld64(${exe}) target_link_libraries(${exe} system) add_dependencies(${exe} csu) + + if (NOT NO_DSYM) + dsym(${exe}) + endif (NOT NO_DSYM) ENDFUNCTION(add_darling_executable) diff --git a/cmake/darling_lib.cmake b/cmake/darling_lib.cmake index 00c72ce46..b42bfaaf2 100644 --- a/cmake/darling_lib.cmake +++ b/cmake/darling_lib.cmake @@ -5,6 +5,7 @@ endif(COMMAND cmake_policy) include(use_ld64) include(CMakeParseArguments) +include(dsym) FUNCTION(add_darling_library name) foreach(f IN LISTS ARGN) @@ -39,6 +40,10 @@ FUNCTION(add_darling_library name) endif (DYLIB_CURRENT_VERSION) use_ld64(${name}) + + if (NOT NO_DSYM) + dsym(${name}) + endif (NOT NO_DSYM) ENDFUNCTION(add_darling_library) FUNCTION(make_fat) diff --git a/cmake/dsym.cmake b/cmake/dsym.cmake index de5a54851..038f54737 100644 --- a/cmake/dsym.cmake +++ b/cmake/dsym.cmake @@ -1,11 +1,13 @@ function(dsym target) - if (DSYMUTIL_EXE) + if (DSYMUTIL_EXE AND CMAKE_BUILD_TYPE MATCHES DEBUG) - set(ENV{PATH} "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc:$ENV{PATH}") # for lipo + add_custom_command(OUTPUT "${target}.dSYM" COMMAND ${CMAKE_COMMAND} -E env + "PATH=${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc:$ENV{PATH}" + "${DSYMUTIL_EXE}" "-flat" "-o" "${target}.dSYM" "$") - add_custom_command(OUTPUT "${target}.dSYM" COMMAND "${DSYMUTIL_EXE}" "-flat" "-o" "${target}.dSYM" "$") add_custom_target("${target}-dSYM" ALL DEPENDS "${target}" "${target}.dSYM" getuuid lipo) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${target}.dSYM" DESTINATION "${CMAKE_INSTALL_PREFIX}/libexec/darling/System/Library/Caches/dsym/files") install(DIRECTORY DESTINATION "${CMAKE_INSTALL_PREFIX}/libexec/darling/System/Library/Caches/dsym/uuid") diff --git a/platform-include/sys/reason.h b/platform-include/sys/reason.h index 13a49e3e6..fa11139fc 100644 --- a/platform-include/sys/reason.h +++ b/platform-include/sys/reason.h @@ -30,6 +30,7 @@ #define _REASON_H_ #include +#include __BEGIN_DECLS diff --git a/src/csu/CMakeLists.txt b/src/csu/CMakeLists.txt index dbc80fbbf..b98e827cc 100644 --- a/src/csu/CMakeLists.txt +++ b/src/csu/CMakeLists.txt @@ -19,6 +19,6 @@ set(csu_SRCS crt1.10.6.S ) -add_darling_library(csu STATIC ${csu_SRCS}) +add_darling_static_library(csu SOURCES ${csu_SRCS}) make_fat(csu) diff --git a/src/external/objc4 b/src/external/objc4 index 21808aed6..489e12b85 160000 --- a/src/external/objc4 +++ b/src/external/objc4 @@ -1 +1 @@ -Subproject commit 21808aed62376d2f563f624b60e298ff4fbd848c +Subproject commit 489e12b8575f4e0924431090d82ae38eb318ecb3 diff --git a/src/kernel/CMakeLists.txt b/src/kernel/CMakeLists.txt index 3a8ef8dbc..4d7455315 100644 --- a/src/kernel/CMakeLists.txt +++ b/src/kernel/CMakeLists.txt @@ -13,7 +13,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}) add_subdirectory(emulation/linux) -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse -msse2 -msse3 -w -fblocks -ggdb") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse -msse2 -msse3 -w -fblocks -ffreestanding") # Why -bind_at_load is necessary: # I couldn't find something like -Bsymbolic in Apple's ld