Skip to content
Open
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,18 @@ CMAKE_C_COMPILER=clang
CMAKE_CXX_COMPILER=clang++
CMAKE_GENERATOR=Ninja
builtin_freetype=ON
builtin_fftw3=ON
builtin_gif=ON
builtin_gl2ps=ON
builtin_googletest=ON
builtin_gsl=ON
builtin_jpeg=ON
builtin_lz4=ON
builtin_lzma=ON
builtin_nlohmann=ON
builtin_pcre=ON
builtin_png=ON
builtin_tbb=ON
builtin_tiff=ON
builtin_vdt=ON
builtin_xxhash=ON
Expand Down
30 changes: 30 additions & 0 deletions builtins/fftw3/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
set(ROOT_FFTW_VERSION 3.3.10)
message(STATUS "Downloading and building FFTW version ${ROOT_FFTW_VERSION}")
set(ROOT_FFTW_PREFIX ${CMAKE_BINARY_DIR}/builtins/FFTW3-prefix)
set(ROOT_FFTW_LIBRARY ${ROOT_FFTW_PREFIX}/lib/libfftw3.a)
ExternalProject_Add(
BUILTIN_FFTW3
PREFIX ${ROOT_FFTW_PREFIX}
URL ${lcgpackages}/fftw-${ROOT_FFTW_VERSION}.tar.gz
URL_HASH SHA256=56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467
CONFIGURE_COMMAND ./configure --prefix=<INSTALL_DIR>
BUILD_COMMAND make CFLAGS=-fPIC
LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 LOG_OUTPUT_ON_FAILURE 1
BUILD_IN_SOURCE 1
BUILD_BYPRODUCTS ${ROOT_FFTW_LIBRARY}
TIMEOUT 600
)

set(ROOT_FFTW_INCLUDE_DIR ${ROOT_FFTW_PREFIX}/include)

file(MAKE_DIRECTORY ${ROOT_FFTW_INCLUDE_DIR})
add_library(FFTW::Double IMPORTED STATIC GLOBAL)
add_dependencies(FFTW::Double BUILTIN_FFTW3)
set_target_properties(FFTW::Double PROPERTIES
IMPORTED_LOCATION ${ROOT_FFTW_LIBRARY}
INTERFACE_INCLUDE_DIRECTORIES ${ROOT_FFTW_INCLUDE_DIR})

