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

Buildexe libs#182

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
coder137 merged 29 commits intomainfrombuildexe_libs
Jan 11, 2022
Merged
Show file tree
Hide file tree
Changes fromall commits
Commits
Show all changes
29 commits
Select commitHold shift + click to select a range
a1abee1
Added BuildccHome class
coder137Jan 8, 2022
f580c7d
Added build_env_home.h/.cpp
coder137Jan 8, 2022
c7a1795
Updated build_env_setup.h/.cpp
coder137Jan 8, 2022
9d022d7
Added BuildExeArgs class
coder137Jan 8, 2022
6039ef0
Updated buildexe with BuildExeArgs class
coder137Jan 8, 2022
be2ffb2
Added build files to arg_lib_path
coder137Jan 8, 2022
7e80b86
Updated build_env_setup
coder137Jan 9, 2022
d68b5eb
Update buildexe.cpp
coder137Jan 9, 2022
9307f57
Updated args_setup
coder137Jan 9, 2022
61c26cb
Update buildexe.cpp
coder137Jan 9, 2022
59550ae
Added UserTargetWithLibsSetup private API for script mode
coder137Jan 9, 2022
f850842
Update args_setup.cpp
coder137Jan 9, 2022
a7c1e9e
Update build_env_setup.cpp
coder137Jan 9, 2022
6d05bc4
Updated args setup with LibInfo
coder137Jan 10, 2022
d5ab123
Update build_env_setup.cpp
coder137Jan 10, 2022
3d418b6
Added a buildexe specific libs example
coder137Jan 10, 2022
c03696b
Update CMakeLists.txt
coder137Jan 10, 2022
bfe1c9c
Added buildexe package manager document
coder137Jan 10, 2022
4ecaf01
Update buildexe_setup.rst
coder137Jan 10, 2022
0e07154
Update buildexe_package_manager.rst
coder137Jan 10, 2022
02f6558
Update buildexe_package_manager.rst
coder137Jan 10, 2022
bb7f6cd
Update buildexe_package_manager.rst
coder137Jan 10, 2022
e3d0a98
Update buildexe_package_manager.rst
coder137Jan 10, 2022
223d937
Update buildexe_package_manager.rst
coder137Jan 10, 2022
3daa575
Update buildexe_package_manager.rst
coder137Jan 10, 2022
08bf3ef
Update buildexe_package_manager.rst
coder137Jan 10, 2022
fc945d8
Updated linux and win with BuildExe Layout Setup
coder137Jan 10, 2022
613713b
Update win_cmake_build.yml
coder137Jan 10, 2022
c27bee5
Update linux_gcc_cmake_build.yml
coder137Jan 10, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions.github/workflows/linux_gcc_cmake_build.yml
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -63,9 +63,24 @@ jobs:
run: |
cmake --build . --target run_buildcc_lib_bootstrap_linux_gcc --config Release

- name: BuildExe Layout setup
working-directory: ${{github.workspace}}/..
run: |
mkdir buildcc_home
export BUILDCC_HOME="${{github.workspace}}/../buildcc_home"
echo $BUILDCC_HOME
cd buildcc_home
mkdir buildcc
mkdir libs
mkdir extensions
cd ..
ls

- name: BuildExe IM example tiny-process-library
working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_ALL}}
run: |
export BUILDCC_HOME="${{github.workspace}}/../buildcc_home"
echo $BUILDCC_HOME
cmake --build . --target run_buildexe_im_tpl_linux_gcc --config Release

- name: CPack Release
Expand DownExpand Up@@ -200,9 +215,24 @@ jobs:
run: |
cmake --build . --target run_buildcc_lib_bootstrap_linux_gcc --config Release

- name: BuildExe Layout setup
working-directory: ${{github.workspace}}/..
run: |
mkdir buildcc_home
export BUILDCC_HOME="${{github.workspace}}/../buildcc_home"
echo $BUILDCC_HOME
cd buildcc_home
mkdir buildcc
mkdir libs
mkdir extensions
cd ..
ls

- name: BuildExe IM example tiny-process-library
working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_DEV_SINGLE}}
run: |
export BUILDCC_HOME="${{github.workspace}}/../buildcc_home"
echo $BUILDCC_HOME
cmake --build . --target run_buildexe_im_tpl_linux_gcc --config Release

# - name: TODO, BuildExe SM simple hyrid example
Expand Down
14 changes: 14 additions & 0 deletions.github/workflows/win_cmake_build.yml
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -55,9 +55,23 @@ jobs:
run: |
cmake --build . --config Release --target run_buildcc_lib_bootstrap_win_msvc --parallel 2

- name: BuildExe Layout setup
working-directory: ${{github.workspace}}/..
run: |
mkdir buildcc_home
$env:BUILDCC_HOME = "${{github.workspace}}/../buildcc_home"
$env:BUILDCC_HOME
cd buildcc_home
mkdir buildcc
mkdir libs
mkdir extensions
cd ..
dir

