mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-12-08 06:09:58 +00:00
This macro outputs the time taken to reach the end of the current scope to the debug console. It also shows the average time, total cumulative time and the total number of calls. It is also possible to limit the amount of debug output using `REPORT_TIME_EVERY(name, n)` to only print every `n` calls.
171 lines
4.5 KiB
CMake
171 lines
4.5 KiB
CMake
# These are the minimal set of sources needed to build the code generators. We separate them to allow
|
|
# LibCore to depend on generated sources.
|
|
set(SOURCES
|
|
ArgsParser.cpp
|
|
Directory.cpp
|
|
DirectoryEntry.cpp
|
|
DirIterator.cpp
|
|
Environment.cpp
|
|
File.cpp
|
|
StandardPaths.cpp
|
|
Version.cpp
|
|
)
|
|
|
|
if (WIN32)
|
|
list(APPEND SOURCES
|
|
ProcessWindows.cpp
|
|
SocketpairWindows.cpp
|
|
SystemWindows.cpp)
|
|
else()
|
|
list(APPEND SOURCES
|
|
Process.cpp
|
|
System.cpp)
|
|
endif()
|
|
|
|
ladybird_lib(LibCoreMinimal coreminimal)
|
|
|
|
if (WIN32)
|
|
find_path(DIRENT_INCLUDE_DIR dirent.h REQUIRED)
|
|
target_include_directories(LibCoreMinimal PRIVATE ${DIRENT_INCLUDE_DIR})
|
|
endif()
|
|
|
|
if (${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
|
|
# NetBSD has its shm_open and shm_unlink functions in librt so we need to link that
|
|
target_link_libraries(LibCoreMinimal PRIVATE rt)
|
|
endif()
|
|
|
|
if (LAGOM_TOOLS_ONLY)
|
|
return()
|
|
endif()
|
|
|
|
set(SOURCES
|
|
ConfigFile.cpp
|
|
ElapsedTimer.cpp
|
|
EventLoop.cpp
|
|
EventLoopImplementation.cpp
|
|
EventReceiver.cpp
|
|
MappedFile.cpp
|
|
MimeData.cpp
|
|
Notifier.cpp
|
|
ReportTime.cpp
|
|
Resource.cpp
|
|
ResourceImplementation.cpp
|
|
ResourceImplementationFile.cpp
|
|
SystemServerTakeover.cpp
|
|
ThreadEventQueue.cpp
|
|
Timer.cpp
|
|
)
|
|
|
|
if (WIN32)
|
|
list(APPEND SOURCES
|
|
SocketWindows.cpp
|
|
AnonymousBufferWindows.cpp
|
|
EventLoopImplementationWindows.cpp
|
|
UDPServerWindows.cpp
|
|
TCPServerWindows.cpp)
|
|
else()
|
|
list(APPEND SOURCES
|
|
Socket.cpp
|
|
AnonymousBuffer.cpp
|
|
EventLoopImplementationUnix.cpp
|
|
UDPServer.cpp
|
|
TCPServer.cpp)
|
|
endif()
|
|
|
|
if (NOT WIN32)
|
|
list(APPEND SOURCES LocalServer.cpp)
|
|
else()
|
|
list(APPEND SOURCES LocalServerWindows.cpp)
|
|
endif()
|
|
|
|
# FIXME: Implement these for other systems.
|
|
if (LINUX)
|
|
list(APPEND SOURCES
|
|
FileWatcherLinux.cpp
|
|
Platform/ProcessStatisticsLinux.cpp
|
|
TimeZoneWatcherLinux.cpp
|
|
)
|
|
elseif (APPLE AND NOT IOS)
|
|
list(APPEND SOURCES
|
|
FileWatcherUnimplemented.cpp
|
|
Platform/ProcessStatisticsMach.cpp
|
|
TimeZoneWatcherMacOS.mm
|
|
)
|
|
elseif (WIN32)
|
|
list(APPEND SOURCES
|
|
FileWatcherUnimplemented.cpp
|
|
Platform/ProcessStatisticsUnimplemented.cpp
|
|
TimeZoneWatcherWindows.cpp
|
|
)
|
|
else()
|
|
list(APPEND SOURCES
|
|
FileWatcherUnimplemented.cpp
|
|
Platform/ProcessStatisticsUnimplemented.cpp
|
|
TimeZoneWatcherUnimplemented.cpp
|
|
)
|
|
endif()
|
|
|
|
if (APPLE OR CMAKE_SYSTEM_NAME STREQUAL "GNU")
|
|
list(APPEND SOURCES MachPort.cpp)
|
|
endif()
|
|
|
|
if (APPLE)
|
|
list(APPEND SOURCES IOSurface.cpp)
|
|
endif()
|
|
|
|
ladybird_lib(LibCore core)
|
|
target_link_libraries(LibCore PRIVATE LibUnicode LibURL Threads::Threads)
|
|
target_link_libraries(LibCore PUBLIC LibCoreMinimal)
|
|
|
|
if (${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
|
|
# NetBSD has its shm_open and shm_unlink functions in librt so we need to link that
|
|
target_link_libraries(LibCore PRIVATE rt)
|
|
endif()
|
|
if (${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
|
|
# Solaris has socket and networking related functions in two extra libraries
|
|
target_link_libraries(LibCore PRIVATE nsl socket)
|
|
endif()
|
|
if (HAIKU)
|
|
# Haiku has networking related functions in the network library
|
|
target_link_libraries(LibCore PRIVATE network)
|
|
endif()
|
|
|
|
if (APPLE)
|
|
target_link_libraries(LibCore PUBLIC "-framework CoreFoundation")
|
|
target_link_libraries(LibCore PUBLIC "-framework CoreServices")
|
|
target_link_libraries(LibCore PUBLIC "-framework Foundation")
|
|
target_link_libraries(LibCore PUBLIC "-framework IOSurface")
|
|
endif()
|
|
|
|
if (WIN32)
|
|
target_link_libraries(LibCore PRIVATE ntdll.dll)
|
|
endif()
|
|
|
|
if (ANDROID)
|
|
target_link_libraries(LibCore PRIVATE log)
|
|
endif()
|
|
|
|
if (ENABLE_SWIFT)
|
|
set(SWIFT_EXCLUDE_HEADERS "SocketAddressWindows.h")
|
|
if(WIN32)
|
|
list(APPEND SWIFT_EXCLUDE_HEADERS "EventLoopImplementationUnix.h")
|
|
else()
|
|
list(APPEND SWIFT_EXCLUDE_HEADERS "EventLoopImplementationWindows.h")
|
|
endif()
|
|
if (NOT APPLE)
|
|
list(APPEND SWIFT_EXCLUDE_HEADERS
|
|
IOSurface.h
|
|
MachPort.h
|
|
MachMessageTypes.h
|
|
ProcessStatisticsMach.h
|
|
)
|
|
endif()
|
|
|
|
generate_clang_module_map(LibCore EXCLUDE_FILES ${SWIFT_EXCLUDE_HEADERS})
|
|
target_sources(LibCore PRIVATE
|
|
EventSwift.mm
|
|
EventLoopExecutor.swift)
|
|
set_source_files_properties(EventSwift.mm PRIVATE PROPERTIES COMPILE_FLAGS -fblocks)
|
|
target_link_libraries(LibCore PRIVATE AK)
|
|
add_swift_target_properties(LibCore LAGOM_LIBRARIES AK)
|
|
endif()
|