From 4677aec4d637459394ce357e3e4c430392a3a968 Mon Sep 17 00:00:00 2001 From: santiago046 <88282401+santiago046@users.noreply.github.com> Date: Fri, 26 Apr 2024 17:07:04 -0300 Subject: [PATCH 1/4] Refactor atlas/zimtool CMakeLists.txt --- ext/native/tools/CMakeLists.txt | 60 ++++++++++++++++----------------- 1 file changed, 29 insertions(+), 31 deletions(-) diff --git a/ext/native/tools/CMakeLists.txt b/ext/native/tools/CMakeLists.txt index 0547a25af72a..53b82104b12d 100644 --- a/ext/native/tools/CMakeLists.txt +++ b/ext/native/tools/CMakeLists.txt @@ -1,44 +1,42 @@ -cmake_minimum_required(VERSION 2.6) - +cmake_minimum_required(VERSION 3.8) project (Tools) -add_definitions(-O2) -add_definitions(-Wall) -add_definitions(-DSDL) -add_definitions(-Wno-multichar) -add_definitions(-fno-strict-aliasing) -#add_definitions(-fopenmp) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +add_compile_definitions(SDL MAX_LOGLEVEL=-1) +add_compile_options(-O2 -Wall -Wno-multichar -fno-strict-aliasing) +# Obsolete code? if(IOS) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++ -DMAX_LOGLEVEL=-1") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++") elseif(APPLE) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -mmacosx-version-min=10.7 -DMAX_LOGLEVEL=-1") -endif() - -if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7.0) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -DMAX_LOGLEVEL=-1") -else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -DMAX_LOGLEVEL=-1") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -mmacosx-version-min=10.7") endif() -# add_definitions(-fstrict-aliasing) +# Find dependencies +find_package(Freetype REQUIRED) +find_package(ZLIB REQUIRED) +find_library(UTIL util REQUIRED) +find_library(ZSTD zstd REQUIRED) -include_directories(..) -include_directories(../..) -include_directories(../../..) +include_directories(${FREETYPE_INCLUDE_DIRS} + ../ + ../../ + ../../../ +) -link_directories(/opt/local/lib) +add_subdirectory(../../libpng17 png17) -# Horrible horrible hack -include_directories(/usr/include/freetype2) -include_directories(/usr/local/include/freetype2) -include_directories(/opt/local/include/freetype2) -include_directories(/opt/local/include) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/build) -add_subdirectory(../../libpng17 png17) +set(COMMON_FILES + ../../../Common/Data/Format/PNGLoad.cpp + ../../../Common/Data/Format/ZIMSave.cpp +) -add_executable(build/atlastool atlastool.cpp ../../../Common/Data/Format/PNGLoad.cpp ../../../Common/Data/Encoding/Utf8.cpp ../../../Common/Data/Format/ZIMSave.cpp) -target_link_libraries(build/atlastool freetype util png17 z zstd) +# Both executables are linked to the same libraries +link_libraries(${FREETYPE_LIBRARIES} ${UTIL} png17 ${ZLIB_LIBRARIES} ${ZSTD}) -add_executable(build/zimtool zimtool.cpp ../../../Common/Data/Format/PNGLoad.cpp ../../../Common/Data/Format/ZIMSave.cpp) -target_link_libraries(build/zimtool freetype util png17 z zstd) +add_executable(atlastool atlastool.cpp ../../../Common/Data/Encoding/Utf8.cpp ${COMMON_FILES}) +add_executable(zimtool zimtool.cpp ${COMMON_FILES}) From adaa9fbbb4c7c51e4ee6986264c42980e853586d Mon Sep 17 00:00:00 2001 From: santiago046 <88282401+santiago046@users.noreply.github.com> Date: Fri, 26 Apr 2024 17:23:52 -0300 Subject: [PATCH 2/4] Update CMakeLists.txt --- ext/native/tools/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/native/tools/CMakeLists.txt b/ext/native/tools/CMakeLists.txt index 53b82104b12d..168067fd0a1b 100644 --- a/ext/native/tools/CMakeLists.txt +++ b/ext/native/tools/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.8) -project (Tools) +project(Tools) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) From 31bf179879be8e2041b29d1c21d19518d5aec878 Mon Sep 17 00:00:00 2001 From: santiago046 <88282401+santiago046@users.noreply.github.com> Date: Fri, 26 Apr 2024 17:31:27 -0300 Subject: [PATCH 3/4] Include ARM files in ext/libpng17/CMakeLists.txt for ARM processors Needed when building atlas/zimtool.It fixes this error: ``` /usr/bin/ld: png17/libpng17.a(pngrutil.c.o): in function `png_read_process_IDAT': pngrutil.c:(.text+0x548c): undefined reference to `png_init_filter_functions_neon' collect2: error: ld returned 1 exit status make[2]: *** [CMakeFiles/zimtool.dir/build.make:134: build/zimtool] Error 1 make[1]: *** [CMakeFiles/Makefile2:128: CMakeFiles/zimtool.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... ``` --- ext/libpng17/CMakeLists.txt | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/ext/libpng17/CMakeLists.txt b/ext/libpng17/CMakeLists.txt index d2829cd3fea1..7d6ae56ccb50 100644 --- a/ext/libpng17/CMakeLists.txt +++ b/ext/libpng17/CMakeLists.txt @@ -1,6 +1,7 @@ -cmake_minimum_required(VERSION 2.6) +cmake_minimum_required(VERSION 3.8) +project(libpng17) -add_library(png17 +add_library(png17 STATIC pngconf.h pngdebug.h png.c @@ -18,9 +19,24 @@ add_library(png17 pngrutil.c pngset.c pngstruct.h - pngtest.c pngtrans.c pngwio.c pngwrite.c pngwtran.c - pngwutil.c) + pngwutil.c +) + +# Add arm files for ARM processors +if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm(64)?|aarch64") + set (ARM_FILES arm/arm_init.c + ) + + # Check if it's 32 bit + if("${CMAKE_SIZEOF_VOID_P}" EQUAL 4) + list(APPEND ARM_FILES arm/filter_neon.S) + else() + list(APPEND ARM_FILES arm/filter_neon_intrinsics.c) + endif() + + target_sources(png17 PRIVATE ${ARM_FILES}) +endif() From 6979be0e3e124ca4c514cdef8a0328a1b744239b Mon Sep 17 00:00:00 2001 From: santiago046 <88282401+santiago046@users.noreply.github.com> Date: Fri, 26 Apr 2024 17:38:39 -0300 Subject: [PATCH 4/4] Update ext/libpng17/CMakeLists.txt --- ext/libpng17/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/ext/libpng17/CMakeLists.txt b/ext/libpng17/CMakeLists.txt index 7d6ae56ccb50..6c155a686a32 100644 --- a/ext/libpng17/CMakeLists.txt +++ b/ext/libpng17/CMakeLists.txt @@ -19,6 +19,7 @@ add_library(png17 STATIC pngrutil.c pngset.c pngstruct.h + pngtest.c pngtrans.c pngwio.c pngwrite.c