From 59983adbba71b7f0a3b2ce4503e64e3ba7cb2854 Mon Sep 17 00:00:00 2001 From: Mattia Verga Date: Sun, 8 Jan 2023 16:08:24 +0100 Subject: [PATCH] Add cmake directives Signed-off-by: Mattia Verga --- CMakeLists.txt | 76 +++++++++++++++++++++++++++++++ GUI/xephem/CMakeLists.txt | 95 +++++++++++++++++++++++++++++++++++++++ libastro/CMakeLists.txt | 69 ++++++++++++++++++++++++++++ libip/CMakeLists.txt | 26 +++++++++++ libjpegd/CMakeLists.txt | 40 +++++++++++++++++ liblilxml/CMakeLists.txt | 16 +++++++ libpng/CMakeLists.txt | 30 +++++++++++++ libz/CMakeLists.txt | 25 +++++++++++ 8 files changed, 377 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 GUI/xephem/CMakeLists.txt create mode 100644 libastro/CMakeLists.txt create mode 100644 libip/CMakeLists.txt create mode 100644 libjpegd/CMakeLists.txt create mode 100644 liblilxml/CMakeLists.txt create mode 100644 libpng/CMakeLists.txt create mode 100644 libz/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..b618a69 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,76 @@ +cmake_minimum_required(VERSION 3.10) + +project(xephem VERSION 4.1.0 LANGUAGES C) +set(DISPLAY_NAME "XEphem") +set(CMAKE_C_STANDARD 17) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) + +# Required packages +find_package(Motif REQUIRED) +find_package(OpenSSL REQUIRED) +find_package(X11 REQUIRED) + +# Optional packages +find_package(JPEG) +find_package(PNG) +find_package(ZLIB) + +# Define installation directories +if((NOT WIN32) AND (NOT NATIVE_OSX_APP)) + include(GNUInstallDirs) +endif() +if(NATIVE_OSX_APP) + set(CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/${PROJECT_NAME}.app/Contents") + set(CMAKE_INSTALL_FULL_LOCALEDIR "${CMAKE_INSTALL_PREFIX}/Resources/locale") + set(CMAKE_INSTALL_BINDIR "MacOS") + set(XEPHEM_DATADIR "${CMAKE_INSTALL_PREFIX}/Resources") +elseif(WIN32) + set(CMAKE_INSTALL_BINDIR ".") + set(CMAKE_INSTALL_DATAROOTDIR ".") + set(CMAKE_INSTALL_DATADIR ".") + set(CMAKE_INSTALL_FULL_LOCALEDIR "locale") + set(CMAKE_INSTALL_LOCALEDIR "${CMAKE_INSTALL_FULL_LOCALEDIR}") + set(XEPHEM_DATADIR "${CMAKE_INSTALL_DATADIR}") +else() + set(XEPHEM_DATADIR "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}") +endif() + +# Build libraries +add_subdirectory(libastro) +add_subdirectory(libip) +if(NOT JPEG_FOUND) + add_subdirectory(libjpegd) +endif() +add_subdirectory(liblilxml) +if(NOT PNG_FOUND) + add_subdirectory(libpng) +endif() +if(NOT ZLIB_FOUND) + add_subdirectory(libz) +endif() + +# Build main program +add_subdirectory(GUI/xephem) + +# Install +install(TARGETS xephem + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +install(FILES ${CMAKE_BINARY_DIR}/xephem.1 + DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) +install(DIRECTORY GUI/xephem/auxil + DESTINATION ${XEPHEM_DATADIR}) +install(DIRECTORY GUI/xephem/catalogs + DESTINATION ${XEPHEM_DATADIR}) +install(DIRECTORY GUI/xephem/fifos + DESTINATION ${XEPHEM_DATADIR}) +install(DIRECTORY GUI/xephem/fits + DESTINATION ${XEPHEM_DATADIR}) +install(DIRECTORY GUI/xephem/gallery + DESTINATION ${XEPHEM_DATADIR}) +install(DIRECTORY GUI/xephem/help + DESTINATION ${XEPHEM_DATADIR}) +install(DIRECTORY GUI/xephem/lo + DESTINATION ${XEPHEM_DATADIR}) diff --git a/GUI/xephem/CMakeLists.txt b/GUI/xephem/CMakeLists.txt new file mode 100644 index 0000000..5f86fb8 --- /dev/null +++ b/GUI/xephem/CMakeLists.txt @@ -0,0 +1,95 @@ +cmake_minimum_required(VERSION 3.10) + +set(SRC_FILES + aavso.c + annotmenu.c + broadcast.c + calmenu.c + closemenu.c + compiler.c + coordsmenu.c + datamenu.c + db.c + dbmenu.c + earthmap.c + earthmenu.c + fallbacks.c + favmenu.c + formats.c + fsmenu.c + gallerymenu.c + glance.c + gsc.c + gscnet.c + helpmenu.c + homeio.c + hznmenu.c + imregmenu.c + indimenu.c + jpeg2pm.c + jupmenu.c + listmenu.c + mainmenu.c + marsmenu.c + marsmmenu.c + moonmenu.c + moviemenu.c + msgmenu.c + netmenu.c + objmenu.c + obslog.c + patchlevel.c + plot_aux.c + plotmenu.c + preferences.c + progress.c + ps.c + query.c + rotated.c + satmenu.c + saveres.c + scope.c + sites.c + skybinary.c + skyeyep.c + skyfifos.c + skyfiltmenu.c + skyfits.c + skyhist.c + skyip.c + skylist.c + skytoolbar.c + skyviewmenu.c + solsysmenu.c + splash.c + srchmenu.c + sunmenu.c + time.c + tips.c + trailmenu.c + ucac.c + uranusmenu.c + usno.c + versionmenu.c + webdbmenu.c + xe2.c + xe3.c + xephem.c + xmisc.c) + +set(TARGET_LIB astro ip lilxml m png ssl Xm Xt Xext Xmu X11 z) +if(NOT JPEG_FOUND) + set(TARGET_LIB ${TARGET_LIB} jpegd) +else() + set(TARGET_LIB ${TARGET_LIB} jpeg) +endif() + +add_executable(xephem ${SRC_FILES}) +target_link_libraries(xephem ${TARGET_LIB}) + +add_custom_command(TARGET xephem + POST_BUILD + COMMAND nroff -man ${CMAKE_CURRENT_SOURCE_DIR}/xephem.man > xephem.1 + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMENT "Building manpage" + VERBATIM) diff --git a/libastro/CMakeLists.txt b/libastro/CMakeLists.txt new file mode 100644 index 0000000..aaa7631 --- /dev/null +++ b/libastro/CMakeLists.txt @@ -0,0 +1,69 @@ +cmake_minimum_required(VERSION 3.10) + +project(libastro C) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) + +set(SRC_FILES + aa_hadec.c + aberration.c + actan.c + airmass.c + anomaly.c + ap_as.c + atlas.c + auxil.c + bdl.c + chap95.c + chap95_data.c + circum.c + comet.c + constel.c + dbfmt.c + deep.c + deltat.c + earthsat.c + eq_ecl.c + eq_gal.c + formats.c + helio.c + jupmoon.c + libration.c + magdecl.c + marsmoon.c + misc.c + mjd.c + moon.c + mooncolong.c + moonnf.c + nutation.c + obliq.c + parallactic.c + parallax.c + plans.c + plmoon.c + plshadow.c + precess.c + reduce.c + refract.c + rings.c + riset.c + riset_cir.c + satmoon.c + sdp4.c + sgp4.c + sphcart.c + sun.c + thetag.c + twobody.c + umoon.c + utc_gst.c + vsop87.c + vsop87_data.c) + +add_library(astro STATIC ${SRC_FILES}) +target_include_directories(astro PUBLIC + "${CMAKE_CURRENT_BINARY_DIR}" + "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/libip/CMakeLists.txt b/libip/CMakeLists.txt new file mode 100644 index 0000000..3d7ac78 --- /dev/null +++ b/libip/CMakeLists.txt @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.10) + +project(libip C) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) + +set(SRC_FILES + explodegif.c + fits.c + fsmatch.c + gaussfit.c + lstsqr.c + median.c + sqr.c + stars.c + stats.c + walk.c + wcs.c) + +add_library(ip STATIC ${SRC_FILES}) +target_link_libraries(ip astro) +target_include_directories(ip PUBLIC + "${CMAKE_CURRENT_BINARY_DIR}" + "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/libjpegd/CMakeLists.txt b/libjpegd/CMakeLists.txt new file mode 100644 index 0000000..7e4ced4 --- /dev/null +++ b/libjpegd/CMakeLists.txt @@ -0,0 +1,40 @@ +cmake_minimum_required(VERSION 3.10) + +project(libjpegd C) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) + +set(SRC_FILES + jcomapi.c + jdapimin.c + jdapistd.c + jdatasrc.c + jdcoefct.c + jdcolor.c + jddctmgr.c + jdhuff.c + jdinput.c + jdmainct.c + jdmarker.c + jdmaster.c + jdmerge.c + jdphuff.c + jdpostct.c + jdsample.c + jerror.c + jidctflt.c + jidctfst.c + jidctint.c + jidctred.c + jmemmgr.c + jmemnobs.c + jquant1.c + jquant2.c + jutils.c) + +add_library(jpegd STATIC ${SRC_FILES}) +target_include_directories(jpegd PUBLIC + "${CMAKE_CURRENT_BINARY_DIR}" + "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/liblilxml/CMakeLists.txt b/liblilxml/CMakeLists.txt new file mode 100644 index 0000000..6abc3cb --- /dev/null +++ b/liblilxml/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.10) + +project(liblilxml C) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) + +set(SRC_FILES + base64.c + lilxml.c) + +add_library(lilxml STATIC ${SRC_FILES}) +target_include_directories(lilxml PUBLIC + "${CMAKE_CURRENT_BINARY_DIR}" + "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/libpng/CMakeLists.txt b/libpng/CMakeLists.txt new file mode 100644 index 0000000..abacd7b --- /dev/null +++ b/libpng/CMakeLists.txt @@ -0,0 +1,30 @@ +cmake_minimum_required(VERSION 3.10) + +project(libpng C) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) + +set(SRC_FILES + png.c + pngerror.c + pngget.c + pngmem.c + pngpread.c + pngread.c + pngrio.c + pngrtran.c + pngrutil.c + pngset.c + pngtrans.c + pngwio.c + pngwrite.c + pngwtran.c + pngwutil.c) + +add_library(png STATIC ${SRC_FILES}) +target_link_libraries(png z) +target_include_directories(png PUBLIC + "${CMAKE_CURRENT_BINARY_DIR}" + "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/libz/CMakeLists.txt b/libz/CMakeLists.txt new file mode 100644 index 0000000..1294b70 --- /dev/null +++ b/libz/CMakeLists.txt @@ -0,0 +1,25 @@ +cmake_minimum_required(VERSION 3.10) + +project(libz C) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) + +set(SRC_FILES + adler32.c + compress.c + crc32.c + deflate.c + inffast.c + inflate.c + inftrees.c + testzlib.c + trees.c + uncompr.c + zutil.c) + +add_library(z STATIC ${SRC_FILES}) +target_include_directories(z PUBLIC + "${CMAKE_CURRENT_BINARY_DIR}" + "${CMAKE_CURRENT_SOURCE_DIR}")