set(FFTW_INCLUDE_DIRS ${ROOT_FFTW_INCLUDE_DIR} PARENT_SCOPE)
set(FFTW_FOUND ON PARENT_SCOPE)
set(FFTW_VERSION ${ROOT_FFTW_VERSION} PARENT_SCOPE)
set(FFTW_LIBRARIES ${ROOT_FFTW_LIBRARY} PARENT_SCOPE)
49 changes: 49 additions & 0 deletions builtins/gsl/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
set(ROOT_GSL_VERSION 2.8)
message(STATUS "Downloading and building GSL version ${ROOT_GSL_VERSION}")
set(ROOT_GSL_PREFIX ${CMAKE_BINARY_DIR}/builtins/GSL-prefix)
set(ROOT_GSL_LIBRARY ${ROOT_GSL_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gsl${CMAKE_STATIC_LIBRARY_SUFFIX})
set(ROOT_GSL_CBLAS_LIBRARY ${ROOT_GSL_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gslcblas${CMAKE_STATIC_LIBRARY_SUFFIX})
set(ROOT_GSL_LIBRARIES ${ROOT_GSL_LIBRARY} ${ROOT_GSL_CBLAS_LIBRARY})
if(CMAKE_OSX_SYSROOT)
set(_gsl_cppflags "-isysroot ${CMAKE_OSX_SYSROOT}")
set(_gsl_ldflags "-isysroot ${CMAKE_OSX_SYSROOT}")
endif()
ExternalProject_Add(
BUILTIN_GSL
PREFIX ${ROOT_GSL_PREFIX}
# http://mirror.switch.ch/ftp/mirror/gnu/gsl/gsl-${ROOT_GSL_VERSION}.tar.gz
URL ${lcgpackages}/gsl-${ROOT_GSL_VERSION}.tar.gz
URL_HASH SHA256=6a99eeed15632c6354895b1dd542ed5a855c0f15d9ad1326c6fe2b2c9e423190
SOURCE_DIR GSL-src # prevent "<gsl/...>" vs GSL/ macOS warning
INSTALL_DIR ${ROOT_GSL_PREFIX}
CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix <INSTALL_DIR>
--libdir=<INSTALL_DIR>/lib
--enable-shared=no --with-pic
CC=${CMAKE_C_COMPILER}
CFLAGS=${CMAKE_C_FLAGS}
CPPFLAGS=${_gsl_cppflags}
LDFLAGS=${_gsl_ldflags}
LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 LOG_OUTPUT_ON_FAILURE 1
BUILD_BYPRODUCTS ${ROOT_GSL_LIBRARIES}
TIMEOUT 600
)

# FIXME: one need to find better way to extract path with GSL include files
set(ROOT_GSL_INCLUDE_DIR ${ROOT_GSL_PREFIX}/src/BUILTIN_GSL-build)

file(MAKE_DIRECTORY ${ROOT_GSL_INCLUDE_DIR})
add_library(GSL::gsl IMPORTED STATIC GLOBAL)
add_dependencies(GSL::gsl BUILTIN_GSL)
set_target_properties(GSL::gsl PROPERTIES
IMPORTED_LOCATION ${ROOT_GSL_LIBRARY}
INTERFACE_INCLUDE_DIRECTORIES ${ROOT_GSL_INCLUDE_DIR})
add_library(GSL::gslcblas IMPORTED STATIC GLOBAL)
add_dependencies(GSL::gslcblas BUILTIN_GSL)
set_target_properties(GSL::gslcblas PROPERTIES
IMPORTED_LOCATION ${ROOT_GSL_CBLAS_LIBRARY}
INTERFACE_INCLUDE_DIRECTORIES ${ROOT_GSL_INCLUDE_DIR})

set(GSL_INCLUDE_DIRS ${ROOT_GSL_INCLUDE_DIR})
set(GSL_FOUND ON PARENT_SCOPE)
set(GSL_VERSION ${ROOT_GSL_VERSION} PARENT_SCOPE)
set(GSL_LIBRARIES ${ROOT_GSL_LIBRARIES} PARENT_SCOPE)
117 changes: 117 additions & 0 deletions builtins/gtest/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Add googletest
# http://stackoverflow.com/questions/9689183/cmake-googletest

set(_gtest_byproduct_binary_dir
${CMAKE_CURRENT_BINARY_DIR}/googletest-prefix/src/googletest-build)
set(_gtest_byproducts
${_gtest_byproduct_binary_dir}/lib/libgtest.a
${_gtest_byproduct_binary_dir}/lib/libgtest_main.a
${_gtest_byproduct_binary_dir}/lib/libgmock.a
${_gtest_byproduct_binary_dir}/lib/libgmock_main.a
)

set(GTEST_CXX_FLAGS "${ROOT_EXTERNAL_CXX_FLAGS}")
if(MSVC)
if(winrtdebug)
set(GTEST_BUILD_TYPE Debug)
else()
set(GTEST_BUILD_TYPE Release)
endif()
set(_gtest_byproducts
${_gtest_byproduct_binary_dir}/lib/gtest.lib
${_gtest_byproduct_binary_dir}/lib/gtest_main.lib
${_gtest_byproduct_binary_dir}/lib/gmock.lib
${_gtest_byproduct_binary_dir}/lib/gmock_main.lib
)
if(CMAKE_GENERATOR MATCHES Ninja)
set(GTEST_BUILD_COMMAND "BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR>")
else()
set(GTEST_BUILD_COMMAND "BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config ${GTEST_BUILD_TYPE}")
endif()
if(asan)
if(NOT winrtdebug)
set(gtestbuild "RelWithDebInfo")
endif()
set(GTEST_CXX_FLAGS "${ROOT_EXTERNAL_CXX_FLAGS} ${ASAN_EXTRA_CXX_FLAGS}")
endif()
set(EXTRA_GTEST_OPTS
-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}
-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=${_gtest_byproduct_binary_dir}/lib/
-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL:PATH=${_gtest_byproduct_binary_dir}/lib/
-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=${_gtest_byproduct_binary_dir}/lib/
-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO:PATH=${_gtest_byproduct_binary_dir}/lib/
-Dgtest_force_shared_crt=ON
${GTEST_BUILD_COMMAND})
else()
set(GTEST_BUILD_TYPE Release)
endif()
if(APPLE)
set(EXTRA_GTEST_OPTS
-DCMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT})
endif()

