-- This GENie/premake file copies the behavior of the Makefile in the lib folder.
-- Basic usage: project_zstd(ZSTD_DIR)

function project_zstd(dir, compression, decompression, deprecated, dictbuilder, legacy)
       if compression == nil then compression = true end
       if decompression == nil then decompression = true end
       if deprecated == nil then deprecated = false end
       if dictbuilder == nil then dictbuilder = false end

       if legacy == nil then legacy = 0 end

       if not compression then
               dictbuilder = false
               deprecated = false
       end

       if not decompression then
               legacy = 0
               deprecated = false
       end

       project 'zstd'
               kind 'StaticLib'
               language 'C'

               files {
                       dir .. 'zstd.h',
                       dir .. 'common/**.c',
                       dir .. 'common/**.h'
               }

               if compression then
                       files {
                               dir .. 'compress/**.c',
                               dir .. 'compress/**.h'
                       }
               end

               if decompression then
                       files {
                               dir .. 'decompress/**.c',
                               dir .. 'decompress/**.h'
                       }
               end

               if dictbuilder then
                       files {
                               dir .. 'dictBuilder/**.c',
                               dir .. 'dictBuilder/**.h'
                       }
               end

               if deprecated then
                       files {
                               dir .. 'deprecated/**.c',
                               dir .. 'deprecated/**.h'
                       }
               end

               if legacy ~= 0 then
                       if legacy >= 8 then
                               files {
                                       dir .. 'legacy/zstd_v0' .. (legacy - 7) .. '.*'
                               }
                       end
                       includedirs {
                               dir .. 'legacy'
                       }
               end

               includedirs {
                       dir,
                       dir .. 'common'
               }

               defines {
                       'XXH_NAMESPACE=ZSTD_',
                       'ZSTD_LEGACY_SUPPORT=' .. legacy
               }
end