Skip to content

Commit

Permalink
添加yaml配置编解码
Browse files Browse the repository at this point in the history
  • Loading branch information
hero1s committed May 28, 2024
1 parent 36492f1 commit e6794d9
Show file tree
Hide file tree
Showing 20 changed files with 13,689 additions and 1 deletion.
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ luaext:
cd extend/lmdb; make -j4 SOLUTION_DIR=$(CUR_DIR) -f lmdb.mak;
cd extend/luaxlsx; make -j4 SOLUTION_DIR=$(CUR_DIR) -f luaxlsx.mak;
cd extend/luaxml; make -j4 SOLUTION_DIR=$(CUR_DIR) -f luaxml.mak;
cd extend/lyaml; make -j4 SOLUTION_DIR=$(CUR_DIR) -f lyaml.mak;

share:
cd extend/mimalloc; make -j4 SOLUTION_DIR=$(CUR_DIR) -f mimalloc.mak;
Expand Down
13 changes: 13 additions & 0 deletions bin/bb.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
foo:
id: 123456
name: Everyone has same name
age: 10
bar:
id: 123456
name: Everyone has same name
age: 20
base:
id: 123456
name: Everyone has same name
...
37 changes: 37 additions & 0 deletions extend/lyaml/lyaml.lmak
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
--工程名字
PROJECT_NAME = "lyaml"

--目标名字
TARGET_NAME = "lyaml"

----工程类型: static/dynamic/exe
PROJECT_TYPE = "dynamic"

--需要的include目录
INCLUDES = {
"./src",
"../lua/lua",
"../luakit/include"
}

DEFINES = {
"YAML_DECLARE_EXPORT"
}

--需要连接的库文件
LIBS = {
"lua"
}

--WINDOWS需要定义的选项
WINDOWS_DEFINES = {
"LUA_BUILD_AS_DLL"
}

--依赖项目
DEPS = {
"lualib"
}

--分组定义
GROUP = "luaext"
137 changes: 137 additions & 0 deletions extend/lyaml/lyaml.mak
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
#工程名字
PROJECT_NAME = lyaml

#目标名字
TARGET_NAME = lyaml

#系统环境
UNAME_S = $(shell uname -s)

#伪目标
.PHONY: clean all target pre_build post_build
all : pre_build target post_build

#CFLAG
MYCFLAGS =

#gcc优化选项
GCCOPT = -O2

#需要定义的FLAG
MYCFLAGS += -Wsign-compare
MYCFLAGS += -Wno-sign-compare
MYCFLAGS += -Wno-unused-variable
MYCFLAGS += -Wno-unused-parameter
MYCFLAGS += -Wno-unknown-pragmas
MYCFLAGS += -Wno-unused-but-set-variable
MYCFLAGS += -Wno-unused-but-set-parameter
MYCFLAGS += -Wno-unused-function
MYCFLAGS += -Wno-unused-result
MYCFLAGS += -Wno-format-security

#c标准库版本
#gnu99/gnu11/gnu17
STDC = -std=gnu99

#c++标准库版本
#c++11/c++14/c++17/c++20
STDCPP = -std=c++17

#需要的include目录
MYCFLAGS += -I./src
MYCFLAGS += -I../lua/lua
MYCFLAGS += -I../luakit/include

#需要定义的选项
MYCFLAGS += -DYAML_DECLARE_EXPORT

#LDFLAGS
LDFLAGS =


#源文件路径
SRC_DIR = src

#需要排除的源文件,目录基于$(SRC_DIR)
EXCLUDE =

#需要连接的库文件
LIBS =
#自定义库
LIBS += -llua
#系统库
LIBS += -lm -ldl -lstdc++ -lpthread

#定义基础的编译选项
ifndef CC
CC = gcc
endif
ifndef CX
CX = c++
endif
CFLAGS = -g $(GCCOPT) -Wall -Wno-deprecated -Wextra $(STDC) $(MYCFLAGS)
CXXFLAGS = -g $(GCCOPT) -Wall -Wno-deprecated -Wextra $(STDCPP) $(MYCFLAGS)

#项目目录
ifndef SOLUTION_DIR
SOLUTION_DIR=./
endif

#临时文件目录
INT_DIR = $(SOLUTION_DIR)temp/$(PROJECT_NAME)

#目标文件前缀,定义则.so和.a加lib前缀,否则不加
PROJECT_PREFIX =

#目标定义
MYCFLAGS += -fPIC
TARGET_DIR = $(SOLUTION_DIR)bin
TARGET_DYNAMIC = $(TARGET_DIR)/$(PROJECT_PREFIX)$(TARGET_NAME).so
#soname
ifeq ($(UNAME_S), Linux)
LDFLAGS += -Wl,-soname,$(PROJECT_PREFIX)$(TARGET_NAME).so
endif
#install_name
ifeq ($(UNAME_S), Darwin)
LDFLAGS += -Wl,-install_name,$(PROJECT_PREFIX)$(TARGET_NAME).so
endif

#link添加.so目录
LDFLAGS += -L$(SOLUTION_DIR)bin
LDFLAGS += -L$(SOLUTION_DIR)library

