Skip to content

Commit

Permalink
Merge pull request #3040 from smehringer/sharg-submodule
Browse files Browse the repository at this point in the history
[FEATURE] Add sharg-parser submodule.
  • Loading branch information
eseiler authored Jun 30, 2022
2 parents afde6f4 + c67fd74 commit e51658d
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@
[submodule "cereal"]
path = submodules/cereal
url = https://github.com/USCiLab/cereal
[submodule "submodules/sharg-parser"]
path = submodules/sharg-parser
url = https://github.com/seqan/sharg-parser.git
43 changes: 43 additions & 0 deletions build_system/seqan3-config.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#
# SeqAn has the following optional dependencies:
#
# Sharg -- Argument Parsing
# ZLIB -- zlib compression library
# BZip2 -- libbz2 compression library
# Cereal -- Serialisation library
Expand All @@ -36,6 +37,7 @@
#
# If you wish to require the presence of ZLIB or BZip2, just check for the module before
# finding SeqAn3, e.g. "find_package (ZLIB REQUIRED)".
# If you wish to require the presence of SHARG, you may define SEQAN3_SHARG.
# If you wish to require the presence of CEREAL, you may define SEQAN3_CEREAL.
# If you wish to require the presence of LEMON, you may define SEQAN3_LEMON.
#
Expand Down Expand Up @@ -168,6 +170,25 @@ set (CMAKE_REQUIRED_FLAGS ${CMAKE_CXX_FLAGS})
# Force-deactivate optional dependencies
# ----------------------------------------------------------------------------

# Sharg is auto-detected by default, i.e. used if found, not used if not found.
# You can optionally set a hard requirement so a build fails without Sharg,
# or you can force-disable Sharg even if present on the system.
option (SEQAN3_SHARG "Require Sharg and fail if not present." OFF)
option (SEQAN3_NO_SHARG "Don't use Sharg, even if present." OFF)

if (SEQAN3_SHARG AND SEQAN3_NO_SHARG)
# this is always a user error, therefore we always error-out, even if SeqAn is not required
message (FATAL_ERROR "You may not specify SEQAN3_SHARG and SEQAN3_NO_SHARG at the same time.\n\
You can specify neither (use auto-detection), or specify either to force on/off.")
return ()
endif ()

if (SEQAN3_SHARG)
set (SEQAN3_DEFINITIONS ${SEQAN3_DEFINITIONS} "-DSEQAN3_WITH_SHARG=1")
elseif (SEQAN3_NO_SHARG)
set (SEQAN3_DEFINITIONS ${SEQAN3_DEFINITIONS} "-DSEQAN3_WITH_SHARG=0")
endif ()

# Cereal is auto-detected by default, i.e. used if found, not used if not found.
# You can optionally set a hard requirement so a build fails without cereal,
# or you can force-disable cereal even if present on the system.
Expand Down Expand Up @@ -320,6 +341,28 @@ else ()
"The SDSL library is required, but wasn't found. Get it from https://github.com/xxsds/sdsl-lite")
endif ()

# ----------------------------------------------------------------------------
# Sharg dependency is optional, but may set as required
# ----------------------------------------------------------------------------

if (NOT SEQAN3_NO_SHARG)
check_include_file_cxx (sharg/version.hpp _SEQAN3_HAVE_SHARG)

if (_SEQAN3_HAVE_SHARG)
if (SEQAN3_SHARG)
seqan3_config_print ("Required dependency: Sharg found.")
else ()
seqan3_config_print ("Optional dependency: Sharg found.")
endif ()
else ()
if (SEQAN3_SHARG)
seqan3_config_error ("The (optional) Sharg library was marked as required, but wasn't found.")
else ()
seqan3_config_print ("Optional dependency: Sharg not found.")
endif ()
endif ()
endif ()

# ----------------------------------------------------------------------------
# Cereal dependency is optional, but may set as required
# ----------------------------------------------------------------------------
Expand Down
1 change: 1 addition & 0 deletions submodules/sharg-parser
Submodule sharg-parser added at 1cbbe5

1 comment on commit e51658d

@vercel
Copy link

@vercel vercel bot commented on e51658d Jun 30, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

seqan3 – ./

seqan3-seqan.vercel.app
seqan3.vercel.app
seqan3-git-master-seqan.vercel.app

Please sign in to comment.