From f7d1641721fcd644750a61309e171faf5d8d4e7e Mon Sep 17 00:00:00 2001 From: Wonsup Yoon Date: Sat, 19 Mar 2022 00:03:08 +0900 Subject: [PATCH] Generated from commit 4a00219b3d96b1e5c7595f1a5ff12d3b4656eec2 --- CMakeLists.txt | 81 ++++++++++++++++++++++++---------------------- src/E/E_System.cpp | 10 +++--- 2 files changed, 47 insertions(+), 44 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fd4492b34..3faa23c63 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,11 @@ cmake_minimum_required(VERSION 3.11) -project(e VERSION 3.3.0) +project(e VERSION 3.3.1) if(WIN32) - message(FATAL_ERROR "WIN32 target is obsolete. Please use Windows Subsystems for Linux") + message( + FATAL_ERROR + "WIN32 target is obsolete. Please use Windows Subsystems for Linux") endif(WIN32) set(CMAKE_CXX_STANDARD 17) @@ -80,7 +82,6 @@ check_cxx_source_compiles( " HAVE_PRAGMA_PACK) - check_cxx_source_compiles( " #include @@ -88,7 +89,7 @@ check_cxx_source_compiles( #include #include struct aAa {}; - + int main(void) { struct aAa a1; int status = -4; @@ -108,10 +109,9 @@ else() endif() if(HAVE_DEMANGLE) -add_compile_definitions(HAVE_DEMANGLE) + add_compile_definitions(HAVE_DEMANGLE) endif() - # Build E file(GLOB_RECURSE e_SOURCES "src/*.cpp") @@ -123,8 +123,7 @@ find_package(Threads REQUIRED) target_link_libraries(e PUBLIC Threads::Threads) if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") -set_target_properties(e PROPERTIES OSX_ARCHITECTURES - "arm64;x86_64") + set_target_properties(e PROPERTIES OSX_ARCHITECTURES "arm64;x86_64") endif() target_compile_options(e PRIVATE -g -O0 -Wall) @@ -135,12 +134,13 @@ include(FetchContent) FetchContent_Declare( googletest - URL https://github.com/google/googletest/archive/release-1.10.0.zip) + URL https://github.com/google/googletest/archive/b007c54f2944e193ac44fba1bc997cb65826a0b9.zip +) FetchContent_GetProperties(googletest) if(NOT googletest_POPULATED) FetchContent_Populate(googletest) - add_subdirectory(${googletest_SOURCE_DIR}/googletest ${googletest_BINARY_DIR}) + add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR}) endif() # Find Solution @@ -175,7 +175,6 @@ endfunction() file(GLOB_RECURSE e_solution_CMAKELISTS "${PROJECT_SOURCE_DIR}/solution/*/CMakeLists.txt") - foreach(cmakelists ${e_solution_CMAKELISTS}) get_filename_component(e_solution_DIR ${cmakelists} DIRECTORY) add_subdirectory(${e_solution_DIR}) @@ -185,34 +184,38 @@ endforeach() include(FetchContent) function(get_solution) - set(SOLUTION_REPO "https://anlab-kaist.github.io/KENSv3/solution/${CMAKE_PROJECT_VERSION}") + set(SOLUTION_REPO + "https://anlab-kaist.github.io/KENSv3/solution/${CMAKE_PROJECT_VERSION}") foreach(arg IN LISTS ARGN) # Find Solution if(NOT TARGET ${arg}_solution) - find_library(${arg}_solution_path ${arg}_solution PATH ${SOLUTION_PATH} EXACT) - - - if (NOT ${arg}_solution_path) - # Download Solution - message(STATUS "Donwloading ${arg}_solution") - get_solution_name(${arg}_solution) - - include(FetchContent) - - FetchContent_Declare( - ${arg}_solution URL "${SOLUTION_REPO}/${${arg}_solution_SOLUTION_NAME}") - FetchContent_GetProperties(${arg}_solution) - if(NOT (${arg}_solution_POPULATED)) - FetchContent_Populate(${arg}_solution) - endif() - - find_library(${arg}_solution_path ${arg}_solution PATH ${${arg}_solution_SOURCE_DIR} EXACT) - endif() - add_library(${arg}_solution SHARED IMPORTED GLOBAL) - set_property(TARGET ${arg}_solution PROPERTY IMPORTED_LOCATION ${${arg}_solution_path}) - - target_link_libraries(${arg}_solution INTERFACE e) + find_library(${arg}_solution_path ${arg}_solution PATH ${SOLUTION_PATH} + EXACT) + + if(NOT ${arg}_solution_path) + # Download Solution + message(STATUS "Donwloading ${arg}_solution") + get_solution_name(${arg}_solution) + + include(FetchContent) + + FetchContent_Declare( + ${arg}_solution + URL "${SOLUTION_REPO}/${${arg}_solution_SOLUTION_NAME}") + FetchContent_GetProperties(${arg}_solution) + if(NOT (${arg}_solution_POPULATED)) + FetchContent_Populate(${arg}_solution) + endif() + + find_library(${arg}_solution_path ${arg}_solution PATH + ${${arg}_solution_SOURCE_DIR} EXACT) + endif() + add_library(${arg}_solution SHARED IMPORTED GLOBAL) + set_property(TARGET ${arg}_solution PROPERTY IMPORTED_LOCATION + ${${arg}_solution_path}) + + target_link_libraries(${arg}_solution INTERFACE e) endif() endforeach() endfunction() @@ -220,14 +223,14 @@ endfunction() # Build Apps include(cmake/app-ref.cmake OPTIONAL) -if (e_apps_CMAKELISTS) +if(e_apps_CMAKELISTS) + else() -file(GLOB e_apps_CMAKELISTS "${PROJECT_SOURCE_DIR}/app/*/CMakeLists.txt") + file(GLOB e_apps_CMAKELISTS "${PROJECT_SOURCE_DIR}/app/*/CMakeLists.txt") endif() list(FILTER e_apps_CMAKELISTS EXCLUDE REGEX ".*/scheduling/.*") - foreach(cmakelists ${e_apps_CMAKELISTS}) get_filename_component(e_apps_DIR ${cmakelists} DIRECTORY) add_subdirectory(${e_apps_DIR}) @@ -246,4 +249,4 @@ if(DOXYGEN_FOUND) endif(DOXYGEN_FOUND) -include(cmake/kens-dist.cmake OPTIONAL) \ No newline at end of file +include(cmake/kens-dist.cmake OPTIONAL) diff --git a/src/E/E_System.cpp b/src/E/E_System.cpp index 42e666f41..9b90c67e4 100644 --- a/src/E/E_System.cpp +++ b/src/E/E_System.cpp @@ -170,14 +170,14 @@ Runnable::Runnable() : state(State::CREATED), threadLock(stateMtx, std::defer_lock), schedLock(stateMtx), thread(&Runnable::run, this) {} Runnable::~Runnable() { - assert(std::this_thread::get_id() != thread.get_id()); assert(schedLock.owns_lock()); + assert(std::this_thread::get_id() != thread.get_id()); thread.join(); } void Runnable::run() { - assert(std::this_thread::get_id() == thread.get_id()); threadLock.lock(); + assert(std::this_thread::get_id() == thread.get_id()); cond.wait(threadLock, [&] { return state == State::STARTING; }); pre_main(); state = State::READY; @@ -190,8 +190,8 @@ void Runnable::run() { } void Runnable::wait() { - assert(std::this_thread::get_id() == thread.get_id()); assert(threadLock.owns_lock()); + assert(std::this_thread::get_id() == thread.get_id()); assert(state == State::RUNNING); state = State::WAITING; cond.notify_all(); @@ -199,8 +199,8 @@ void Runnable::wait() { } void Runnable::start() { - assert(std::this_thread::get_id() != thread.get_id()); assert(schedLock.owns_lock()); + assert(std::this_thread::get_id() != thread.get_id()); assert(state == State::CREATED); state = State::STARTING; cond.notify_all(); @@ -208,8 +208,8 @@ void Runnable::start() { assert(schedLock.owns_lock()); } Runnable::State Runnable::wake() { - assert(std::this_thread::get_id() != thread.get_id()); assert(schedLock.owns_lock()); + assert(std::this_thread::get_id() != thread.get_id()); assert(state == State::READY); state = State::RUNNING; cond.notify_all();