CMake updates (#302)

* Add BUILD_SHARED_LIBS option to choose between shared and static lib

* Fix build break for Android aarch64

* Install built target

* Set the correct version number

* Don't add include dirs through CFlags. Include dirs are already set as target property

* Install all relevant headers, not just from include dir

* Update note about BUILD_SHARED_LIBS in README.md

* Fix mistake in README.md, option(BUILD_SHARED_LIBS ON) sets the lib to shared by default
This commit is contained in:
Vilius Sutkus '89 2024-06-19 22:02:50 +03:00 committed by GitHub
parent d9f2b0f21a
commit 87e5f0b3f2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 11 additions and 12 deletions

View File

@ -1,11 +1,12 @@
cmake_minimum_required(VERSION 3.25) cmake_minimum_required(VERSION 3.25)
project(openlibm project(openlibm
VERSION 0.8.0 VERSION 0.8.2
LANGUAGES C ASM) LANGUAGES C ASM)
add_library("${PROJECT_NAME}" SHARED) option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
add_library("${PROJECT_NAME}")
# Find the relevant folder depending on the architecture # Find the relevant folder depending on the architecture
set(OPENLIBM_ARCH_FOLDER ${CMAKE_SYSTEM_PROCESSOR}) set(OPENLIBM_ARCH_FOLDER ${CMAKE_SYSTEM_PROCESSOR})
@ -13,7 +14,7 @@ string(TOLOWER "${OPENLIBM_ARCH_FOLDER}" OPENLIBM_ARCH_FOLDER)
if(${OPENLIBM_ARCH_FOLDER} STREQUAL "amd64" OR ${OPENLIBM_ARCH_FOLDER} STREQUAL "x86_64") if(${OPENLIBM_ARCH_FOLDER} STREQUAL "amd64" OR ${OPENLIBM_ARCH_FOLDER} STREQUAL "x86_64")
set(OPENLIBM_ARCH_FOLDER "amd64") set(OPENLIBM_ARCH_FOLDER "amd64")
elseif(${OPENLIBM_ARCH_FOLDER} MATCHES "arm64") elseif(${OPENLIBM_ARCH_FOLDER} STREQUAL "arm64" OR ${OPENLIBM_ARCH_FOLDER} STREQUAL "aarch64")
set(OPENLIBM_ARCH_FOLDER "aarch64") set(OPENLIBM_ARCH_FOLDER "aarch64")
elseif(${OPENLIBM_ARCH_FOLDER} STREQUAL "x86") elseif(${OPENLIBM_ARCH_FOLDER} STREQUAL "x86")
set(OPENLIBM_ARCH_FOLDER "i387") set(OPENLIBM_ARCH_FOLDER "i387")
@ -51,13 +52,6 @@ if(OPENLIBM_SUPPRESS_WARNINGS)
list(APPEND C_ASM_COMPILE_FLAGS "-w") list(APPEND C_ASM_COMPILE_FLAGS "-w")
endif() endif()
list(APPEND C_ASM_COMPILE_FLAGS
"-I${PROJECT_SRC}"
"-I${PROJECT_SRC}/include"
"-I${PROJECT_SRC}/${OPENLIBM_ARCH_FOLDER}"
"-I${PROJECT_SRC}/src"
)
# Add compile flags # Add compile flags
target_compile_options("${PROJECT_NAME}" PUBLIC ${C_ASM_COMPILE_FLAGS}) target_compile_options("${PROJECT_NAME}" PUBLIC ${C_ASM_COMPILE_FLAGS})
@ -547,3 +541,7 @@ else()
endif() endif()
target_include_directories("${PROJECT_NAME}" PUBLIC ${OPENLIBM_INCLUDE_DIRS}) target_include_directories("${PROJECT_NAME}" PUBLIC ${OPENLIBM_INCLUDE_DIRS})
file(GLOB PUBLIC_HEADERS "*.h" "include/*.h" "${OPENLIBM_ARCH_FOLDER}/*.h" "src/*.h")
set_target_properties("${PROJECT_NAME}" PROPERTIES PUBLIC_HEADER "${PUBLIC_HEADERS}")
install (TARGETS "${PROJECT_NAME}")

View File

@ -61,8 +61,9 @@ qemu-$ARCH-static -L . -L /usr/$TRIPLE/ test/test-double
or generate project with build system of choice e.g. `cmake /path/to/openlib/ -G "MinGW Makefiles"`. or generate project with build system of choice e.g. `cmake /path/to/openlib/ -G "MinGW Makefiles"`.
3. Build with the build system with `cmake --build .`. 3. Build with the build system with `cmake --build .`.
Default CMake configuration builds a shared library, this can easily be changed by replacing Default CMake configuration builds a shared library, this can easily be configured using
the keyword in the `add_library()` command in the `CMakeLists.txt`. [BUILD_SHARED_LIBS](https://cmake.org/cmake/help/latest/variable/BUILD_SHARED_LIBS.html)
configuration option.
## Acknowledgements ## Acknowledgements