- name: BuildExe IM example tiny-process-library
working-directory: ${{github.workspace}}/${{env.BUILD_FOLDER_MSVC_DEV_ALL}}
run: |
$env:BUILDCC_HOME = "${{github.workspace}}/../buildcc_home"
cmake --build . --config Release --target run_buildexe_im_tpl_win_msvc

# - name: TODO, BuildExe SM simple hyrid example
Expand Down
27 changes: 27 additions & 0 deletionsbuildexe/CMakeLists.txt
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
add_executable(buildexe
buildexe.cpp

src/build_env_home.cpp
include/buildexe/build_env_home.h

src/args_setup.cpp
include/buildexe/args_setup.h

Expand DownExpand Up@@ -84,3 +87,27 @@ add_custom_target(run_buildexe_sm_simple_linux_gcc
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../example/hybrid/simple
VERBATIM USES_TERMINAL
)

# [Script Mode] BuildExe libs example WIN GCC
add_custom_target(run_buildexe_libs_hybrid_win_gcc
COMMAND buildexe --help-all
COMMAND buildexe --config compile.toml --config ${CMAKE_CURRENT_SOURCE_DIR}/../bootstrap/config/toolchain_win_gcc.toml
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../example/buildexe/libs
VERBATIM USES_TERMINAL
)

# [Script Mode] BuildExe libs example WIN MSVC
add_custom_target(run_buildexe_libs_hybrid_win_msvc
COMMAND buildexe --help-all
COMMAND buildexe --config compile.toml --config ${CMAKE_CURRENT_SOURCE_DIR}/../bootstrap/config/toolchain_win_msvc.toml
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../example/buildexe/libs
VERBATIM USES_TERMINAL
)

# [Script Mode] BuildExe libs example LINUX GCC
add_custom_target(run_buildexe_libs_hybrid_linux_gcc
COMMAND buildexe --help-all
COMMAND buildexe --config compile.toml --config ${CMAKE_CURRENT_SOURCE_DIR}/../bootstrap/config/toolchain_linux_gcc.toml
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../example/buildexe/libs
VERBATIM USES_TERMINAL
)
58 changes: 20 additions & 38 deletionsbuildexe/buildexe.cpp
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -17,6 +17,7 @@
#include "buildcc.h"

#include "buildexe/args_setup.h"
#include "buildexe/build_env_home.h"
#include "buildexe/build_env_setup.h"
#include "buildexe/toolchain_setup.h"

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

static void clean_cb();

// TODO, Update BuildExeArgs with internal functions
int main(int argc, char **argv) {
Args args;
//
BuildccHome::Init();

ArgToolchain host_toolchain_arg;
args.AddToolchain("host", "Host Toolchain", host_toolchain_arg);

BuildExeMode out_mode;
setup_arg_buildexe_mode(args, out_mode);

ArgTargetInfo out_targetinfo;
setup_arg_target_info(args, out_targetinfo);

ArgTargetInputs out_targetinputs;
setup_arg_target_inputs(args, out_targetinputs);

ArgScriptInfo out_scriptinfo;
setup_arg_script_mode(args, out_scriptinfo);

args.Parse(argc, argv);
//
BuildExeArgs buildexe_args;
buildexe_args.Setup();
buildexe_args.Parse(argc, argv);

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

Register reg(args);
Register reg(buildexe_args.GetArgs());
reg.Clean(clean_cb);

// Build
BaseToolchain toolchain = host_toolchain_arg.ConstructToolchain();
// Host Toolchain
BaseToolchain toolchain =
buildexe_args.GetHostToolchainArg().ConstructToolchain();
find_toolchain_verify(toolchain);
if (out_mode == BuildExeMode::Script) {
if (buildexe_args.GetBuildMode() == BuildExeMode::Script) {
host_toolchain_verify(toolchain);
}

// Build environment
BuildEnvSetup build_setup(reg, toolchain, out_targetinfo, out_targetinputs);
if (out_mode == BuildExeMode::Script) {
// buildcc and user target
build_setup.ConstructUserTargetWithBuildcc();
} else {
// user target
build_setup.ConstructUserTarget();
}
reg.RunBuild();

// Run
if (out_mode == BuildExeMode::Script) {
env::log_info(kTag,
fmt::format("************** Running '{}' **************",
out_targetinfo.name));
build_setup.RunUserTarget(out_scriptinfo);
// Build Target
BuildEnvSetup build_setup(reg, toolchain, buildexe_args);
build_setup.ConstructTarget();

// Run Target if script mode
if (buildexe_args.GetBuildMode() == BuildExeMode::Script) {
build_setup.RunUserTarget(buildexe_args.GetScriptInfo());
}

// - Clang Compile Commands
Expand Down
48 changes: 44 additions & 4 deletionsbuildexe/include/buildexe/args_setup.h
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -54,10 +54,50 @@ struct ArgScriptInfo {
std::vector<std::string> configs;
};

void setup_arg_buildexe_mode(Args &args, BuildExeMode &out);
void setup_arg_target_info(Args &args, ArgTargetInfo &out);
void setup_arg_target_inputs(Args &args, ArgTargetInputs &out);
void setup_arg_script_mode(Args &args, ArgScriptInfo &out);
struct LibInfo {
std::string lib_name;
std::string absolute_lib_path;
};

class BuildExeArgs {
public:
void Setup();
void Parse(int argc, char **argv) { args_.Parse(argc, argv); }

// Getters
const Args &GetArgs() const { return args_; }
const ArgToolchain &GetHostToolchainArg() const {
return host_toolchain_arg_;
}
const ArgTargetInfo &GetTargetInfo() const { return out_targetinfo_; }
const ArgTargetInputs &GetTargetInputs() const { return out_targetinputs_; }
const ArgScriptInfo &GetScriptInfo() const { return out_scriptinfo_; }
BuildExeMode GetBuildMode() const { return out_mode_; }

const std::vector<LibInfo> &GetLibsInfo() const { return libs_info_; }
const std::vector<fs::path> &GetLibBuildFiles() const {
return lib_build_files_;
}

private:
void SetupBuildMode();
void SetupTargetInfo();
void SetupTargetInputs();
void SetupScriptMode();
void SetupLibs();

private:
Args args_;
ArgToolchain host_toolchain_arg_;
ArgTargetInfo out_targetinfo_;
ArgTargetInputs out_targetinputs_;
ArgScriptInfo out_scriptinfo_;

BuildExeMode out_mode_;

std::vector<LibInfo> libs_info_;
std::vector<fs::path> lib_build_files_;
};

} // namespace buildcc

Expand Down
60 changes: 60 additions & 0 deletionsbuildexe/include/buildexe/build_env_home.h
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
/*
* Copyright 2021-2022 Niket Naidu. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef BUILDEXE_BUILD_ENV_HOME_H_
#define BUILDEXE_BUILD_ENV_HOME_H_

#include "buildcc.h"

namespace buildcc {

class BuildccHome {
public:
static void Init();

static const fs::path &GetBuildccHomeDir() {
ExpectInitialized();
return buildcc_home_;
}
static const fs::path &GetBuildccBaseDir() {
ExpectInitialized();
return buildcc_base_;
}
static const fs::path &GetBuildccLibsDir() {
ExpectInitialized();
return buildcc_libs_;
}
static const fs::path &GetBuildccExtensionsDir() {
ExpectInitialized();
return buildcc_extensions_;
}

static bool IsInitialized() { return initialized_; }
static void ExpectInitialized() {
env::assert_fatal(IsInitialized(), "BuildccHome is not initialized");
}

private:
static fs::path buildcc_home_;
static fs::path buildcc_base_;
static fs::path buildcc_libs_;
static fs::path buildcc_extensions_;
static bool initialized_;
};

} // namespace buildcc

#endif
20 changes: 10 additions & 10 deletionsbuildexe/include/buildexe/build_env_setup.h
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,6 +20,7 @@
#include "buildcc.h"

#include "bootstrap/build_buildcc.h"

#include "buildexe/args_setup.h"

namespace buildcc {
Expand All@@ -31,15 +32,12 @@ class BuildEnvSetup {

public:
BuildEnvSetup(Register &reg, const BaseToolchain &toolchain,
const ArgTargetInfo &arg_target_info,
const ArgTargetInputs &arg_target_inputs)
: reg_(reg), toolchain_(toolchain), arg_target_info_(arg_target_info),
arg_target_inputs_(arg_target_inputs) {
const BuildExeArgs &buildexe_args)
: reg_(reg), toolchain_(toolchain), buildexe_args_(buildexe_args) {
state_.build = true;
}

void ConstructUserTarget();
void ConstructUserTargetWithBuildcc();
void ConstructTarget();

void RunUserTarget(const ArgScriptInfo &arg_script_info);

Expand All@@ -52,19 +50,21 @@ class BuildEnvSetup {
}

private:
void ConstructUserTarget();
void ConstructUserTargetWithBuildcc();

void BuildccTargetSetup();
void UserTargetSetup();
void UserTargetCb();
void UserTargetBuild();

void UserTargetWithBuildccSetup();
void UserTargetWithLibsSetup();
void UserTargetBuild();
void DepUserTargetOnBuildcc();

private:
Register &reg_;
const BaseToolchain &toolchain_;
const ArgTargetInfo &arg_target_info_;
const ArgTargetInputs &arg_target_inputs_;
const BuildExeArgs &buildexe_args_;

ArgToolchainState state_;
PersistentStorage storage_;
Expand Down
Loading

[8]ページ先頭

©2009-2025 Movatter.jp