Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit84c8e7b

Browse files
authored
Buildexe libs (#182)
1 parent129a4b7 commit84c8e7b

File tree

17 files changed

+969
-131
lines changed

17 files changed

+969
-131
lines changed

‎.github/workflows/linux_gcc_cmake_build.yml‎

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,24 @@ jobs:
6363
run:|
6464
cmake --build . --target run_buildcc_lib_bootstrap_linux_gcc --config Release
6565
66+
-name:BuildExe Layout setup
67+
working-directory:${{github.workspace}}/..
68+
run:|
69+
mkdir buildcc_home
70+
export BUILDCC_HOME="${{github.workspace}}/../buildcc_home"
71+
echo $BUILDCC_HOME
72+
cd buildcc_home
73+
mkdir buildcc
74+
mkdir libs
75+
mkdir extensions
76+
cd ..
77+
ls
78+
6679
-name:BuildExe IM example tiny-process-library
6780
working-directory:${{github.workspace}}/${{env.BUILD_FOLDER_DEV_ALL}}
6881
run:|
82+
export BUILDCC_HOME="${{github.workspace}}/../buildcc_home"
83+
echo $BUILDCC_HOME
6984
cmake --build . --target run_buildexe_im_tpl_linux_gcc --config Release
7085
7186
-name:CPack Release
@@ -200,9 +215,24 @@ jobs:
200215
run:|
201216
cmake --build . --target run_buildcc_lib_bootstrap_linux_gcc --config Release
202217
218+
-name:BuildExe Layout setup
219+
working-directory:${{github.workspace}}/..
220+
run:|
221+
mkdir buildcc_home
222+
export BUILDCC_HOME="${{github.workspace}}/../buildcc_home"
223+
echo $BUILDCC_HOME
224+
cd buildcc_home
225+
mkdir buildcc
226+
mkdir libs
227+
mkdir extensions
228+
cd ..
229+
ls
230+
203231
-name:BuildExe IM example tiny-process-library
204232
working-directory:${{github.workspace}}/${{env.BUILD_FOLDER_DEV_SINGLE}}
205233
run:|
234+
export BUILDCC_HOME="${{github.workspace}}/../buildcc_home"
235+
echo $BUILDCC_HOME
206236
cmake --build . --target run_buildexe_im_tpl_linux_gcc --config Release
207237
208238
# - name: TODO, BuildExe SM simple hyrid example

‎.github/workflows/win_cmake_build.yml‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,23 @@ jobs:
5555
run:|
5656
cmake --build . --config Release --target run_buildcc_lib_bootstrap_win_msvc --parallel 2
5757
58+
-name:BuildExe Layout setup
59+
working-directory:${{github.workspace}}/..
60+
run:|
61+
mkdir buildcc_home
62+
$env:BUILDCC_HOME = "${{github.workspace}}/../buildcc_home"
63+
$env:BUILDCC_HOME
64+
cd buildcc_home
65+
mkdir buildcc
66+
mkdir libs
67+
mkdir extensions
68+
cd ..
69+
dir
70+
5871
-name:BuildExe IM example tiny-process-library
5972
working-directory:${{github.workspace}}/${{env.BUILD_FOLDER_MSVC_DEV_ALL}}
6073
run:|
74+
$env:BUILDCC_HOME = "${{github.workspace}}/../buildcc_home"
6175
cmake --build . --config Release --target run_buildexe_im_tpl_win_msvc
6276
6377
# - name: TODO, BuildExe SM simple hyrid example

‎buildexe/CMakeLists.txt‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
add_executable(buildexe
22
buildexe.cpp
33

4+
src/build_env_home.cpp
5+
include/buildexe/build_env_home.h
6+
47
src/args_setup.cpp
58
include/buildexe/args_setup.h
69

@@ -84,3 +87,27 @@ add_custom_target(run_buildexe_sm_simple_linux_gcc
8487
WORKING_DIRECTORY${CMAKE_CURRENT_SOURCE_DIR}/../example/hybrid/simple
8588
VERBATIMUSES_TERMINAL
8689
)
90+
91+
# [Script Mode] BuildExe libs example WIN GCC
92+
add_custom_target(run_buildexe_libs_hybrid_win_gcc
93+
COMMAND buildexe --help-all
94+
COMMAND buildexe --config compile.toml --config${CMAKE_CURRENT_SOURCE_DIR}/../bootstrap/config/toolchain_win_gcc.toml
95+
WORKING_DIRECTORY${CMAKE_CURRENT_SOURCE_DIR}/../example/buildexe/libs
96+
VERBATIMUSES_TERMINAL
97+
)
98+
99+
# [Script Mode] BuildExe libs example WIN MSVC
100+
add_custom_target(run_buildexe_libs_hybrid_win_msvc
101+
COMMAND buildexe --help-all
102+
COMMAND buildexe --config compile.toml --config${CMAKE_CURRENT_SOURCE_DIR}/../bootstrap/config/toolchain_win_msvc.toml
103+
WORKING_DIRECTORY${CMAKE_CURRENT_SOURCE_DIR}/../example/buildexe/libs
104+
VERBATIMUSES_TERMINAL
105+
)
106+
107+
# [Script Mode] BuildExe libs example LINUX GCC
108+
add_custom_target(run_buildexe_libs_hybrid_linux_gcc
109+
COMMAND buildexe --help-all
110+
COMMAND buildexe --config compile.toml --config${CMAKE_CURRENT_SOURCE_DIR}/../bootstrap/config/toolchain_linux_gcc.toml
111+
WORKING_DIRECTORY${CMAKE_CURRENT_SOURCE_DIR}/../example/buildexe/libs
112+
VERBATIMUSES_TERMINAL
113+
)

‎buildexe/buildexe.cpp‎

Lines changed: 20 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include"buildcc.h"
1818

1919
#include"buildexe/args_setup.h"
20+
#include"buildexe/build_env_home.h"
2021
#include"buildexe/build_env_setup.h"
2122
#include"buildexe/toolchain_setup.h"
2223

@@ -34,25 +35,15 @@ constexpr const char *const kTag = "BuildExe";
3435

3536
staticvoidclean_cb();
3637

38+
// TODO, Update BuildExeArgs with internal functions
3739
intmain(int argc,char **argv) {
38-
Args args;
40+
//
41+
BuildccHome::Init();
3942

40-
ArgToolchain host_toolchain_arg;
41-
args.AddToolchain("host","Host Toolchain", host_toolchain_arg);
42-
43-
BuildExeMode out_mode;
44-
setup_arg_buildexe_mode(args, out_mode);
45-
46-
ArgTargetInfo out_targetinfo;
47-
setup_arg_target_info(args, out_targetinfo);
48-
49-
ArgTargetInputs out_targetinputs;
50-
setup_arg_target_inputs(args, out_targetinputs);
51-
52-
ArgScriptInfo out_scriptinfo;
53-
setup_arg_script_mode(args, out_scriptinfo);
54-
55-
args.Parse(argc, argv);
43+
//
44+
BuildExeArgs buildexe_args;
45+
buildexe_args.Setup();
46+
buildexe_args.Parse(argc, argv);
5647

5748
// TODO, Add Verification subcommand here for OS, Compiler etc!
5849
// os win, linux considerations
@@ -63,33 +54,24 @@ int main(int argc, char **argv) {
6354
// TODO, Add libraries (git cloned)
6455
// TODO, Add extension (git cloned)
6556

66-
Registerreg(args);
57+
Registerreg(buildexe_args.GetArgs());
6758
reg.Clean(clean_cb);
6859

69-
// Build
70-
BaseToolchain toolchain = host_toolchain_arg.ConstructToolchain();
60+
// Host Toolchain
61+
BaseToolchain toolchain =
62+
buildexe_args.GetHostToolchainArg().ConstructToolchain();
7163
find_toolchain_verify(toolchain);
72-
if (out_mode == BuildExeMode::Script) {
64+
if (buildexe_args.GetBuildMode() == BuildExeMode::Script) {
7365
host_toolchain_verify(toolchain);
7466
}
7567

76-
// Build environment
77-
BuildEnvSetupbuild_setup(reg, toolchain, out_targetinfo, out_targetinputs);
78-
if (out_mode == BuildExeMode::Script) {
79-
// buildcc and user target
80-
build_setup.ConstructUserTargetWithBuildcc();
81-
}else {
82-
// user target
83-
build_setup.ConstructUserTarget();
84-
}
85-
reg.RunBuild();
86-
87-
// Run
88-
if (out_mode == BuildExeMode::Script) {
89-
env::log_info(kTag,
90-
fmt::format("************** Running '{}' **************",
91-
out_targetinfo.name));
92-
build_setup.RunUserTarget(out_scriptinfo);
68+
// Build Target
69+
BuildEnvSetupbuild_setup(reg, toolchain, buildexe_args);
70+
build_setup.ConstructTarget();
71+
72+
// Run Target if script mode
73+
if (buildexe_args.GetBuildMode() == BuildExeMode::Script) {
74+
build_setup.RunUserTarget(buildexe_args.GetScriptInfo());
9375
}
9476

9577
// - Clang Compile Commands

‎buildexe/include/buildexe/args_setup.h‎

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,50 @@ struct ArgScriptInfo {
5454
std::vector<std::string> configs;
5555
};
5656

57-
voidsetup_arg_buildexe_mode(Args &args, BuildExeMode &out);
58-
voidsetup_arg_target_info(Args &args, ArgTargetInfo &out);
59-
voidsetup_arg_target_inputs(Args &args, ArgTargetInputs &out);
60-
voidsetup_arg_script_mode(Args &args, ArgScriptInfo &out);
57+
structLibInfo {
58+
std::string lib_name;
59+
std::string absolute_lib_path;
60+
};
61+
62+
classBuildExeArgs {
63+
public:
64+
voidSetup();
65+
voidParse(int argc,char **argv) { args_.Parse(argc, argv); }
66+
67+
// Getters
68+
const Args &GetArgs()const {return args_; }
69+
const ArgToolchain &GetHostToolchainArg()const {
70+
return host_toolchain_arg_;
71+
}
72+
const ArgTargetInfo &GetTargetInfo()const {return out_targetinfo_; }
73+
const ArgTargetInputs &GetTargetInputs()const {return out_targetinputs_; }
74+
const ArgScriptInfo &GetScriptInfo()const {return out_scriptinfo_; }
75+
BuildExeModeGetBuildMode()const {return out_mode_; }
76+
77+
const std::vector<LibInfo> &GetLibsInfo()const {return libs_info_; }
78+
const std::vector<fs::path> &GetLibBuildFiles()const {
79+
return lib_build_files_;
80+
}
81+
82+
private:
83+
voidSetupBuildMode();
84+
voidSetupTargetInfo();
85+
voidSetupTargetInputs();
86+
voidSetupScriptMode();
87+
voidSetupLibs();
88+
89+
private:
90+
Args args_;
91+
ArgToolchain host_toolchain_arg_;
92+
ArgTargetInfo out_targetinfo_;
93+
ArgTargetInputs out_targetinputs_;
94+
ArgScriptInfo out_scriptinfo_;
95+
96+
BuildExeMode out_mode_;
97+
98+
std::vector<LibInfo> libs_info_;
99+
std::vector<fs::path> lib_build_files_;
100+
};
61101

62102
}// namespace buildcc
63103

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/*
2+
* Copyright 2021-2022 Niket Naidu. All rights reserved.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
#ifndef BUILDEXE_BUILD_ENV_HOME_H_
18+
#defineBUILDEXE_BUILD_ENV_HOME_H_
19+
20+
#include"buildcc.h"
21+
22+
namespacebuildcc {
23+
24+
classBuildccHome {
25+
public:
26+
staticvoidInit();
27+
28+
staticconst fs::path &GetBuildccHomeDir() {
29+
ExpectInitialized();
30+
return buildcc_home_;
31+
}
32+
staticconst fs::path &GetBuildccBaseDir() {
33+
ExpectInitialized();
34+
return buildcc_base_;
35+
}
36+
staticconst fs::path &GetBuildccLibsDir() {
37+
ExpectInitialized();
38+
return buildcc_libs_;
39+
}
40+
staticconst fs::path &GetBuildccExtensionsDir() {
41+
ExpectInitialized();
42+
return buildcc_extensions_;
43+
}
44+
45+
staticboolIsInitialized() {return initialized_; }
46+
staticvoidExpectInitialized() {
47+
env::assert_fatal(IsInitialized(),"BuildccHome is not initialized");
48+
}
49+
50+
private:
51+
static fs::path buildcc_home_;
52+
static fs::path buildcc_base_;
53+
static fs::path buildcc_libs_;
54+
static fs::path buildcc_extensions_;
55+
staticbool initialized_;
56+
};
57+
58+
}// namespace buildcc
59+
60+
#endif

‎buildexe/include/buildexe/build_env_setup.h‎

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include"buildcc.h"
2121

2222
#include"bootstrap/build_buildcc.h"
23+
2324
#include"buildexe/args_setup.h"
2425

2526
namespacebuildcc {
@@ -31,15 +32,12 @@ class BuildEnvSetup {
3132

3233
public:
3334
BuildEnvSetup(Register &reg,const BaseToolchain &toolchain,
34-
const ArgTargetInfo &arg_target_info,
35-
const ArgTargetInputs &arg_target_inputs)
36-
: reg_(reg), toolchain_(toolchain), arg_target_info_(arg_target_info),
37-
arg_target_inputs_(arg_target_inputs) {
35+
const BuildExeArgs &buildexe_args)
36+
: reg_(reg), toolchain_(toolchain), buildexe_args_(buildexe_args) {
3837
state_.build =true;
3938
}
4039

41-
voidConstructUserTarget();
42-
voidConstructUserTargetWithBuildcc();
40+
voidConstructTarget();
4341

4442
voidRunUserTarget(const ArgScriptInfo &arg_script_info);
4543

@@ -52,19 +50,21 @@ class BuildEnvSetup {
5250
}
5351

5452
private:
53+
voidConstructUserTarget();
54+
voidConstructUserTargetWithBuildcc();
55+
5556
voidBuildccTargetSetup();
5657
voidUserTargetSetup();
5758
voidUserTargetCb();
58-
voidUserTargetBuild();
59-
6059
voidUserTargetWithBuildccSetup();
60+
voidUserTargetWithLibsSetup();
61+
voidUserTargetBuild();
6162
voidDepUserTargetOnBuildcc();
6263

6364
private:
6465
Register &reg_;
6566
const BaseToolchain &toolchain_;
66-
const ArgTargetInfo &arg_target_info_;
67-
const ArgTargetInputs &arg_target_inputs_;
67+
const BuildExeArgs &buildexe_args_;
6868

6969
ArgToolchainState state_;
7070
PersistentStorage storage_;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp