# # config/platform.mk # # Set platform-specific variables for building iRODS. These variables # include the name of the C compiler, loader, archiver, and ranlib, plus # standard compile and link flags. Many of these variables are set # differently depending upon the current OS platform. # # # Commands as found by the 'configure' script during iRODS installation # These can be overridden here (discouraged) or by setting similar # variables in irods.config before running 'configure'. # CC= CC_IS_GCC=0 CCFLAGS= LDR= LDRFLAGS= RANLIB= AR= PERL= ifdef HPSS # For now, need to build iRODS with gcc instead of g++ when HPSS is included. # If the right gcc is not in the path, the lines below may need adjustment. CC=gcc LDR=gcc CC_IS_GCC=1 endif ifeq ($(OS_platform), aix_platform) ifdef HPSS CC=xlc_r -q32 LDR=xlc_r CC_IS_GCC=0 endif endif # added by Jason C (updated by Wayne for solaris) ifneq ($(findstring solaris, $(OS_platform)),) # On Solaris, still not using g++ (for now) so can't have no-write-flags else CCFLAGS += -Wno-write-strings endif # =-=-=-=-=-=-=- # JMC :: BOOST Include & Linking ifdef USE_BOOST CCFLAGS+=-I$(BOOST_DIR)/include CCFLAGS+=-DUSE_BOOST -DUSE_BOOST_COND -DUSE_BOOST_FS -DBOOST_ENABLE_ASSERT_HANDLER LDRFLAGS+=-L$(BOOST_DIR)/lib -lboost_system -lboost_thread -lboost_thread-mt -lboost_filesystem -lboost_regex endif # =-=-=-=-=-=-=- # USE_GCOV - specify whether to compile for gcov test coverage #USE_GCOV = 1 ifdef USE_GCOV CCFLAGS += -fprofile-arcs -ftest-coverage LDRFLAGS += -lgcov endif ifdef OOI_CI CCFLAGS += -DOOI_CI -I/usr/include/libxml2 endif ifdef CCFLAGS MY_CFLAG += $(CCFLAGS) endif ifdef LDRFLAGS LDADD += $(LDRFLAGS) CL_LDADD += $(LDRFLAGS) endif # # Special memory allocation library # ifdef CCMALLOC LDADD+=$(CCMALLOC_DIR)/obj/ccmalloc-gcc.o -L$(CCMALLOC_DIR)/lib -lccmalloc -ldl -lstdc++ CL_LDADD+=$(CCMALLOC_DIR)/obj/ccmalloc-gcc.o -L$(CCMALLOC_DIR)/lib -lccmalloc -ldl -lstdc++ endif # # Embedded PHP # ifdef PHP_LIB AG_LDADD+=-L$(PHP_LIB_DIR) -lphp5 endif # # Ar options # AROPT= -crs ifeq ($(OS_platform), osx_platform) AROPT= -cr endif # # Compiler and loader options # MY_CFLAG+= -g LDADD+= -lm -lpthread CL_LDADD+= -lm -lpthread ifeq ($(OS_platform), solaris_pc_platform) OS_platform=solaris_platform hardware_platform=i86_hardware endif # 64-bit file addressing ("large files") ifeq ($(FILE_64BITS), 1) ifeq ($(OS_platform), solaris_platform) MY_CFLAG+=-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 endif ifeq ($(OS_platform), aix_platform) MY_CFLAG+=-D_LARGE_FILES endif ifeq ($(OS_platform), linux_platform) MY_CFLAG+=-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE endif ifeq ($(OS_platform), osx_platform) MY_CFLAG+=-D_FILE_OFFSET_BITS=64 endif endif # 64-bit memory addressing ifeq ($(ADDR_64BITS), 1) MY_CFLAG+= -DADDR_64BITS endif # Parallel operations ifdef PARA_OPR MY_CFLAG+= -DPARA_OPR=1 endif # New rule engine ifdef RULE_ENGINE_N MY_CFLAG+= -DRULE_ENGINE_N=1 endif # Hardware choices MY_CFLAG+= -D$(OS_platform) ifdef hardware_platform MY_CFLAG+= -D$(hardware_platform) endif ifeq ($(CC_IS_GCC), 1) MY_CFLAG+=-Wall GCC_VERSION_GE_46 := $(shell expr `g++ -dumpversion | cut -c1-3` \>= 4.6) ifeq ($(GCC_VERSION_GE_46),1) MY_CFLAG+=-Wno-unused-but-set-variable endif endif # Alpha ifeq ($(OS_platform), alpha_platform) MY_CFLAGS+=-pthread -std0 -verbose endif # Sun Solaris ifeq ($(OS_platform), solaris_platform) ifeq ($(ADDR_64BITS), 1) ifeq ($(CC_IS_GCC), 0) MY_CFLAG+=-xarch=v9 endif endif LDADD+=-lnsl -lsocket -lm -lpthread -lrt CL_LDADD+=-lnsl -lsocket -lm -lpthread endif # Authorization ifdef GSI_AUTH ifeq ($(OS_platform), aix_platform) LDADD+= $(LIB_GSI_AUTH) $(KRB_LIBS) CL_LDADD+= $(LIB_GSI_AUTH) $(KRB_LIBS) else ifeq ($(OS_platform), osx_platform) LDADD+= $(LIB_GSI_AUTH) $(KRB_LIBS) CL_LDADD+= $(LIB_GSI_AUTH) $(KRB_LIBS) else LDADD+= $(LIB_GSI_AUTH) $(KRB_LIBS) -z muldefs CL_LDADD+= $(LIB_GSI_AUTH) $(KRB_LIBS) -z muldefs endif endif endif ifdef HAAW_STRUCT_FILE MY_CFLAG+= -DHAAW_STRUCT_FILE endif ifdef MSSO_STRUCT_FILE MY_CFLAG+= -DMSSO_STRUCT_FILE endif ifdef TAR_STRUCT_FILE MY_CFLAG+= -DTAR_STRUCT_FILE ifdef TAR_EXEC_PATH ifdef GNU_TAR MY_CFLAG+= -DGNU_TAR endif MY_CFLAG+= -DTAR_EXEC_PATH=\"$(TAR_EXEC_PATH)\" else MY_CFLAG+= -I$(tarDir) -I$(tarDir)/listhash \ -I${tarDir}/lib \ -I${tarDir}/compat endif ifdef TAR_EXTENDED_HDR MY_CFLAG+= -DTAR_EXTENDED_HDR endif endif ifdef ZIP_EXEC_PATH MY_CFLAG+= -DZIP_EXEC_PATH=\"$(ZIP_EXEC_PATH)\" endif ifdef UNZIP_EXEC_PATH MY_CFLAG+= -DUNZIP_EXEC_PATH=\"$(UNZIP_EXEC_PATH)\" endif ifdef RBUDP_TRANSFER MY_CFLAG+= -DRBUDP_TRANSFER -I$(libCoreIncDir) -I$(libApiIncDir) \ -I$(libMd5IncDir) -I$(libSha1IncDir) -I$(libRbudpIncDir) endif ifdef UNI_CODE MY_CFLAG+= -DUNI_CODE endif ifdef COMPAT_201 MY_CFLAG+= -DCOMPAT_201 endif # server specific LDADD ifdef TAR_STRUCT_FILE ifndef TAR_EXEC_PATH LDADD+=-L$(tarDir)/lib -ltar endif endif # HPSS support ifdef HPSS MY_CFLAG+= -DHPSS ifdef HPSS7 MY_CFLAG+= -DHPSS7 endif ifdef HPSS_UNIX_PASSWD_AUTH MY_CFLAG+= -DHPSS_UNIX_PASSWD_AUTH else ifdef HPSS_KRB5_AUTH MY_CFLAG+= -DHPSS_KRB5_AUTH endif endif ifeq ($(OS_platform), linux_platform) ifdef ADDR_64BITS MY_CFLAG+= -Duchar=u_char -DLITTLEEND else MY_CFLAG+= -m32 -Duchar=u_char -DLITTLEEND LDADD+= -m32 CL_LDADD+= -m32 endif # XXXX looks like the hpss lib is in 32 bit. ADDR_64BITS in config.mk should # be undefined too endif # have to add -lpthread here for ldr to work even have this before LDADD+=-L$(HPSS_LIB_DIR) -lhpss -lpthread ifeq ($(OS_platform), solaris_platform) MY_CFLAG+= -I$(HPSS_HDR_DIR) -DNO_DCE -DNO_H_ERRNO -Dsolaris -Dsolaris_2_5 \ -DTHREADS_ENABLED -DPTHREADS else # XXXX assume linux for now MY_CFLAG+= -I$(HPSS_HDR_DIR) -DNO_DCE -DNO_H_ERRNO -Dlinux \ -DTHREADS_ENABLED -DPTHREADS endif endif ifdef AMAZON_S3 MY_CFLAG+= -DAMAZON_S3 -I$(S3_HDR_DIR) LDADD+=-L$(S3_LIB_DIR) -ls3 -lcurl -lxml2 endif ifdef HDFS MY_CFLAG+= -DHDFS endif ifdef DDN_WOS MY_CFLAG+= -DDDN_WOS -I$(WOS_DIR)/include LDADD+=-L$(WOS_DIR)/lib64 -lwos_cpp endif ifdef NETCDF4_API MY_CFLAG += -DNETCDF4_API endif ifdef NETCDF_API MY_CFLAG += -DNETCDF_API -I$(NETCDF_DIR)/include LDADD += -L$(NETCDF_DIR)/lib -lnetcdf -lcurl CL_LDADD += -L$(NETCDF_DIR)/lib -lnetcdf ifdef LIB_CF MY_CFLAG += -DLIB_CF -I$(LIB_CF_INC_DIR) LDADD += -L$(LIB_CF_LIB_DIR) -lcf_src endif endif ifdef NETCDF_CLIENT MY_CFLAG += -DNETCDF_CLIENT endif ifdef PYDAP MY_CFLAG += -DPYDAP endif ifdef TDS MY_CFLAG += -DTDS -I$(LIB_XML2_INC_DIR) LDADD += -L$(LIB_XML2_LIB_DIR) -lxml2 endif ifdef ERDDAP MY_CFLAG += -DERDDAP -I$(LIB_JANSSON_INC_DIR) LDADD += -L$(LIB_JANSSON_LIB_DIR) --ljansson endif ifdef RUN_SERVER_AS_ROOT MY_CFLAG+= -DRUN_SERVER_AS_ROOT endif ifdef OS_AUTH MY_CFLAG+= -DOS_AUTH -DOS_AUTH_KEYFILE=\"$(OS_AUTH_KEYFILE)\" ifdef OS_AUTH_CMD MY_CFLAG+= -DOS_AUTH_CMD=\"$(OS_AUTH_CMD)\" endif ifdef OS_AUTH_NO_UID MY_CFLAG+= -DOS_AUTH_NO_UID endif endif ifdef FILESYSTEM_META MY_CFLAG+= -DFILESYSTEM_META endif ifdef DIRECT_ACCESS_VAULT MY_CFLAG+= -DDIRECT_ACCESS_VAULT endif ifdef DEF_CONFIG_DIR MY_CFLAG+= -DDEF_CONFIG_DIR=\"$(DEF_CONFIG_DIR)\" endif ifdef DEF_STATE_DIR MY_CFLAG+= -DDEF_STATE_DIR=\"$(DEF_STATE_DIR)\" endif ifdef DEF_LOG_DIR MY_CFLAG+= -DDEF_LOG_DIR=\"$(DEF_LOG_DIR)\" endif ifdef CMD_DIR MY_CFLAG+= -DCMD_DIR=\"$(CMD_DIR)\" endif ifdef PAM_AUTH_CHECK_PROG MY_CFLAG+= -DPAM_AUTH_CHECK_PROG=\"$(PAM_AUTH_CHECK_PROG)\" endif ifdef OOI_CI LDADD+= -ljansson CL_LDADD+= -ljansson endif ifdef STORAGE_ADMIN_ROLE MY_CFLAG+= -DSTORAGE_ADMIN_ROLE endif ifdef SHA256_FILE_HASH ifdef PREFER_SHA256_FILE_HASH MY_CFLAG+= -DPREFER_SHA256_FILE_HASH=$(PREFER_SHA256_FILE_HASH) endif MY_CFLAG+= -DSHA256_FILE_HASH MY_CFLAG+= -I$(SHA256_INC) LDADD+= -l$(SHA256_LIB) CL_LDADD+= -l$(SHA256_LIB) endif