Package for Nix
All checks were successful
CMake / ubuntu-latest - shared=OFF, pthread=OFF, posix=OFF (push) Successful in 14s
CMake / ubuntu-latest - shared=ON, pthread=OFF, posix=OFF (push) Successful in 16s
CMake / ubuntu-latest - shared=OFF, pthread=OFF, posix=ON (push) Successful in 17s
CMake / ubuntu-latest - shared=ON, pthread=OFF, posix=ON (push) Successful in 16s
CMake / ubuntu-latest - shared=OFF, pthread=ON, posix=ON (push) Successful in 17s
CMake / ubuntu-latest - shared=ON, pthread=ON, posix=ON (push) Successful in 14s
All checks were successful
CMake / ubuntu-latest - shared=OFF, pthread=OFF, posix=OFF (push) Successful in 14s
CMake / ubuntu-latest - shared=ON, pthread=OFF, posix=OFF (push) Successful in 16s
CMake / ubuntu-latest - shared=OFF, pthread=OFF, posix=ON (push) Successful in 17s
CMake / ubuntu-latest - shared=ON, pthread=OFF, posix=ON (push) Successful in 16s
CMake / ubuntu-latest - shared=OFF, pthread=ON, posix=ON (push) Successful in 17s
CMake / ubuntu-latest - shared=ON, pthread=ON, posix=ON (push) Successful in 14s
Signed-off-by: Slendi <slendi@socopon.com>
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -6,3 +6,4 @@
|
|||||||
*.a
|
*.a
|
||||||
BUILD
|
BUILD
|
||||||
install
|
install
|
||||||
|
result
|
||||||
|
@@ -6,56 +6,48 @@ set(CMAKE_C_STANDARD 99)
|
|||||||
set(CMAKE_C_STANDARD_REQUIRED ON)
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||||
set(CMAKE_C_EXTENSIONS ON) # Would've done OFF but I need typeof (for now)
|
set(CMAKE_C_EXTENSIONS ON) # Would've done OFF but I need typeof (for now)
|
||||||
|
|
||||||
option(DCFG_BUILD_SHARED "Build DCFG as a shared library" ON)
|
option(DCFG_PTHREAD_SUPPORT "Enable pthreads support" ON)
|
||||||
option(DCFG_PTHREAD_SUPPORT "Enable pthreads support" ON)
|
option(DCFG_POSIX_SUPPORT "Enable POSIX support" ON)
|
||||||
option(DCFG_POSIX_SUPPORT "Enable POSIX support" ON)
|
option(DCFG_BUILD_PROGRAMS "Build DCFG example programs" ON)
|
||||||
option(DCFG_BUILD_PROGRAMS "Build DCFG example programs" ON)
|
|
||||||
|
|
||||||
find_package(Threads)
|
find_package(Threads)
|
||||||
|
|
||||||
set(SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
|
set(SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
|
||||||
set(INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
set(INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||||
|
|
||||||
if(DCFG_BUILD_SHARED)
|
# Shared library
|
||||||
add_library(${PROJECT_NAME} SHARED ${SRC_DIR}/dcfg.c)
|
add_library(${PROJECT_NAME}_shared SHARED ${SRC_DIR}/dcfg.c)
|
||||||
target_include_directories(${PROJECT_NAME} PUBLIC ${INCLUDE_DIR})
|
target_include_directories(${PROJECT_NAME}_shared PUBLIC ${INCLUDE_DIR})
|
||||||
|
set_target_properties(${PROJECT_NAME}_shared PROPERTIES OUTPUT_NAME "dcfg")
|
||||||
|
|
||||||
|
# Static library
|
||||||
|
add_library(${PROJECT_NAME}_static STATIC ${SRC_DIR}/dcfg.c)
|
||||||
|
target_include_directories(${PROJECT_NAME}_static PUBLIC ${INCLUDE_DIR})
|
||||||
|
set_target_properties(${PROJECT_NAME}_static PROPERTIES OUTPUT_NAME "dcfg")
|
||||||
|
|
||||||
|
# Common settings for both libraries
|
||||||
|
foreach(TARGET ${PROJECT_NAME}_shared ${PROJECT_NAME}_static)
|
||||||
if(DCFG_PTHREAD_SUPPORT)
|
if(DCFG_PTHREAD_SUPPORT)
|
||||||
find_package(Threads REQUIRED)
|
find_package(Threads REQUIRED)
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE Threads::Threads)
|
target_link_libraries(${TARGET} PRIVATE Threads::Threads)
|
||||||
target_compile_definitions(${PROJECT_NAME} PRIVATE DCFG_PTHREAD_SUPPORT)
|
target_compile_definitions(${TARGET} PRIVATE DCFG_PTHREAD_SUPPORT)
|
||||||
endif()
|
endif()
|
||||||
if (DCFG_POSIX_SUPPORT)
|
if(DCFG_POSIX_SUPPORT)
|
||||||
target_compile_definitions(${PROJECT_NAME} PRIVATE DCFG_POSIX_SUPPORT)
|
target_compile_definitions(${TARGET} PRIVATE DCFG_POSIX_SUPPORT)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "dcfg")
|
if(MSVC)
|
||||||
install(TARGETS ${PROJECT_NAME} DESTINATION lib)
|
target_compile_options(${TARGET} PRIVATE /W4 /permissive-)
|
||||||
else()
|
else()
|
||||||
add_library(${PROJECT_NAME} STATIC ${SRC_DIR}/dcfg.c)
|
target_compile_options(${TARGET} PRIVATE -Wall -Wextra -pedantic -Werror -Wno-newline-eof -Wno-language-extension-token)
|
||||||
target_include_directories(${PROJECT_NAME} PUBLIC ${INCLUDE_DIR})
|
|
||||||
|
|
||||||
if(DCFG_PTHREAD_SUPPORT)
|
|
||||||
find_package(Threads REQUIRED)
|
|
||||||
target_link_libraries(${PROJECT_NAME} PRIVATE Threads::Threads)
|
|
||||||
target_compile_definitions(${PROJECT_NAME} PRIVATE DCFG_PTHREAD_SUPPORT)
|
|
||||||
endif()
|
|
||||||
if (DCFG_POSIX_SUPPORT)
|
|
||||||
target_compile_definitions(${PROJECT_NAME} PRIVATE DCFG_POSIX_SUPPORT)
|
|
||||||
endif()
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "dcfg")
|
# Install libraries
|
||||||
install(TARGETS ${PROJECT_NAME} DESTINATION lib)
|
install(TARGETS ${PROJECT_NAME}_shared ${PROJECT_NAME}_static DESTINATION lib)
|
||||||
endif()
|
|
||||||
|
|
||||||
install(DIRECTORY ${INCLUDE_DIR}/ DESTINATION include)
|
install(DIRECTORY ${INCLUDE_DIR}/ DESTINATION include)
|
||||||
|
|
||||||
if(MSVC)
|
# Build example programs
|
||||||
target_compile_options(${PROJECT_NAME} PRIVATE /W4 /permissive-)
|
|
||||||
else()
|
|
||||||
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -pedantic -Werror -Wno-newline-eof -Wno-language-extension-token)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(DCFG_BUILD_PROGRAMS)
|
if(DCFG_BUILD_PROGRAMS)
|
||||||
set(PROGRAMS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/programs)
|
set(PROGRAMS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/programs)
|
||||||
file(GLOB PROGRAM_SOURCES "${PROGRAMS_DIR}/*.c")
|
file(GLOB PROGRAM_SOURCES "${PROGRAMS_DIR}/*.c")
|
||||||
@@ -64,7 +56,7 @@ if(DCFG_BUILD_PROGRAMS)
|
|||||||
get_filename_component(PROG_NAME ${PROG_SRC} NAME_WE)
|
get_filename_component(PROG_NAME ${PROG_SRC} NAME_WE)
|
||||||
add_executable(${PROG_NAME} ${PROG_SRC})
|
add_executable(${PROG_NAME} ${PROG_SRC})
|
||||||
target_include_directories(${PROG_NAME} PRIVATE ${INCLUDE_DIR})
|
target_include_directories(${PROG_NAME} PRIVATE ${INCLUDE_DIR})
|
||||||
target_link_libraries(${PROG_NAME} PRIVATE ${PROJECT_NAME})
|
target_link_libraries(${PROG_NAME} PRIVATE ${PROJECT_NAME}_shared)
|
||||||
if(DCFG_PTHREAD_SUPPORT)
|
if(DCFG_PTHREAD_SUPPORT)
|
||||||
target_link_libraries(${PROG_NAME} PRIVATE Threads::Threads)
|
target_link_libraries(${PROG_NAME} PRIVATE Threads::Threads)
|
||||||
endif()
|
endif()
|
||||||
|
14
flake.nix
14
flake.nix
@@ -20,7 +20,7 @@
|
|||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
devShells.default = pkgs.mkShell.override { stdenv = pkgs.llvmPackages_20.libcxxStdenv; } {
|
devShells.default = pkgs.mkShell {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
cmake
|
cmake
|
||||||
ninja
|
ninja
|
||||||
@@ -30,6 +30,18 @@
|
|||||||
tokei
|
tokei
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
packages.default = pkgs.stdenv.mkDerivation {
|
||||||
|
pname = "dcfg";
|
||||||
|
version = "master";
|
||||||
|
src = ./.;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkgs.cmake
|
||||||
|
pkgs.pkg-config
|
||||||
|
];
|
||||||
|
buildInputs = [ ];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user