set(ROOT_GOOGLETEST_VERSION 1.17.0) # https://github.com/google/googletest/releases/tag/v1.17.0 Date: Apr 30, 2025
set(ROOT_GOOGLETEST_HASH "65fab701d9829d38cb77c14acdc431d2108bfdbf8979e40eb8ae567edf10b27c")
ExternalProject_Add(
googletest
# GIT_REPOSITORY https://github.com/google/googletest.git
# GIT_SHALLOW 1
# GIT_TAG v1.17.0
URL ${lcgpackages}/googletest-${ROOT_GOOGLETEST_VERSION}.tar.gz
URL_HASH SHA256=${ROOT_GOOGLETEST_HASH}
INSTALL_DIR ${CMAKE_BINARY_DIR}/builtins/gtest
UPDATE_COMMAND ""
# # Force separate output paths for debug and release builds to allow easy
# # identification of correct lib in subsequent TARGET_LINK_LIBRARIES commands
# CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=DebugLibs
# -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=ReleaseLibs
# -Dgtest_force_shared_crt=ON
CMAKE_ARGS -G ${CMAKE_GENERATOR}
-DCMAKE_BUILD_TYPE=${GTEST_BUILD_TYPE}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_CXX_FLAGS=${GTEST_CXX_FLAGS}
-DCMAKE_AR=${CMAKE_AR}
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
${EXTRA_GTEST_OPTS}
# Disable install step
INSTALL_COMMAND ""
BUILD_BYPRODUCTS ${_gtest_byproducts}
# Wrap download, configure and build steps in a script to log output
LOG_DOWNLOAD ON LOG_CONFIGURE ON LOG_BUILD ON LOG_OUTPUT_ON_FAILURE ON
TIMEOUT 600
)

# Specify include dirs for gtest and gmock
ExternalProject_Get_Property(googletest source_dir)
set(GTEST_INCLUDE_DIR ${source_dir}/googletest/include)
set(GMOCK_INCLUDE_DIR ${source_dir}/googlemock/include)
# Create the directories. Prevents bug https://gitlab.kitware.com/cmake/cmake/issues/15052
file(MAKE_DIRECTORY ${GTEST_INCLUDE_DIR} ${GMOCK_INCLUDE_DIR})

# Libraries
ExternalProject_Get_Property(googletest binary_dir)
set(_G_LIBRARY_PATH ${binary_dir}/lib/)

# Use gmock_main instead of gtest_main because it initializes gtest as well.
# Note: The libraries are listed in reverse order of their dependencies.
foreach(lib gtest gtest_main gmock gmock_main)
add_library(${lib} IMPORTED STATIC GLOBAL)
set_target_properties(${lib} PROPERTIES
IMPORTED_LOCATION "${_G_LIBRARY_PATH}${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX}"
)
add_dependencies(${lib} googletest)
Comment thread
ferdymercury marked this conversation as resolved.
add_library(GTest::${lib} ALIAS ${lib})
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND
${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER_EQUAL 9)
target_compile_options(${lib} INTERFACE -Wno-deprecated-copy)
endif()
endforeach()
target_include_directories(gtest INTERFACE ${GTEST_INCLUDE_DIR})
target_include_directories(gmock INTERFACE ${GMOCK_INCLUDE_DIR})

