11cmake_minimum_required (VERSION 3.12)
22
3+ ########################################
4+ # Project versioning
5+ ########################################
6+
37# Set project version from git tag or version.txt file
48function (get_versions versionstring VERSION_MAJOR VERSION_MINOR VERSION_PATCH)
59 string (REGEX REPLACE "^([vV])([0-9]*)([.][0-9]*[.][0-9]*-?.*)$" "\\ 2" numbers ${versionstring} )
@@ -52,21 +56,33 @@ if(VERSION_MAJOR STREQUAL ${VERSION_STRING})
5256endif ()
5357message ("OAPV VERSION=${VERSION_MAJOR} .${VERSION_MINOR} .${VERSION_PATCH} " )
5458
59+ project (OAPV VERSION ${VERSION_MAJOR} .${VERSION_MINOR} .${VERSION_PATCH} LANGUAGES C)
60+
61+ ########################################
62+ # Input arguments.
63+ ########################################
64+
5565# Check input arguments.
5666option (OAPV_APP_STATIC_BUILD "oapv_app will be statically linked against static oapv library" ON )
5767if (OAPV_APP_STATIC_BUILD)
5868 add_definitions (-DOAPV_STATIC_DEFINE)
5969endif (OAPV_APP_STATIC_BUILD)
6070
61- cmake_policy (SET CMP0048 NEW)
62- set (CMAKE_C_STANDARD 99)
71+ # To build for arm provide in command line: -DARM=TRUE
72+ if (NOT ARM)
73+ set (ARM "FALSE" )
74+ else ()
75+ add_definitions (-DARM=1)
76+ set (ARM "TRUE" )
77+ endif ()
6378
64- # Maps to a solution file (OAPV.sln).
65- project (OAPV VERSION ${VERSION_MAJOR} . ${VERSION_MINOR} . ${VERSION_PATCH} )
66- set_property ( GLOBAL PROPERTY USE_FOLDERS ON )
79+ ########################################
80+ # Compilation flags
81+ ########################################
6782
6883# Set compiler flags and options.
6984if ( MSVC )
85+ message ("Not supported yet!" )
7086elseif ( UNIX OR MINGW )
7187 if (NOT CMAKE_BUILD_TYPE )
7288 set (CMAKE_BUILD_TYPE "Release" )
@@ -81,20 +97,33 @@ elseif( UNIX OR MINGW )
8197 set (OPT_DBG "-DNDEBUG" ) # disable assert
8298 endif ()
8399
84- #set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OPT_DBG} -${OPT_LV} -fomit-frame-pointer -Wall -Wno-unused-function -Wno-unused-but-set-variable -Wno-unused-variable -Wno-attributes -Werror -Wno-strict-overflow -Wno-unknown-pragmas -Wno-stringop-overflow -std=c99")
85- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OPT_DBG} -${OPT_LV} -fomit-frame-pointer -Wall -Wno-unused-function -std=c99" )
86- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-pointer-sign -pthread -Wno-pointer-to-int-cast" )
100+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OPT_DBG} -${OPT_LV} -fomit-frame-pointer -pthread -std=c99" )
101+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-unused-function -Wno-pointer-sign -Wno-pointer-to-int-cast" )
87102 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lm" )
103+ else ()
104+ message ("Unknown compiler" )
88105endif ()
89106
90107# Command to output information to the console
91108message ("c Flags: " ${CMAKE_C_FLAGS} )
92109message ("linker Flags: " ${CMAKE_EXE_LINKER_FLAGS} )
93110
111+ ########################################
112+ # Configuration
113+ ########################################
114+
115+ set (CMAKE_C_STANDARD 99)
116+ cmake_policy (SET CMP0048 NEW)
117+ set_property (GLOBAL PROPERTY USE_FOLDERS ON )
118+
94119# Sub-directories where more CMakeLists.txt exist
95120add_subdirectory (src)
96121add_subdirectory (app)
97122
123+ ########################################
124+ # Targets
125+ ########################################
126+
98127# uninstall target
99128if (NOT TARGET uninstall)
100129 configure_file (
@@ -106,14 +135,20 @@ if(NOT TARGET uninstall)
106135 COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR} /cmake_uninstall.cmake)
107136endif ()
108137
138+ ########################################
139+ # CPack project packaging
140+ ########################################
141+
109142# Packaging
110143include (InstallRequiredSystemLibraries)
111144set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR} /LICENSE" )
112145set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR} /README.md" )
113146
114147set (CPACK_PACKAGE_NAME "OpenAPV" )
115148set (CPACK_PACKAGE_VENDOR "OpenAPV" )
116- set (CPACK_PACKAGE_CONTACT "https://github.com/openapv/oapv" )
149+ set (CPACK_PACKAGE_CONTACT "https://github.com/openapv" )
150+ set (CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/openapv/oapv/releases" )
151+ set (CMAKE_PROJECT_HOMEPAGE_URL "https://github.com/openapv/oapv" )
117152set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Open Advanced Professional Video Codec" )
118153set (CPACK_PACKAGE_VERSION "${PROJECT_VERSION} " )
119154set (CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR} " )
@@ -127,7 +162,10 @@ set(CPACK_GENERATOR "DEB")
127162
128163include (CPack)
129164
130- # Testing
165+ ########################################
166+ # Testing
167+ ########################################
168+
131169option (ENABLE_TESTS "Enable tests" ON )
132170if (${ENABLE_TESTS} )
133171 enable_testing ()
@@ -141,11 +179,19 @@ add_test(NAME Decoder_runs COMMAND ${CMAKE_CURRENT_BINARY_DIR}/bin/oapv_app_dec)
141179
142180# Test - encode
143181add_test (NAME encode COMMAND ${CMAKE_CURRENT_BINARY_DIR} /bin/oapv_app_enc -i ${CMAKE_CURRENT_SOURCE_DIR} /test /sequence/pattern1_yuv422p10le_320x240_25fps.y4m -w 320 -h 240 -z 25 -o out.oapv)
144- set_tests_properties (encode PROPERTIES FAIL_REGULAR_EXPRESSION "Encoded frame count = 0" )
145- set_tests_properties (encode PROPERTIES PASS_REGULAR_EXPRESSION "Encoded frame count = 125" )
182+ set_tests_properties (encode PROPERTIES
183+ TIMEOUT 20
184+ FAIL_REGULAR_EXPRESSION "Encoded frame count = 0"
185+ PASS_REGULAR_EXPRESSION "Encoded frame count = 125"
186+ RUN_SERIAL TRUE
187+ )
146188
147189# Test - decode
148190add_test (NAME decode COMMAND ${CMAKE_CURRENT_BINARY_DIR} /bin/oapv_app_dec -i out.oapv)
149- set_tests_properties (decode PROPERTIES FAIL_REGULAR_EXPRESSION "Decoded frame count = 0" )
150- set_tests_properties (decode PROPERTIES PASS_REGULAR_EXPRESSION "Decoded frame count = 125" )
151-
191+ set_tests_properties (decode PROPERTIES
192+ TIMEOUT 10
193+ DEPENDS encode
194+ FAIL_REGULAR_EXPRESSION "Decoded frame count = 0"
195+ PASS_REGULAR_EXPRESSION "Decoded frame count = 125"
196+ RUN_SERIAL TRUE
197+ )
0 commit comments