Skip to content

Commit

Permalink
[cmake] add CXXFLAGS/LDFLAGS functional test and its several fixes (#302
Browse files Browse the repository at this point in the history
)
  • Loading branch information
hkrn authored Apr 2, 2023
1 parent 5209acf commit 1e7f412
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 15 deletions.
6 changes: 4 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,21 @@ env:
jobs:
build-linux:
runs-on: ubuntu-latest
# libc++/libc++abi are not prerequsite libraries but specifies to test CXXFLAGS/LDFLAGS are functional
env:
CC: clang
CXX: clang++
CXXFLAGS: -stdlib=libc++
LDFLAGS: -lc++abi
steps:
- name: checkout
uses: actions/checkout@v3
with:
submodules: recursive
# Assumes clang/cmake/libc++/libc++abi are installed on GitHub Actions Runner
- name: setup prerequisite packages
run: |
sudo apt-get update && sudo apt-get install -y \
clang \
cmake \
libasound-dev \
libgtk-3-dev \
libglu1-mesa-dev \
Expand Down
5 changes: 5 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,11 @@ function(nanoem_cmake_bootstrap _project_name_prefix _build_type)
set(nanoem_cxxflags "${nanoem_cxxflags} ${CMAKE_CXX_FLAGS_UBSAN}")
set(nanoem_exe_linker_flags "${nanoem_exe_linker_flags} ${CMAKE_EXE_LINKER_FLAGS_UBSAN}")
set(nanoem_shared_linker_flags "${nanoem_shared_linker_flags} ${CMAKE_SHARED_LINKER_FLAGS_UBSAN}")
else()
set(nanoem_cflags "${nanoem_cflags} ${CMAKE_C_FLAGS}")
set(nanoem_cxxflags "${nanoem_cxxflags} ${CMAKE_CXX_FLAGS}")
set(nanoem_exe_linker_flags "${nanoem_exe_linker_flags} ${CMAKE_EXE_LINKER_FLAGS}")
set(nanoem_shared_linker_flags "${nanoem_shared_linker_flags} ${CMAKE_SHARED_LINKER_FLAGS}")
endif()
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set(nanoem_cflags "${nanoem_cflags} -std=c++14")
Expand Down
6 changes: 0 additions & 6 deletions nanoem/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,6 @@ endif()

# Bullet Physics for optional nanoem prerequisite
if(NANOEM_ENABLE_BULLET)
set(__CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ${CMAKE_FIND_ROOT_PATH_MODE_INCLUDE})
set(__CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ${CMAKE_FIND_ROOT_PATH_MODE_LIBRARY})
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER)
nanoem_cmake_get_install_path("bullet3" BULLET_BASE_PATH BULLET_INSTALL_PATH_DEBUG BULLET_INSTALL_PATH_RELEASE)
find_path(BULLET_INCLUDE_DIR NAMES btBulletCollisionCommon.h PATH_SUFFIXES include/bullet include PATHS ${BULLET_INSTALL_PATH_RELEASE} NO_DEFAULT_PATH)
find_library(BULLET_COLLISION_LIBRARY_DEBUG NAMES BulletCollision PATH_SUFFIXES lib PATHS ${BULLET_INSTALL_PATH_DEBUG} NO_DEFAULT_PATH)
Expand All @@ -85,8 +81,6 @@ if(NANOEM_ENABLE_BULLET)
$<$<NOT:$<CONFIG:DEBUG>>:${BULLET_DYNAMICS_LIBRARY_RELEASE}>
$<$<NOT:$<CONFIG:DEBUG>>:${BULLET_COLLISION_LIBRARY_RELEASE}>
$<$<NOT:$<CONFIG:DEBUG>>:${BULLET_LINEAR_MATH_LIBRARY_RELEASE}>)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ${__CMAKE_FIND_ROOT_PATH_MODE_INCLUDE})
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ${__CMAKE_FIND_ROOT_PATH_MODE_LIBRARY})
message(STATUS "[nanoem] bullet is located at ${BULLET_BASE_PATH}")
message(STATUS "[nanoem] physics simulation using bullet extension is enabled")
endif()
Expand Down
31 changes: 24 additions & 7 deletions scripts/build.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,19 @@ else()
set(_make_flags -j1)
endif()

function(get_compiler_flags _cflags _cxxflags)
set(_inner_cflags "-std=c99")
if(DEFINED ENV{CFLAGS})
set(_inner_cflags "${_inner_cflags} $ENV{CFLAGS}")
endif()
set(_inner_cxxflags "-std=c++14")
if(DEFINED ENV{CXXFLAGS})
set(_inner_cxxflags "${_inner_cxxflags} $ENV{CXXFLAGS}")
endif()
set(${_cflags} ${_inner_cflags} PARENT_SCOPE)
set(${_cxxflags} ${_inner_cxxflags} PARENT_SCOPE)
endfunction()

function(rewrite_ninja_ub_workaround _build_path)
if(EXISTS ${_build_path}/build.ninja)
file(STRINGS ${_build_path}/build.ninja input_ninja NEWLINE_CONSUME)
Expand Down Expand Up @@ -390,8 +403,7 @@ function(compile_icu4c _cmake_build_type _generator _toolset_option _arch_option
set(_build_flags "${_build_flags} -O2")
set(_configure_flags --enable-release)
endif()
set(_cflags "${_build_flags} -std=c99")
set(_cxxflags "${_build_flags} -std=c++11")
get_compiler_flags(_cflags _cxxflags)
# see https://unicode-org.github.io/icu/userguide/icu_data/buildtool.html#icu-data-configuration-file for more details of ICU_DATA_FILTER_FILE
execute_process(COMMAND
${CMAKE_COMMAND} -E env
Expand Down Expand Up @@ -706,21 +718,26 @@ foreach(arch_item ${ARCH_LIST})
set(global_cmake_flags "${_gcc_flags}")
endif()
else()
get_compiler_flags(_cflags _cxxflags)
if(NOT target_generator)
set(target_generator "Ninja")
endif()
if(target_compiler)
set(global_cmake_flags "-DCMAKE_CXX_FLAGS='-std=c++14'")
list(APPEND _compiler_flags "-DCMAKE_C_FLAGS='${_cflags}'")
list(APPEND _compiler_flags "-DCMAKE_CXX_FLAGS='${_cxxflags}'")
set(global_cmake_flags "${_compiler_flags}")
else()
if(APPLE)
set(target_compiler "clang")
list(APPEND _clang_flags "-DCMAKE_C_FLAGS='-std=c99'")
list(APPEND _clang_flags "-DCMAKE_CXX_FLAGS='-std=c++14'")
list(APPEND _clang_flags "-DCMAKE_C_FLAGS='${_cflags}'")
list(APPEND _clang_flags "-DCMAKE_CXX_FLAGS='${_cxxflags}'")
set(global_cmake_flags "${_clang_flags}")
else()
set(target_compiler "gcc")
list(APPEND _gcc_flags "-DCMAKE_C_FLAGS='-std=c99 -fPIC'")
list(APPEND _gcc_flags "-DCMAKE_CXX_FLAGS='-std=c++14 -fPIC'")
set(_cflags "${_cflags} -fPIC")
set(_cflags "${_cxxflags} -fPIC")
list(APPEND _gcc_flags "-DCMAKE_C_FLAGS='${_cflags}'")
list(APPEND _gcc_flags "-DCMAKE_CXX_FLAGS='${_cxxflags}'")
set(global_cmake_flags "${_gcc_flags}")
endif()
endif()
Expand Down

0 comments on commit 1e7f412

Please sign in to comment.