set_property(TARGET gtest PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX})
set_property(TARGET gtest_main PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX})
set_property(TARGET gmock PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX})
set_property(TARGET gmock_main PROPERTY IMPORTED_LOCATION ${_G_LIBRARY_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock_main${CMAKE_STATIC_LIBRARY_SUFFIX})
2 changes: 1 addition & 1 deletion builtins/lzma/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,9 @@ file(MAKE_DIRECTORY ${LIBLZMA_INCLUDE_DIR})

add_library(LibLZMA STATIC IMPORTED GLOBAL)
add_dependencies(LibLZMA BUILTIN_LZMA)
add_library(LibLZMA::LibLZMA ALIAS LibLZMA)
target_include_directories(LibLZMA INTERFACE ${LIBLZMA_INCLUDE_DIR})
set_target_properties(LibLZMA PROPERTIES IMPORTED_LOCATION ${LIBLZMA_LIBRARIES})
add_library(LibLZMA::LibLZMA ALIAS LibLZMA)

# Set the canonical output of find_package according to
# https://cmake.org/cmake/help/latest/manual/cmake-developer.7.html#standard-variable-names
Expand Down
10 changes: 10 additions & 0 deletions builtins/mathjax/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
ExternalProject_Add(
MATHJAX
URL ${CMAKE_SOURCE_DIR}/documentation/doxygen/mathjax.tar.gz # TODO move to LCGpackages
URL_HASH SHA256=c5e22e60430a65963a87ab4dcc8856b9be5bd434d3b3871f27ee65b584c3c3ea
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
SOURCE_DIR ${CMAKE_BINARY_DIR}/js/mathjax/
TIMEOUT 600
)
24 changes: 24 additions & 0 deletions builtins/openui5/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
if(builtin_openui5)
ExternalProject_Add(
OPENUI5
URL ${CMAKE_SOURCE_DIR}/builtins/openui5/openui5.tar.gz
URL_HASH SHA256=b9e6495d8640302d9cf2fe3c99331311335aaab0f48794565ebd69ecc7449e58
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
SOURCE_DIR ${CMAKE_BINARY_DIR}/ui5/distribution
TIMEOUT 600
)
else()
ExternalProject_Add(
OPENUI5
URL https://github.com/SAP/openui5/releases/download/1.135.0/openui5-runtime-1.135.0.zip
URL_HASH SHA256=13acdb88a7f3f1d4afef6d1d500b53bccc4b593e7acf442721bb4e3da4e2690b
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
SOURCE_DIR ${CMAKE_BINARY_DIR}/ui5/distribution
TIMEOUT 600
)
endif()
install(DIRECTORY ${CMAKE_BINARY_DIR}/ui5/distribution/ DESTINATION ${CMAKE_INSTALL_OPENUI5DIR}/distribution/ COMPONENT libraries FILES_MATCHING PATTERN "*")
11 changes: 11 additions & 0 deletions builtins/rendercore/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
ExternalProject_Add(
RENDERCORE
URL ${CMAKE_SOURCE_DIR}/builtins/rendercore/RenderCore-2.0.tar.gz # TODO move to LCG
URL_HASH SHA256=6bdcf70fbdec1f950057ab1df722775c468ad6894f8a364f15f589d58c326667
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
SOURCE_DIR ${CMAKE_BINARY_DIR}/ui5/eve7/rcore
TIMEOUT 600
)
install(DIRECTORY ${CMAKE_BINARY_DIR}/ui5/eve7/rcore/ DESTINATION ${CMAKE_INSTALL_OPENUI5DIR}/eve7/rcore/ COMPONENT libraries FILES_MATCHING PATTERN "*")
81 changes: 81 additions & 0 deletions builtins/tbb/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
set(ROOT_TBB_URL ${lcgpackages}/oneTBB-2021.9.0.tar.gz)
set(ROOT_TBB_HASH 1ce48f34dada7837f510735ff1172f6e2c261b09460e3bf773b49791d247d24e)

if(MSVC)
if(CMAKE_GENERATOR MATCHES Ninja)
if(CMAKE_BUILD_TYPE MATCHES Debug)
set(tbbsuffix "_debug")
endif()
else()
set(tbb_build Release)
if(winrtdebug)
set(tbb_build Debug)
set(tbbsuffix "_debug")
endif()
endif()
set(ROOT_TBB_LIBRARY ${CMAKE_BINARY_DIR}/lib/tbb12${tbbsuffix}.lib)
install(DIRECTORY ${CMAKE_BINARY_DIR}/bin/ DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libraries FILES_MATCHING PATTERN "tbb*.dll")
install(DIRECTORY ${CMAKE_BINARY_DIR}/lib/ DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries FILES_MATCHING PATTERN "tbb*.lib")
else()
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(tbbsuffix "_debug")
endif()
set(ROOT_TBB_LIBRARY ${CMAKE_BINARY_DIR}/lib/libtbb${tbbsuffix}${CMAKE_SHARED_LIBRARY_SUFFIX})
install(DIRECTORY ${CMAKE_BINARY_DIR}/lib/ DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries FILES_MATCHING PATTERN "libtbb*")
endif()
if(tbb_build)
set(TBB_EXTRA_BUILD_ARGS --config ${tbb_build})
endif()

ExternalProject_Add(
BUILTIN_TBB
URL ${ROOT_TBB_URL}
URL_HASH SHA256=${ROOT_TBB_HASH}
INSTALL_DIR ${CMAKE_BINARY_DIR}
CMAKE_ARGS -G ${CMAKE_GENERATOR}
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_CXX_FLAGS=${ROOT_EXTERNAL_CXX_FLAGS}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
-DCMAKE_INSTALL_INCLUDEDIR=${CMAKE_BINARY_DIR}/include
-DCMAKE_INSTALL_BINDIR=${CMAKE_BINARY_DIR}/bin
-DCMAKE_INSTALL_LIBDIR=${CMAKE_BINARY_DIR}/lib
Comment thread
ferdymercury marked this conversation as resolved.
-DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}
-DTBBMALLOC_BUILD=OFF
-DTBBMALLOC_PROXY_BUILD=OFF
-DTBB_ENABLE_IPO=OFF
-DTBB_STRICT=OFF
-DTBB_TEST=OFF
BUILD_COMMAND ${CMAKE_COMMAND} --build . ${TBB_EXTRA_BUILD_ARGS}
INSTALL_COMMAND ${CMAKE_COMMAND} --install . ${TBB_EXTRA_BUILD_ARGS}
LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1 LOG_OUTPUT_ON_FAILURE 1
BUILD_BYPRODUCTS ${ROOT_TBB_LIBRARY}
TIMEOUT 600
)

