aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRam Mohan M <ram.mohan@ittiam.com>2023-11-07 21:18:48 +0530
committerharish.mahendrakar@ittiam.com <harish.mahendrakar@ittiam.com>2023-11-10 15:22:06 +0000
commitadd968208c63e97718b28cc6a1e060e145008170 (patch)
tree96549b86ec3e00ad122a3ea833cdbe8167b9cb65
parent971d6a7224e738ffb394e9e4a12e1c7aad26daf1 (diff)
downloadlibultrahdr-add968208c63e97718b28cc6a1e060e145008170.tar.gz
update for nmake build
-rw-r--r--CMakeLists.txt61
-rw-r--r--README.md16
-rw-r--r--third_party/image_io/CMakeLists.txt34
3 files changed, 61 insertions, 50 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a76a054..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)
@@ -177,8 +181,13 @@ 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)
+ 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
@@ -190,6 +199,10 @@ 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 ""
)
@@ -204,20 +217,28 @@ 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_C_COMPILER=${CMAKE_C_COMPILER}
- -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
+ CMAKE_ARGS -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}
+ -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 ""
)
@@ -232,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)
diff --git a/README.md b/README.md
index b7bc27b..27e5361 100644
--- a/README.md
+++ b/README.md
@@ -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")