Skip to content

Commit cfef57d

Browse files
committed
Merge cmake and meson into C++ provider
1 parent 528c7a4 commit cfef57d

File tree

7 files changed

+118
-106
lines changed

7 files changed

+118
-106
lines changed

core/providers/cmake/cmake.go

Lines changed: 0 additions & 51 deletions
This file was deleted.

core/providers/cpp/buildsystem.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package cpp
2+
3+
import "github.com/railwayapp/railpack/core/generate"
4+
5+
type buildSystem interface {
6+
Install(pkgs *generate.MiseStepBuilder)
7+
Build(build *generate.CommandStepBuilder)
8+
}

core/providers/cpp/cmake.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package cpp
2+
3+
import (
4+
"github.com/railwayapp/railpack/core/generate"
5+
"github.com/railwayapp/railpack/core/plan"
6+
)
7+
8+
type cmake struct{}
9+
10+
func (_ *CppProvider) DetectCmake(ctx *generate.GenerateContext) (buildSystem, bool) {
11+
if ctx.App.HasFile("CMakeLists.txt") {
12+
return &cmake{}, true
13+
}
14+
return nil, false
15+
}
16+
17+
func (_ *cmake) Install(mise *generate.MiseStepBuilder) {
18+
mise.Default("cmake", "latest")
19+
mise.Default("ninja", "latest")
20+
}
21+
22+
func (_ *cmake) Build(build *generate.CommandStepBuilder) {
23+
build.AddCommands([]plan.Command{
24+
plan.NewExecCommand("cmake -B /build -GNinja /app"),
25+
plan.NewExecCommand("cmake --build /build"),
26+
})
27+
}

core/providers/cpp/cpp.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package cpp
2+
3+
import (
4+
"fmt"
5+
"path/filepath"
6+
7+
"github.com/railwayapp/railpack/core/generate"
8+
"github.com/railwayapp/railpack/core/plan"
9+
)
10+
11+
type CppProvider struct{}
12+
13+
func (p *CppProvider) Name() string {
14+
return "cpp"
15+
}
16+
17+
func (p *CppProvider) Detect(ctx *generate.GenerateContext) (bool, error) {
18+
_, c := p.DetectCmake(ctx)
19+
_, m := p.DetectMeson(ctx)
20+
return c || m, nil
21+
}
22+
23+
func (p *CppProvider) Initialize(ctx *generate.GenerateContext) error {
24+
return nil
25+
}
26+
27+
func (p *CppProvider) StartCommandHelp() string {
28+
return ""
29+
}
30+
31+
func (p *CppProvider) Plan(ctx *generate.GenerateContext) error {
32+
33+
packages := ctx.GetMiseStepBuilder()
34+
35+
buildsystem, found := p.DetectCmake(ctx)
36+
if !found {
37+
buildsystem, _ = p.DetectMeson(ctx)
38+
}
39+
40+
buildsystem.Install(packages)
41+
42+
build := ctx.NewCommandStep("build")
43+
build.AddInput(plan.NewStepLayer(packages.Name()))
44+
build.AddInput(ctx.NewLocalLayer())
45+
build.AddCommand(plan.NewExecCommand("mkdir /build"))
46+
buildsystem.Build(build)
47+
48+
ctx.Deploy.StartCmd = fmt.Sprintf("/build/%s", filepath.Base(ctx.GetAppSource()))
49+
ctx.Deploy.AddInputs([]plan.Layer{
50+
plan.NewStepLayer(build.Name(), plan.NewIncludeFilter([]string{"/build/"})),
51+
})
52+
53+
return nil
54+
}

core/providers/cpp/meson.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package cpp
2+
3+
import (
4+
"github.com/railwayapp/railpack/core/generate"
5+
"github.com/railwayapp/railpack/core/plan"
6+
)
7+
8+
type meson struct{}
9+
10+
func (_ *CppProvider) DetectMeson(ctx *generate.GenerateContext) (buildSystem, bool) {
11+
if ctx.App.HasFile("meson.build") {
12+
return &meson{}, true
13+
}
14+
return nil, false
15+
}
16+
17+
func (_ *meson) Install(mise *generate.MiseStepBuilder) {
18+
mise.Default("meson", "latest")
19+
mise.Default("ninja", "latest")
20+
}
21+
22+
func (_ *meson) Build(build *generate.CommandStepBuilder) {
23+
build.AddCommands([]plan.Command{
24+
plan.NewExecCommand("meson setup /build"),
25+
plan.NewExecCommand("meson compile -C /build"),
26+
})
27+
}

core/providers/meson/meson.go

Lines changed: 0 additions & 51 deletions
This file was deleted.

core/providers/provider.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@ package providers
22

33
import (
44
"github.com/railwayapp/railpack/core/generate"
5-
"github.com/railwayapp/railpack/core/providers/cmake"
5+
"github.com/railwayapp/railpack/core/providers/cpp"
66
"github.com/railwayapp/railpack/core/providers/deno"
77
"github.com/railwayapp/railpack/core/providers/elixir"
88
"github.com/railwayapp/railpack/core/providers/gleam"
99
"github.com/railwayapp/railpack/core/providers/golang"
1010
"github.com/railwayapp/railpack/core/providers/java"
11-
"github.com/railwayapp/railpack/core/providers/meson"
1211
"github.com/railwayapp/railpack/core/providers/node"
1312
"github.com/railwayapp/railpack/core/providers/php"
1413
"github.com/railwayapp/railpack/core/providers/python"
@@ -41,8 +40,7 @@ func GetLanguageProviders() []Provider {
4140
&node.NodeProvider{},
4241
&gleam.GleamProvider{},
4342
&ros.RosProvider{},
44-
&meson.MesonProvider{},
45-
&cmake.CmakeProvider{},
43+
&cpp.CppProvider{},
4644
&staticfile.StaticfileProvider{},
4745
&shell.ShellProvider{},
4846
}

0 commit comments

Comments
 (0)