gpu_neon: revive the old tests
[pcsx_rearmed.git] / deps / libchdr / CMakeLists.txt
CommitLineData
b24e7fce 1cmake_minimum_required(VERSION 3.9)
2
9e052883 3project(chdr VERSION 0.2 LANGUAGES C)
b24e7fce 4
5if(CMAKE_PROJECT_NAME STREQUAL "chdr")
6 option(BUILD_SHARED_LIBS "Build libchdr also as a shared library" ON)
7endif()
8option(INSTALL_STATIC_LIBS "Install static libraries" OFF)
9option(WITH_SYSTEM_ZLIB "Use system provided zlib library" OFF)
10
9e052883 11option(BUILD_LTO "Compile libchdr with link-time optimization if supported" OFF)
12if(BUILD_LTO)
13 include(CheckIPOSupported)
14 check_ipo_supported(RESULT HAVE_IPO)
15 if(HAVE_IPO)
16 set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
17 endif()
b24e7fce 18endif()
19
b24e7fce 20include(GNUInstallDirs)
21
b24e7fce 22#--------------------------------------------------
23# dependencies
24#--------------------------------------------------
25
26
27# lzma
f535537f 28add_subdirectory(deps/lzma-24.05 EXCLUDE_FROM_ALL)
b24e7fce 29 list(APPEND CHDR_LIBS lzma)
30 list(APPEND CHDR_INCLUDES lzma)
31
32# zlib
33if (WITH_SYSTEM_ZLIB)
9e052883 34 find_package(ZLIB REQUIRED)
35 list(APPEND PLATFORM_LIBS ZLIB::ZLIB)
b24e7fce 36else()
648db22b 37 option(ZLIB_BUILD_EXAMPLES "Enable Zlib Examples" OFF)
38 add_subdirectory(deps/zlib-1.3.1 EXCLUDE_FROM_ALL)
9e052883 39 set_target_properties(zlibstatic PROPERTIES POSITION_INDEPENDENT_CODE ON)
40 list(APPEND CHDR_LIBS zlibstatic)
b24e7fce 41endif()
42
f535537f 43# zstd
44option(ZSTD_BUILD_SHARED "BUILD SHARED LIBRARIES" OFF)
45option(ZSTD_BUILD_PROGRAMS "BUILD PROGRAMS" OFF)
46add_subdirectory(deps/zstd-1.5.6/build/cmake EXCLUDE_FROM_ALL)
47list(APPEND CHDR_LIBS libzstd_static)
b24e7fce 48#--------------------------------------------------
49# chdr
50#--------------------------------------------------
51
52set(CHDR_SOURCES
53 src/libchdr_bitstream.c
54 src/libchdr_cdrom.c
55 src/libchdr_chd.c
56 src/libchdr_flac.c
57 src/libchdr_huffman.c
58)
59
60list(APPEND CHDR_INCLUDES ${CMAKE_CURRENT_BINARY_DIR}/include)
61
62add_library(chdr-static STATIC ${CHDR_SOURCES})
9e052883 63target_include_directories(chdr-static PRIVATE ${CHDR_INCLUDES} PUBLIC include)
b24e7fce 64target_link_libraries(chdr-static PRIVATE ${CHDR_LIBS} ${PLATFORM_LIBS})
65
9e052883 66if(MSVC)
67 target_compile_definitions(chdr-static PRIVATE _CRT_SECURE_NO_WARNINGS)
68endif()
69
b24e7fce 70if (INSTALL_STATIC_LIBS)
71 install(TARGETS chdr-static ${CHDR_LIBS}
72 ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
73 )
74endif()
75
76if (BUILD_SHARED_LIBS)
b24e7fce 77 add_library(chdr SHARED ${CHDR_SOURCES})
9e052883 78 target_include_directories(chdr PRIVATE ${CHDR_INCLUDES} PUBLIC include)
b24e7fce 79 target_link_libraries(chdr PRIVATE ${CHDR_LIBS} ${PLATFORM_LIBS})
80
81 if(MSVC)
82 target_compile_definitions(chdr PUBLIC "CHD_DLL")
83 target_compile_definitions(chdr PRIVATE "CHD_DLL_EXPORTS")
9e052883 84 target_compile_definitions(chdr PRIVATE _CRT_SECURE_NO_WARNINGS)
b24e7fce 85 elseif(APPLE)
9e052883 86 target_link_libraries(chdr PRIVATE -Wl,-dead_strip -Wl,-exported_symbol,_chd_*)
f535537f 87 elseif(CMAKE_SYSTEM_NAME STREQUAL OpenBSD)
88 target_link_libraries(chdr PRIVATE -Wl,--version-script ${CMAKE_CURRENT_SOURCE_DIR}/src/link.T)
b24e7fce 89 else()
9e052883 90 target_link_libraries(chdr PRIVATE -Wl,--version-script ${CMAKE_CURRENT_SOURCE_DIR}/src/link.T -Wl,--no-undefined)
b24e7fce 91 endif()
92
9e052883 93 set_target_properties(chdr PROPERTIES C_VISIBILITY_PRESET hidden)
94 set_target_properties(chdr PROPERTIES VISIBILITY_INLINES_HIDDEN 1)
b24e7fce 95 set_target_properties(chdr PROPERTIES PUBLIC_HEADER "include/libchdr/bitstream.h;include/libchdr/cdrom.h;include/libchdr/chd.h;include/libchdr/chdconfig.h;include/libchdr/coretypes.h;include/libchdr/flac.h;include/libchdr/huffman.h")
9e052883 96 set_target_properties(chdr PROPERTIES VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}" SOVERSION ${PROJECT_VERSION_MAJOR})
b24e7fce 97
98 if (CMAKE_BUILD_TYPE MATCHES Release)
99 #add_custom_command(TARGET chdr POST_BUILD COMMAND ${CMAKE_STRIP} libchdr.so)
100 endif (CMAKE_BUILD_TYPE MATCHES Release)
101
102 install(TARGETS chdr
103 LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
104 ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
105 PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/libchdr"
106 )
107
108 configure_file(pkg-config.pc.in ${CMAKE_BINARY_DIR}/libchdr.pc @ONLY)
109 install(FILES ${CMAKE_BINARY_DIR}/libchdr.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
110endif()
111
9e052883 112add_subdirectory(tests)