Skip to content

Commit

Permalink
Merge system libuv
Browse files Browse the repository at this point in the history
  • Loading branch information
ThadHouse committed Apr 13, 2019
2 parents 0731eaa + 19ce561 commit f88e6e1
Show file tree
Hide file tree
Showing 104 changed files with 98 additions and 61 deletions.
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ option(WITHOUT_CSCORE "Don't build cscore (removes OpenCV requirement)" OFF)
option(WITHOUT_ALLWPILIB "Don't build allwpilib (removes OpenCV requirement)" ON)
option(USE_EXTERNAL_HAL "Use a separately built HAL" OFF)
set(EXTERNAL_HAL_FILE "" CACHE FILEPATH "Location to look for an external HAL CMake File")
option(USE_VCPKG_LIBUV "Use vcpkg libuv" OFF)

if (NOT WITHOUT_JAVA AND NOT BUILD_SHARED_LIBS)
message(FATAL_ERROR "
Expand Down
115 changes: 64 additions & 51 deletions wpiutil/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,80 +28,93 @@ GENERATE_RESOURCES(src/main/native/resources generated/main/cpp WPI wpi wpiutil_

file(GLOB_RECURSE wpiutil_native_src src/main/native/cpp/*.cpp)

file(GLOB uv_native_src src/main/native/libuv/*.cpp)
file(GLOB uv_native_src src/main/native/libuv/src/*.cpp)

file(GLOB uv_windows_src src/main/native/libuv/win/*.cpp)
file(GLOB uv_windows_src src/main/native/libuv/src/win/*.cpp)

set(uv_unix_src
src/main/native/libuv/unix/async.cpp
src/main/native/libuv/unix/core.cpp
src/main/native/libuv/unix/dl.cpp
src/main/native/libuv/unix/fs.cpp
src/main/native/libuv/unix/getaddrinfo.cpp
src/main/native/libuv/unix/getnameinfo.cpp
src/main/native/libuv/unix/loop-watcher.cpp
src/main/native/libuv/unix/loop.cpp
src/main/native/libuv/unix/pipe.cpp
src/main/native/libuv/unix/poll.cpp
src/main/native/libuv/unix/process.cpp
src/main/native/libuv/unix/signal.cpp
src/main/native/libuv/unix/stream.cpp
src/main/native/libuv/unix/tcp.cpp
src/main/native/libuv/unix/thread.cpp
src/main/native/libuv/unix/timer.cpp
src/main/native/libuv/unix/tty.cpp
src/main/native/libuv/unix/udp.cpp
src/main/native/libuv/src/unix/async.cpp
src/main/native/libuv/src/unix/core.cpp
src/main/native/libuv/src/unix/dl.cpp
src/main/native/libuv/src/unix/fs.cpp
src/main/native/libuv/src/unix/getaddrinfo.cpp
src/main/native/libuv/src/unix/getnameinfo.cpp
src/main/native/libuv/src/unix/loop-watcher.cpp
src/main/native/libuv/src/unix/loop.cpp
src/main/native/libuv/src/unix/pipe.cpp
src/main/native/libuv/src/unix/poll.cpp
src/main/native/libuv/src/unix/process.cpp
src/main/native/libuv/src/unix/signal.cpp
src/main/native/libuv/src/unix/stream.cpp
src/main/native/libuv/src/unix/tcp.cpp
src/main/native/libuv/src/unix/thread.cpp
src/main/native/libuv/src/unix/timer.cpp
src/main/native/libuv/src/unix/tty.cpp
src/main/native/libuv/src/unix/udp.cpp
)

set(uv_darwin_src
src/main/native/libuv/unix/bsd-ifaddrs.cpp
src/main/native/libuv/unix/darwin.cpp
src/main/native/libuv/unix/darwin-proctitle.cpp
src/main/native/libuv/unix/fsevents.cpp
src/main/native/libuv/unix/kqueue.cpp
src/main/native/libuv/unix/proctitle.cpp
src/main/native/libuv/src/unix/bsd-ifaddrs.cpp
src/main/native/libuv/src/unix/darwin.cpp
src/main/native/libuv/src/unix/darwin-proctitle.cpp
src/main/native/libuv/src/unix/fsevents.cpp
src/main/native/libuv/src/unix/kqueue.cpp
src/main/native/libuv/src/unix/proctitle.cpp
)

set(uv_linux_src
src/main/native/libuv/unix/linux-core.cpp
src/main/native/libuv/unix/linux-inotify.cpp
src/main/native/libuv/unix/linux-syscalls.cpp
src/main/native/libuv/unix/procfs-exepath.cpp
src/main/native/libuv/unix/proctitle.cpp
src/main/native/libuv/unix/sysinfo-loadavg.cpp
src/main/native/libuv/unix/sysinfo-memory.cpp
src/main/native/libuv/src/unix/linux-core.cpp
src/main/native/libuv/src/unix/linux-inotify.cpp
src/main/native/libuv/src/unix/linux-syscalls.cpp
src/main/native/libuv/src/unix/procfs-exepath.cpp
src/main/native/libuv/src/unix/proctitle.cpp
src/main/native/libuv/src/unix/sysinfo-loadavg.cpp
src/main/native/libuv/src/unix/sysinfo-memory.cpp
)

add_library(wpiutil ${wpiutil_native_src} ${uv_native_src} ${wpiutil_resources_src})
add_library(wpiutil ${wpiutil_native_src} ${wpiutil_resources_src})
set_target_properties(wpiutil PROPERTIES DEBUG_POSTFIX "d")

set_property(TARGET wpiutil PROPERTY FOLDER "libraries")

if(NOT MSVC)
target_sources(wpiutil PRIVATE ${uv_unix_src})
if (APPLE)
target_sources(wpiutil PRIVATE ${uv_darwin_src})
else()
target_sources(wpiutil PRIVATE ${uv_linux_src})
endif()
if (NOT MSVC)
target_compile_options(wpiutil PUBLIC -std=c++14 -Wall -pedantic -Wextra -Wno-unused-parameter)
target_compile_options(wpiutil PRIVATE -D_GNU_SOURCE)
else()
target_sources(wpiutil PRIVATE ${uv_windows_src})
target_compile_options(wpiutil PUBLIC -DNOMINMAX /D_CRT_SECURE_NO_WARNINGS /wd4244 /wd4267 /wd4146 /WX /permissive- /std:c++17)
if(BUILD_SHARED_LIBS)
target_compile_options(wpiutil PRIVATE -DBUILDING_UV_SHARED)
endif()
target_compile_options(wpiutil PUBLIC /DNOMINMAX /D_CRT_SECURE_NO_WARNINGS /wd4244 /wd4267 /wd4146 /WX /permissive- /std:c++17)
endif()

target_link_libraries(wpiutil Threads::Threads ${CMAKE_DL_LIBS})

if (NOT USE_VCPKG_LIBUV)
target_sources(wpiutil PRIVATE ${uv_native_src})
install(DIRECTORY src/main/native/libuv/include/ DESTINATION "${include_dest}/wpiutil")
target_include_directories(wpiutil PRIVATE
src/main/native/libuv/src)
target_include_directories(wpiutil PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/libuv/include>
$<INSTALL_INTERFACE:${include_dest}/wpiutil>)
if(NOT MSVC)
target_sources(wpiutil PRIVATE ${uv_unix_src})
if (APPLE)
target_sources(wpiutil PRIVATE ${uv_darwin_src})
else()
target_sources(wpiutil PRIVATE ${uv_linux_src})
endif()
target_compile_options(wpiutil PRIVATE -D_GNU_SOURCE)
else()
target_sources(wpiutil PRIVATE ${uv_windows_src})
if(BUILD_SHARED_LIBS)
target_compile_options(wpiutil PRIVATE -DBUILDING_UV_SHARED)
endif()
endif()
else()
find_package(unofficial-libuv CONFIG REQUIRED)
target_link_libraries(wpiutil unofficial::libuv::libuv)
endif()

target_include_directories(wpiutil PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src/main/native/include>
$<INSTALL_INTERFACE:${include_dest}/wpiutil>)
target_include_directories(wpiutil PRIVATE
src/main/native/libuv
src/main/native/include/uv-private
)

install(TARGETS wpiutil EXPORT wpiutil DESTINATION "${main_lib_dest}")
install(DIRECTORY src/main/native/include/ DESTINATION "${include_dest}/wpiutil")
Expand Down
43 changes: 33 additions & 10 deletions wpiutil/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,19 @@ ext {
nativeName = 'wpiutil'
devMain = 'edu.wpi.first.wpiutil.DevMain'
def generateTask = createGenerateResourcesTask('main', 'WPI', 'wpi', project)

extraSetup = {
it.tasks.withType(CppCompile) {
dependsOn generateTask
}
it.sources {
libuvCpp(CppSourceSet) {
source {
srcDirs 'src/main/native/libuv'
srcDirs 'src/main/native/libuv/src'
include '*.cpp'
}
exportedHeaders {
srcDirs 'src/main/native/include', 'src/main/native/include/uv-private', 'src/main/native/libuv'
srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src'
}
}
resourcesCpp(CppSourceSet) {
Expand All @@ -33,7 +34,7 @@ ext {
it.sources {
libuvUnixCpp(CppSourceSet) {
source {
srcDirs 'src/main/native/libuv/unix'
srcDirs 'src/main/native/libuv/src/unix'
includes = [
'async.cpp',
'core.cpp',
Expand All @@ -56,7 +57,7 @@ ext {
]
}
exportedHeaders {
srcDirs 'src/main/native/include', 'src/main/native/include/uv-private', 'src/main/native/libuv'
srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src'
}
}
}
Expand All @@ -68,19 +69,19 @@ ext {
it.sources {
libuvWindowsCpp(CppSourceSet) {
source {
srcDirs 'src/main/native/libuv/win'
srcDirs 'src/main/native/libuv/src/win'
include '*.cpp'
}
exportedHeaders {
srcDirs 'src/main/native/include', 'src/main/native/include/uv-private', 'src/main/native/libuv'
srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src'
}
}
}
} else if (it.targetPlatform.operatingSystem.name == 'osx') {
it.sources {
libuvMacCpp(CppSourceSet) {
source {
srcDirs 'src/main/native/libuv/unix'
srcDirs 'src/main/native/libuv/src/unix'
includes = [
'bsd-ifaddrs.cpp',
'darwin.cpp',
Expand All @@ -91,15 +92,15 @@ ext {
]
}
exportedHeaders {
srcDirs 'src/main/native/include', 'src/main/native/include/uv-private', 'src/main/native/libuv'
srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src'
}
}
}
} else {
it.sources {
libuvLinuxCpp(CppSourceSet) {
source {
srcDirs 'src/main/native/libuv/unix'
srcDirs 'src/main/native/libuv/src/unix'
includes = [
'linux-core.cpp',
'linux-inotify.cpp',
Expand All @@ -111,7 +112,7 @@ ext {
]
}
exportedHeaders {
srcDirs 'src/main/native/include', 'src/main/native/include/uv-private', 'src/main/native/libuv'
srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src'
}
}
}
Expand All @@ -131,7 +132,29 @@ file("$projectDir/examples").list(new FilenameFilter() {

apply from: "${rootDir}/shared/javacpp/setupBuild.gradle"

cppHeadersZip {
from('src/main/native/libuv/include') {
into '/'
}
}

// it.component.sources.each {
// it.exportedHeaders {
// srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src'
// }
// }

model {
components {
all {
it.sources.each {
it.exportedHeaders {
srcDirs 'src/main/native/include', 'src/main/native/libuv/include', 'src/main/native/libuv/src'
}
}
}
}

// Exports config is a utility to enable exporting all symbols in a C++ library on windows to a DLL.
// This removes the need for DllExport on a library. However, the gradle C++ builder has a bug
// where some extra symbols are added that cannot be resolved at link time. This configuration
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 comments on commit f88e6e1

Please sign in to comment.