diff --git a/HeaderMake/HeaderMake.vcxproj b/HeaderMake/HeaderMake.vcxproj
deleted file mode 100644
index 347a89a0f6..0000000000
--- a/HeaderMake/HeaderMake.vcxproj
+++ /dev/null
@@ -1,96 +0,0 @@
-
-
-
-
- Debug
- Win32
-
-
- Release
- Win32
-
-
-
- {0F2918B0-23E3-42E8-A1A8-8739F726A23E}
- HeaderMake
- Win32Proj
-
-
-
-
- Application
- Unicode
- true
-
-
- Application
- Unicode
-
-
-
-
-
-
-
-
-
-
-
- $(SolutionDir)build\$(Platform)\$(Configuration)\$(ProjectName)\
- $(SolutionDir)$(Platform)\$(Configuration)\
-
-
- <_ProjectFileVersion>15.0.27130.2020
-
-
- true
-
-
- false
-
-
-
- Disabled
- WIN32;_CONSOLE;_DEBUG;%(PreprocessorDefinitions)
- EnableFastChecks
- MultiThreadedDebugDLL
-
- Level3
- EditAndContinue
- /source-charset:shift_jis %(AdditionalOptions)
- true
-
-
- $(OutDir)$(TargetName)$(TargetExt)
- true
- Console
- MachineX86
- false
-
-
-
-
- WIN32;_CONSOLE;NDEBUG;%(PreprocessorDefinitions)
- MultiThreadedDLL
-
- Level3
- ProgramDatabase
- /source-charset:shift_jis %(AdditionalOptions)
- true
-
-
- $(OutDir)$(TargetName)$(TargetExt)
- false
- Console
- true
- true
- MachineX86
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/build-gnu.bat b/build-gnu.bat
index 3c4aa390ca..16b88bd7be 100644
--- a/build-gnu.bat
+++ b/build-gnu.bat
@@ -68,14 +68,6 @@ if errorlevel 1 (
)
popd
-@rem build "googletest".
-call %~dp0tests\googletest.build.cmd %~dp0build\%platform%\%configuration%\gtest_build\ %~dp0build\%platform%\%configuration%\googletest\
-if errorlevel 1 (
- echo error 2 errorlevel %errorlevel%
- popd
- exit /b 1
-)
-
@rem build "tests1".
set TESTS1_MAKEFILE=%~dp0tests\unittests\Makefile
set TESTS1_BUILD_DIR=%~dp0build\%platform%\%configuration%\tests1
diff --git a/build-sln.bat b/build-sln.bat
index 42e42eae2a..4d9634f77f 100644
--- a/build-sln.bat
+++ b/build-sln.bat
@@ -19,6 +19,19 @@ if "%configuration%" == "Release" (
call :showhelp %0
exit /b 1
)
+
+: For AppVeyor(AppVeyor doesn't checkout submodules automatically.)
+pushd "%~dp0"
+
+if not exist tools\vcpkg\bootstrap-vcpkg.bat (
+ git submodule init
+ git submodule update
+)
+
+.\tools\BuildDependencies.bat
+
+popd
+
if not defined CMD_MSBUILD call %~dp0tools\find-tools.bat
if not defined CMD_MSBUILD (
echo msbuild.exe was not found.
diff --git a/ci/build-batchfiles.md b/ci/build-batchfiles.md
index d2591c04f3..de6ce2e006 100644
--- a/ci/build-batchfiles.md
+++ b/ci/build-batchfiles.md
@@ -29,7 +29,6 @@
|[sakura\preBuild.bat](../sakura/preBuild.bat) | 特に何もしない |
|[sakura\githash.bat](../sakura/githash.bat) | Git や CI の環境変数から githash.h を生成する |
|[sakura\postBuild.bat](../sakura/postBuild.bat) | bregonig.dll と ctags.exe を展開しコピーする |
-|[tests\googletest.build.cmd](../tests/googletest.build.cmd) | Google Test をビルドする |
|[tests\compiletests.run.cmd](../tests/compiletests.run.cmd) | コンパイルテストを実行する |
|[build-sonar-qube-finish.bat](../build-sonar-qube-finish.bat) | SonarQube の解析結果をアップロードする |
|[parse-buildlog.bat](../parse-buildlog.bat) | ビルドログを解析する |
@@ -51,6 +50,7 @@ SonarQube に関しては [こちら](../SonarQube.md) も参照してくださ
- [tools\zip\unzip.bat](../tools/zip/unzip.bat) : ZIP ファイルを展開する
- 7z.exe または [tools\zip\unzip.ps1](../tools/zip/unzip.ps1)
- MSBuild.exe sakura.sln
+ - vcpkg.exe
- [sakura\preBuild.bat](../sakura/preBuild.bat)
- HeaderMake.exe : Funccode_define.h, Funccode_enum.h を生成する
- [sakura\githash.bat](../sakura/githash.bat)
@@ -58,9 +58,6 @@ SonarQube に関しては [こちら](../SonarQube.md) も参照してくださ
- [sakura\postBuild.bat](../sakura/postBuild.bat)
- [tools\zip\unzip.bat](../tools/zip/unzip.bat)
- 7z.exe または [tools\zip\unzip.ps1](../tools/zip/unzip.ps1)
- - [tests\googletest.build.cmd](../tests/googletest.build.cmd)
- - git.exe
- - cmake.exe
- [tests\compiletests.run.cmd](../tests/compiletests.run.cmd)
- cmake.exe
- [build-sonar-qube-finish.bat](../build-sonar-qube-finish.bat)
@@ -73,6 +70,7 @@ SonarQube に関しては [こちら](../SonarQube.md) も参照してくださ
- mingw32-make.exe sakura_core
- [sakura\githash.bat](../sakura/githash.bat)
- git.exe
+ - vcpkg.exe
- HeaderMake.exe
- [build-chm.bat](../build-chm.bat)
- [help\remove-comment.py](../help/remove-comment.py) : [sakura_core\sakura.hh](../sakura_core/sakura.hh) に記述された日本語を含む行コメントを削除する
diff --git a/sakura.sln b/sakura.sln
index 30f81c7aa7..7ab1e05f11 100644
--- a/sakura.sln
+++ b/sakura.sln
@@ -1,15 +1,22 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.27130.2026
+# Visual Studio Version 17
+VisualStudioVersion = 17.9.34902.65
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sakura", "sakura\sakura.vcxproj", "{AF03508C-515E-4A0E-87BE-67ED1E254BD0}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HeaderMake", "HeaderMake\HeaderMake.vcxproj", "{0F2918B0-23E3-42E8-A1A8-8739F726A23E}"
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sakura_lang_en_US", "sakura_lang_en_US\sakura_lang_en_US.vcxproj", "{7A6D0F29-E560-4985-835B-5F92A08EB242}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tests1", "tests\unittests\tests1.vcxproj", "{701E3407-EC27-49F7-ADC7-520CF2B4B438}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{DD14BD9B-2E0F-4C53-8F16-EA9969FDEA45}"
+ ProjectSection(SolutionItems) = preProject
+ .editorconfig = .editorconfig
+ .vsconfig = .vsconfig
+ sakura_core\Funccode_x.hsrc = sakura_core\Funccode_x.hsrc
+ sakura\sakura.natvis = sakura\sakura.natvis
+ sonar-project.properties = sonar-project.properties
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@@ -26,14 +33,6 @@ Global
{AF03508C-515E-4A0E-87BE-67ED1E254BD0}.Release|Win32.Build.0 = Release|Win32
{AF03508C-515E-4A0E-87BE-67ED1E254BD0}.Release|x64.ActiveCfg = Release|x64
{AF03508C-515E-4A0E-87BE-67ED1E254BD0}.Release|x64.Build.0 = Release|x64
- {0F2918B0-23E3-42E8-A1A8-8739F726A23E}.Debug|Win32.ActiveCfg = Debug|Win32
- {0F2918B0-23E3-42E8-A1A8-8739F726A23E}.Debug|Win32.Build.0 = Debug|Win32
- {0F2918B0-23E3-42E8-A1A8-8739F726A23E}.Debug|x64.ActiveCfg = Debug|Win32
- {0F2918B0-23E3-42E8-A1A8-8739F726A23E}.Debug|x64.Build.0 = Debug|Win32
- {0F2918B0-23E3-42E8-A1A8-8739F726A23E}.Release|Win32.ActiveCfg = Release|Win32
- {0F2918B0-23E3-42E8-A1A8-8739F726A23E}.Release|Win32.Build.0 = Release|Win32
- {0F2918B0-23E3-42E8-A1A8-8739F726A23E}.Release|x64.ActiveCfg = Release|Win32
- {0F2918B0-23E3-42E8-A1A8-8739F726A23E}.Release|x64.Build.0 = Release|Win32
{7A6D0F29-E560-4985-835B-5F92A08EB242}.Debug|Win32.ActiveCfg = Debug|Win32
{7A6D0F29-E560-4985-835B-5F92A08EB242}.Debug|Win32.Build.0 = Debug|Win32
{7A6D0F29-E560-4985-835B-5F92A08EB242}.Debug|x64.ActiveCfg = Debug|x64
diff --git a/sakura/funccode.targets b/sakura/funccode.targets
index 1da83e8d6c..35b161f121 100644
--- a/sakura/funccode.targets
+++ b/sakura/funccode.targets
@@ -1,15 +1,24 @@
+
+ Debug
+ true
+ $([MSBuild]::NormalizePath('$(MSBuildThisFileDirectory)', '..\'))
+ $([MSBuild]::NormalizePath('$(MSBuildThisFileDirectory)', '..\build\vcpkg_installed\'))
+ x86-windows-static
+ x64-windows-static
+ true
+
- ..\Win32\$(Configuration)\HeaderMake.exe
+ $(VcpkgInstalledDir)$(VcpkgTriplet)\tools\header-make\HeaderMake.exe
..\sakura_core\Funccode_define.h
..\sakura_core\Funccode_enum.h
-
-
- {0f2918b0-23e3-42e8-a1a8-8739f726a23e}
- false
-
-
+
+
+
diff --git a/sakura_core/Makefile b/sakura_core/Makefile
index 39ffe880c5..7d17758003 100644
--- a/sakura_core/Makefile
+++ b/sakura_core/Makefile
@@ -23,6 +23,10 @@ endif
# If empty, they will be output to the default directories.
OUTDIR =
+CURRENT_INSTALLED_DIR = ../../../vcpkg_installed
+
+TARGET_TRIPLET = x64-mingw-static
+
ifeq ($(SHELL),sh.exe)
# If cmd.exe is used as a shell.
MKDIR = md
@@ -78,13 +82,18 @@ CFLAGS= \
-fexec-charset=cp932 \
-MMD \
-I. \
+ -I$(CURRENT_INSTALLED_DIR)/$(TARGET_TRIPLET)/include \
-I$(SRCDIR) \
$(DEFINES) $(MYCFLAGS)
CXXFLAGS= $(CFLAGS) \
-std=c++17 \
$(MYCXXFLAGS)
-LIBS= \
+LDFLAGS= \
-static \
+ -mwindows \
+ -municode \
+ -L$(CURRENT_INSTALLED_DIR)/$(TARGET_TRIPLET)/lib
+LIBS= \
-lwinspool \
-lole32 \
-loleaut32 \
@@ -99,8 +108,6 @@ LIBS= \
-lwindowscodecs \
-lmsimg32 \
-lurlmon \
- -mwindows \
- -municode \
$(MYLIBS)
exe= $(or $(OUTDIR),.)/sakura.exe
@@ -123,15 +130,14 @@ GENERATED_FILES= \
Funccode_enum.h \
githash.h \
-HEADERMAKETOOLDIR= $(SRCDIR)/../HeaderMake
-HEADERMAKE= $(or $(OUTDIR),$(HEADERMAKETOOLDIR))/HeaderMake.exe
+HEADERMAKE = $(CURRENT_INSTALLED_DIR)/$(TARGET_TRIPLET)/tools/header-make/HeaderMake.exe
all: $(exe) \
$(bregonig) \
$(ctags)
$(exe): $(OBJS) sakura_rc.o
- $(CXX) -o $@ $(OBJS) sakura_rc.o $(LIBS)
+ $(CXX) $(LDFLAGS) -o $@ $(OBJS) sakura_rc.o $(LIBS)
$(bregonig): ../installer/externals/bregonig/bron420.zip
$(P7Z) e $< -o$(@D) -y x64/$(@F)
@@ -159,8 +165,8 @@ endif
$(OBJS): StdAfx.h.gch
-$(HEADERMAKE): $(HEADERMAKETOOLDIR)/HeaderMake.cpp
- $(CXX) $(CXXFLAGS:-MMD=) $< -o $@ -static-libgcc
+$(HEADERMAKE): ../HeaderMake/HeaderMake.cpp
+ vcpkg install --x-wait-for-lock --triplet $(TARGET_TRIPLET) "--x-manifest-root=$(SRCDIR)/../" "--x-install-root=$(CURRENT_INSTALLED_DIR)"
sakura_rc.o: sakura_rc.rc.utf8 sakura_rc.rc2.utf8 githash.h Funccode_define.h
$(RC) -c utf-8 --language=0411 $(DEFINES) -I. -I$(SRCDIR) $< -o $@
diff --git a/tests/googletest.build.cmd b/tests/googletest.build.cmd
deleted file mode 100644
index ceeecc6248..0000000000
--- a/tests/googletest.build.cmd
+++ /dev/null
@@ -1,89 +0,0 @@
-setlocal
-set BUILD_DIR=%~dp1
-set GOOGLETEST_INSTALL_PATH=%~dp2
-
-set SOURCE_DIR=%~dp0googletest
-
-:: find generic tools
-if not defined CMD_NINJA call %~dp0..\tools\find-tools.bat
-
-if not exist "%CMD_CMAKE%" (
- echo "no cmake found."
- exit /b 1
-)
-
-if not exist "%CMD_NINJA%" (
- echo "no ninja found."
- exit /b 1
-)
-
-pushd "%SOURCE_DIR%" || exit /b 1
-if not exist CMakeLists.txt (
- if not exist "%CMD_GIT%" (
- echo "no git found."
- exit /b 1
- )
- "%CMD_GIT%" submodule update --init || exit /b 1
-)
-popd
-
-mkdir %BUILD_DIR% > NUL 2>&1
-pushd %BUILD_DIR%
-
-call :run_cmake_install
-
-endlocal && exit /b 0
-
-:run_cmake_install
-call :run_cmake_configure
-"%CMD_CMAKE%" --build . --config %CONFIGURATION% --target install || endlocal && exit /b 1
-goto :EOF
-
-:run_cmake_configure
-if "%PLATFORM%" == "Win32" (
- call :find_cl_compilers
-)
-if "%PLATFORM%" == "x64" (
- call :find_cl_compilers
-)
-if "%PLATFORM%" == "MinGW" (
- call :find_gcc_compilers
-)
-
-:: install lib64 for x64-platform.
-if "%PLATFORM%" == "x64" (
- set GENERATOR_OPTS=-DCMAKE_INSTALL_LIBDIR=lib64 %GENERATOR_OPTS%
-)
-
-:: run cmake configuration.
-"%CMD_CMAKE%" -G Ninja ^
- "-DCMAKE_MAKE_PROGRAM=%CMD_NINJA%" ^
- "-DCMAKE_C_COMPILER=%C_COMPILER%" ^
- "-DCMAKE_CXX_COMPILER=%CXX_COMPILER%" ^
- -DCMAKE_BUILD_TYPE=%CONFIGURATION% ^
- -DCMAKE_INSTALL_PREFIX=%GOOGLETEST_INSTALL_PATH% ^
- %GENERATOR_OPTS% ^
- -DBUILD_GMOCK=ON ^
- -Dgtest_build_tests=OFF ^
- -Dgtest_build_samples=OFF ^
- %SOURCE_DIR% ^
- || endlocal && exit /b 1
-goto :EOF
-
-:find_cl_compilers
-call :find_cl
-set C_COMPILER=%CMD_CL:\=/%
-set CXX_COMPILER=%CMD_CL:\=/%
-goto :EOF
-
-:find_cl
-for /f "usebackq delims=" %%a in (`where cl.exe`) do (
- set "CMD_CL=%%a"
- goto :EOF
-)
-goto :EOF
-
-:find_gcc_compilers
-set C_COMPILER=C:/msys64/mingw64/bin/gcc.exe
-set CXX_COMPILER=C:/msys64/mingw64/bin/g++.exe
-goto :EOF
diff --git a/tests/googletest.targets b/tests/googletest.targets
deleted file mode 100644
index 61cef7edaa..0000000000
--- a/tests/googletest.targets
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
- $(MSBuildThisFileDirectory)googletest
- $(SolutionDir)build\$(Platform)\$(Configuration)\gtest_build\
- $(SolutionDir)build\$(Platform)\$(Configuration)\googletest\
- $(GoogleTestInstallDir)include;$(IncludePath)
- $(GoogleTestInstallDir)lib
- $(GoogleTestInstallDir)lib64
- $(GoogleTestLibInstallDir);$(LibraryPath)
- gtest.lib
- $(GoogleTestLibInstallDir)\$(GTestLibName)
- gmock.lib
- $(GoogleTestLibInstallDir)\$(GMockLibName)
-
-
-
- _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;%(PreprocessorDefinitions)
-
-
-
-
- $(GTestLibName);%(AdditionalDependencies)
- $(GMockLibName);%(AdditionalDependencies)
-
-
-
-
-
-
-
-
-
-
- $([System.Text.RegularExpressions.Regex]::Replace('$(VisualStudioVersion)', '^(\d+).*', '$1'))
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/unittests/Makefile b/tests/unittests/Makefile
index 0c0e266915..0a2a73e8e8 100644
--- a/tests/unittests/Makefile
+++ b/tests/unittests/Makefile
@@ -27,12 +27,14 @@ endif
# The directory where "sakura_core" is built.
SAKURA_CORE = ../sakura_core
-GOOGLETEST_INSTALL_DIR = ../googletest
-
# The directory where the .exe files will be output.
# If empty, they will be output to the default directories.
OUTDIR =
+CURRENT_INSTALLED_DIR = ../../../vcpkg_installed
+
+TARGET_TRIPLET = x64-mingw-static
+
ifeq ($(SHELL),sh.exe)
# If cmd.exe is used as a shell.
MKDIR = md
@@ -87,10 +89,10 @@ CFLAGS= \
-finput-charset=utf-8 \
-fexec-charset=cp932 \
-MMD \
- -isystem $(GOOGLETEST_INSTALL_DIR)/include \
+ -I. \
+ -I$(CURRENT_INSTALLED_DIR)/$(TARGET_TRIPLET)/include \
-I$(SAKURA_CORE) \
-I$(SRCDIR)/../../sakura_core \
- -I. \
-I$(SRCDIR) \
$(DEFINES) $(MYCFLAGS)
@@ -98,8 +100,13 @@ CXXFLAGS= $(CFLAGS) \
-std=c++17 \
$(MYCXXFLAGS)
-LIBS= \
+LDFLAGS= \
-static \
+ -mwindows \
+ -municode \
+ -L$(CURRENT_INSTALLED_DIR)/$(TARGET_TRIPLET)/lib
+
+LIBS= \
-lwinspool \
-lole32 \
-loleaut32 \
@@ -117,7 +124,6 @@ LIBS= \
-lkernel32 \
-lgdi32 \
-lcomdlg32 \
- -L$(GOOGLETEST_INSTALL_DIR)/lib \
-lgtest \
-lgmock \
$(MYLIBS)
@@ -140,7 +146,7 @@ SAKURA_OBJS = $(SAKURA_SRCS:$(SRCDIR)/../../sakura_core/%.cpp=$(SAKURA_CORE)/%.o
all: $(exe)
$(exe): $(OBJS) $(SAKURA_OBJS)
- $(CXX) -o $@ $(OBJS) $(SAKURA_OBJS) $(LIBS)
+ $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(SAKURA_OBJS) $(LIBS)
.cpp.o:
$(CXX) $(CXXFLAGS) -o $@ -c $<
diff --git a/tests/unittests/tests1.vcxproj b/tests/unittests/tests1.vcxproj
index 5737ef7d38..fa060ddd1d 100644
--- a/tests/unittests/tests1.vcxproj
+++ b/tests/unittests/tests1.vcxproj
@@ -39,7 +39,19 @@
$(SolutionDir)build\$(Platform)\$(Configuration)\$(ProjectName)\
$(SolutionDir)$(Platform)\$(Configuration)\
-
+
+ Debug
+ true
+ $([MSBuild]::NormalizePath('$(MSBuildThisFileDirectory)', '..\..\build\vcpkg_installed\'))
+ x86-windows-static
+ x64-windows-static
+ true
+
+
+
+ _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING;%(PreprocessorDefinitions)
+
+
$(SolutionDir)sakura_core;%(AdditionalIncludeDirectories)
@@ -52,6 +64,9 @@
$(IntDir);%(AdditionalIncludeDirectories)
+
+ true
+
Console
comctl32.lib;Imm32.lib;mpr.lib;imagehlp.lib;Shlwapi.lib;Dwmapi.lib;%(AdditionalDependencies)
diff --git a/tools/HeaderMake/CMakeLists.txt b/tools/HeaderMake/CMakeLists.txt
new file mode 100644
index 0000000000..16693b5911
--- /dev/null
+++ b/tools/HeaderMake/CMakeLists.txt
@@ -0,0 +1,17 @@
+cmake_minimum_required(VERSION 3.7)
+
+# define a project
+project (HeaderMake)
+
+# add test executable
+add_executable(${PROJECT_NAME} ../../HeaderMake/HeaderMake.cpp)
+
+# add definitions
+target_compile_definitions(${PROJECT_NAME} PUBLIC _CONSOLE UNICODE _UNICODE)
+
+# add install target
+install(
+ TARGETS ${PROJECT_NAME}
+ EXPORT ${PROJECT_NAME}-targets
+ RUNTIME DESTINATION bin
+)
diff --git a/tools/vcpkg-local-registry/ports/gtest/portfile.cmake b/tools/vcpkg-local-registry/ports/gtest/portfile.cmake
new file mode 100644
index 0000000000..6ea84f3546
--- /dev/null
+++ b/tools/vcpkg-local-registry/ports/gtest/portfile.cmake
@@ -0,0 +1,77 @@
+# Common Ambient Variables:
+# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT}
+# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET}
+# CURRENT_PORT_DIR = ${VCPKG_ROOT_DIR}\ports\${PORT}
+# CURRENT_INSTALLED_DIR = ${VCPKG_ROOT_DIR}\installed\${TRIPLET}
+# DOWNLOADS = ${VCPKG_ROOT_DIR}\downloads
+# PORT = current port name (zlib, etc)
+# TARGET_TRIPLET = current triplet (x86-windows, x64-windows-static, etc)
+# VCPKG_CRT_LINKAGE = C runtime linkage type (static, dynamic)
+# VCPKG_LIBRARY_LINKAGE = target library linkage type (static, dynamic)
+# VCPKG_ROOT_DIR =
+# VCPKG_TARGET_ARCHITECTURE = target architecture (x64, x86, arm)
+# VCPKG_TOOLCHAIN = ON OFF
+# TRIPLET_SYSTEM_ARCH = arm x86 x64
+# BUILD_ARCH = "Win32" "x64" "ARM"
+# DEBUG_CONFIG = "Debug Static" "Debug Dll"
+# RELEASE_CONFIG = "Release Static"" "Release DLL"
+# VCPKG_TARGET_IS_WINDOWS
+# VCPKG_TARGET_IS_UWP
+# VCPKG_TARGET_IS_LINUX
+# VCPKG_TARGET_IS_OSX
+# VCPKG_TARGET_IS_FREEBSD
+# VCPKG_TARGET_IS_ANDROID
+# VCPKG_TARGET_IS_MINGW
+# VCPKG_TARGET_EXECUTABLE_SUFFIX
+# VCPKG_TARGET_STATIC_LIBRARY_SUFFIX
+# VCPKG_TARGET_SHARED_LIBRARY_SUFFIX
+#
+# See additional helpful variables in /docs/maintainers/vcpkg_common_definitions.md
+
+# ソースパスはローカルを指定。
+set(SOURCE_PATH ${CURRENT_PORT_DIR}/../../../../tests/googletest)
+
+# CMakeコンフィグを実行。
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DBUILD_GMOCK=ON
+ -Dgtest_build_tests=OFF
+ -Dgtest_build_samples=OFF
+)
+
+vcpkg_cmake_install()
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/GTest)
+
+file(
+ INSTALL
+ "${SOURCE_PATH}/googletest/src/gtest.cc"
+ "${SOURCE_PATH}/googletest/src/gtest_main.cc"
+ "${SOURCE_PATH}/googletest/src/gtest-all.cc"
+ "${SOURCE_PATH}/googletest/src/gtest-assertion-result.cc"
+ "${SOURCE_PATH}/googletest/src/gtest-death-test.cc"
+ "${SOURCE_PATH}/googletest/src/gtest-filepath.cc"
+ "${SOURCE_PATH}/googletest/src/gtest-internal-inl.h"
+ "${SOURCE_PATH}/googletest/src/gtest-matchers.cc"
+ "${SOURCE_PATH}/googletest/src/gtest-port.cc"
+ "${SOURCE_PATH}/googletest/src/gtest-printers.cc"
+ "${SOURCE_PATH}/googletest/src/gtest-test-part.cc"
+ "${SOURCE_PATH}/googletest/src/gtest-typed-test.cc"
+ DESTINATION
+ ${CURRENT_PACKAGES_DIR}/src
+)
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+
+vcpkg_fixup_pkgconfig()
+if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/gmock_main.pc" "libdir=\${prefix}/lib" "libdir=\${prefix}/lib/manual-link")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/lib/pkgconfig/gtest_main.pc" "libdir=\${prefix}/lib" "libdir=\${prefix}/lib/manual-link")
+endif()
+if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/gmock_main.pc" "libdir=\${prefix}/lib" "libdir=\${prefix}/lib/manual-link")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/gtest_main.pc" "libdir=\${prefix}/lib" "libdir=\${prefix}/lib/manual-link")
+endif()
+vcpkg_copy_pdbs()
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
diff --git a/tools/vcpkg-local-registry/ports/gtest/vcpkg.json b/tools/vcpkg-local-registry/ports/gtest/vcpkg.json
new file mode 100644
index 0000000000..406a2dff5a
--- /dev/null
+++ b/tools/vcpkg-local-registry/ports/gtest/vcpkg.json
@@ -0,0 +1,17 @@
+{
+ "name": "gtest",
+ "version-semver": "1.14.0",
+ "description": "GoogleTest and GoogleMock testing frameworks",
+ "homepage": "https://github.com/google/googletest",
+ "license": "BSD-3-Clause",
+ "dependencies": [
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ]
+}
diff --git a/tools/vcpkg-local-registry/ports/header-make/portfile.cmake b/tools/vcpkg-local-registry/ports/header-make/portfile.cmake
new file mode 100644
index 0000000000..e002775840
--- /dev/null
+++ b/tools/vcpkg-local-registry/ports/header-make/portfile.cmake
@@ -0,0 +1,52 @@
+# Common Ambient Variables:
+# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT}
+# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET}
+# CURRENT_PORT_DIR = ${VCPKG_ROOT_DIR}\ports\${PORT}
+# CURRENT_INSTALLED_DIR = ${VCPKG_ROOT_DIR}\installed\${TRIPLET}
+# DOWNLOADS = ${VCPKG_ROOT_DIR}\downloads
+# PORT = current port name (zlib, etc)
+# TARGET_TRIPLET = current triplet (x86-windows, x64-windows-static, etc)
+# VCPKG_CRT_LINKAGE = C runtime linkage type (static, dynamic)
+# VCPKG_LIBRARY_LINKAGE = target library linkage type (static, dynamic)
+# VCPKG_ROOT_DIR =
+# VCPKG_TARGET_ARCHITECTURE = target architecture (x64, x86, arm)
+# VCPKG_TOOLCHAIN = ON OFF
+# TRIPLET_SYSTEM_ARCH = arm x86 x64
+# BUILD_ARCH = "Win32" "x64" "ARM"
+# DEBUG_CONFIG = "Debug Static" "Debug Dll"
+# RELEASE_CONFIG = "Release Static"" "Release DLL"
+# VCPKG_TARGET_IS_WINDOWS
+# VCPKG_TARGET_IS_UWP
+# VCPKG_TARGET_IS_LINUX
+# VCPKG_TARGET_IS_OSX
+# VCPKG_TARGET_IS_FREEBSD
+# VCPKG_TARGET_IS_ANDROID
+# VCPKG_TARGET_IS_MINGW
+# VCPKG_TARGET_EXECUTABLE_SUFFIX
+# VCPKG_TARGET_STATIC_LIBRARY_SUFFIX
+# VCPKG_TARGET_SHARED_LIBRARY_SUFFIX
+#
+# See additional helpful variables in /docs/maintainers/vcpkg_common_definitions.md
+
+# includeフォルダーが空でも警告が出ないモードを指定。
+set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled)
+
+# ソースパスはローカルを指定。
+set(SOURCE_PATH ${CURRENT_PORT_DIR}/../../../HeaderMake)
+
+# CMakeコンフィグを実行。
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+)
+
+# 一旦インストールする。
+vcpkg_cmake_install()
+
+# /binに出力されたexeをツールフォルダにコピー。
+vcpkg_copy_tools(TOOL_NAMES HeaderMake)
+
+# ツールインストールに不要なフォルダーを削除。
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin" "${CURRENT_PACKAGES_DIR}/debug")
+
+# 著作権ファイルはトップフォルダーのものを流用する。
+vcpkg_install_copyright(FILE_LIST "${CURRENT_PORT_DIR}/../../../../LICENSE")
diff --git a/tools/vcpkg-local-registry/ports/header-make/vcpkg.json b/tools/vcpkg-local-registry/ports/header-make/vcpkg.json
new file mode 100644
index 0000000000..2f184d8e71
--- /dev/null
+++ b/tools/vcpkg-local-registry/ports/header-make/vcpkg.json
@@ -0,0 +1,12 @@
+{
+ "name": "header-make",
+ "version": "1.0.0",
+ "homepage": "https://github.com/sakura-editor/sakura",
+ "description": "HeaderMake.exe",
+ "dependencies": [
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ }
+ ]
+}
diff --git a/tools/vcpkg-local-registry/versions/baseline.json b/tools/vcpkg-local-registry/versions/baseline.json
new file mode 100644
index 0000000000..a9d3e111de
--- /dev/null
+++ b/tools/vcpkg-local-registry/versions/baseline.json
@@ -0,0 +1,12 @@
+{
+ "2024-06-11": {
+ "gtest": {
+ "baseline": "1.14.0",
+ "port-version": 0
+ },
+ "header-make": {
+ "baseline": "1.0.0",
+ "port-version": 0
+ }
+ }
+}
diff --git a/tools/vcpkg-local-registry/versions/g-/gtest.json b/tools/vcpkg-local-registry/versions/g-/gtest.json
new file mode 100644
index 0000000000..631750b89b
--- /dev/null
+++ b/tools/vcpkg-local-registry/versions/g-/gtest.json
@@ -0,0 +1,9 @@
+{
+ "versions": [
+ {
+ "version": "1.14.0",
+ "port-version": 0,
+ "path": "$/ports/gtest"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tools/vcpkg-local-registry/versions/h-/header-make.json b/tools/vcpkg-local-registry/versions/h-/header-make.json
new file mode 100644
index 0000000000..1fa4d4b2aa
--- /dev/null
+++ b/tools/vcpkg-local-registry/versions/h-/header-make.json
@@ -0,0 +1,9 @@
+{
+ "versions": [
+ {
+ "version": "1.0.0",
+ "port-version": 0,
+ "path": "$/ports/header-make"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/vcpkg-configuration.json b/vcpkg-configuration.json
new file mode 100644
index 0000000000..62174a95f2
--- /dev/null
+++ b/vcpkg-configuration.json
@@ -0,0 +1,20 @@
+{
+ "default-registry": {
+ "kind": "git",
+ "baseline": "000d1bda1ffa95a73e0b40334fa4103d6f4d3d48",
+ "repository": "https://github.com/microsoft/vcpkg"
+ },
+ "registries": [
+ {
+ "baseline": "2024-06-11",
+ "kind": "filesystem",
+ "packages": ["gtest", "header-make"],
+ "path": "tools/vcpkg-local-registry"
+ },
+ {
+ "kind": "artifact",
+ "location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip",
+ "name": "microsoft"
+ }
+ ]
+}
diff --git a/vcpkg.json b/vcpkg.json
new file mode 100644
index 0000000000..cb6a8dbda8
--- /dev/null
+++ b/vcpkg.json
@@ -0,0 +1,6 @@
+{
+ "dependencies": [
+ "header-make",
+ "gtest"
+ ]
+}