@ -1,12 +1,12 @@
package ( " magic_enum " )
set_kind ( " library " , { headeronly = true } )
set_homepage ( " https://github.com/Neargye/magic_enum " )
set_description ( " Static reflection for enums (to string, from string, iteration) for modern C++, work with any enum type without any macro or boilerplate code " )
set_license ( " MIT " )
add_urls ( " https://github.com/Neargye/magic_enum/archive/refs/tags/$(version).tar.gz " ,
" https://github.com/Neargye/magic_enum.git " )
add_versions ( " v0.7.3 " , " b8d0cd848546fee136dc1fa4bb021a1e4dc8fe98e44d8c119faa3ef387636bf7 " )
add_versions ( " v0.8.0 " , " 5e7680e877dd4cf68d9d0c0e3c2a683b432a9ba84fc1993c4da3de70db894c3c " )
add_versions ( " v0.8.1 " , " 6b948d1680f02542d651fc82154a9e136b341ce55c5bf300736b157e23f9df11 " )
@ -18,10 +18,14 @@ package("magic_enum")
add_configs ( " modules " , { description = " Build with C++20 modules support. " , default = false , type = " boolean " } )
-- after v0.9.6 include files need to be prepended with magic_enum directory
add_includedirs ( " include " , " include/magic_enum " )
add_deps ( " cmake " )
on_install ( function ( package )
if package : version ( ) : lt ( " v0.9.6 " ) or not package : config ( " modules " ) then
local version = package : version ( )
if version : lt ( " 0.9.6 " ) or not package : config ( " modules " ) then
local configs = {
" -DMAGIC_ENUM_OPT_BUILD_EXAMPLES=OFF " ,
" -DMAGIC_ENUM_OPT_BUILD_TESTS=OFF " ,
@ -30,46 +34,24 @@ package("magic_enum")
table.insert ( configs , " -DCMAKE_BUILD_TYPE= " .. ( package : debug ( ) and " Debug " or " Release " ) )
import ( " package.tools.cmake " ) . install ( package , configs )
else
if package : version ( ) : eq ( " v0.9.6 " ) then
io.writefile ( " xmake.lua " , [ [
target ( " magic_enum " )
set_kind ( " moduleonly " )
set_languages ( " c++20 " )
add_headerfiles ( " include/magic_enum/**.hpp " )
add_includedirs ( " include/magic_enum " )
add_files ( " module/**.cppm " , { public = true } )
] ] )
else
-- after v0.9.6 include files need to be prepended with magic_enum directory
io.writefile ( " xmake.lua " , [ [
target ( " magic_enum " )
set_kind ( " moduleonly " )
set_languages ( " c++20 " )
add_headerfiles ( " include/(magic_enum/**.hpp) " )
add_includedirs ( " include " )
add_files ( " module/**.cppm " , { public = true } )
] ] )
end
io.writefile ( " xmake.lua " , [ [
target ( " magic_enum " )
set_kind ( " moduleonly " )
set_languages ( " c++20 " )
add_headerfiles ( " include/(magic_enum/**.hpp) " )
add_includedirs ( " include " )
add_files ( " module/**.cppm " , { public = true } )
] ] )
import ( " package.tools.xmake " ) . install ( package )
end
end )
on_test ( function ( package )
if package : version ( ) : le ( " v0.9.6 " ) then
assert ( package : check_cxxsnippets ( { test = [ [
enum class Color { RED = 2 , BLUE = 4 , GREEN = 8 } ;
void test ( ) {
Color color = Color :: RED ;
auto color_name = magic_enum :: enum_name ( color ) ;
}
] ] } , { configs = { languages = " c++17 " } , includes = " magic_enum.hpp " } ) )
else
assert ( package : check_cxxsnippets ( { test = [ [
enum class Color { RED = 2 , BLUE = 4 , GREEN = 8 } ;
void test ( ) {
Color color = Color :: RED ;
auto color_name = magic_enum :: enum_name ( color ) ;
}
] ] } , { configs = { languages = " c++17 " } , includes = " magic_enum/magic_enum.hpp " } ) )
end
assert ( package : check_cxxsnippets ( { test = [ [
enum class Color { RED = 2 , BLUE = 4 , GREEN = 8 } ;
void test ( ) {
Color color = Color :: RED ;
auto color_name = magic_enum :: enum_name ( color ) ;
}
] ] } , { configs = { languages = " c++17 " } , includes = " magic_enum.hpp " } ) )
end )