diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..b17a390 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.29) +cmake_policy(SET CMP0157 NEW) + +project(meta-json + LANGUAGES Swift) + +include(FetchContent) + +FetchContent_Declare( + Meta + GIT_REPOSITORY https://git.aparoksha.dev/aparoksha/meta + GIT_TAG main +) +FetchContent_MakeAvailable(Meta) + + +set(CMAKE_Swift_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/swift) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) + +add_subdirectory(Sources) + +if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) + add_subdirectory(Tests) +endif() \ No newline at end of file diff --git a/Package.swift b/Package.swift index cf17380..e80afcf 100644 --- a/Package.swift +++ b/Package.swift @@ -23,13 +23,19 @@ let package = Package( dependencies: [ .product(name: "Meta", package: "meta") ], - path: "Sources" + path: "Sources", + exclude: [ + "CMakeLists.txt" + ] ), .executableTarget( name: "Tests", dependencies: ["MetaJSON"], - path: "Tests" + path: "Tests", + exclude: [ + "CMakeLists.txt" + ] ), ], diff --git a/Sources/CMakeLists.txt b/Sources/CMakeLists.txt new file mode 100644 index 0000000..a1a6c34 --- /dev/null +++ b/Sources/CMakeLists.txt @@ -0,0 +1,12 @@ +add_library(MetaJSON MetaJSON/State.swift) +target_link_libraries(MetaJSON PRIVATE Meta) + +set_target_properties(MetaJSON PROPERTIES + Swift_LANGUAGE_VERSION 5 +) + +install(TARGETS MetaJSON + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + RUNTIME DESTINATION bin +) \ No newline at end of file diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt new file mode 100644 index 0000000..0aeef83 --- /dev/null +++ b/Tests/CMakeLists.txt @@ -0,0 +1,6 @@ +add_executable(Tests Test.swift) +target_link_libraries(Tests PRIVATE MetaJSON) + +set_target_properties(Tests PROPERTIES + Swift_LANGUAGE_VERSION 5 +) \ No newline at end of file