Skip to content

Commit

Permalink
rework
Browse files Browse the repository at this point in the history
  • Loading branch information
Mizux committed Oct 16, 2024
1 parent 4512439 commit d1ed864
Show file tree
Hide file tree
Showing 19 changed files with 1,042 additions and 82 deletions.
12 changes: 7 additions & 5 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
# Project Files unneeded by docker
.dockerignore

# Project Files unneeded by docker
.git
.gitignore
.github
.clang-format

ci/Makefile
# CMake
cmake/docs
cmake/README.md

ci/docker
ci/docs
ci/cache
ci/export
ci/Makefile

AUTHORS
CONTRIBUTING.md
CONTRIBUTORS
LICENSE
README.md
doc
CONTRIBUTING.md

# Native cmake build
build/
Expand Down
47 changes: 45 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# This file is just an orchestration
cmake_minimum_required(VERSION 3.16..3.27)
cmake_minimum_required(VERSION 3.16..3.31)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")

option(CMAKE_EXPORT_COMPILE_COMMANDS "Export compile command" TRUE)
# Enable output of compile commands during generation.
option(CMAKE_EXPORT_COMPILE_COMMANDS "Export compile command" ON)

project(CMakeCpp VERSION 1.0.0 LANGUAGES CXX)
set(PROJECT_NAMESPACE CMakeCpp)
Expand All @@ -12,6 +13,14 @@ message(STATUS "${PROJECT_NAME} version: ${PROJECT_VERSION}")
#message(STATUS "patch: ${PROJECT_VERSION_PATCH}")

message(STATUS "system name: ${CMAKE_SYSTEM_NAME}")
# Set max os target version.
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.15)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# Default Build Type to be Release
get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
if(isMultiConfig)
if(NOT CMAKE_CONFIGURATION_TYPES)
Expand Down Expand Up @@ -67,8 +76,42 @@ endif()
set_property(GLOBAL PROPERTY CTEST_TARGETS_ADDED 1)
include(CTest)

option(BUILD_ZLIB "Build the ZLIB dependency Library" ON)
message(STATUS "Build ZLIB: ${BUILD_ZLIB}")

option(BUILD_absl "Build the abseil-cpp dependency Library" ON)
message(STATUS "Build abseil-cpp: ${BUILD_absl}")

option(BUILD_Protobuf "Build the Protobuf dependency Library" ON)
message(STATUS "Build protobuf: ${BUILD_Protobuf}")

if(BUILD_TESTING)
option(BUILD_re2 "Build the re2 dependency Library" ON)
message(STATUS "Build re2: ${BUILD_re2}")

option(BUILD_googletest "Build googletest" ON)
message(STATUS "Build googletest: ${BUILD_googletest}")

option(BUILD_benchmark "Build benchmark" ON)
message(STATUS "Build benchmark: ${BUILD_benchmark}")
else()
set(BUILD_googletest OFF)
set(BUILD_benchmark OFF)
endif()

# Find system deps
include(system_deps)

# Build Needed dependencies
add_subdirectory(cmake/dependencies dependencies)

include(host)
# verify deps
include(check_deps)

include(cpp)

## Examples
option(BUILD_EXAMPLES "Build examples" ON)
message(STATUS "Build examples: ${BUILD_EXAMPLES}")
add_subdirectory(examples)
23 changes: 23 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# How to Contribute

We'd love to accept your patches and contributions to this project. There are
just a few small guidelines you need to follow.

## Contributor License Agreement

Contributions to this project must be accompanied by a Contributor License
Agreement. You (or your employer) retain the copyright to your contribution,
this simply gives us permission to use and redistribute your contributions as
part of the project. Head over to <https://cla.developers.google.com/> to see
your current agreements on file or to sign a new one.

You generally only need to submit a CLA once, so if you've already submitted one
(even if it was for a different project), you probably don't need to do it
again.

## Code reviews

