-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
109 lines (90 loc) · 4.54 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
cmake_minimum_required (VERSION 3.8)
project ("injector")
################################################################################
#
# Get Microsoft Visual Studio related paths:
#
execute_process(
COMMAND "$ENV{ProgramFiles\(x86\)}\\Microsoft Visual Studio\\Installer\\vswhere.exe" "-latest" "-version" "[16.0,17.0)" "-property" "installationPath"
OUTPUT_VARIABLE VS16_INSTALLPATH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
string(REPLACE "\\" "/" VS16_INSTALLPATH ${VS16_INSTALLPATH})
execute_process(
COMMAND "$ENV{ProgramFiles\(x86\)}\\Microsoft Visual Studio\\Installer\\vswhere.exe" "-latest" "-version" "[16.0,17.0)" "-requires" "Microsoft.Component.MSBuild" "-find" "MSBuild\\**\\**\\Bin\\MSBuild.exe"
OUTPUT_VARIABLE VS16_MSBUILD
OUTPUT_STRIP_TRAILING_WHITESPACE
)
string(REPLACE "\\" "/" VS16_MSBUILD ${VS16_MSBUILD})
################################################################################
add_subdirectory("AfxHook")
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install")
add_custom_target(injector_x86
DEPENDS afxhook
WORKING_DIRECTORY ${injector_BINARY_DIR}
BYPRODUCTS "${injector_BINARY_DIR}/injector.exe"
COMMAND ${VS16_MSBUILD} "${injector_SOURCE_DIR}/injector.csproj" "-property:Configuration=Release" "-property:Platform=x86" "/p:OutDir=${injector_BINARY_DIR}/"
)
add_custom_target(injector_x64_dir
WORKING_DIRECTORY ${injector_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E make_directory x64
)
add_custom_target(injector_x64
DEPENDS injector_x64_dir afxhook_x64
WORKING_DIRECTORY "${injector_BINARY_DIR}/x64"
BYPRODUCTS "${injector_BINARY_DIR}/x64/injector.exe"
COMMAND ${VS16_MSBUILD} "${injector_SOURCE_DIR}/injector.csproj" "-property:Configuration=Release" "-property:Platform=x64" "/p:OutDir=${injector_BINARY_DIR}/x64/"
)
add_custom_target(injector ALL
DEPENDS injector_x86 injector_x64
)
install(
PROGRAMS
"${injector_BINARY_DIR}/injector.exe"
DESTINATION ./
)
install(
FILES
"${afxhook_BINARY_DIR}/AfxHook.dat"
DESTINATION ./
)
install(
PROGRAMS
"${injector_BINARY_DIR}/x64/injector.exe"
DESTINATION ./x64
)
install(
FILES
"${afxhook_BINARY_DIR}/x64/AfxHook.dat"
DESTINATION ./x64
)
set(CPACK_GENERATOR WIX)
set(CPACK_PACKAGE_NAME "HLAE Injector")
set(CPACK_PACKAGE_VENDOR "advancedfx.org")
set(CPACK_PACKAGE_VERSION_MAJOR 1)
set(CPACK_PACKAGE_VERSION_MINOR 0)
set(CPACK_PACKAGE_VERSION_PATCH 5)
set(CPACK_PACKAGE_INSTALL_DIRECTORY "HLAE")
set(CPACK_WIX_UPGRADE_GUID "0A9ADA4E-7FCB-4C5E-9BBF-7B97892ED9C3")
set(CPACK_WIX_TEMPLATE "${injector_SOURCE_DIR}/cmake/WIX.msm.template.in")
set(CPACK_PACKAGE_DIRECTORY ./dist)
include(CPack)
get_filename_component(CPACK_COMMAND ${CMAKE_COMMAND} PATH)
set(CPACK_COMMAND ${CPACK_COMMAND}/cpack)
add_custom_command(TARGET injector POST_BUILD
COMMAND ${CMAKE_COMMAND} --install . -v
COMMAND ${CMAKE_COMMAND} -E make_directory dist
COMMAND ${CMAKE_COMMAND} -E make_directory pdb
COMMAND ${CMAKE_COMMAND} -E make_directory pdb/x64
COMMAND ${CMAKE_COMMAND} -E chdir ./install ${CMAKE_COMMAND} -E tar cfv ../dist/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-win32.zip --format=zip -- .
COMMAND ${CMAKE_COMMAND} -E chdir ./dist ${CMAKE_COMMAND} -E sha512sum ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-win32.zip > ./dist/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-win32.zip.sha512
COMMAND ${CPACK_COMMAND} -G WIX
COMMAND ${CMAKE_COMMAND} -E rename ./dist/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-win32.msi ./dist/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-win32.msm
COMMAND ${CMAKE_COMMAND} -E chdir ./dist ${CMAKE_COMMAND} -E sha512sum ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-win32.msm > ./dist/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-win32.msm.sha512
COMMAND ${CMAKE_COMMAND} -E copy ${injector_BINARY_DIR}/injector.pdb ${injector_BINARY_DIR}/pdb/
COMMAND ${CMAKE_COMMAND} -E copy ${injector_BINARY_DIR}/x64/injector.pdb ${injector_BINARY_DIR}/pdb/x64/
COMMAND ${CMAKE_COMMAND} -E copy ${CPACK_PACKAGE_DIRECTORY}/_CPack_Packages/win32/WIX/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-win32.wixpdb ${injector_BINARY_DIR}/pdb/
COMMAND ${CMAKE_COMMAND} -E chdir ./pdb ${CMAKE_COMMAND} -E tar cfv ../dist/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-win32.pdb.zip --format=zip -- .
COMMAND ${CMAKE_COMMAND} -E chdir ./dist ${CMAKE_COMMAND} -E sha512sum ${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-win32.pdb.zip > ./dist/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-win32.pdb.zip.sha512
WORKING_DIRECTORY ${CMAKE_BUILD_DIR}
)