incubator-nuttx/libs/libxx/uClibc++.cmake

115 lines
3.1 KiB
CMake

# ##############################################################################
# libs/libxx/uClibc++.cmake
#
# SPDX-License-Identifier: Apache-2.0
#
# Licensed to the Apache Software Foundation (ASF) under one or more contributor
# license agreements. See the NOTICE file distributed with this work for
# additional information regarding copyright ownership. The ASF licenses this
# file to you under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
#
# ##############################################################################
set(UCLIBCXX_DIR ${CMAKE_CURRENT_LIST_DIR}/uClibc++)
if(NOT EXISTS ${UCLIBCXX_DIR})
set(UCLIBCXX_VERSION 0.2.5)
FetchContent_Declare(
uClibc++
DOWNLOAD_NAME "uClibc++-${UCLIBCXX_VERSION}.tar.bz2"
DOWNLOAD_DIR ${CMAKE_CURRENT_LIST_DIR}
URL "https://git.busybox.net/uClibc++/snapshot/uClibc++-${UCLIBCXX_VERSION}.tar.bz2"
SOURCE_DIR
${CMAKE_CURRENT_LIST_DIR}/uClibc++
BINARY_DIR
${CMAKE_BINARY_DIR}/libs/libc/uClibc++
CONFIGURE_COMMAND
""
BUILD_COMMAND
""
INSTALL_COMMAND
""
TEST_COMMAND
""
PATCH_COMMAND
patch -p1 -d ${CMAKE_CURRENT_LIST_DIR}/uClibc++ <
${CMAKE_CURRENT_LIST_DIR}/0001-uClibcxx-basic_definitions-fix-GCC-specific-definiti.patch
&& patch -p1 -d ${CMAKE_CURRENT_LIST_DIR}/uClibc++ <
${CMAKE_CURRENT_LIST_DIR}/0001-uclibxx-use-overload-constructor-of-filebuf-ostream.patch
DOWNLOAD_NO_PROGRESS true
TIMEOUT 30)
FetchContent_GetProperties(uClibc++)
if(NOT uClibc++_POPULATED)
FetchContent_Populate(uClibc++)
endif()
endif()
nuttx_create_symlink(${CMAKE_CURRENT_LIST_DIR}/uClibc++/include
${CMAKE_BINARY_DIR}/include/uClibc++)
configure_file(
${CMAKE_CURRENT_LIST_DIR}/system_configuration.h
${CMAKE_BINARY_DIR}/include/uClibc++/system_configuration.h COPYONLY)
set_property(
TARGET nuttx
APPEND
PROPERTY NUTTX_CXX_INCLUDE_DIRECTORIES ${CMAKE_BINARY_DIR}/include/uClibc++)
set(SRCS
algorithm.cpp
associative_base.cpp
bitset.cpp
char_traits.cpp
complex.cpp
deque.cpp
exception.cpp
fstream.cpp
func_exception.cpp
iomanip.cpp
ios.cpp
iostream.cpp
istream.cpp
iterator.cpp
limits.cpp
list.cpp
locale.cpp
map.cpp
numeric.cpp
ostream.cpp
queue.cpp
set.cpp
sstream.cpp
stack.cpp
stdexcept.cpp
streambuf.cpp
string.cpp
utility.cpp
valarray.cpp
vector.cpp)
set(TARGET_SRCS)
foreach(src ${SRCS})
string(PREPEND src uClibc++/src/)
list(APPEND TARGET_SRCS ${src})
endforeach()
nuttx_add_system_library(uClibc++)
target_sources(uClibc++ PRIVATE ${TARGET_SRCS})