Skip to content

Commit

Permalink
universal binaries for src and prebuilt deps
Browse files Browse the repository at this point in the history
  • Loading branch information
KevinEady committed Dec 4, 2023
1 parent 8e50f1c commit 8188ae6
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 9 deletions.
4 changes: 3 additions & 1 deletion .github/workflows/buildmacos.yml
Expand Up @@ -46,6 +46,8 @@ jobs:
brew install pkg-config
brew reinstall openssl@1.1
brew install ninja openssl@1.1 glib-openssl mysql-client mysql-connector-c++
wget https://raw.githubusercontent.com/KevinEady/brew-universalize/HEAD/brew-universalize && chmod +x brew-universalize
./brew-universalize openssl@1.1 glib-openssl mysql-client mysql-connector-c++ openssl@3 # curl uses openssl@3
echo "PKG_CONFIG_PATH=/usr/local/opt/openssl@1.1/lib/pkgconfig:/usr/local/opt/mysql-client/lib/pkgconfig:$Env:PKG_CONFIG_PATH" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- name: Set CXX and CC
Expand All @@ -66,7 +68,7 @@ jobs:
- name: Config
run: |
cd bin-build
cmake .. -G Ninja -DREUSE_PCH=1 -DCMAKE_BUILD_TYPE=${{ matrix.config.build-type }}
cmake .. -G Ninja -DREUSE_PCH=1 -DCMAKE_BUILD_TYPE=${{ matrix.config.build-type }} -DCMAKE_OSX_ARCHITECTURES='arm64;x86_64'
- name: Build
run: |
cd bin-build
Expand Down
3 changes: 2 additions & 1 deletion cmake/Antlr.cmake
Expand Up @@ -28,7 +28,8 @@ if (NOT EXISTS ${ANTLR_LIB})
ExternalProject_Add(libantlr_ex
SOURCE_DIR ${ANTLR_SOURCE_DIR}
PREFIX antlr
CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${ANTLR_INSTALL_DIR} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DWITH_LIBCXX=Off
LIST_SEPARATOR |
CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${ANTLR_INSTALL_DIR} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DWITH_LIBCXX=Off -DCMAKE_OSX_ARCHITECTURES=${PIPED_OSX_ARCHITECTURES}
BINARY_DIR ${ANTLR_SOURCE_DIR}/build
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --config Release --target install
Expand Down
15 changes: 10 additions & 5 deletions cmake/Boost.cmake
Expand Up @@ -28,24 +28,29 @@ if (${windows})
set (BOOST_REGEX_LIB "${BOOST_STAGE_LIB_DIR}/libboost_regex.lib" )
set (BOOST_SYSTEM_LIB "${BOOST_STAGE_LIB_DIR}/libboost_system.lib" )
set (BOOST_THREAD_LIB "${BOOST_STAGE_LIB_DIR}/libboost_thread.lib" )
set (BOOST_CXX_FLAGS "cxxflags=/MT")
set (BOOST_CXX_FLAGS "/MT")
else()
set (BOOST_CONFIGURE_COMMAND "./bootstrap.sh")
set (BOOST_BUILD_COMMAND "./b2")
set (BOOST_REGEX_LIB "${BOOST_STAGE_LIB_DIR}/libboost_regex.a" )
set (BOOST_SYSTEM_LIB "${BOOST_STAGE_LIB_DIR}/libboost_system.a" )
set (BOOST_THREAD_LIB "${BOOST_STAGE_LIB_DIR}/libboost_thread.a" )
set (BOOST_CXX_FLAGS "")
endif()

if("arm64" IN_LIST CMAKE_OSX_ARCHITECTURES AND "x86_64" IN_LIST CMAKE_OSX_ARCHITECTURES)
set (BOOST_CXX_FLAGS "-arch arm64 -arch x86_64")
else()
set (BOOST_CXX_FLAGS "")
endif()
endif()

if(NOT EXISTS ${BOOST_REGEX_LIB} OR NOT EXISTS ${BOOST_SYSTEM_LIB} OR NOT EXISTS ${BOOST_THREAD_LIB})
message(" - will build in ${BOOST_SOURCE_DIR} toolset=${BOOST_TOOLSET}")
message(" - will build in ${BOOST_SOURCE_DIR} toolset=${BOOST_TOOLSET} cxxflags=${BOOST_CXX_FLAGS}")
ExternalProject_Add(boost
SOURCE_DIR ${BOOST_SOURCE_DIR}
INSTALL_COMMAND ""
CONFIGURE_COMMAND ""
DOWNLOAD_COMMAND ""
BUILD_COMMAND ${BOOST_BUILD_COMMAND} ${BOOST_CXX_FLAGS} address-model=${ARCH_BITS} toolset=${BOOST_TOOLSET} variant=release link=static runtime-link=static --layout=system --with-regex --with-system --with-thread stage
BUILD_COMMAND ${BOOST_BUILD_COMMAND} cxxflags=${BOOST_CXX_FLAGS} address-model=${ARCH_BITS} toolset=${BOOST_TOOLSET} variant=release link=static runtime-link=static --layout=system --with-regex --with-system --with-thread stage
BUILD_BYPRODUCTS ${BOOST_REGEX_LIB} ${BOOST_SYSTEM_LIB} ${BOOST_THREAD_LIB}
LOG_BUILD 1
BUILD_IN_SOURCE 1
Expand Down
3 changes: 2 additions & 1 deletion cmake/Curl.cmake
Expand Up @@ -16,7 +16,8 @@ if(NOT EXISTS "${CURL_LIB}")
URL "${CURL_SOURCE_DIR}/../curl-8.2.1.zip"
SOURCE_DIR "${CURL_SOURCE_DIR}"
PREFIX curl
CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${CURL_INSTALL_DIR} ${CURL_FLAGS} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
LIST_SEPARATOR |
CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${CURL_INSTALL_DIR} ${CURL_FLAGS} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_OSX_ARCHITECTURES=${PIPED_OSX_ARCHITECTURES}
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --config Release --target install
BUILD_IN_SOURCE 1
Expand Down
3 changes: 2 additions & 1 deletion cmake/ZLib.cmake
Expand Up @@ -12,7 +12,8 @@ if(NOT EXISTS "${ZLIB_LIB}")
URL "${ZLIB_SOURCE_DIR}/../zlib13.zip"
SOURCE_DIR "${ZLIB_SOURCE_DIR}"
PREFIX z
CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${ZLIB_INSTALL_DIR} ${ZLIB_FLAGS} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
LIST_SEPARATOR |
CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${ZLIB_INSTALL_DIR} ${ZLIB_FLAGS} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_OSX_ARCHITECTURES=${PIPED_OSX_ARCHITECTURES}
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --config Release --target install
BUILD_IN_SOURCE 1
Expand Down
7 changes: 7 additions & 0 deletions cmake/init.cmake
Expand Up @@ -98,6 +98,13 @@ macro(detect_platform)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm.*|ARM.*)")
set(arm_proc 1)
endif()

# Needed by ExternalProject to add list arguments
string(REPLACE ";" "|" PIPED_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}")

if(DEFINED CMAKE_OSX_ARCHITECTURES)
message(" macOS architectures: ${CMAKE_OSX_ARCHITECTURES}")
endif()

#atleast a problem when arm (32bit) processor runs in a VM
set(file_offset_bits 0)
Expand Down

0 comments on commit 8188ae6

Please sign in to comment.