Skip to content

Commit 1171998

Browse files
authored
Rewrite cmake (#28)
1 parent 9391a14 commit 1171998

File tree

4 files changed

+181
-125
lines changed

4 files changed

+181
-125
lines changed

CMakeLists.txt

Lines changed: 106 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -1,117 +1,138 @@
1-
cmake_minimum_required(VERSION 3.22)
2-
set(CMAKE_C_STANDARD 17)
3-
set(ignoreMe "${NO_PKGCFG}")
4-
set(ignoreMe "${ASAN}")
5-
set(ignoreMe "${ARCH}")
6-
if(NOT DEFINED SUBPROJECT_BUILD)
7-
set(ASAN_FLAG "")
8-
if(DEFINED ASAN OR "$ENV{ASAN}" MATCHES "1")
9-
set(ASAN 1)
10-
set(ASAN_FLAG -fsanitize=address)
11-
set(CMAKE_C_LINK_LIBRARY_FLAG "${ASAN_FLAG}")
1+
cmake_minimum_required(VERSION 3.19...3.24 FATAL_ERROR)
2+
#SET(CMAKE_EXPORT_COMPILE_COMMANDS 1)
3+
set(ignoreMe "${NO_PKGCFG} ${ASAN} ${ASAN_FLAGS} ${ARCH}")
4+
option(SUBPROJECT_BUILD "Enables submodules to build as statically internally linked libs instead of binaries/tools" OFF)
5+
option(ASAN "Enable AddressSanatizer" OFF)
6+
option(NO_PKGCFG "Disable pkgconfig searching of libs, use dep_root for linking" OFF)
7+
if(NOT DEFINED VERSION_COMMIT_COUNT)
8+
execute_process(COMMAND git rev-list --count HEAD WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE VERSION_COMMIT_COUNT ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
9+
endif()
10+
if(NOT DEFINED VERSION_COMMIT_SHA)
11+
execute_process(COMMAND git rev-parse HEAD WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE VERSION_COMMIT_SHA ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
12+
endif()
13+
14+
if(NOT SUBPROJECT_BUILD)
15+
if(ARCH STREQUAL "")
16+
set(ARCH "${CMAKE_SYSTEM_PROCESSOR}")
1217
endif()
18+
1319
if("${CMAKE_HOST_SYSTEM_NAME}" MATCHES "Darwin")
14-
if(NOT DEFINED NO_XCODE AND NOT DEFINED ENV{NO_XCODE})
15-
execute_process(COMMAND xcrun --find clang WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE CC OUTPUT_STRIP_TRAILING_WHITESPACE)
16-
execute_process(COMMAND xcrun --find ar WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE AR OUTPUT_STRIP_TRAILING_WHITESPACE)
17-
execute_process(COMMAND xcrun --find ld WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE LD OUTPUT_STRIP_TRAILING_WHITESPACE)
18-
execute_process(COMMAND xcrun --show-sdk-path WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE SYSROOT OUTPUT_STRIP_TRAILING_WHITESPACE)
19-
set(CMAKE_C_COMPILER "${CC}")
20-
endif()
21-
if(NOT DEFINED ARCH)
22-
set(ARCH "$ENV{ARCH}")
23-
if(ARCH STREQUAL "")
24-
set(ARCH "${CMAKE_SYSTEM_PROCESSOR}")
25-
endif()
26-
endif()
27-
if(NOT DEFINED MINVER OR NOT DEFINED "$ENV{MINVER}" AND DEFINED NO_PKGCFG AND "$ENV{NO_PKGCFG}" MATCHES "1")
28-
if("${ARCH}" STREQUAL "x86_64" OR "$ENV{ARCH}" STREQUAL "x86_64")
29-
set(MINVER -mmacosx-version-min=10.12)
20+
if((NOT DEFINED MINVER) AND NO_PKGCFG)
21+
if("${ARCH}" STREQUAL "x86_64")
3022
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.12)
3123
else()
32-
set(MINVER -mmacosx-version-min=11.0)
3324
set(CMAKE_OSX_DEPLOYMENT_TARGET 11.0)
3425
endif()
3526
endif()
36-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch ${ARCH} -isysroot ${SYSROOT} ${MINVER} -fembed-bitcode=off -flto=thin -pthread -mrelax-all -std=gnu17 ${ASAN_FLAG}")
27+
if(DEFINED MINVER)
28+
set(CMAKE_OSX_DEPLOYMENT_TARGET "${MINVER}")
29+
endif()
30+
set(PROJECT_C_FLAGS "-arch ${ARCH} -fembed-bitcode=off -pthread -mrelax-all -Wno-deprecated-declarations -Wno-int-conversion")
31+
if(NOT "${CMAKE_BUILD_TYPE}" MATCHES "Debug")
32+
set(PROJECT_C_FLAGS "-flto=thin ${PROJECT_C_FLAGS}")
33+
endif()
3734
elseif("${CMAKE_HOST_SYSTEM_NAME}" MATCHES "Linux")
38-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,--allow-multiple-definition -pthread -mrelax-all -std=gnu17 ${ASAN_FLAG}")
35+
set(PROJECT_C_FLAGS "-Wl,--allow-multiple-definition -pthread -mrelax-all -Wno-deprecated-declarations -Wno-int-conversion")
36+
elseif("${CMAKE_HOST_SYSTEM_NAME}" MATCHES "MSYS" OR "${CMAKE_HOST_SYSTEM_NAME}" MATCHES "Windows")
37+
set(PROJECT_C_FLAGS "-Wl,--allow-multiple-definition -pthread -fPIC -Wno-deprecated-declarations -Wno-int-conversion -DCURL_STATICLIB -Bstatic -O0")
3938
endif()
40-
endif()
41-
set(CMAKE_C_FLAGS_RELEASE "-Os -DNDEBUG")
42-
set(CMAKE_C_FLAGS_DEBUG "-g -O0 -DDEBUG")
43-
set(CMAKE_C_STANDARD 17)
44-
set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE)
45-
add_library(tsschecker STATIC
46-
tsschecker/tsschecker.c
47-
tsschecker/download.c)
48-
if(NOT DEFINED SUBPROJECT_BUILD)
49-
add_library(tsschecker_shared SHARED
39+
40+
project(tsschecker VERSION 0.${VERSION_COMMIT_COUNT}.0 LANGUAGES C)
41+
42+
if(ASAN)
43+
set(ASAN ON)
44+
set(ASAN_FLAGS "-fsanitize=address -fsanitize-address-use-after-scope -fno-omit-frame-pointer ${ASAN_FLAGS}")
45+
set(CMAKE_C_LINK_LIBRARY_FLAG "${CMAKE_C_LINK_LIBRARY_FLAG} ${ASAN_FLAGS}")
46+
set(CMAKE_MACOSX_RPATH 1)
47+
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH 1)
48+
set(CMAKE_BUILD_RPATH
49+
"/usr/local/lib"
50+
"/usr/lib"
51+
"/opt/procursus/lib"
52+
"/Library/Developer/CommandLineTools/usr/lib/clang/14.0.0/lib/darwin"
53+
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.0/lib/darwin/"
54+
"/Applications/Xcode_14.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.0/lib/darwin/"
55+
"/Applications/Xcode_14.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.0/lib/darwin/")
56+
#hardcoded because actions never updates xcode
57+
else()
58+
set(ASAN_FLAGS "")
59+
endif()
60+
61+
set(CMAKE_C_FLAGS_MINSIZEREL_INIT "-flto=thin ${ADDITIONAL_C_FLAGS} ${PROJECT_C_FLAGS} ${CMAKE_C_FLAGS_MINSIZEREL_INIT}")
62+
set(CMAKE_C_FLAGS_RELEASE_INIT "-flto=thin ${ADDITIONAL_C_FLAGS} ${PROJECT_C_FLAGS} ${CMAKE_C_FLAGS_RELEASE_INIT}")
63+
set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-flto=thin ${ADDITIONAL_C_FLAGS} ${PROJECT_C_FLAGS} ${CMAKE_C_FLAGS_RELWITHDEBINFO_INIT}")
64+
set(CMAKE_C_FLAGS_DEBUG_INIT "-g -O0 ${ADDITIONAL_C_FLAGS} ${PROJECT_C_FLAGS} ${CMAKE_C_FLAGS_DEBUG_INIT} ${ASAN_FLAGS}")
65+
66+
set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL_INIT}")
67+
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE_INIT}")
68+
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO_INIT}")
69+
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG_INIT}")
70+
71+
set(CMAKE_C_STANDARD 17)
72+
73+
add_library(tsschecker STATIC SHARED
5074
tsschecker/tsschecker.c
5175
tsschecker/download.c
5276
tsschecker/common.c
5377
tsschecker/tss.c
5478
tsschecker/main.c)
79+
else()
80+
project(tsschecker VERSION 0.${VERSION_COMMIT_COUNT}.0 LANGUAGES C)
81+
add_library(tsschecker STATIC
82+
tsschecker/tsschecker.c
83+
tsschecker/download.c)
5584
endif()
85+
5686
target_include_directories(tsschecker PRIVATE
5787
"${CMAKE_SOURCE_DIR}/dep_root/include/"
5888
tsschecker
5989
external/jssy/jssy)
60-
if(NOT DEFINED SUBPROJECT_BUILD)
61-
target_include_directories(tsschecker_shared PRIVATE
62-
"${CMAKE_SOURCE_DIR}/dep_root/include/"
63-
tsschecker
64-
external/jssy/jssy)
65-
endif()
66-
target_link_directories(tsschecker PRIVATE
67-
"${CMAKE_SOURCE_DIR}/dep_root/lib/")
68-
if(NOT DEFINED SUBPROJECT_BUILD)
69-
target_link_directories(tsschecker_shared PRIVATE
70-
"${CMAKE_SOURCE_DIR}/dep_root/lib/"
71-
.)
72-
endif()
73-
if(NOT DEFINED NO_PKGCFG AND NOT "$ENV{NO_PKGCFG}" MATCHES "1")
74-
find_package(PkgConfig REQUIRED)
90+
91+
if(NOT NO_PKGCFG)
92+
find_package(PkgConfig REQUIRED FATAL_ERROR)
7593
pkg_check_modules(DEPS REQUIRED
7694
libplist-2.0
7795
libirecovery-1.0
7896
libfragmentzip)
7997
target_include_directories(tsschecker PRIVATE "${DEPS_INCLUDE_DIRS}")
8098
else()
81-
if(NOT DEFINED SUBPROJECT_BUILD)
82-
target_link_libraries(tsschecker_shared PRIVATE
83-
curl
84-
plist-2.0
85-
irecovery-1.0
86-
fragmentzip
87-
usbmuxd-2.0
88-
imobiledevice-glue-1.0
89-
imobiledevice-1.0
90-
z
91-
jssy)
92-
if("${CMAKE_HOST_SYSTEM_NAME}" MATCHES "Darwin")
93-
target_link_libraries(tsschecker_shared PRIVATE
94-
compression
95-
"-framework CoreFoundation"
96-
"-framework IOKit")
97-
endif()
99+
target_link_directories(tsschecker PRIVATE
100+
"${CMAKE_SOURCE_DIR}/dep_root/lib/")
101+
target_link_libraries(tsschecker PRIVATE
102+
curl
103+
plist-2.0
104+
irecovery-1.0
105+
fragmentzip
106+
usbmuxd-2.0
107+
imobiledevice-glue-1.0
108+
imobiledevice-1.0
109+
z
110+
jssy)
111+
if("${CMAKE_HOST_SYSTEM_NAME}" MATCHES "Darwin")
112+
target_link_libraries(tsschecker PRIVATE
113+
compression
114+
"-framework CoreFoundation"
115+
"-framework IOKit")
98116
endif()
99117
endif()
100-
add_definitions(-DTSSCHECKER_NOMAIN=1)
101-
project(tsschecker)
118+
119+
#set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE)
120+
add_definitions(
121+
-DTSSCHECKER_VERSION_COUNT="${VERSION_COMMIT_COUNT}"
122+
-DTSSCHECKER_VERSION_SHA="${VERSION_COMMIT_SHA}"
123+
-DCMAKE_BUILD=1)
102124
add_subdirectory(external)
103-
if(NOT DEFINED SUBPROJECT_BUILD)
104-
set_target_properties(tsschecker_shared PROPERTIES OUTPUT_NAME "tsschecker.0")
105-
if(NOT DEFINED VERSION_COMMIT_COUNT)
106-
execute_process(COMMAND git rev-list --count HEAD WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE VERSION_COMMIT_COUNT ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
107-
endif()
108-
if(NOT DEFINED VERSION_COMMIT_SHA)
109-
execute_process(COMMAND git rev-parse HEAD WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE VERSION_COMMIT_SHA ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
110-
endif()
111-
add_definitions(
112-
-DTSSCHECKER_VERSION_COUNT="${VERSION_COMMIT_COUNT}"
113-
-DTSSCHECKER_VERSION_SHA="${VERSION_COMMIT_SHA}")
125+
126+
if(NOT SUBPROJECT_BUILD)
127+
set_target_properties(tsschecker PROPERTIES OUTPUT_NAME "tsschecker.0")
114128
install(TARGETS tsschecker
115129
DESTINATION "${CMAKE_INSTALL_PREFIX}/lib")
130+
else()
131+
add_definitions(-DTSSCHECKER_NOMAIN=1)
116132
endif()
117133

134+
#get_cmake_property(_variableNames VARIABLES)
135+
#list (SORT _variableNames)
136+
#foreach (_variableName ${_variableNames})
137+
# message(STATUS "${_variableName}=${${_variableName}}")
138+
#endforeach()

build.sh

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,21 @@ export CXX="$(which clang++)"
88
which xcrun >/dev/null
99
if [[ "$?" -lt 1 ]]; then export CC="$(xcrun --find clang)"; export CXX="$(xcrun --find clang++)"; fi
1010
echo "[*] Building libtsschecker"
11-
export TSS_INSTALL_DIR="/usr/local"
11+
export PROJECT_INSTALL_DIR="/usr/local"
1212
if [[ -z "$NO_CLEAN" ]]; then rm -rf cmake-build-release cmake-build-debug; fi
1313
if [[ "$RELEASE" == "1" ]]
1414
then
15-
if [[ ! "$NO_CLEAN" == "1" ]]; then cmake -DCMAKE_INSTALL_PREFIX="${TSS_INSTALL_DIR}" -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER="${CC}" -DCMAKE_CXX_COMPILER="${CXX}" -DCMAKE_MESSAGE_LOG_LEVEL="WARNING" -G "CodeBlocks - Unix Makefiles" -S ./ -B cmake-build-release $@; fi
15+
if [[ ! "$NO_CLEAN" == "1" ]]; then cmake -DCMAKE_INSTALL_PREFIX="${PROJECT_INSTALL_DIR}" -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER="${CC}" -DCMAKE_CXX_COMPILER="${CXX}" -DCMAKE_MESSAGE_LOG_LEVEL="WARNING" -G "CodeBlocks - Unix Makefiles" -S ./ -B cmake-build-release $@; fi
1616
make -s -C cmake-build-release clean
1717
make -s -C cmake-build-release
1818
if [[ "$?" -gt 0 ]]; then echo "[!] Failed to build libtsschecker!"; exit 1; fi
19-
echo "[*] Run make -C cmake-build-release install, to install libtsschecker or obtain the the static lib at cmake-build-release/src/libtsschecker.a"
19+
echo "[*] Run make -C cmake-build-release install, to install libtsschecker or obtain the static lib at cmake-build-release/$(ls cmake-build-release/ | grep libtsschecker | tr -d '\n')"
2020
echo "[*] Successfully built libtsschecker."
2121
else
22-
if [[ ! "$NO_CLEAN" == "1" ]]; then cmake -DCMAKE_INSTALL_PREFIX="${TSS_INSTALL_DIR}" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER="${CC}" -DCMAKE_CXX_COMPILER="${CXX}" -DCMAKE_MESSAGE_LOG_LEVEL="WARNING" -G "CodeBlocks - Unix Makefiles" -S ./ -B cmake-build-debug $@ ; fi
22+
if [[ ! "$NO_CLEAN" == "1" ]]; then cmake -DCMAKE_INSTALL_PREFIX="${PROJECT_INSTALL_DIR}" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=$(which make) -DCMAKE_C_COMPILER="${CC}" -DCMAKE_CXX_COMPILER="${CXX}" -DCMAKE_MESSAGE_LOG_LEVEL="WARNING" -G "CodeBlocks - Unix Makefiles" -S ./ -B cmake-build-debug $@ ; fi
2323
make -s -C cmake-build-debug clean
2424
make -s -C cmake-build-debug
2525
if [[ "$?" -gt 0 ]]; then echo "[!] Failed to build libtsschecker!"; exit 1; fi
26-
echo "[*] Run make -C cmake-build-debug install, to install libtsschecker or obtain the static lib at cmake-build-debug/src/libtsschecker.a"
26+
echo "[*] Run make -C cmake-build-debug install, to install libtsschecker or obtain the static lib at cmake-build-debug/$(ls cmake-build-debug/ | grep libtsschecker | tr -d '\n')"
2727
echo "[*] Successfully built libtsschecker."
2828
fi

external/CMakeLists.txt

Lines changed: 68 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,75 @@
1-
cmake_minimum_required(VERSION 3.22)
2-
project(jssy)
3-
if(NOT DEFINED SUBPROJECT_BUILD)
4-
if(${CMAKE_HOST_SYSTEM_NAME} MATCHES "Darwin")
5-
if(NOT DEFINED NO_XCODE AND NOT DEFINED ENV{NO_XCODE})
6-
execute_process(COMMAND xcrun --find clang WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE CC OUTPUT_STRIP_TRAILING_WHITESPACE)
7-
execute_process(COMMAND xcrun --find clang++ WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE CXX OUTPUT_STRIP_TRAILING_WHITESPACE)
8-
execute_process(COMMAND xcrun --find ar WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE AR OUTPUT_STRIP_TRAILING_WHITESPACE)
9-
execute_process(COMMAND xcrun --find ld WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE LD OUTPUT_STRIP_TRAILING_WHITESPACE)
10-
execute_process(COMMAND xcrun --show-sdk-path WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE SYSROOT OUTPUT_STRIP_TRAILING_WHITESPACE)
11-
set(CMAKE_C_COMPILER "${CC}")
12-
set(CMAKE_CXX_COMPILER "${CXX}")
13-
endif()
14-
if(NOT DEFINED ARCH)
15-
set(ARCH "$ENV{ARCH}")
16-
if(ARCH STREQUAL "")
17-
set(ARCH "${CMAKE_SYSTEM_PROCESSOR}")
1+
cmake_minimum_required(VERSION 3.19...3.24 FATAL_ERROR)
2+
set(ignoreMe "${NO_PKGCFG} ${ASAN} ${ASAN_FLAGS} ${ARCH}")
3+
option(SUBPROJECT_BUILD "Enables submodules to build as statically internally linked libs instead of binaries/tools" OFF)
4+
option(ASAN "Enable AddressSanatizer" OFF)
5+
option(NO_PKGCFG "Disable pkgconfig searching of libs, use dep_root for linking" OFF)
6+
execute_process(COMMAND git rev-list --count HEAD WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE JSSY_VERSION_COMMIT_COUNT ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
7+
if(NOT SUBPROJECT_BUILD)
8+
if(ARCH STREQUAL "")
9+
set(ARCH "${CMAKE_SYSTEM_PROCESSOR}")
10+
endif()
11+
12+
if("${CMAKE_HOST_SYSTEM_NAME}" MATCHES "Darwin")
13+
if((NOT DEFINED MINVER) AND NO_PKGCFG)
14+
if("${ARCH}" STREQUAL "x86_64")
15+
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.12)
16+
else()
17+
set(CMAKE_OSX_DEPLOYMENT_TARGET 11.0)
18+
endif()
1819
endif()
19-
endif()
20-
if(NOT DEFINED MINVER OR NOT DEFINED "$ENV{MINVER}" AND DEFINED NO_PKGCFG AND "$ENV{NO_PKGCFG}" MATCHES "1")
21-
if("${ARCH}" STREQUAL "x86_64" OR "$ENV{ARCH}" STREQUAL "x86_64")
22-
set(MINVER -mmacosx-version-min=10.12)
23-
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.12)
24-
else()
25-
set(MINVER -mmacosx-version-min=11.0)
26-
set(CMAKE_OSX_DEPLOYMENT_TARGET 11.0)
20+
if(DEFINED MINVER)
21+
set(CMAKE_OSX_DEPLOYMENT_TARGET "${MINVER}")
2722
endif()
28-
endif()
29-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch ${ARCH} -isysroot ${SYSROOT} ${MINVER} -fembed-bitcode=off -flto=thin -pthread -mrelax-all -std=gnu++20")
30-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch ${ARCH} -isysroot ${SYSROOT} ${MINVER} -fembed-bitcode=off -flto=thin -pthread -mrelax-all -std=gnu17")
31-
elseif(${CMAKE_HOST_SYSTEM_NAME} MATCHES "Linux")
32-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,--allow-multiple-definition -pthread")
33-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--allow-multiple-definition -pthread")
23+
set(PROJECT_C_FLAGS "-arch ${ARCH} -fembed-bitcode=off -flto=thin -pthread -mrelax-all -Wno-deprecated-declarations -Wno-int-conversion")
24+
set(PROJECT_CXX_FLAGS "${PROJECT_C_FLAGS}")
25+
elseif("${CMAKE_HOST_SYSTEM_NAME}" MATCHES "Linux")
26+
set(PROJECT_C_FLAGS "-Wl,--allow-multiple-definition -pthread -mrelax-all -Wno-deprecated-declarations -Wno-int-conversion")
27+
set(PROJECT_CXX_FLAGS "${PROJECT_C_FLAGS}")
28+
elseif("${CMAKE_HOST_SYSTEM_NAME}" MATCHES "MSYS" OR "${CMAKE_HOST_SYSTEM_NAME}" MATCHES "Windows")
29+
set(PROJECT_C_FLAGS "-Wl,--allow-multiple-definition -pthread -fPIC -Wno-deprecated-declarations -Wno-int-conversion -DCURL_STATICLIB -Bstatic -O0")
30+
set(PROJECT_CXX_FLAGS "${PROJECT_C_FLAGS}")
31+
endif()
32+
33+
project(jssy VERSION 0.${JSSY_VERSION_COMMIT_COUNT}.0 LANGUAGES C)
34+
35+
if(ASAN)
36+
set(ASAN ON)
37+
set(ASAN_FLAGS "-fsanitize=address -fsanitize-address-use-after-scope -fno-omit-frame-pointer ${ASAN_FLAGS}")
38+
set(CMAKE_C_LINK_LIBRARY_FLAG "${CMAKE_C_LINK_LIBRARY_FLAG} ${ASAN_FLAGS}")
39+
set(CMAKE_MACOSX_RPATH 1)
40+
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH 1)
41+
set(CMAKE_BUILD_RPATH
42+
"/usr/local/lib"
43+
"/usr/lib"
44+
"/opt/procursus/lib"
45+
"/Library/Developer/CommandLineTools/usr/lib/clang/14.0.0/lib/darwin"
46+
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.0/lib/darwin/"
47+
"/Applications/Xcode_14.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.0/lib/darwin/"
48+
"/Applications/Xcode_14.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.0/lib/darwin/")
49+
#hardcoded because actions never updates xcode
50+
else()
51+
set(ASAN_FLAGS "")
3452
endif()
53+
54+
set(CMAKE_C_FLAGS_MINSIZEREL_INIT "${ADDITIONAL_C_FLAGS} ${PROJECT_C_FLAGS} ${CMAKE_C_FLAGS_MINSIZEREL_INIT}")
55+
set(CMAKE_C_FLAGS_RELEASE_INIT "${ADDITIONAL_C_FLAGS} ${PROJECT_C_FLAGS} ${CMAKE_C_FLAGS_RELEASE_INIT}")
56+
set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "${ADDITIONAL_C_FLAGS} ${PROJECT_C_FLAGS} ${CMAKE_C_FLAGS_RELWITHDEBINFO_INIT}")
57+
set(CMAKE_C_FLAGS_DEBUG_INIT "${ADDITIONAL_C_FLAGS} ${PROJECT_C_FLAGS} ${CMAKE_C_FLAGS_DEBUG_INIT} ${ASAN_FLAGS}")
58+
59+
set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL_INIT}")
60+
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE_INIT}")
61+
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO_INIT}")
62+
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG_INIT}")
63+
64+
set(CMAKE_C_STANDARD 17)
65+
else()
66+
project(jssy VERSION 0.${JSSY_VERSION_COMMIT_COUNT}.0 LANGUAGES C)
3567
endif()
68+
3669
add_library(jssy
37-
jssy/jssy/jssy.c
38-
jssy/jssy/jssy_create.c)
70+
jssy/jssy/jssy.c
71+
jssy/jssy/jssy_create.c)
3972
target_include_directories(jssy PRIVATE
40-
"${CMAKE_SOURCE_DIR}/dep_root/include")
73+
"${CMAKE_SOURCE_DIR}/dep_root/include")
4174
target_link_directories(jssy PRIVATE
42-
"${CMAKE_SOURCE_DIR}/dep_root/lib")
75+
"${CMAKE_SOURCE_DIR}/dep_root/lib")

tsschecker/tsschecker.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
#include <stdio.h>
1616

1717
#ifndef TSSCHECKER_NOMAIN
18+
#ifndef CMAKE_BUILD
1819
#include "../config.h"
1920
#endif
21+
#endif
2022
#include "tsschecker.h"
2123
#include "debug.h"
2224
#include "download.h"

0 commit comments

Comments
 (0)