Skip to content

Sim is an open source platform for carrying out algorithmic contests and programming classes. This repository contains all Sim (sub)projects as a monorepo.

Notifications You must be signed in to change notification settings

Maritsu/sim-project

 
 

Repository files navigation

Sim project

Sim is an open source platform for carrying out algorithmic contests and programming classes.

This repository contains all Sim projects as a monorepo. You can explore individual repositories here:

Subprojects

Web server and utilities around that.

Tool for creating and managing problem packages.

The library used internally by the subprojects. It contains common functionality e.g. the Sim Sandbox.

Development

Setting up build directory

First of all, you need to set up the build directory. The simplest way to do it is like this:

meson setup build

This will setup build directory build/ in which all subproject will be build but no install targets are made. To build only subprojects you can use -Dbuild=suproject1,subproject2,... option. E.g.

meson setup build --wipe -Dbuild=sip

For detailed option description you can inspect meson_options.txt file.

By default no subproject is marked to be installed on meson install -C build. Marking subprojects to be installed is done with '-Dinstall=subproject1,subproject2,...' option. E.g.

meson setup build --wipe -Dbuild=sim,sip -Dinstall=sip

This command will build sim and sip subprojects, but will only mark sip to be installed.

Specifying subpojects to install also adds them to the list of subprojects to build.

For detailed option description you can inspect meson_options.txt file.

Example development setup

CC='sccache clang' CXX='sccache clang++' CC_LD=mold CXX_LD=mold meson setup build -Dc_args=-DDEBUG -Dcpp_args='-DDEBUG -D_GLIBCXX_DEBUG' -Db_sanitize=undefined -Db_lundef=false -Dinstall=sim --wipe && meson configure build --prefix $PWD/sim

Building

Just run

meson compile -C build

or

ninja -C build

Formating C/C++ sources

To format all sources (clang-format is required):

ninja -C build format

Linting C/C++ sources

All sources

To lint all sources:

ninja -C build tidy

or

./tidy

Specified sources

To lint specified sources:

./tidy path/to/source.cc other/source.h

Static analysis

ninja -C build scan-build

About

Sim is an open source platform for carrying out algorithmic contests and programming classes. This repository contains all Sim (sub)projects as a monorepo.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 86.8%
  • JavaScript 7.8%
  • CSS 1.5%
  • Python 1.3%
  • Meson 1.2%
  • Tcl 0.8%
  • Other 0.6%