set(ROOT_TBB_INCLUDE_DIR ${CMAKE_BINARY_DIR}/ginclude)

ExternalProject_Add_Step(
BUILTIN_TBB tbb2externals
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/include/tbb ${ROOT_TBB_INCLUDE_DIR}/tbb
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_BINARY_DIR}/include/oneapi ${ROOT_TBB_INCLUDE_DIR}/oneapi
DEPENDEES install
)

file(MAKE_DIRECTORY ${ROOT_TBB_INCLUDE_DIR})
add_library(TBB::tbb IMPORTED STATIC GLOBAL)
add_dependencies(TBB::tbb BUILTIN_TBB)
set_target_properties(TBB::tbb PROPERTIES
IMPORTED_LOCATION ${ROOT_TBB_LIBRARY}
INTERFACE_INCLUDE_DIRECTORIES ${ROOT_TBB_INCLUDE_DIR})
target_compile_definitions(TBB::tbb INTERFACE TBB_SUPPRESS_DEPRECATED_MESSAGES=1)
if(MSVC)
target_compile_definitions(TBB::tbb INTERFACE __TBB_NO_IMPLICIT_LINKAGE=1)
endif()

set(TBB_FOUND ON PARENT_SCOPE)
set(TBB_VERSION ${ROOT_TBB_VERSION} PARENT_SCOPE)
set(TBB_INCLUDE_DIRS ${ROOT_TBB_INCLUDE_DIR} PARENT_SCOPE)
set(TBB_LIBRARIES ${ROOT_TBB_LIBRARY} PARENT_SCOPE)
Loading
Loading