Skip to content

Commit d8973c7

Browse files
authored
Merge pull request #1431 from fwsGonzo/dev
Enable compiling and running on g++
2 parents 8b8da0d + 4e0946f commit d8973c7

7 files changed

Lines changed: 32 additions & 27 deletions

File tree

CMakeLists.txt

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,21 @@ endif(silent)
110110
# Append optimization level
111111
set(CAPABS "${CAPABS} ${OPTIMIZE}")
112112

113+
# object format needs to be set BEFORE enabling ASM
114+
# see: https://cmake.org/Bug/bug_relationship_graph.php?bug_id=13166
115+
if ("${ARCH}" STREQUAL "i686")
116+
set(CMAKE_ASM_NASM_OBJECT_FORMAT "elf")
117+
set(OBJCOPY_TARGET "elf32-i386")
118+
set(CAPABS "${CAPABS} -m32")
119+
else()
120+
set(CMAKE_ASM_NASM_OBJECT_FORMAT "elf64")
121+
set(OBJCOPY_TARGET "elf64-x86-64")
122+
set(CAPABS "${CAPABS} -m64")
123+
endif()
124+
125+
enable_language(ASM_NASM)
126+
127+
# initialize C and C++ compiler flags
113128
if (CMAKE_COMPILER_IS_GNUCC)
114129
# gcc/g++ settings
115130
set(CMAKE_CXX_FLAGS " -MMD ${CAPABS} ${WARNS} -Wno-frame-address -nostdlib -fno-omit-frame-pointer -c -D_LIBCPP_HAS_NO_THREADS=1 -DOS_VERSION=\\\"${OS_VERSION}\\\"")
@@ -125,18 +140,6 @@ endif()
125140
set(BUNDLE_LOC "" CACHE STRING "Local path of bundle with pre-compile libraries")
126141
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/cross_compiled_libraries.txt)
127142

128-
# object format needs to be set BEFORE enabling ASM
129-
# see: https://cmake.org/Bug/bug_relationship_graph.php?bug_id=13166
130-
if ("${ARCH}" STREQUAL "i686")
131-
set(CMAKE_ASM_NASM_OBJECT_FORMAT "elf")
132-
set(OBJCOPY_TARGET "elf32-i386")
133-
else()
134-
set(CMAKE_ASM_NASM_OBJECT_FORMAT "elf64")
135-
set(OBJCOPY_TARGET "elf64-x86-64")
136-
endif()
137-
138-
enable_language(ASM_NASM)
139-
140143
# Botan Crypto & TLS
141144
# Note: Include order matters!
142145
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/botan.cmake)

