11cmake_minimum_required (VERSION 3.22)
2- project (ID-updater VERSION 3.18 .0)
2+ project (ID-updater VERSION 3.19 .0)
33
44macro ( SET_ENV NAME DEF )
55 if ( DEFINED ENV{${NAME} } )
@@ -13,40 +13,71 @@ set_env(BUILD_NUMBER 0)
1313set (VERSION ${PROJECT_VERSION} .${BUILD_NUMBER} )
1414set_env( CONFIG_URL "https://id.eesti.ee/config.json" CACHE STRING "Set Config URL" )
1515set_env( SIGNCERT "" CACHE STRING "Common name of certificate to used sign binaries, empty skip signing" )
16- add_definitions ( -DCONFIG_URL= " ${CONFIG_URL} " )
17- string ( REPLACE ".json" ". pub" PUB_URL ${CONFIG_URL} )
18- file ( DOWNLOAD ${PUB_URL} ${CMAKE_CURRENT_BINARY_DIR} /config.pub )
16+ string (REPLACE ".json" ".ecpub" PUB_URL ${CONFIG_URL} )
17+ message ( "Fetching pub key: ${PUB_URL} " )
18+ file (DOWNLOAD ${PUB_URL} ${CMAKE_CURRENT_BINARY_DIR} /config.ecpub )
1919
2020if ( APPLE )
21- add_custom_command ( OUTPUT config.h
22- COMMAND xxd -i config.pub config.h
21+ add_custom_command (OUTPUT config.h
22+ BYPRODUCTS module.modulemap
23+ COMMAND xxd -i config.ecpub config.h
24+ COMMAND echo "\\\# define CONFIG_URL \\\" ${CONFIG_URL} \\\" " >> config.h
25+ COMMAND echo "module config [system] {" > module.modulemap
26+ COMMAND echo " private header \\\" config.h\\\" " >> module.modulemap
27+ COMMAND echo " export *" >> module.modulemap
28+ COMMAND echo "}" >> module.modulemap
2329 COMMENT "Generating config.h"
2430 )
25- include_directories ( ${CMAKE_CURRENT_BINARY_DIR} )
26- add_library (id-updater-lib STATIC prefPane/update.m config.h)
27- target_compile_options (id-updater-lib PRIVATE -Wno-unused-parameter -fobjc-arc -fmodules)
28- set (SWIFT_FLAGS "" )
31+ set (SWIFT_FLAGS xcrun --sdk macosx swiftc -I ${CMAKE_CURRENT_BINARY_DIR} )
2932 if (CMAKE_BUILD_TYPE STREQUAL "Debug" )
30- set ( SWIFT_FLAGS -g)
33+ list ( APPEND SWIFT_FLAGS -g)
3134 elseif (CMAKE_BUILD_TYPE STREQUAL "Release" )
32- set ( SWIFT_FLAGS -O)
35+ list ( APPEND SWIFT_FLAGS -O)
3336 elseif (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo" )
34- set ( SWIFT_FLAGS -O -g)
37+ list ( APPEND SWIFT_FLAGS -O -g)
3538 elseif (CMAKE_BUILD_TYPE STREQUAL "MinSizeRel" )
36- set ( SWIFT_FLAGS -Osize)
39+ list ( APPEND SWIFT_FLAGS -Osize)
3740 endif ()
41+ set (SWIFTMOD_DIR ${CMAKE_CURRENT_BINARY_DIR} /id_updater_lib.swiftmodule)
42+ set (SWIFTHDR_DIR ${CMAKE_CURRENT_BINARY_DIR} /id_updater_lib)
43+ add_custom_command (OUTPUT
44+ libid-updater-lib.a
45+ BYPRODUCTS
46+ libid-updater-lib_arm64.a
47+ libid-updater-lib_x86_64.a
48+ ${SWIFTMOD_DIR} /arm64-apple -macos.swiftmodule
49+ ${SWIFTMOD_DIR} /x86_64-apple -macos.swiftmodule
50+ DEPENDS config.h
51+ COMMENT "Build id-updater-lib"
52+ COMMAND ${CMAKE_COMMAND} -E make_directory ${SWIFTMOD_DIR}
53+ COMMAND ${CMAKE_COMMAND} -E make_directory ${SWIFTHDR_DIR}
54+ COMMAND ${SWIFT_FLAGS} -target arm64-apple -macosx${CMAKE_OSX_DEPLOYMENT_TARGET}
55+ -module-name id_updater_lib
56+ -emit-module -emit-module-path ${SWIFTMOD_DIR} /arm64-apple -macos.swiftmodule
57+ -emit-objc-header -emit-objc-header-path ${SWIFTHDR_DIR} /id_updater_lib-Swift.h
58+ ${CMAKE_CURRENT_SOURCE_DIR} /prefPane/update.swift
59+ -emit-library -static -o libid-updater-lib_arm64.a
60+ COMMAND ${SWIFT_FLAGS} -target x86_64-apple -macosx${CMAKE_OSX_DEPLOYMENT_TARGET}
61+ -module-name id_updater_lib
62+ -emit-module -emit-module-path ${SWIFTMOD_DIR} /x86_64-apple -macos.swiftmodule
63+ -emit-objc-header -emit-objc-header-path ${SWIFTHDR_DIR} /id_updater_lib-Swift.h
64+ ${CMAKE_CURRENT_SOURCE_DIR} /prefPane/update.swift
65+ -emit-library -static -o libid-updater-lib_x86_64.a
66+ COMMAND lipo -create libid-updater-lib_arm64.a libid-updater-lib_x86_64.a -output libid-updater-lib.a
67+ )
3868 add_custom_command (OUTPUT id-updater-helper
39- BYPRODUCTS id-updater-helper_arm64 id-updater-helper_x86_64
69+ BYPRODUCTS
70+ id-updater-helper_arm64
71+ id-updater-helper_x86_64
72+ DEPENDS libid-updater-lib.a
4073 COMMENT "Build id-updater-helper"
41- COMMAND xcrun --sdk macosx swiftc - target arm64-apple -macosx${CMAKE_OSX_DEPLOYMENT_TARGET} -parse-as-library ${SWIFT_FLAGS}
42- -import-objc-header ${CMAKE_CURRENT_SOURCE_DIR} /prefPane/update.h
74+ COMMAND ${SWIFT_FLAGS} - target arm64-apple -macosx${CMAKE_OSX_DEPLOYMENT_TARGET} -parse-as-library
75+ ${CMAKE_CURRENT_BINARY_DIR} /libid-updater-lib.a
4376 ${CMAKE_CURRENT_SOURCE_DIR} /prefPane/id-updater-helper.swift
44- $<TARGET_FILE:id-updater-lib>
4577 -o id-updater-helper_arm64
46- COMMAND xcrun --sdk macosx swiftc - target x86_64-apple -macosx${CMAKE_OSX_DEPLOYMENT_TARGET} -parse-as-library ${SWIFT_FLAGS}
47- -import-objc-header ${CMAKE_CURRENT_SOURCE_DIR} /prefPane/update.h
78+ COMMAND ${SWIFT_FLAGS} - target x86_64-apple -macosx${CMAKE_OSX_DEPLOYMENT_TARGET} -parse-as-library
79+ ${CMAKE_CURRENT_BINARY_DIR} /libid-updater-lib.a
4880 ${CMAKE_CURRENT_SOURCE_DIR} /prefPane/id-updater-helper.swift
49- $<TARGET_FILE:id-updater-lib>
5081 -o id-updater-helper_x86_64
5182 COMMAND lipo -create id-updater-helper_arm64 id-updater-helper_x86_64 -output id-updater-helper
5283 )
@@ -55,25 +86,18 @@ if( APPLE )
5586 COMMAND ibtool --errors --warnings --notices --output -format human-readable-text
5687 --compile ID_updater.nib ${CMAKE_CURRENT_SOURCE_DIR} /prefPane/Base.lproj/ID_updater.xib
5788 )
58- set (EN_RESOURCES prefPane/en.lproj/InfoPlist.strings prefPane/en.lproj/ID_updater.strings prefPane/en.lproj/Localizable.strings )
59- set (ET_RESOURCES prefPane/et.lproj/InfoPlist.strings prefPane/et.lproj/ID_updater.strings prefPane/et.lproj/Localizable.strings )
60- set (RU_RESOURCES prefPane/ru.lproj/InfoPlist.strings prefPane/ru.lproj/ID_updater.strings prefPane/ru.lproj/Localizable.strings )
6189
90+ file (GLOB RESOURCE_FILES prefPane/Icon.icns prefPane/*.lproj)
6291 find_library ( XAR xar )
6392 add_library (${PROJECT_NAME} MODULE
6493 ${CMAKE_CURRENT_BINARY_DIR} /id-updater-helper
6594 ID_updater.nib
66- ${EN_RESOURCES}
67- ${ET_RESOURCES}
68- ${RU_RESOURCES}
95+ ${RESOURCE_FILES}
6996 prefPane/Icon.icns
7097 prefPane/id-updater.m
7198 )
72- set_source_files_properties (prefPane/Icon.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
7399 set_source_files_properties (ID_updater.nib PROPERTIES MACOSX_PACKAGE_LOCATION Resources/Base.lproj)
74- set_source_files_properties (${EN_RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION Resources/en.lproj)
75- set_source_files_properties (${ET_RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION Resources/et.lproj)
76- set_source_files_properties (${RU_RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION Resources/ru.lproj)
100+ set_source_files_properties (${RESOURCE_FILES} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
77101 set_target_properties (${PROJECT_NAME} PROPERTIES
78102 BUNDLE YES
79103 BUNDLE_EXTENSION prefPane
@@ -89,7 +113,8 @@ if( APPLE )
89113 MACOSX_BUNDLE_BUNDLE_VERSION ${BUILD_NUMBER}
90114 XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "ee.ria.${PROJECT_NAME} "
91115 )
92- target_link_libraries (${PROJECT_NAME} ${XAR} id-updater-lib)
116+ target_include_directories (${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR} )
117+ target_link_libraries (${PROJECT_NAME} ${XAR} ${CMAKE_CURRENT_BINARY_DIR} /libid-updater-lib.a)
93118 add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD
94119 COMMAND cp ${CMAKE_CURRENT_BINARY_DIR} /id-updater-helper $<TARGET_BUNDLE_CONTENT_DIR:${PROJECT_NAME} >/Resources
95120 )
@@ -118,9 +143,9 @@ else()
118143 if (NOT EXISTS ${CMAKE_SOURCE_DIR} /common/CMakeLists.txt)
119144 message (FATAL_ERROR "cmake submodule directory empty, did you 'git clone --recursive'?" )
120145 endif ()
121- file ( DOWNLOAD ${CONFIG_URL} ${CMAKE_CURRENT_BINARY_DIR} /config.json )
122- string ( REPLACE ".json" ".rsa" RSA_URL ${CONFIG_URL} )
123- file ( DOWNLOAD ${RSA_URL } ${CMAKE_CURRENT_BINARY_DIR} /config.rsa )
146+ file (DOWNLOAD ${CONFIG_URL} ${CMAKE_CURRENT_BINARY_DIR} /config.json)
147+ string (REPLACE ".json" ".ecc" ECC_URL ${CONFIG_URL} )
148+ file (DOWNLOAD ${ECC_URL } ${CMAKE_CURRENT_BINARY_DIR} /config.ecc )
124149 set (CONFIG_DIR ${CMAKE_CURRENT_BINARY_DIR} )
125150
126151 find_package (OpenSSL 3.0.0 REQUIRED)
@@ -167,7 +192,7 @@ else()
167192 )
168193 qt_add_resources(${PROJECT_NAME} icon FILES appicon.png)
169194 qt_add_resources(${PROJECT_NAME} config BASE ${CONFIG_DIR} PREFIX / FILES
170- ${CONFIG_DIR} /config.json ${CONFIG_DIR} /config.rsa ${CONFIG_DIR} /config.pub
195+ ${CONFIG_DIR} /config.json ${CONFIG_DIR} /config.ecc ${CONFIG_DIR} /config.ecpub
171196 )
172197
173198 if (OPENSSL_ROOT_DIR)
0 commit comments