#自动生成目标
OBJS =
#根目录
OBJS += $(patsubst $(SRC_DIR)/%.c, $(INT_DIR)/%.o, $(filter-out $(EXCLUDE), $(wildcard $(SRC_DIR)/*.c)))
OBJS += $(patsubst $(SRC_DIR)/%.m, $(INT_DIR)/%.o, $(filter-out $(EXCLUDE), $(wildcard $(SRC_DIR)/*.m)))
OBJS += $(patsubst $(SRC_DIR)/%.cc, $(INT_DIR)/%.o, $(filter-out $(EXCLUDE), $(wildcard $(SRC_DIR)/*.cc)))
OBJS += $(patsubst $(SRC_DIR)/%.cpp, $(INT_DIR)/%.o, $(filter-out $(EXCLUDE), $(wildcard $(SRC_DIR)/*.cpp)))

# 编译所有源文件
$(INT_DIR)/%.o : $(SRC_DIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@
$(INT_DIR)/%.o : $(SRC_DIR)/%.m
$(CC) $(CFLAGS) -c $< -o $@
$(INT_DIR)/%.o : $(SRC_DIR)/%.cc
$(CX) $(CXXFLAGS) -c $< -o $@
$(INT_DIR)/%.o : $(SRC_DIR)/%.cpp
$(CX) $(CXXFLAGS) -c $< -o $@

$(TARGET_DYNAMIC) : $(OBJS)
$(CC) -o $@ -shared $(OBJS) $(LDFLAGS) $(LIBS)

#target伪目标
target : $(TARGET_DYNAMIC)

#clean伪目标
clean :
rm -rf $(INT_DIR)

#预编译
pre_build:
mkdir -p $(INT_DIR)
mkdir -p $(TARGET_DIR)

#后编译
post_build:
86 changes: 86 additions & 0 deletions extend/lyaml/lyaml.vcxproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Develop|x64">
<Configuration>Develop</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\yaml.h"/>
<ClInclude Include="src\yaml_private.h"/>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\api.c"/>
<ClCompile Include="src\dumper.c"/>
<ClCompile Include="src\emitter.c"/>
<ClCompile Include="src\loader.c"/>
<ClCompile Include="src\lyaml.cpp"/>
<ClCompile Include="src\parser.c"/>
<ClCompile Include="src\reader.c"/>
<ClCompile Include="src\scanner.c"/>
<ClCompile Include="src\writer.c"/>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{E106F499-F29A-DCCA-08A2-AFC056FA9905}</ProjectGuid>
<RootNamespace>lyaml</RootNamespace>
<Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<ProjectName>lyaml</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Develop|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Develop|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>11.0.50727.1</_ProjectFileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Develop|x64'">
<TargetName>lyaml</TargetName>
<OutDir>$(SolutionDir)temp\bin\$(Platform)\</OutDir>
<IntDir>$(SolutionDir)temp\$(ProjectName)\$(Platform)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Develop|x64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>.\src;..\lua\lua;..\luakit\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;YAML_DECLARE_EXPORT;LUA_BUILD_AS_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<PrecompiledHeader></PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<CompileAs>Default</CompileAs>
<LanguageStandard>stdcpp17</LanguageStandard>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<AdditionalLibraryDirectories>$(SolutionDir)library\$(Platform);;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<ImportLibrary>$(SolutionDir)library\$(Platform)\$(TargetName).lib</ImportLibrary>
<ProgramDatabaseFile>$(SolutionDir)temp\$(ProjectName)\$(Platform)\$(TargetName).pdb</ProgramDatabaseFile>
<AdditionalDependencies>lua.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ForceFileOutput>
</ForceFileOutput>
</Link>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
<Command>copy /y $(TargetPath) $(SolutionDir)bin</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
48 changes: 48 additions & 0 deletions extend/lyaml/lyaml.vcxproj.filters
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClInclude Include="src\yaml.h">
<Filter>inc</Filter>
</ClInclude>
<ClInclude Include="src\yaml_private.h">
<Filter>inc</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\api.c">
<Filter>src</Filter>
</ClCompile>
<ClCompile Include="src\dumper.c">
<Filter>src</Filter>
</ClCompile>
<ClCompile Include="src\emitter.c">
<Filter>src</Filter>
</ClCompile>
<ClCompile Include="src\loader.c">
<Filter>src</Filter>
</ClCompile>
<ClCompile Include="src\lyaml.cpp">
<Filter>src</Filter>
</ClCompile>
<ClCompile Include="src\parser.c">
<Filter>src</Filter>
</ClCompile>
<ClCompile Include="src\reader.c">
<Filter>src</Filter>
</ClCompile>
<ClCompile Include="src\scanner.c">
<Filter>src</Filter>
</ClCompile>
<ClCompile Include="src\writer.c">
<Filter>src</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="inc">
<UniqueIdentifier>{CF9F3FDE-7326-F1D8-E642-05F0E07A3695}</UniqueIdentifier>
</Filter>
<Filter Include="src">
<UniqueIdentifier>{25D902C2-4283-AB8C-FBAC-54DFA101AD31}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
Loading

0 comments on commit e6794d9

Please sign in to comment.