somake/CMakeLists.txt
snow flurry cbcffb4717 CMakeLists.txt: set std=gnu++98
Required to fix a few errors where some enum->int->wchar_t* casting
happens.
2023-02-27 22:45:15 -08:00

103 lines
3.8 KiB
CMake

# 2016, Georg Sauthoff <mail@georg.so>
cmake_minimum_required(VERSION 2.8)
project(somake C CXX)
include(CheckFunctionExists)
check_function_exists(wcsdup HAVE_WCSDUP)
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
find_package(PkgConfig)
pkg_search_module(BSD libbsd)
if (BSD_LIBRARIES)
set(HAVE_CLOSEFROM 1)
endif()
else()
check_function_exists(closefrom HAVE_CLOSEFROM)
endif()
configure_file(config.h.in config.h)
if(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
find_library(NSL_LIB NAMES nsl)
# prefer the OpenCSW libintl over the one from /usr/lib
find_library(INTL_LIB NAMES intl HINTS /opt/csw/lib)
endif()
add_library(mksh STATIC
lib/mksh/dosys.cc lib/mksh/globals.cc lib/mksh/i18n.cc lib/mksh/macro.cc
lib/mksh/misc.cc lib/mksh/mksh.cc lib/mksh/read.cc
)
add_library(vroot STATIC
lib/vroot/access.cc lib/vroot/chown.cc lib/vroot/lock.cc
lib/vroot/open.cc lib/vroot/setenv.cc lib/vroot/utimes.cc
lib/vroot/args.cc lib/vroot/chroot.cc lib/vroot/lstat.cc
lib/vroot/readlink.cc lib/vroot/stat.cc lib/vroot/vroot.cc
lib/vroot/chdir.cc lib/vroot/creat.cc lib/vroot/mkdir.cc
lib/vroot/report.cc lib/vroot/truncate.cc lib/vroot/chmod.cc
lib/vroot/execve.cc lib/vroot/mount.cc lib/vroot/rmdir.cc
lib/vroot/unlink.cc
)
add_executable(${PROJECT_NAME}
bin/ar.cc bin/depvar.cc bin/doname.cc bin/dosys.cc
bin/files.cc bin/globals.cc bin/implicit.cc bin/macro.cc
bin/main.cc bin/misc.cc bin/nse_printdep.cc bin/parallel.cc
bin/pmake.cc bin/read.cc bin/read2.cc bin/rep.cc
bin/state.cc
lib/bsd/bsd.cc
comp/progname.c comp/wcsdup.c
)
set_property(TARGET ${PROJECT_NAME} mksh vroot PROPERTY INCLUDE_DIRECTORIES
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${BSD_INCLUDE_DIRS}
)
set_property(TARGET ${PROJECT_NAME} mksh vroot PROPERTY CXX_STANDARD 98)
target_link_libraries(${PROJECT_NAME}
mksh vroot pthread ${BSD_LIBRARIES} ${NSL_LIB} ${INTL_LIB}
)
# default install prefix is /usr/local
# change it with e.g. -DCMAKE_INSTALL_PREFIX=/usr
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)
install(FILES man/man1/make.1 DESTINATION share/man/man1
RENAME ${PROJECT_NAME}.1)
install(FILES bin/make.rules.file DESTINATION share/${PROJECT_NAME}
RENAME make.rules)
install(FILES bin/svr4.make.rules.file DESTINATION share/${PROJECT_NAME}
RENAME svr4.make.rules)
install(FILES COPYING
README.md
DESTINATION share/doc/${PROJECT_NAME}
)
install(DIRECTORY example DESTINATION share/doc/${PROJECT_NAME}
)
# select the package generator with e.g. -DCPACK_GENERATOR='RPM;DEB'
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "illumos dmake, Sun make compatible")
set(CPACK_PACKAGE_CONTACT "mail@georg.so")
set(CPACK_PACKAGE_VENDOR "misc")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README_pkg.txt")
set(CPACK_RPM_PACKAGE_LICENSE "CDDL")
# used by some generators like NSI, is only displayed in the installer
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
# only used by some generators
set(CPACK_PACKAGE_INSTALL_DIRECTORY
"${PROJECT_NAME}-${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_MAJOR "0")
set(CPACK_PACKAGE_VERSION_MINOR "6")
set(CPACK_PACKAGE_VERSION_PATCH "0")
set(CPACK_RPM_PACKAGE_GROUP "Development/Tools")
set(CPACK_RPM_PACKAGE_URL "https://github.com/gsauthof/somake")
set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION
"/usr/share/man" "/usr/share/man/man1")
# CPackDeb default to CPACK_PACKAGE_DESCRIPTION_SUMMARY, although
# the long description makes more sense ...
file(READ ${CPACK_PACKAGE_DESCRIPTION_FILE} CPACK_DEBIAN_PACKAGE_DESCRIPTION)
include(CPack)