diff --git a/src/sbbs3/CMakeLists.txt b/src/sbbs3/CMakeLists.txt index dd208bb2a39752f3ab1e647cb07ba2b119c59cef..ab5ff4d03bfd002684bd6e5a3042ec78eccf878a 100644 --- a/src/sbbs3/CMakeLists.txt +++ b/src/sbbs3/CMakeLists.txt @@ -36,6 +36,33 @@ if(EXISTS /dev/random) set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS HAS_DEV_RANDOM RANDOM_DEV="/dev/random") endif() +find_program(GNU_MAKE + NAMES gmake make +) +if(NOT ${GNU_MAKE} STREQUAL "GNU_MAKE-NOTFOUND") + execute_process( + COMMAND ${GNU_MAKE} DONT_CLOBBER_CC=please + WORKING_DIRECTORY ../build + OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/paths.txt + ERROR_VARIABLE PATH_ERRORS + ) + file(STRINGS ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/paths.txt PATHS) + list(GET PATHS 0 LEGACY_LIBDIR) + list(GET PATHS 1 LEGACY_OBJDIR) + list(GET PATHS 2 LEGACY_MTOBJBDIR) + list(GET PATHS 3 LEGACY_EXEDIR) + list(GET PATHS 4 LEGACY_3RDPDIR) +else() +# TODO: This is an error. +endif() + +if(NOT ${WIN32}) + add_custom_target(3rdp + ${GNU_MAKE} cryptlib libmozjs DONT_CLOBBER_CC=please `sh -c 'if [ 1 -eq 1 ] ; then echo DEBUG=1 ; else echo RELEASE=1 ; fi'` + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../3rdp/build + ) +endif() + #### # Add 3rd party lib dirs #### @@ -43,10 +70,8 @@ if(WIN32) link_directories(../../3rdp/win32.release/mozjs/bin ../../3rdp/win32.release/cryptlib/bin) link_directories(../../3rdp/win32.release/nspr/bin) else() - # TODO HACK HACK HACK! - link_directories(../../3rdp/cc.freebsd.amd64.release/mozjs/lib) - link_directories(../../3rdp/cc.freebsd.amd64.release/cl) - # END OF HACK + link_directories(../../3rdp/${LEGACY_3RDPDIR}/mozjs/lib) + link_directories(../../3rdp/${LEGACY_3RDPDIR}/cl) endif() set(SBBS_OBJS @@ -176,6 +201,9 @@ else() target_link_libraries(sbbs mozjs185-1.0) target_link_libraries(sbbs cl) endif() +if(NOT ${WIN32}) + add_dependencies(sbbs 3rdp) +endif() add_library(ftpsrvr SHARED ftpsrvr.c nopen.c) require_lib(ftpsrvr xpdev) @@ -183,6 +211,9 @@ require_lib(ftpsrvr smblib) target_link_libraries(ftpsrvr sbbs) target_include_directories(ftpsrvr PRIVATE ../comio) target_compile_definitions(ftpsrvr PRIVATE SBBS SBBS_EXPORTS JAVASCRIPT) +if(NOT ${WIN32}) + add_dependencies(sbbs 3rdp) +endif() add_library(mailsrvr SHARED mailsrvr.c mxlookup.c mime.c ars.c base64.c) require_lib(mailsrvr xpdev) @@ -190,6 +221,9 @@ require_lib(mailsrvr smblib) target_link_libraries(mailsrvr sbbs) target_include_directories(mailsrvr PRIVATE ../comio) target_compile_definitions(mailsrvr PRIVATE SBBS SBBS_EXPORTS JAVASCRIPT) +if(NOT ${WIN32}) + add_dependencies(sbbs 3rdp) +endif() add_library(services SHARED services.c sbbs_ini.c) require_lib(services xpdev) @@ -197,6 +231,9 @@ require_lib(services smblib) target_link_libraries(services sbbs) target_include_directories(services PRIVATE ../comio) target_compile_definitions(services PRIVATE SBBS SBBS_EXPORTS JAVASCRIPT) +if(NOT ${WIN32}) + add_dependencies(sbbs 3rdp) +endif() add_library(websrvr SHARED websrvr.c base64.c ars.c ringbuf.c) require_lib(websrvr xpdev) @@ -204,6 +241,9 @@ require_lib(websrvr smblib) target_link_libraries(websrvr sbbs) target_include_directories(websrvr PRIVATE ../comio) target_compile_definitions(websrvr PRIVATE SBBS SBBS_EXPORTS JAVASCRIPT) +if(NOT ${WIN32}) + add_dependencies(sbbs 3rdp) +endif() add_executable(sbbscon sbbscon.c sbbs_ini.c) set_target_properties(sbbscon PROPERTIES OUTPUT_NAME sbbs) @@ -214,6 +254,9 @@ target_link_libraries(sbbscon mailsrvr) target_link_libraries(sbbscon websrvr) target_link_libraries(sbbscon services) target_link_libraries(sbbscon sbbs) +if(NOT ${WIN32}) + add_dependencies(sbbs 3rdp) +endif() #### # Add 3rd party stuff here. @@ -229,16 +272,14 @@ if(WIN32) link_directories(../../3rdp/win32.release/mozjs/bin ../../3rdp/win32.release/cryptlib/bin) link_directories(../../3rdp/win32.release/nspr/bin) else() - # TODO HACK HACK HACK! - target_include_directories(ftpsrvr PRIVATE ../../3rdp/cc.freebsd.amd64.release/mozjs/include/js) - target_include_directories(mailsrvr PRIVATE ../../3rdp/cc.freebsd.amd64.release/mozjs/include/js) - target_include_directories(services PRIVATE ../../3rdp/cc.freebsd.amd64.release/mozjs/include/js) - target_include_directories(websrvr PRIVATE ../../3rdp/cc.freebsd.amd64.release/mozjs/include/js) - target_include_directories(sbbs PRIVATE ../../3rdp/cc.freebsd.amd64.release/mozjs/include/js) - target_include_directories(sbbscon PRIVATE ../../3rdp/cc.freebsd.amd64.release/mozjs/include/js) - link_directories(../../3rdp/cc.freebsd.amd64.release/mozjs/lib) - link_directories(../../3rdp/cc.freebsd.amd64.release/cl) - # END OF HACK + target_include_directories(ftpsrvr PRIVATE ../../3rdp/${LEGACY_3RDPDIR}/mozjs/include/js) + target_include_directories(mailsrvr PRIVATE ../../3rdp/${LEGACY_3RDPDIR}/mozjs/include/js) + target_include_directories(services PRIVATE ../../3rdp/${LEGACY_3RDPDIR}/mozjs/include/js) + target_include_directories(websrvr PRIVATE ../../3rdp/${LEGACY_3RDPDIR}/mozjs/include/js) + target_include_directories(sbbs PRIVATE ../../3rdp/${LEGACY_3RDPDIR}/mozjs/include/js) + target_include_directories(sbbscon PRIVATE ../../3rdp/${LEGACY_3RDPDIR}/mozjs/include/js) + link_directories(../../3rdp/${LEGACY_3RDPDIR}/mozjs/lib) + link_directories(../../3rdp/${LEGACY_3RDPDIR}/cl) execute_process(COMMAND nspr-config --cflags OUTPUT_VARIABLE NSPR_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND nspr-config --includedir OUTPUT_VARIABLE NSPR_INCLUDE_DIR OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND nspr-config --libs OUTPUT_VARIABLE NSPR_LIBS OUTPUT_STRIP_TRAILING_WHITESPACE)