Skip to content

Commit

Permalink
Merge pull request #309 from orbea/lib
Browse files Browse the repository at this point in the history
build: add version info for libasar
  • Loading branch information
randomdude999 committed Mar 11, 2024
2 parents 982544d + dd79887 commit b885b8d
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 4 deletions.
File renamed without changes.
61 changes: 57 additions & 4 deletions src/asar/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,15 @@ if (MSVC)
message(STATUS "In MSVC you can override MSVC_LIB_TYPE, valid values are D for dynamic and T for static")
endif()

set(ASAR_API_VERSION_MAJOR 3)
set(ASAR_API_VERSION_MINOR 3)
set(ASAR_API_VERSION_PATCH 0)
set(ASAR_API_VERSION ${ASAR_API_VERSION_MAJOR}.${ASAR_API_VERSION_MINOR}.${ASAR_API_VERSION_PATCH})

set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address")
set (CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fsanitize=address")

include(GNUInstallDirs)

# This macro sets a number of properties required by both,
# stand-alone application and library interface
Expand Down Expand Up @@ -127,6 +133,10 @@ endmacro()
# Add shared source files for Asar
set(ASAR_SHARED_SOURCE_FILES "")

set(ASAR_PUBLIC_HEADER
"${CMAKE_CURRENT_SOURCE_DIR}/../asar-dll-bindings/c/asar.h"
)

list(
APPEND ASAR_SHARED_SOURCE_FILES

Expand Down Expand Up @@ -167,7 +177,7 @@ list(
"${CMAKE_CURRENT_SOURCE_DIR}/arch-shared.h"
"${CMAKE_CURRENT_SOURCE_DIR}/virtualfile.h"
"${CMAKE_CURRENT_SOURCE_DIR}/dll_helper.h"
"${CMAKE_CURRENT_SOURCE_DIR}/interface-lib.h"
"${ASAR_PUBLIC_HEADER}"

"${CMAKE_CURRENT_SOURCE_DIR}/std-includes.h"
"${CMAKE_CURRENT_SOURCE_DIR}/platform/file-helpers.h"
Expand Down Expand Up @@ -244,7 +254,7 @@ if(ASAR_GEN_EXE)
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin"
)

install(TARGETS asar-standalone)
install(TARGETS asar-standalone DESTINATION ${CMAKE_INSTALL_BINDIR})

endif(ASAR_GEN_EXE)

Expand All @@ -269,12 +279,18 @@ if(ASAR_GEN_DLL)

set_target_properties(asar
PROPERTIES
VERSION "${ASAR_API_VERSION}"
SOVERSION "${ASAR_API_VERSION_MAJOR}"
PUBLIC_HEADER "${ASAR_PUBLIC_HEADER}"
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
)

install(TARGETS asar)
install(
TARGETS asar DESTINATION ${CMAKE_INSTALL_LIBDIR}
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/asar
)

endif(ASAR_GEN_DLL)

Expand All @@ -297,11 +313,48 @@ if (ASAR_GEN_LIB)

set_target_properties(asar-static
PROPERTIES
PUBLIC_HEADER "${ASAR_PUBLIC_HEADER}"
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/lib"
)

install(TARGETS asar-static)
install(
TARGETS asar-static DESTINATION ${CMAKE_INSTALL_LIBDIR}
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/asar
)

endif()





# Define a pkgconfig file

if (ASAR_GEN_DLL OR ASAR_GEN_LIB)
set (ASAR_PROJECT_NAME "asar")
set (ASAR_PKGCONFIG_NAME "lib/lib${ASAR_PROJECT_NAME}.pc")

include(lib/JoinPaths.cmake)

join_paths(
ASAR_PKGCONF_LIBDIR "\${prefix}" "${CMAKE_INSTALL_LIBDIR}"
)

join_paths(
ASAR_PKGCONF_INCLUDEDIR "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}"
)

configure_file(
"${ASAR_PKGCONFIG_NAME}.in"
"${CMAKE_CURRENT_BINARY_DIR}/${ASAR_PKGCONFIG_NAME}"
@ONLY
)

install(
FILES "${CMAKE_CURRENT_BINARY_DIR}/${ASAR_PKGCONFIG_NAME}"
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
)

endif()
26 changes: 26 additions & 0 deletions src/asar/lib/JoinPaths.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# This module provides a function for joining paths
# known from most languages
#
# SPDX-License-Identifier: (MIT OR CC0-1.0)
# Copyright 2020 Jan Tojnar
# https://github.com/jtojnar/cmake-snips
#
# Modelled after Python’s os.path.join
# https://docs.python.org/3.7/library/os.path.html#os.path.join
# Windows not supported
function(join_paths joined_path first_path_segment)
set(temp_path "${first_path_segment}")
foreach(current_segment IN LISTS ARGN)
if(NOT ("${current_segment}" STREQUAL ""))
string(REGEX REPLACE "^${CMAKE_INSTALL_PREFIX}/?" "" new_segment "${current_segment}")
if(NOT ("${new_segment}" STREQUAL ""))
if(NOT IS_ABSOLUTE "${current_segment}" OR NOT "${current_segment}" MATCHES "^${new_segment}$")
set(temp_path "${temp_path}/${new_segment}")
else()
set(temp_path "${current_segment}")
endif()
endif()
endif()
endforeach()
set(${joined_path} "${temp_path}" PARENT_SCOPE)
endfunction()
12 changes: 12 additions & 0 deletions src/asar/lib/libasar.pc.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=${prefix}
libdir=@ASAR_PKGCONF_LIBDIR@
includedir=@ASAR_PKGCONF_INCLUDEDIR@

Name: lib@ASAR_PROJECT_NAME@
URL: https://github.com/RPGHacker/asar
Description: SNES assembler
Version: @ASAR_API_VERSION@

Libs: -L${libdir} -l@ASAR_PROJECT_NAME@
Cflags: -I${includedir}/@ASAR_PROJECT_NAME@

0 comments on commit b885b8d

Please sign in to comment.