Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "src/3rdParty/efsw"]
path = src/3rdParty/efsw
url = https://github.com/SpartanJ/efsw
113 changes: 17 additions & 96 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
cmake_minimum_required(VERSION 3.10)
project(yue CXX)
cmake_minimum_required(VERSION 3.13)
project(yue LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(LUA_LIBDIR ${LUA_INCDIR}/../lib ${LUA_INCDIR}/../../lib)
set(LUA_INCLUDE_DIR "${LUA_INCDIR}")
Expand Down Expand Up @@ -50,129 +53,47 @@ message(STATUS "Lua: " ${LUA})
message(STATUS "Lua include: " ${LUA_INCLUDE_DIR})
message(STATUS "Lua library: ${LUA_LIBRARIES}")

enable_language(CXX)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)

include_directories(src src/3rdParty ${LUA_INCLUDE_DIR})
add_definitions(-std=c++17 -O3 -fPIC)

if (APPLE)
add_compile_options(-Wno-deprecated-declarations)
endif ()

add_library(libyue MODULE
add_library(yue-common STATIC
src/yuescript/ast.cpp
src/yuescript/parser.cpp
src/yuescript/yue_ast.cpp
src/yuescript/yue_parser.cpp
src/yuescript/yue_compiler.cpp
)

target_link_libraries(yue-common PUBLIC ${LUA_LIBRARIES})

add_library(libyue MODULE
src/yuescript/yuescript.cpp
)
set_target_properties(libyue PROPERTIES PREFIX "")
set_target_properties(libyue PROPERTIES OUTPUT_NAME "yue")
target_link_libraries(libyue ${LUA_LIBRARIES})
target_link_libraries(libyue PRIVATE yue-common)

add_subdirectory(src/3rdParty/efsw)

add_executable(yue
src/yuescript/ast.cpp
src/yuescript/parser.cpp
src/yuescript/yue_ast.cpp
src/yuescript/yue_parser.cpp
src/yuescript/yue_compiler.cpp
src/yuescript/yuescript.cpp
src/yue.cpp
)

target_sources(yue PRIVATE
src/3rdParty/efsw/Debug.cpp
src/3rdParty/efsw/DirectorySnapshot.cpp
src/3rdParty/efsw/DirectorySnapshotDiff.cpp
src/3rdParty/efsw/DirWatcherGeneric.cpp
src/3rdParty/efsw/FileInfo.cpp
src/3rdParty/efsw/FileSystem.cpp
src/3rdParty/efsw/FileWatcher.cpp
src/3rdParty/efsw/FileWatcherCWrapper.cpp
src/3rdParty/efsw/FileWatcherGeneric.cpp
src/3rdParty/efsw/FileWatcherImpl.cpp
src/3rdParty/efsw/Log.cpp
src/3rdParty/efsw/Mutex.cpp
src/3rdParty/efsw/String.cpp
src/3rdParty/efsw/System.cpp
src/3rdParty/efsw/Thread.cpp
src/3rdParty/efsw/Watcher.cpp
src/3rdParty/efsw/WatcherGeneric.cpp
)

if (WIN32)
target_sources(yue PRIVATE
src/3rdParty/efsw/platform/win/FileSystemImpl.cpp
src/3rdParty/efsw/platform/win/MutexImpl.cpp
src/3rdParty/efsw/platform/win/SystemImpl.cpp
src/3rdParty/efsw/platform/win/ThreadImpl.cpp
)
else ()
target_sources(yue PRIVATE
src/3rdParty/efsw/platform/posix/FileSystemImpl.cpp
src/3rdParty/efsw/platform/posix/MutexImpl.cpp
src/3rdParty/efsw/platform/posix/SystemImpl.cpp
src/3rdParty/efsw/platform/posix/ThreadImpl.cpp
)
endif()

if (APPLE)
target_sources(yue PRIVATE
src/3rdParty/efsw/FileWatcherFSEvents.cpp
src/3rdParty/efsw/FileWatcherKqueue.cpp
src/3rdParty/efsw/WatcherFSEvents.cpp
src/3rdParty/efsw/WatcherKqueue.cpp
)

if (NOT CMAKE_SYSTEM_VERSION GREATER 9)
target_compile_definitions(yue PRIVATE EFSW_FSEVENTS_NOT_SUPPORTED)
endif()
elseif (WIN32)
target_sources(yue PRIVATE
src/3rdParty/efsw/FileWatcherWin32.cpp
src/3rdParty/efsw/WatcherWin32.cpp
)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
target_sources(yue PRIVATE
src/3rdParty/efsw/FileWatcherInotify.cpp
src/3rdParty/efsw/WatcherInotify.cpp
)

if (NOT EXISTS "/usr/include/sys/inotify.h" AND NOT EXISTS "/usr/local/include/sys/inotify.h")
target_compile_definitions(yue PRIVATE EFSW_INOTIFY_NOSYS)
endif()
elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
target_sources(yue PRIVATE
src/3rdParty/efsw/FileWatcherKqueue.cpp
src/3rdParty/efsw/WatcherKqueue.cpp
)
endif()

if (MSVC)
target_compile_definitions(yue PRIVATE _SCL_SECURE_NO_WARNINGS)
else ()
target_compile_options(yue PRIVATE -Wall -Wno-long-long -fPIC)
endif()
target_link_libraries(yue PRIVATE efsw-static yue-common)

if (${CMAKE_BUILD_TYPE} MATCHES "Debug")
target_compile_definitions(yue PRIVATE DEBUG)
elseif (${CMAKE_BUILD_TYPE} MATCHES "Release")
target_compile_definitions(yue PRIVATE NDEBUG)
endif()

find_package(Threads REQUIRED)
if (APPLE)
set(MAC_LIBS "-framework CoreFoundation" "-framework CoreServices")
target_link_libraries(yue PRIVATE ${LUA_LIBRARIES} ${MAC_LIBS} Threads::Threads)
elseif (NOT (${CMAKE_SYSTEM_NAME} MATCHES "Haiku") AND NOT WIN32)
target_link_libraries(yue PRIVATE ${LUA_LIBRARIES} Threads::Threads)
else ()
target_link_libraries(yue PRIVATE ${LUA_LIBRARIES})
endif()

if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
target_link_options(yue PRIVATE -lstdc++fs -ldl)
endif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")

install(CODE "")

1 change: 1 addition & 0 deletions src/3rdParty/efsw
Submodule efsw added at ad4ac9
33 changes: 0 additions & 33 deletions src/3rdParty/efsw/Atomic.hpp

This file was deleted.

81 changes: 0 additions & 81 deletions src/3rdParty/efsw/Debug.cpp

This file was deleted.

62 changes: 0 additions & 62 deletions src/3rdParty/efsw/Debug.hpp

This file was deleted.

Loading
Loading