All submissions, including submissions by project members, require review. We
use GitHub pull requests for this purpose. Consult
[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more
information on using pull requests.
34 changes: 34 additions & 0 deletions CONTRIBUTORS
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# This is the official list of people who can contribute
# (and typically have contributed) code to this repository.
# The AUTHORS file lists the copyright holders; this file
# lists people. For example, Google employees are listed here
# but not in AUTHORS, because Google holds the copyright.
#
# The submission process automatically checks to make sure
# that people submitting code are listed in this file (by email address).
#
# Names should be added to this file only after verifying that
# the individual or the individual's organization has agreed to
# the appropriate Contributor License Agreement, found here:
#
# http://code.google.com/legal/individual-cla-v1.0.html
# http://code.google.com/legal/corporate-cla-v1.0.html
#
# The agreement for individuals can be filled out on the web.
#
# When adding J Random Contributor's name to this file,
# either J's name or J's organization's name should be
# added to the AUTHORS file, depending on whether the
# individual or corporate CLA was used.

# Names should be added to this file like so:
# Individual's name <submission email address>
# Individual's name <submission email address> <email2> <emailN>
#
# An entry with multiple email addresses specifies that the
# first address should be used in the submit logs and
# that the other addresses should be recognized as the
# same person when interacting with Gerrit.

# Please keep the list sorted.

2 changes: 1 addition & 1 deletion ci/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -433,4 +433,4 @@ clean: clean_all clean_platforms clean_toolchains clean_web clean_vms
distclean: clean
-docker container rm -f $$(docker container ls -aq)
-docker image rm -f $$(docker image ls -aq)
-vagrant box remove -f generic/freebsd12
-vagrant box remove -f generic/freebsd14
25 changes: 16 additions & 9 deletions ci/vagrant/freebsd/Vagrantfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,10 @@ Vagrant.configure("2") do |config|
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.guest = :freebsd
config.vm.box = "generic/freebsd13"

config.vm.box = "generic/freebsd14"
config.vm.provider "virtualbox" do |v|
v.name = "ci_freebsd"
end
config.ssh.shell = "sh"

# Disable automatic box update checking. If you disable this, then
Expand Down Expand Up @@ -49,13 +51,6 @@ Vagrant.configure("2") do |config|
#config.vm.synced_folder "../../..", "/home/vagrant/project"
config.vm.synced_folder ".", "/vagrant", id: "vagrant-root", disabled: true

config.vm.provision "file", source: "../../../CMakeLists.txt", destination: "$HOME/project/"
config.vm.provision "file", source: "../../../cmake", destination: "$HOME/project/"
config.vm.provision "file", source: "../../../Foo", destination: "$HOME/project/"
config.vm.provision "file", source: "../../../Bar", destination: "$HOME/project/"
config.vm.provision "file", source: "../../../FooBar", destination: "$HOME/project/"
config.vm.provision "file", source: "../../../FooBarApp", destination: "$HOME/project/"
config.vm.provision "file", source: "../../../examples", destination: "$HOME/project/"

# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
Expand All @@ -81,21 +76,33 @@ Vagrant.configure("2") do |config|
pkg update -f
pkg install -y git cmake
SHELL

config.vm.provision "file", source: "../../../CMakeLists.txt", destination: "$HOME/project/"
config.vm.provision "file", source: "../../../cmake", destination: "$HOME/project/"
config.vm.provision "file", source: "../../../Foo", destination: "$HOME/project/"
config.vm.provision "file", source: "../../../Bar", destination: "$HOME/project/"
config.vm.provision "file", source: "../../../FooBar", destination: "$HOME/project/"
config.vm.provision "file", source: "../../../FooBarApp", destination: "$HOME/project/"
config.vm.provision "file", source: "../../../examples", destination: "$HOME/project/"

config.vm.provision "devel", type: "shell", inline:<<-SHELL
set -x
cd project
ls
SHELL

config.vm.provision "configure", type: "shell", inline:<<-SHELL
set -x
cd project
cmake -S. -Bbuild
SHELL

config.vm.provision "build", type: "shell", inline:<<-SHELL
set -x
cd project
cmake --build build -v
SHELL

config.vm.provision "test", type: "shell", inline:<<-SHELL
set -x
cd project
Expand Down
111 changes: 111 additions & 0 deletions ci/vagrant/netbsd/Vagrantfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.

# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.guest = :netbsd
config.vm.box = "generic/netbsd9"
config.vm.provider "virtualbox" do |v|
v.name = "ci_netbsd"
end
config.ssh.shell = "sh"

# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false

# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
# config.vm.network "forwarded_port", guest: 80, host: 8080

# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"

# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"

# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"

# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
#config.vm.synced_folder "../../..", "/home/vagrant/project"
config.vm.synced_folder ".", "/vagrant", id: "vagrant-root", disabled: true


# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
#
# View the documentation for the provider you are using for more
# information on available options.

# Enable provisioning with a shell script. Additional provisioners such as
# Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
# documentation for more information about their specific syntax and use.
# note: clang installed by default
config.vm.provision "env", type: "shell", inline:<<-SHELL
set -x
pkg update -f
pkg install -y git cmake
SHELL

config.vm.provision "file", source: "../../../CMakeLists.txt", destination: "$HOME/project/"
config.vm.provision "file", source: "../../../cmake", destination: "$HOME/project/"
config.vm.provision "file", source: "../../../Foo", destination: "$HOME/project/"
config.vm.provision "file", source: "../../../Bar", destination: "$HOME/project/"
config.vm.provision "file", source: "../../../FooBar", destination: "$HOME/project/"
config.vm.provision "file", source: "../../../FooBarApp", destination: "$HOME/project/"
config.vm.provision "file", source: "../../../examples", destination: "$HOME/project/"

config.vm.provision "devel", type: "shell", inline:<<-SHELL
set -x
cd project
ls
SHELL

config.vm.provision "configure", type: "shell", inline:<<-SHELL
set -x
cd project
cmake -S. -Bbuild
SHELL

config.vm.provision "build", type: "shell", inline:<<-SHELL
set -x
cd project
cmake --build build -v
SHELL

config.vm.provision "test", type: "shell", inline:<<-SHELL
set -x
cd project
cmake --build build --target test -v
SHELL
end
Loading

0 comments on commit d1ed864

Please sign in to comment.