api/net/dhcp/options.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ struct domain_name_servers : public type<DOMAIN_NAME_SERVERS>, public addr_optio
215215
*/
216216
struct domain_name : public type<DOMAIN_NAME>, public base
217217
{
218-
constexpr domain_name(const std::string& dname) noexcept
218+
domain_name(const std::string& dname) noexcept
219219
: base{type::CODE, static_cast<uint8_t>(dname.size())}
220220
{
221221
std::memcpy(&val[0], dname.data(), dname.size());
@@ -296,7 +296,7 @@ struct server_identifier : public type<DHCP_SERVER_IDENTIFIER>, public addr_opti
296296
*/
297297
struct param_req_list : public type<DHCP_PARAMETER_REQUEST_LIST>, public base
298298
{
299-
constexpr param_req_list(const std::vector<Code>& codes) noexcept
299+
param_req_list(const std::vector<Code>& codes) noexcept
300300
: base{DHCP_PARAMETER_REQUEST_LIST, static_cast<uint8_t>(codes.size())}
301301
{
302302
Expects(codes.size() < 50); // or something
@@ -309,7 +309,7 @@ struct param_req_list : public type<DHCP_PARAMETER_REQUEST_LIST>, public base
309309
*/
310310
struct message : public type<DHCP_MESSAGE>, public base
311311
{
312-
constexpr message(const std::string& msg) noexcept
312+
message(const std::string& msg) noexcept
313313
: base{CODE, static_cast<uint8_t>(msg.size())}
314314
{
315315
Expects(not msg.empty() and msg.size() <= 128); // or something

api/net/inet.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,9 +138,9 @@ namespace net {
138138
return pckt;
139139
}
140140

141-
Filter_chain(const char* chain_name, std::initializer_list<Packetfilter> filters) :
142-
chain{filters},
143-
name{chain_name} {}
141+
Filter_chain(const char* chain_name, std::initializer_list<Packetfilter> filters)
142+
: chain(filters), name{chain_name}
143+
{}
144144
};
145145

146146
/**

api/net/tcp/connection.inc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ inline Connection& Connection::on_connect(ConnectCallback cb) {
1010

1111
inline Connection& Connection::on_read(size_t recv_bufsz, ReadCallback cb)
1212
{
13-
read_request = std::make_unique<ReadRequest>(recv_bufsz, this->cb.RCV.NXT, cb);
13+
read_request = std::make_unique<ReadRequest>(recv_bufsz, seq_t(this->cb.RCV.NXT), cb);
1414
return *this;
1515
}
1616

api/util/statman.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ class Stat {
100100
Stat& operator=(const Stat& other) = delete;
101101
Stat& operator=(Stat&& other) = delete;
102102

103-
} __attribute__((packed)); //< class Stat
103+
}; //< class Stat
104104

105105

106106
class Statman {

cmake/post.service.cmake

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,23 @@ set(CMAKE_CXX_COMPILER_TARGET ${TRIPLE})
1515
set(CMAKE_C_COMPILER_TARGET ${TRIPLE})
1616
message(STATUS "Target triple ${TRIPLE}")
1717

18+
# defines $CAPABS depending on installation
19+
include(${CMAKE_CURRENT_LIST_DIR}/settings.cmake)
20+
1821
# Arch-specific defines & options
1922
if ("${ARCH}" STREQUAL "x86_64")
2023
set(ARCH_INTERNAL "ARCH_X64")
2124
set(CMAKE_ASM_NASM_OBJECT_FORMAT "elf64")
2225
set(OBJCOPY_TARGET "elf64-x86-64")
26+
set(CAPABS "${CAPABS} -m64")
2327
else()
2428
set(ARCH_INTERNAL "ARCH_X86")
2529
set(CMAKE_ASM_NASM_OBJECT_FORMAT "elf")
2630
set(OBJCOPY_TARGET "elf32-i386")
31+
set(CAPABS "${CAPABS} -m32")
2732
endif()
2833
enable_language(ASM_NASM)
2934

30-
# defines $CAPABS depending on installation
31-
include(${CMAKE_CURRENT_LIST_DIR}/settings.cmake)
32-
3335
# Various global defines
3436
# * OS_TERMINATE_ON_CONTRACT_VIOLATION provides classic assert-like output from Expects / Ensures
3537
# * _GNU_SOURCE enables POSIX-extensions in newlib, such as strnlen. ("everything newlib has", ref. cdefs.h)
@@ -46,8 +48,8 @@ if (debug)
4648
endif()
4749

4850
if (CMAKE_COMPILER_IS_GNUCC)
49-
set(CMAKE_CXX_FLAGS "-m32 -MMD ${CAPABS} ${WARNS} -nostdlib -fno-omit-frame-pointer -c -std=c++14 -D_LIBCPP_HAS_NO_THREADS=1")
50-
set(CMAKE_C_FLAGS "-m32 -MMD ${CAPABS} ${WARNS} -nostdlib -fno-omit-frame-pointer -c")
51+
set(CMAKE_CXX_FLAGS "-MMD ${CAPABS} ${WARNS} -nostdlib -fno-omit-frame-pointer -c -std=c++14 -D_LIBCPP_HAS_NO_THREADS=1")
52+
set(CMAKE_C_FLAGS "-MMD ${CAPABS} ${WARNS} -nostdlib -fno-omit-frame-pointer -c")
5153
else()
5254
# these kinda work with llvm
5355
set(CMAKE_CXX_FLAGS "-MMD ${CAPABS} ${OPTIMIZE} ${WARNS} -nostdlib -nostdlibinc -fno-omit-frame-pointer -c -std=c++14 -D_LIBCPP_HAS_NO_THREADS=1")

src/kernel/kernel_start.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ extern "C" {
3636

3737
extern void default_stdout_handlers();
3838

39-
__attribute__((weak))
4039
extern "C"
41-
void kernel_start(uintptr_t magic, uintptr_t addr)
40+
void __attribute__((weak))
41+
kernel_start(uintptr_t magic, uintptr_t addr)
4242
{
4343

4444
// Initialize default serial port

0 commit comments

Comments
 (0)