diff options
author | DichenZhang1 <140119224+DichenZhang1@users.noreply.github.com> | 2023-11-10 10:18:32 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-10 10:18:32 -0800 |
commit | ffc65304379b57b1279277b3dcf334b9dd38d829 (patch) | |
tree | 96549b86ec3e00ad122a3ea833cdbe8167b9cb65 | |
parent | 2ca5b2aff25280c8be44ae55f7b472b8ea0b797f (diff) | |
parent | add968208c63e97718b28cc6a1e060e145008170 (diff) | |
download | libultrahdr-ffc65304379b57b1279277b3dcf334b9dd38d829.tar.gz |
Merge pull request #41 from ittiam-systems/buildfix
add missing built_byproducts for ninja builds
-rw-r--r-- | CMakeLists.txt | 100 | ||||
-rw-r--r-- | README.md | 16 | ||||
-rw-r--r-- | third_party/image_io/CMakeLists.txt | 34 |
3 files changed, 82 insertions, 68 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 86f378a..76a3b9a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -95,11 +95,18 @@ if(MSVC) if(UHDR_BUILD_FUZZERS) message(FATAL_ERROR "Building fuzzers not supported in MSVC path") endif() - add_compile_options($<$<CONFIG:>:/MT> - $<$<CONFIG:Debug>:/MTd> - $<$<CONFIG:MinSizeRel>:/MT> - $<$<CONFIG:Release>:/MT> - $<$<CONFIG:RelWithDebInfo>:/MT>) + foreach(flag_var + CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) + if(${flag_var} MATCHES "/MD") + string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") + endif() + if (${flag_var} MATCHES "/MDd") + string(REGEX REPLACE "/MDd" "/MTd" ${flag_var} "${${flag_var}}") + endif() + endforeach() add_definitions(-D_CRT_SECURE_NO_WARNINGS) # Disable specific warnings # TODO: None of these should be disabled, but for now,for a warning-free msvc build these are @@ -158,9 +165,6 @@ set(CMAKE_THREAD_PREFER_PTHREAD ON) set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) -# ImageIO -add_subdirectory("${THIRD_PARTY_DIR}/image_io") - include(ExternalProject) get_directory_property(UHDR_COMPILE_FLAGS COMPILE_OPTIONS) @@ -169,6 +173,23 @@ set(UHDR_CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${UHDR_COMPILE_FLAGS_STR}") set(UHDR_CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${UHDR_COMPILE_FLAGS_STR}") # libjpeg-turbo +set(JPEG_INCLUDE_DIRS + ${THIRD_PARTY_DIR}/libjpeg-turbo/ + ${CMAKE_CURRENT_BINARY_DIR}/libjpeg-turbo/src/libjpeg-turbo-build) + +if(IS_MULTI) + set(JPEG_LIBRARIES + ${CMAKE_CURRENT_BINARY_DIR}/libjpeg-turbo/src/libjpeg-turbo-build/$<CONFIG>/jpeg-static.lib) +else() + if(MSVC) + set(JPEG_LIBRARIES + ${CMAKE_CURRENT_BINARY_DIR}/libjpeg-turbo/src/libjpeg-turbo-build/jpeg-static.lib) + else() + set(JPEG_LIBRARIES + ${CMAKE_CURRENT_BINARY_DIR}/libjpeg-turbo/src/libjpeg-turbo-build/libjpeg.a) + endif() +endif() + ExternalProject_Add(libjpeg-turbo GIT_REPOSITORY https://github.com/libjpeg-turbo/libjpeg-turbo.git GIT_TAG 3.0.1 @@ -178,34 +199,16 @@ ExternalProject_Add(libjpeg-turbo CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_C_FLAGS=${UHDR_CMAKE_C_FLAGS} + -DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG} + -DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE} + -DCMAKE_C_FLAGS_MINSIZEREL=${CMAKE_C_FLAGS_MINSIZEREL} + -DCMAKE_C_FLAGS_RELWITHDEBINFO=${CMAKE_C_FLAGS_RELWITHDEBINFO} + BUILD_BYPRODUCTS ${JPEG_LIBRARIES} INSTALL_COMMAND "" ) -set(JPEG_INCLUDE_DIRS - ${THIRD_PARTY_DIR}/libjpeg-turbo/ - ${CMAKE_CURRENT_BINARY_DIR}/libjpeg-turbo/src/libjpeg-turbo-build) - -if(IS_MULTI) - set(JPEG_LIBRARIES - ${CMAKE_CURRENT_BINARY_DIR}/libjpeg-turbo/src/libjpeg-turbo-build/$<CONFIG>/jpeg-static.lib) -else() - set(JPEG_LIBRARIES - ${CMAKE_CURRENT_BINARY_DIR}/libjpeg-turbo/src/libjpeg-turbo-build/libjpeg.a) -endif() if(UHDR_BUILD_TESTS) # gtest and gmock - ExternalProject_Add(googletest - GIT_REPOSITORY https://github.com/google/googletest - GIT_TAG v1.14.0 - PREFIX ${CMAKE_CURRENT_BINARY_DIR}/googletest - SOURCE_DIR ${THIRD_PARTY_DIR}/googletest - CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DCMAKE_C_FLAGS=${UHDR_CMAKE_C_FLAGS} - -DCMAKE_CXX_FLAGS=${UHDR_CMAKE_CXX_FLAGS} - INSTALL_COMMAND "" - ) set(GTEST_INCLUDE_DIRS ${THIRD_PARTY_DIR}/googletest/googletest/include ${THIRD_PARTY_DIR}/googletest/googlemock/include) @@ -214,10 +217,31 @@ if(UHDR_BUILD_TESTS) ${CMAKE_CURRENT_BINARY_DIR}/googletest/src/googletest-build/lib/$<CONFIG>/gtest.lib ${CMAKE_CURRENT_BINARY_DIR}/googletest/src/googletest-build/lib/$<CONFIG>/gtest_main.lib) else() - set(GTEST_BOTH_LIBRARIES - ${CMAKE_CURRENT_BINARY_DIR}/googletest/src/googletest-build/lib/libgtest.a - ${CMAKE_CURRENT_BINARY_DIR}/googletest/src/googletest-build/lib/libgtest_main.a) + if(MSVC) + set(GTEST_BOTH_LIBRARIES + ${CMAKE_CURRENT_BINARY_DIR}/googletest/src/googletest-build/lib/gtest.lib + ${CMAKE_CURRENT_BINARY_DIR}/googletest/src/googletest-build/lib/gtest_main.lib) + else() + set(GTEST_BOTH_LIBRARIES + ${CMAKE_CURRENT_BINARY_DIR}/googletest/src/googletest-build/lib/libgtest.a + ${CMAKE_CURRENT_BINARY_DIR}/googletest/src/googletest-build/lib/libgtest_main.a) + endif() endif() + ExternalProject_Add(googletest + GIT_REPOSITORY https://github.com/google/googletest + GIT_TAG v1.14.0 + PREFIX ${CMAKE_CURRENT_BINARY_DIR}/googletest + SOURCE_DIR ${THIRD_PARTY_DIR}/googletest + CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_FLAGS=${UHDR_CMAKE_CXX_FLAGS} + -DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} + -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE} + -DCMAKE_CXX_FLAGS_MINSIZEREL=${CMAKE_CXX_FLAGS_MINSIZEREL} + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${CMAKE_CXX_FLAGS_RELWITHDEBINFO} + BUILD_BYPRODUCTS ${GTEST_BOTH_LIBRARIES} + INSTALL_COMMAND "" + ) endif() set_property(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES @@ -229,12 +253,20 @@ set_property(DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ########################################################### file(GLOB UHDR_LIB_LIST "${SOURCE_DIR}/*.cpp") file(GLOB UHDR_TEST_LIST "${TESTS_DIR}/*.cpp") +file(GLOB IMAGE_IO_LIST "${THIRD_PARTY_DIR}/image_io/src/**/*.cc") + set(COMMON_INCLUDE_LIST ${SOURCE_DIR} ${JPEG_INCLUDE_DIRS}) set(COMMON_LIBS_LIST ${JPEG_LIBRARIES} Threads::Threads) ########################################################### # Targets ########################################################### +add_library(image_io STATIC ${IMAGE_IO_LIST}) +target_include_directories(image_io PRIVATE + "${THIRD_PARTY_DIR}/image_io/includes" + "${THIRD_PARTY_DIR}/image_io/src/modp_b64" + "${THIRD_PARTY_DIR}/image_io/src/modp_b64/modp_b64") + add_library(ultrahdr STATIC ${UHDR_LIB_LIST}) add_dependencies(ultrahdr libjpeg-turbo) #target_compile_options(ultrahdr PRIVATE -Wall -Wextra -Wpedantic) @@ -78,6 +78,22 @@ This will generate the following files under *{build_directory/Release}*: **ultrahdr_unit_test.exe**<br> Unit tests +### Visual C++ (Command line) + + mkdir {build_directory} + cd {build_directory} + cmake -G "NMake Makefiles" -DUHDR_BUILD_TESTS=1 ../ + cmake --build ./ --config=Release + ctest + +This will generate the following files under *{build_directory}*: + +**ultrahdr.lib**<br> Static link library for the ultrahdr API + +**ultrahdr_app.exe**<br> Sample application demonstrating ultrahdr API + +**ultrahdr_unit_test.exe**<br> Unit tests + ### MinGW NOTE: This assumes that you are building on a Windows machine using the MSYS diff --git a/third_party/image_io/CMakeLists.txt b/third_party/image_io/CMakeLists.txt deleted file mode 100644 index 86d020e..0000000 --- a/third_party/image_io/CMakeLists.txt +++ /dev/null @@ -1,34 +0,0 @@ -# -# Copyright (C) 2023 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy of -# the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -# - -cmake_minimum_required(VERSION 3.5) - -project(ImageIO CXX) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_EXTENSIONS OFF) - -set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) - -file(GLOB IMAGE_IO_LIST "${SOURCE_DIR}/src/**/*.cc") - -add_library(image_io STATIC ${IMAGE_IO_LIST}) - -target_include_directories(image_io PRIVATE - "${SOURCE_DIR}/includes" - "${SOURCE_DIR}/src/modp_b64" - "${SOURCE_DIR}/src/modp_b64/modp_b64") |